diff --git a/android/app/build.gradle b/android/app/build.gradle index 8a275b8..d19b498 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -73,9 +73,9 @@ android { compileSdkVersion rootProject.ext.compileSdkVersion - namespace "com.terminallyonline" + namespace "com.karaolidis.terminallyonline" defaultConfig { - applicationId "com.terminallyonline" + applicationId "com.karaolidis.terminallyonline" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 diff --git a/android/app/src/debug/java/com/terminallyonline/ReactNativeFlipper.java b/android/app/src/debug/java/com/terminallyonline/ReactNativeFlipper.java index b105951..cf1ece7 100644 --- a/android/app/src/debug/java/com/terminallyonline/ReactNativeFlipper.java +++ b/android/app/src/debug/java/com/terminallyonline/ReactNativeFlipper.java @@ -4,7 +4,7 @@ *
This source code is licensed under the MIT license found in the LICENSE file in the root
* directory of this source tree.
*/
-package com.terminallyonline;
+package com.karaolidis.terminallyonline;
import android.content.Context;
import com.facebook.flipper.android.AndroidFlipperClient;
diff --git a/android/app/src/main/java/com/terminallyonline/MainActivity.java b/android/app/src/main/java/com/karaolidis/terminallyonline/MainActivity.java
similarity index 96%
rename from android/app/src/main/java/com/terminallyonline/MainActivity.java
rename to android/app/src/main/java/com/karaolidis/terminallyonline/MainActivity.java
index 2a8aedd..3e00a12 100644
--- a/android/app/src/main/java/com/terminallyonline/MainActivity.java
+++ b/android/app/src/main/java/com/karaolidis/terminallyonline/MainActivity.java
@@ -1,4 +1,4 @@
-package com.terminallyonline;
+package com.karaolidis.terminallyonline;
import com.facebook.react.ReactActivity;
import com.facebook.react.ReactActivityDelegate;
diff --git a/android/app/src/main/java/com/karaolidis/terminallyonline/MainApplication.java b/android/app/src/main/java/com/karaolidis/terminallyonline/MainApplication.java
new file mode 100644
index 0000000..18b774c
--- /dev/null
+++ b/android/app/src/main/java/com/karaolidis/terminallyonline/MainApplication.java
@@ -0,0 +1,61 @@
+package com.karaolidis.terminallyonline;
+
+import android.app.Application;
+import com.facebook.react.PackageList;
+import com.facebook.react.ReactApplication;
+import com.facebook.react.ReactNativeHost;
+import com.facebook.react.ReactPackage;
+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
+import com.facebook.react.defaults.DefaultReactNativeHost;
+import com.facebook.soloader.SoLoader;
+import java.util.List;
+
+public class MainApplication extends Application implements ReactApplication {
+
+ private final ReactNativeHost mReactNativeHost = new DefaultReactNativeHost(this) {
+ @Override
+ public boolean getUseDeveloperSupport() {
+ return BuildConfig.DEBUG;
+ }
+
+ @Override
+ protected List This source code is licensed under the MIT license found in the LICENSE file in the root
* directory of this source tree.
*/
-package com.terminallyonline;
+package com.karaolidis.terminallyonline;
import android.content.Context;
import com.facebook.react.ReactInstanceManager;
diff --git a/package-lock.json b/package-lock.json
index 6d18b47..d80fb04 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,6 +10,7 @@
"hasInstallScript": true,
"dependencies": {
"@bankify/redux-persist-realm": "^0.1.3",
+ "@react-native-clipboard/clipboard": "^1.11.2",
"@react-navigation/bottom-tabs": "^6.5.8",
"@react-navigation/native": "^6.1.7",
"@react-navigation/native-stack": "^6.9.13",
@@ -27,7 +28,9 @@
"react-native-safe-area-context": "^4.6.4",
"react-native-scoped-storage": "^1.9.3",
"react-native-screens": "^3.22.1",
+ "react-native-share": "^9.2.2",
"react-native-vector-icons": "^9.2.0",
+ "react-native-video": "^5.2.1",
"react-redux": "^8.1.1",
"realm": "^11.10.1",
"redux-persist": "^6.0.0"
@@ -3034,6 +3037,15 @@
"node": ">= 8"
}
},
+ "node_modules/@react-native-clipboard/clipboard": {
+ "version": "1.11.2",
+ "resolved": "https://registry.npmjs.org/@react-native-clipboard/clipboard/-/clipboard-1.11.2.tgz",
+ "integrity": "sha512-bHyZVW62TuleiZsXNHS1Pv16fWc0fh8O9WvBzl4h2fykqZRW9a+Pv/RGTH56E3X2PqzHP38K5go8zmCZUoIsoQ==",
+ "peerDependencies": {
+ "react": ">=16.0",
+ "react-native": ">=0.57.0"
+ }
+ },
"node_modules/@react-native-community/cli": {
"version": "11.3.3",
"resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-11.3.3.tgz",
@@ -4703,6 +4715,11 @@
"metro-runtime": "0.76.7"
}
},
+ "node_modules/@react-native/normalize-color": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.1.0.tgz",
+ "integrity": "sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA=="
+ },
"node_modules/@react-native/normalize-colors": {
"version": "0.72.0",
"resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.72.0.tgz",
@@ -7042,6 +7059,11 @@
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.455.tgz",
"integrity": "sha512-8tgdX0Odl24LtmLwxotpJCVjIndN559AvaOtd67u+2mo+IDsgsTF580NB+uuDCqsHw8yFg53l5+imFV9Fw3cbA=="
},
+ "node_modules/eme-encryption-scheme-polyfill": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/eme-encryption-scheme-polyfill/-/eme-encryption-scheme-polyfill-2.1.1.tgz",
+ "integrity": "sha512-njD17wcUrbqCj0ArpLu5zWXtaiupHb/2fIUQGdInf83GlI+Q6mmqaPGLdrke4savKAu15J/z1Tg/ivDgl14g0g=="
+ },
"node_modules/emittery": {
"version": "0.13.1",
"resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
@@ -11296,6 +11318,11 @@
"node": ">=4.0"
}
},
+ "node_modules/keymirror": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/keymirror/-/keymirror-0.1.1.tgz",
+ "integrity": "sha512-vIkZAFWoDijgQT/Nvl2AHCMmnegN2ehgTPYuyy2hWQkQSntI0S7ESYqdLkoSe1HyEBFHHkCgSIvVdSEiWwKvCg=="
+ },
"node_modules/kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -14057,6 +14084,11 @@
"react-native": "*"
}
},
+ "node_modules/react-native-share": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/react-native-share/-/react-native-share-9.2.2.tgz",
+ "integrity": "sha512-z99dvVuSvVfQ7VwrO+JWdfurAgDpkMvdZYmqIDG9HX8RHXIqU6oNVx2ePuNWXn4UgySyFjMUKjGv99njM0934Q=="
+ },
"node_modules/react-native-vector-icons": {
"version": "9.2.0",
"resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-9.2.0.tgz",
@@ -14070,6 +14102,27 @@
"generate-icon": "bin/generate-icon.js"
}
},
+ "node_modules/react-native-video": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/react-native-video/-/react-native-video-5.2.1.tgz",
+ "integrity": "sha512-aJlr9MeTuQ0LpZ4n+EC9RvhoKeiPbLtI2Rxy8u7zo/wzGevbRpWHSBj9xZ5YDBXnAVXzuqyNIkGhdw7bfdIBZw==",
+ "dependencies": {
+ "deprecated-react-native-prop-types": "^2.2.0",
+ "keymirror": "^0.1.1",
+ "prop-types": "^15.7.2",
+ "shaka-player": "^2.5.9"
+ }
+ },
+ "node_modules/react-native-video/node_modules/deprecated-react-native-prop-types": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-2.3.0.tgz",
+ "integrity": "sha512-pWD0voFtNYxrVqvBMYf5gq3NA2GCpfodS1yNynTPc93AYA/KEMGeWDqqeUB6R2Z9ZofVhks2aeJXiuQqKNpesA==",
+ "dependencies": {
+ "@react-native/normalize-color": "*",
+ "invariant": "*",
+ "prop-types": "*"
+ }
+ },
"node_modules/react-native/node_modules/@jest/types": {
"version": "26.6.2",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
@@ -15092,6 +15145,15 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
+ "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==",
+ "deprecated": "Shaka Player < v3.2 is no longer supported.",
+ "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",
@@ -18555,6 +18617,12 @@
"fastq": "^1.6.0"
}
},
+ "@react-native-clipboard/clipboard": {
+ "version": "1.11.2",
+ "resolved": "https://registry.npmjs.org/@react-native-clipboard/clipboard/-/clipboard-1.11.2.tgz",
+ "integrity": "sha512-bHyZVW62TuleiZsXNHS1Pv16fWc0fh8O9WvBzl4h2fykqZRW9a+Pv/RGTH56E3X2PqzHP38K5go8zmCZUoIsoQ==",
+ "requires": {}
+ },
"@react-native-community/cli": {
"version": "11.3.3",
"resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-11.3.3.tgz",
@@ -19827,6 +19895,11 @@
"metro-runtime": "0.76.7"
}
},
+ "@react-native/normalize-color": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.1.0.tgz",
+ "integrity": "sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA=="
+ },
"@react-native/normalize-colors": {
"version": "0.72.0",
"resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.72.0.tgz",
@@ -21616,6 +21689,11 @@
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.455.tgz",
"integrity": "sha512-8tgdX0Odl24LtmLwxotpJCVjIndN559AvaOtd67u+2mo+IDsgsTF580NB+uuDCqsHw8yFg53l5+imFV9Fw3cbA=="
},
+ "eme-encryption-scheme-polyfill": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/eme-encryption-scheme-polyfill/-/eme-encryption-scheme-polyfill-2.1.1.tgz",
+ "integrity": "sha512-njD17wcUrbqCj0ArpLu5zWXtaiupHb/2fIUQGdInf83GlI+Q6mmqaPGLdrke4savKAu15J/z1Tg/ivDgl14g0g=="
+ },
"emittery": {
"version": "0.13.1",
"resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
@@ -24730,6 +24808,11 @@
"object.values": "^1.1.6"
}
},
+ "keymirror": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/keymirror/-/keymirror-0.1.1.tgz",
+ "integrity": "sha512-vIkZAFWoDijgQT/Nvl2AHCMmnegN2ehgTPYuyy2hWQkQSntI0S7ESYqdLkoSe1HyEBFHHkCgSIvVdSEiWwKvCg=="
+ },
"kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -26966,6 +27049,11 @@
"warn-once": "^0.1.0"
}
},
+ "react-native-share": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/react-native-share/-/react-native-share-9.2.2.tgz",
+ "integrity": "sha512-z99dvVuSvVfQ7VwrO+JWdfurAgDpkMvdZYmqIDG9HX8RHXIqU6oNVx2ePuNWXn4UgySyFjMUKjGv99njM0934Q=="
+ },
"react-native-vector-icons": {
"version": "9.2.0",
"resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-9.2.0.tgz",
@@ -26975,6 +27063,29 @@
"yargs": "^16.1.1"
}
},
+ "react-native-video": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/react-native-video/-/react-native-video-5.2.1.tgz",
+ "integrity": "sha512-aJlr9MeTuQ0LpZ4n+EC9RvhoKeiPbLtI2Rxy8u7zo/wzGevbRpWHSBj9xZ5YDBXnAVXzuqyNIkGhdw7bfdIBZw==",
+ "requires": {
+ "deprecated-react-native-prop-types": "^2.2.0",
+ "keymirror": "^0.1.1",
+ "prop-types": "^15.7.2",
+ "shaka-player": "^2.5.9"
+ },
+ "dependencies": {
+ "deprecated-react-native-prop-types": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-2.3.0.tgz",
+ "integrity": "sha512-pWD0voFtNYxrVqvBMYf5gq3NA2GCpfodS1yNynTPc93AYA/KEMGeWDqqeUB6R2Z9ZofVhks2aeJXiuQqKNpesA==",
+ "requires": {
+ "@react-native/normalize-color": "*",
+ "invariant": "*",
+ "prop-types": "*"
+ }
+ }
+ }
+ },
"react-redux": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.1.tgz",
@@ -27590,6 +27701,14 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
+ "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 057149e..8640770 100644
--- a/package.json
+++ b/package.json
@@ -15,6 +15,7 @@
},
"dependencies": {
"@bankify/redux-persist-realm": "^0.1.3",
+ "@react-native-clipboard/clipboard": "^1.11.2",
"@react-navigation/bottom-tabs": "^6.5.8",
"@react-navigation/native": "^6.1.7",
"@react-navigation/native-stack": "^6.9.13",
@@ -32,7 +33,9 @@
"react-native-safe-area-context": "^4.6.4",
"react-native-scoped-storage": "^1.9.3",
"react-native-screens": "^3.22.1",
+ "react-native-share": "^9.2.2",
"react-native-vector-icons": "^9.2.0",
+ "react-native-video": "^5.2.1",
"react-redux": "^8.1.1",
"realm": "^11.10.1",
"redux-persist": "^6.0.0"
diff --git a/patches/@react-native-clipboard+clipboard+1.11.2.patch b/patches/@react-native-clipboard+clipboard+1.11.2.patch
new file mode 100644
index 0000000..a9ce42a
--- /dev/null
+++ b/patches/@react-native-clipboard+clipboard+1.11.2.patch
@@ -0,0 +1,71 @@
+diff --git a/node_modules/@react-native-clipboard/clipboard/android/src/main/java/com/reactnativecommunity/clipboard/ClipboardModule.java b/node_modules/@react-native-clipboard/clipboard/android/src/main/java/com/reactnativecommunity/clipboard/ClipboardModule.java
+index 048ebe5..8afa5b2 100644
+--- a/node_modules/@react-native-clipboard/clipboard/android/src/main/java/com/reactnativecommunity/clipboard/ClipboardModule.java
++++ b/node_modules/@react-native-clipboard/clipboard/android/src/main/java/com/reactnativecommunity/clipboard/ClipboardModule.java
+@@ -156,6 +156,17 @@ public class ClipboardModule extends ReactContextBaseJavaModule {
+ }
+ }
+
++ @ReactMethod
++ public void setURI(String uri) {
++ try {
++ ClipData clipdata = ClipData.newUri(reactContext.getContentResolver(), "URI", Uri.parse(uri));
++ ClipboardManager clipboard = getClipboardService();
++ clipboard.setPrimaryClip(clipdata);
++ } catch (Exception e) {
++ e.printStackTrace();
++ }
++ }
++
+ @ReactMethod
+ public void setListener() {
+ try {
+diff --git a/node_modules/@react-native-clipboard/clipboard/dist/Clipboard.d.ts b/node_modules/@react-native-clipboard/clipboard/dist/Clipboard.d.ts
+index a3e4abd..904a199 100644
+--- a/node_modules/@react-native-clipboard/clipboard/dist/Clipboard.d.ts
++++ b/node_modules/@react-native-clipboard/clipboard/dist/Clipboard.d.ts
+@@ -81,6 +81,17 @@ export declare const Clipboard: {
+ * @param the content to be stored in the clipboard.
+ */
+ setStrings(content: string[]): void;
++ /**
++ * (Android Only)
++ * Set content of URI type. You can use following code to set clipboard content
++ * ```javascript
++ * _setContent() {
++ * Clipboard.setURI('file://com.example.app/files/image.png');
++ * }
++ * ```
++ * @param the content to be stored in the clipboard.
++ */
++ setURI(content: string): void;
+ /**
+ * Returns whether the clipboard has content or is empty.
+ * This method returns a `Promise`, so you can use following code to get clipboard content
+diff --git a/node_modules/@react-native-clipboard/clipboard/dist/Clipboard.js b/node_modules/@react-native-clipboard/clipboard/dist/Clipboard.js
+index 67b7237..0a74329 100644
+--- a/node_modules/@react-native-clipboard/clipboard/dist/Clipboard.js
++++ b/node_modules/@react-native-clipboard/clipboard/dist/Clipboard.js
+@@ -123,6 +123,22 @@ exports.Clipboard = {
+ setStrings: function (content) {
+ NativeClipboard_1.default.setStrings(content);
+ },
++ /**
++ * (Android Only)
++ * Set content of URI type. You can use following code to set clipboard content
++ * ```javascript
++ * _setContent() {
++ * Clipboard.setURI('file://com.example.app/files/image.png');
++ * }
++ * ```
++ * @param the content to be stored in the clipboard.
++ */
++ setURI: function (content) {
++ if (react_native_1.Platform.OS !== 'android') {
++ return;
++ }
++ return NativeClipboard_1.default.setURI(content);
++ },
+ /**
+ * Returns whether the clipboard has content or is empty.
+ * This method returns a `Promise`, so you can use following code to get clipboard content
diff --git a/src/components/floatingActionButton.tsx b/src/components/floatingActionButton.tsx
index 2c49449..53183c4 100644
--- a/src/components/floatingActionButton.tsx
+++ b/src/components/floatingActionButton.tsx
@@ -33,11 +33,6 @@ const FloatingActionButton = ({ visible }: { visible?: boolean }) => {
label: 'Text',
onPress: () => navigate('Add Item'),
},
- {
- icon: 'microphone',
- label: 'Audio',
- onPress: () => navigate('Add Item'),
- },
{
icon: 'image-album',
label: 'Album',
diff --git a/src/utilities/constants.ts b/src/utilities/constants.ts
index 551247d..c74120c 100644
--- a/src/utilities/constants.ts
+++ b/src/utilities/constants.ts
@@ -1,8 +1,8 @@
-const packageName = 'com.terminallyonline';
+const packageName = 'com.karaolidis.terminallyonline';
const appName = 'Terminally Online';
-const escapedAppName = appName.replaceAll(' ', '%20');
+const fileProvider = 'com.karaolidis.terminallyonline.rnshare.fileprovider';
// eslint-disable-next-line @typescript-eslint/no-empty-function
const noOp = () => {};
-export { packageName, appName, escapedAppName, noOp };
+export { packageName, appName, fileProvider, noOp };
diff --git a/src/utilities/index.ts b/src/utilities/index.ts
index bdbf109..ec8de0f 100644
--- a/src/utilities/index.ts
+++ b/src/utilities/index.ts
@@ -1,3 +1,3 @@
-export { packageName, appName, escapedAppName, noOp } from './constants';
+export { packageName, appName, fileProvider, noOp } from './constants';
export { isPermissionForPath, clearPermissions } from './permissions';
export { getSortIcon, getViewIcon } from './icon';