diff --git a/ios/Podfile b/ios/Podfile index b7802f6..d44974d 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -3,6 +3,9 @@ require_relative '../node_modules/@react-native-community/cli-platform-ios/nativ platform :ios, '11.0' +pod 'react-native-video/VideoCaching', :path => '../node_modules/react-native-video/react-native-video.podspec' + +pod 'BVLinearGradient', :path => '../node_modules/react-native-linear-gradient' install! 'cocoapods', :disable_input_output_paths => true permissions_path = '../node_modules/react-native-permissions/ios' diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 7cb885d..ba99248 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,7 +1,10 @@ PODS: - boost (1.76.0) + - BVLinearGradient (2.5.6): + - React - CocoaAsyncSocket (7.6.5) - DoubleConversion (1.1.6) + - DVAssetLoaderDelegate (0.3.3) - FBLazyVector (0.66.0) - FBReactNativeSpec (0.66.0): - RCT-Folly (= 2021.06.28.00-v2) @@ -286,6 +289,13 @@ PODS: - React-Core - react-native-safe-area-context (3.3.2): - React-Core + - react-native-video/Video (5.2.0): + - React-Core + - react-native-video/VideoCaching (5.2.0): + - DVAssetLoaderDelegate (~> 0.3.1) + - React-Core + - react-native-video/Video + - SPTPersistentCache (~> 1.1.0) - React-perflogger (0.66.0) - React-RCTActionSheet (0.66.0): - React-Core/RCTActionSheetHeaders (= 0.66.0) @@ -362,12 +372,14 @@ PODS: - React-RCTImage - RNVectorIcons (8.1.0): - React-Core + - SPTPersistentCache (1.1.0) - Yoga (1.14.0) - YogaKit (1.18.1): - Yoga (~> 1.14) DEPENDENCIES: - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) + - BVLinearGradient (from `../node_modules/react-native-linear-gradient`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) @@ -411,6 +423,7 @@ DEPENDENCIES: - react-native-camera (from `../node_modules/react-native-camera`) - react-native-restart (from `../node_modules/react-native-restart`) - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) + - react-native-video/VideoCaching (from `../node_modules/react-native-video/react-native-video.podspec`) - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) @@ -433,6 +446,7 @@ DEPENDENCIES: SPEC REPOS: trunk: - CocoaAsyncSocket + - DVAssetLoaderDelegate - Flipper - Flipper-Boost-iOSX - Flipper-DoubleConversion @@ -445,11 +459,14 @@ SPEC REPOS: - fmt - libevent - OpenSSL-Universal + - SPTPersistentCache - YogaKit EXTERNAL SOURCES: boost: :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" + BVLinearGradient: + :path: "../node_modules/react-native-linear-gradient" DoubleConversion: :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" FBLazyVector: @@ -490,6 +507,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-restart" react-native-safe-area-context: :path: "../node_modules/react-native-safe-area-context" + react-native-video: + :path: "../node_modules/react-native-video/react-native-video.podspec" React-perflogger: :path: "../node_modules/react-native/ReactCommon/reactperflogger" React-RCTActionSheet: @@ -529,8 +548,10 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost: a7c83b31436843459a1961bfd74b96033dc77234 + BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872 CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662 + DVAssetLoaderDelegate: 0caec20e4e08b8560b691131539e9180024d4bce FBLazyVector: 6816ca39e1cc8beffd2a96783f518296789d1c48 FBReactNativeSpec: 3b1e86618e902743fde35b40cf9ebd100fd655b7 Flipper: 30e8eeeed6abdc98edaf32af0cda2f198be4b733 @@ -562,6 +583,7 @@ SPEC CHECKSUMS: react-native-camera: 3eae183c1d111103963f3dd913b65d01aef8110f react-native-restart: 733a51ad137f15b0f8dc34c4082e55af7da00979 react-native-safe-area-context: 584dc04881deb49474363f3be89e4ca0e854c057 + react-native-video: a4c2635d0802f983594b7057e1bce8f442f0ad28 React-perflogger: 1f554c2b684e2f484f9edcdfdaeedab039fbaca8 React-RCTActionSheet: 610d5a5d71ab4808734782c8bca6a12ec3563672 React-RCTAnimation: ec6ed97370ace32724c253f29f0586cafcab8126 @@ -579,9 +601,10 @@ SPEC CHECKSUMS: RNPermissions: 4b54095940aea8c03fa3e6c92d4ac3647b31ed4e RNScreens: 6e1ea5787989f92b0671049b808aef64fa1ef98c RNVectorIcons: 31cebfcf94e8cf8686eb5303ae0357da64d7a5a4 + SPTPersistentCache: df36ea46762d7cf026502bbb86a8b79d0080dff4 Yoga: c11abbf5809216c91fcd62f5571078b83d9b6720 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a -PODFILE CHECKSUM: e55ea82ad3c285f70b72f1f6397d523c03649710 +PODFILE CHECKSUM: 8f8e2fb6d0c245d037fd4a19edfed1aa27be1bc6 COCOAPODS: 1.11.2 diff --git a/package-lock.json b/package-lock.json index e8f1bdf..5a29993 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "react-native-awesome-alerts": "^1.5.2", "react-native-camera": "^4.2.1", "react-native-device-info": "^8.4.5", + "react-native-linear-gradient": "^2.5.6", "react-native-paper": "^4.9.2", "react-native-permissions": "^3.1.0", "react-native-qrcode-scanner": "^1.5.4", @@ -29,6 +30,7 @@ "react-native-select-dropdown": "^1.2.0", "react-native-swiper-flatlist": "^3.0.15", "react-native-vector-icons": "^8.1.0", + "react-native-video": "^5.2.0", "react-redux": "^7.2.5", "redux": "^4.1.1", "redux-logger": "^3.0.6", @@ -4345,6 +4347,11 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.893.tgz", "integrity": "sha512-ChtwF7qB03INq1SyMpue08wc6cve+ktj2UC/Y7se9vB+JryfzziJeYwsgb8jLaCA5GMkHCdn5M62PfSMWhifZg==" }, + "node_modules/eme-encryption-scheme-polyfill": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eme-encryption-scheme-polyfill/-/eme-encryption-scheme-polyfill-2.0.3.tgz", + "integrity": "sha512-44CNFMsqzHdKHrzWxlS7xZ8KUHn5XutBqpmCuWzNIynmAyFInHrrD3ozv/RvK9ZhgV6QY6Easx8EWAmxteNodg==" + }, "node_modules/emittery": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", @@ -7851,6 +7858,11 @@ "node": ">=4.0" } }, + "node_modules/keymirror": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/keymirror/-/keymirror-0.1.1.tgz", + "integrity": "sha1-kYiJ6hP40KQufFVyUO7nE63JXDU=" + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -10178,6 +10190,14 @@ "react-native": ">=0.42.0" } }, + "node_modules/react-native-linear-gradient": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/react-native-linear-gradient/-/react-native-linear-gradient-2.5.6.tgz", + "integrity": "sha512-HDwEaXcQIuXXCV70O+bK1rizFong3wj+5Q/jSyifKFLg0VWF95xh8XQgfzXwtq0NggL9vNjPKXa016KuFu+VFg==", + "peerDependencies": { + "react-native": ">=0.55" + } + }, "node_modules/react-native-paper": { "version": "4.9.2", "resolved": "https://registry.npmjs.org/react-native-paper/-/react-native-paper-4.9.2.tgz", @@ -10355,6 +10375,16 @@ "node": ">=10" } }, + "node_modules/react-native-video": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-native-video/-/react-native-video-5.2.0.tgz", + "integrity": "sha512-5SK1lxyzrCkZF+WuxUxLR1Pt65E0rsWB1w1GrGxSLdC9zWYBumcmuHl+wPJ7UQvznjaH2Ze7uU1R3arejI7+WQ==", + "dependencies": { + "keymirror": "^0.1.1", + "prop-types": "^15.7.2", + "shaka-player": "^2.5.9" + } + }, "node_modules/react-native/node_modules/@jest/types": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", @@ -11188,6 +11218,14 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, + "node_modules/shaka-player": { + "version": "2.5.23", + "resolved": "https://registry.npmjs.org/shaka-player/-/shaka-player-2.5.23.tgz", + "integrity": "sha512-3MC9k0OXJGw8AZ4n/ZNCZS2yDxx+3as5KgH6Tx4Q5TRboTBBCu6dYPI5vp1DxKeyU12MBN1Zcbs7AKzXv2EnCg==", + "dependencies": { + "eme-encryption-scheme-polyfill": "^2.0.1" + } + }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -15984,6 +16022,11 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.893.tgz", "integrity": "sha512-ChtwF7qB03INq1SyMpue08wc6cve+ktj2UC/Y7se9vB+JryfzziJeYwsgb8jLaCA5GMkHCdn5M62PfSMWhifZg==" }, + "eme-encryption-scheme-polyfill": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eme-encryption-scheme-polyfill/-/eme-encryption-scheme-polyfill-2.0.3.tgz", + "integrity": "sha512-44CNFMsqzHdKHrzWxlS7xZ8KUHn5XutBqpmCuWzNIynmAyFInHrrD3ozv/RvK9ZhgV6QY6Easx8EWAmxteNodg==" + }, "emittery": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", @@ -18641,6 +18684,11 @@ "object.assign": "^4.1.2" } }, + "keymirror": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/keymirror/-/keymirror-0.1.1.tgz", + "integrity": "sha1-kYiJ6hP40KQufFVyUO7nE63JXDU=" + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -20566,6 +20614,12 @@ "integrity": "sha512-HOf0jzRnq2/aFUcdCJ9w9JGzN3gdEg0zFE4FyYlp4jtidqU03D5X7ZegGKfT1EWteR0gPBGp9ye5T5FvSWi9Yg==", "requires": {} }, + "react-native-linear-gradient": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/react-native-linear-gradient/-/react-native-linear-gradient-2.5.6.tgz", + "integrity": "sha512-HDwEaXcQIuXXCV70O+bK1rizFong3wj+5Q/jSyifKFLg0VWF95xh8XQgfzXwtq0NggL9vNjPKXa016KuFu+VFg==", + "requires": {} + }, "react-native-paper": { "version": "4.9.2", "resolved": "https://registry.npmjs.org/react-native-paper/-/react-native-paper-4.9.2.tgz", @@ -20692,6 +20746,16 @@ } } }, + "react-native-video": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-native-video/-/react-native-video-5.2.0.tgz", + "integrity": "sha512-5SK1lxyzrCkZF+WuxUxLR1Pt65E0rsWB1w1GrGxSLdC9zWYBumcmuHl+wPJ7UQvznjaH2Ze7uU1R3arejI7+WQ==", + "requires": { + "keymirror": "^0.1.1", + "prop-types": "^15.7.2", + "shaka-player": "^2.5.9" + } + }, "react-redux": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.5.tgz", @@ -21270,6 +21334,14 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, + "shaka-player": { + "version": "2.5.23", + "resolved": "https://registry.npmjs.org/shaka-player/-/shaka-player-2.5.23.tgz", + "integrity": "sha512-3MC9k0OXJGw8AZ4n/ZNCZS2yDxx+3as5KgH6Tx4Q5TRboTBBCu6dYPI5vp1DxKeyU12MBN1Zcbs7AKzXv2EnCg==", + "requires": { + "eme-encryption-scheme-polyfill": "^2.0.1" + } + }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", diff --git a/package.json b/package.json index 39623e3..2348521 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "react-native-awesome-alerts": "^1.5.2", "react-native-camera": "^4.2.1", "react-native-device-info": "^8.4.5", + "react-native-linear-gradient": "^2.5.6", "react-native-paper": "^4.9.2", "react-native-permissions": "^3.1.0", "react-native-qrcode-scanner": "^1.5.4", @@ -31,6 +32,7 @@ "react-native-select-dropdown": "^1.2.0", "react-native-swiper-flatlist": "^3.0.15", "react-native-vector-icons": "^8.1.0", + "react-native-video": "^5.2.0", "react-redux": "^7.2.5", "redux": "^4.1.1", "redux-logger": "^3.0.6", diff --git a/src/assets/video.mp4 b/src/assets/video.mp4 new file mode 100644 index 0000000..fd6954b Binary files /dev/null and b/src/assets/video.mp4 differ diff --git a/src/components/Video.js b/src/components/Video.js new file mode 100644 index 0000000..257844a --- /dev/null +++ b/src/components/Video.js @@ -0,0 +1,23 @@ +import {StyleSheet} from 'react-native'; +import Video from 'react-native-video'; +import file from '../assets/video.mp4'; + +// Within your render function, assuming you have a file called +// "background.mp4" in your project. You can include multiple videos +// on a single screen if you like. +import React from 'react'; + +export default function CustomVideo() { + return ( +