diff --git a/apps/mobile/android/app/build.gradle b/apps/mobile/android/app/build.gradle index e29cf627c..dfe31c857 100644 --- a/apps/mobile/android/app/build.gradle +++ b/apps/mobile/android/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: "com.android.application" apply plugin: "org.jetbrains.kotlin.android" apply plugin: "com.facebook.react" +apply plugin: 'kotlin-parcelize' apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle" @@ -124,7 +125,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion multiDexEnabled true - versionCode 3080 + versionCode 3081 versionName getNpmVersion() testBuildType System.getProperty('testBuildType', 'debug') testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' diff --git a/apps/mobile/android/app/proguard-rules.pro b/apps/mobile/android/app/proguard-rules.pro index c635f55cc..a7a15d14e 100644 --- a/apps/mobile/android/app/proguard-rules.pro +++ b/apps/mobile/android/app/proguard-rules.pro @@ -63,4 +63,7 @@ -keepattributes Signature -keep class com.google.gson.reflect.TypeToken { *; } -keep class * extends com.google.gson.reflect.TypeToken --keep class com.streetwriters.notesnook.datatypes.* { *; } \ No newline at end of file +-keep class com.streetwriters.notesnook.datatypes.* { *; } + +-keep class net.gotev.uploadservice.* { *; } +-keep class kotlinx.parcelize.* { *; } \ No newline at end of file diff --git a/apps/mobile/app/common/filesystem/upload.ts b/apps/mobile/app/common/filesystem/upload.ts index 2695d8255..cc824fd9a 100644 --- a/apps/mobile/app/common/filesystem/upload.ts +++ b/apps/mobile/app/common/filesystem/upload.ts @@ -17,8 +17,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { RequestOptions } from "@notesnook/core"; -import { Platform } from "react-native"; +import { isImage, RequestOptions } from "@notesnook/core"; +import { PermissionsAndroid, Platform } from "react-native"; import RNFetchBlob from "react-native-blob-util"; import { ToastManager } from "../../services/event-manager"; import { useAttachmentStore } from "../../stores/use-attachment-store"; @@ -31,6 +31,7 @@ import { FileSizeResult, getUploadedFileSize } from "./utils"; +import Upload from "@ammarahmed/react-native-upload"; export async function uploadFile( filename: string, @@ -64,47 +65,87 @@ export async function uploadFile( ); } - const fileSize = (await RNFetchBlob.fs.stat(filePath)).size; + const fileInfo = await RNFetchBlob.fs.stat(filePath); const remoteFileSize = await getUploadedFileSize(filename); if (remoteFileSize === FileSizeResult.Error) return false; - if (remoteFileSize > FileSizeResult.Empty && remoteFileSize === fileSize) { + if ( + remoteFileSize > FileSizeResult.Empty && + remoteFileSize === fileInfo.size + ) { DatabaseLogger.log(`File ${filename} is already uploaded.`); return true; } - DatabaseLogger.info(`Starting upload: ${filename}`); + let attachmentInfo = await db.attachments.attachment(filename); - const uploadRequest = RNFetchBlob.config({ - //@ts-ignore - IOSBackgroundTask: !globalThis["IS_SHARE_EXTENSION"] - }) - .fetch( - "PUT", - url, - { - ...headers, - "content-type": "" - }, - RNFetchBlob.wrap(filePath) - ) - .uploadProgress((sent, total) => { - useAttachmentStore - .getState() - .setProgress(sent, total, filename, 0, "upload"); - DatabaseLogger.info( - `File upload progress: ${filename}, ${sent}/${total}` - ); - }); + DatabaseLogger.info( + `Starting upload of ${filename} at path: ${fileInfo.path} ${fileInfo.size}` + ); + if (Platform.OS === "android") { + const status = await PermissionsAndroid.request( + "android.permission.POST_NOTIFICATIONS" + ); + if (status !== "granted") { + ToastManager.show({ + message: `The permission to show file upload notification was disallowed by the user.`, + type: "info" + }); + } + } + + const upload = Upload.create({ + customUploadId: filename, + path: Platform.OS === "ios" ? "file://" + fileInfo.path : fileInfo.path, + url: url, + method: "PUT", + headers: { + ...headers, + "content-type": "application/octet-stream" + }, + appGroup: IOS_APPGROUPID, + notification: { + filename: + attachmentInfo && isImage(attachmentInfo?.mimeType) + ? "image" + : attachmentInfo?.filename || "file", + enabled: true, + enableRingTone: true, + autoClear: true + } + }).onChange((event) => { + switch (event.status) { + case "running": + case "pending": + useAttachmentStore + .getState() + .setProgress( + event.uploadedBytes || 0, + event.totalBytes || fileInfo.size, + filename, + 0, + "upload" + ); + DatabaseLogger.info( + `File upload progress: ${filename}, ${event.uploadedBytes}/${ + event.totalBytes || fileInfo.size + }` + ); + break; + case "completed": + console.log("Upload completed"); + break; + } + }); + const result = await upload.start(); cancelToken.cancel = async () => { useAttachmentStore.getState().remove(filename); - uploadRequest.cancel(); + upload.cancel(); }; - const uploadResponse = await uploadRequest; - const status = uploadResponse.info().status; + const status = result.responseCode || 0; const uploaded = status >= 200 && status < 300; useAttachmentStore.getState().remove(filename); @@ -114,12 +155,12 @@ export async function uploadFile( throw new Error( `${status}, name: ${fileInfo.filename}, length: ${ fileInfo.size - }, info: ${JSON.stringify(uploadResponse.info())}` + }, info: ${JSON.stringify(result.error)}` ); } - const attachment = await db.attachments.attachment(filename); - if (!attachment) return false; - await checkUpload(filename, requestOptions.chunkSize, attachment.size); + attachmentInfo = await db.attachments.attachment(filename); + if (!attachmentInfo) return false; + await checkUpload(filename, requestOptions.chunkSize, attachmentInfo.size); DatabaseLogger.info(`File upload status: ${filename}, ${status}`); return uploaded; } catch (e) { diff --git a/apps/mobile/app/screens/editor/tiptap/picker.ts b/apps/mobile/app/screens/editor/tiptap/picker.ts index b89fa1fd3..84f8ef55f 100644 --- a/apps/mobile/app/screens/editor/tiptap/picker.ts +++ b/apps/mobile/app/screens/editor/tiptap/picker.ts @@ -205,7 +205,9 @@ const camera = async (options: PickerOptions) => { options ); }) - .catch((e) => {}); + .catch((e) => { + console.log(e); + }); } catch (e) { ToastManager.show({ heading: (e as Error).message, diff --git a/apps/mobile/app/screens/editor/wrapper.tsx b/apps/mobile/app/screens/editor/wrapper.tsx index b04b29900..e88171e6f 100644 --- a/apps/mobile/app/screens/editor/wrapper.tsx +++ b/apps/mobile/app/screens/editor/wrapper.tsx @@ -82,9 +82,6 @@ export const EditorWrapper = ({ widths }: { widths: any }) => { return 0; }; - const KeyboardAvoidingViewIOS = - Platform.OS === "ios" ? KeyboardAvoidingView : View; - return ( { borderLeftColor: DDS.isTab ? colors.secondary.background : "transparent", - paddingBottom: insets.bottom + paddingBottom: + Platform.OS === "android" ? insets.bottom + 10 : insets.bottom }} > {loading || !introCompleted ? null : ( - { blurOnSubmit={false} /> - + )} ); diff --git a/apps/mobile/ios/Notesnook.xcodeproj/project.pbxproj b/apps/mobile/ios/Notesnook.xcodeproj/project.pbxproj index 82ba4a313..ca99a3f4f 100644 --- a/apps/mobile/ios/Notesnook.xcodeproj/project.pbxproj +++ b/apps/mobile/ios/Notesnook.xcodeproj/project.pbxproj @@ -1029,7 +1029,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2159; + CURRENT_PROJECT_VERSION = 2160; DEVELOPMENT_TEAM = 53CWBG3QUC; ENABLE_BITCODE = NO; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; @@ -1104,7 +1104,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 3.3.10-beta.1; + MARKETING_VERSION = "3.3.10-beta.2"; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -1135,7 +1135,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2159; + CURRENT_PROJECT_VERSION = 2160; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 53CWBG3QUC; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; @@ -1210,7 +1210,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 3.3.10-beta.1; + MARKETING_VERSION = "3.3.10-beta.2"; ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = ( "$(inherited)", @@ -1367,7 +1367,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2159; + CURRENT_PROJECT_VERSION = 2160; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 53CWBG3QUC; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; @@ -1379,7 +1379,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 3.3.10-beta.1; + MARKETING_VERSION = "3.3.10-beta.2"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = org.streetwriters.notesnook.notewidget; @@ -1410,7 +1410,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2159; + CURRENT_PROJECT_VERSION = 2160; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 53CWBG3QUC; @@ -1423,7 +1423,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 3.3.10-beta.1; + MARKETING_VERSION = "3.3.10-beta.2"; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = org.streetwriters.notesnook.notewidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1453,7 +1453,7 @@ CODE_SIGN_ENTITLEMENTS = "Make Note/Make Note.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2159; + CURRENT_PROJECT_VERSION = 2160; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 53CWBG3QUC; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; @@ -1534,7 +1534,7 @@ "@executable_path/../../Frameworks", ); LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift$(inherited)"; - MARKETING_VERSION = 3.3.10-beta.1; + MARKETING_VERSION = "3.3.10-beta.2"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = org.streetwriters.notesnook.share; @@ -1565,7 +1565,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2159; + CURRENT_PROJECT_VERSION = 2160; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 53CWBG3QUC; @@ -1647,7 +1647,7 @@ "@executable_path/../../Frameworks", ); LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift$(inherited)"; - MARKETING_VERSION = 3.3.10-beta.1; + MARKETING_VERSION = "3.3.10-beta.2"; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = org.streetwriters.notesnook.share; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/apps/mobile/ios/Notesnook/AppDelegate.mm b/apps/mobile/ios/Notesnook/AppDelegate.mm index 0d5af7425..b6623c2d4 100644 --- a/apps/mobile/ios/Notesnook/AppDelegate.mm +++ b/apps/mobile/ios/Notesnook/AppDelegate.mm @@ -4,6 +4,7 @@ #import "RNShortcuts.h" #import "RNBootSplash.h" #import +#import "RNFileUploader.h" @interface ReactNativeDelegate : RCTDefaultReactNativeFactoryDelegate @end @@ -79,4 +80,8 @@ [RNBootSplash initWithStoryboard:@"BootSplash" rootView:rootView]; // ⬅️ initialize the splash screen } +- (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)())completionHandler { + [RNFileUploader setCompletionHandlerWithIdentifier:identifier completionHandler:completionHandler]; +} + @end diff --git a/apps/mobile/ios/Podfile.lock b/apps/mobile/ios/Podfile.lock index cba646587..46a8038cb 100644 --- a/apps/mobile/ios/Podfile.lock +++ b/apps/mobile/ios/Podfile.lock @@ -1887,7 +1887,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - react-native-document-picker (10.1.7): + - react-native-document-picker (11.0.1): - boost - DoubleConversion - fast_float @@ -1969,14 +1969,14 @@ PODS: - React-Core - React-RCTFabric - ReactCommon/turbomodule/core - - react-native-mmkv-storage (0.11.2): + - react-native-mmkv-storage (12.0.0): - boost - DoubleConversion - fast_float - fmt - glog - hermes-engine - - MMKV (~> 1.3.9) + - MMKV (~> 1.3.14) - RCT-Folly - RCT-Folly/Fabric - RCTRequired @@ -2244,6 +2244,8 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga + - react-native-upload (6.27.0): + - React - react-native-webview (13.16.0): - boost - DoubleConversion @@ -3462,6 +3464,7 @@ DEPENDENCIES: - "react-native-share-extension (from `../node_modules/@ammarahmed/react-native-share-extension`)" - "react-native-sodium (from `../node_modules/@ammarahmed/react-native-sodium`)" - react-native-theme-switch-animation (from `../node_modules/react-native-theme-switch-animation`) + - "react-native-upload (from `../node_modules/@ammarahmed/react-native-upload`)" - react-native-webview (from `../node_modules/react-native-webview`) - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) - React-oscompat (from `../node_modules/react-native/ReactCommon/oscompat`) @@ -3675,6 +3678,8 @@ EXTERNAL SOURCES: :path: "../node_modules/@ammarahmed/react-native-sodium" react-native-theme-switch-animation: :path: "../node_modules/react-native-theme-switch-animation" + react-native-upload: + :path: "../node_modules/@ammarahmed/react-native-upload" react-native-webview: :path: "../node_modules/react-native-webview" React-NativeModulesApple: @@ -3855,7 +3860,7 @@ SPEC CHECKSUMS: react-native-blob-util: 7946b7e13acf0da5e849dc2f73fcfebe1d981699 react-native-config: 963b5efabc864cf69412e54b5de49b6a23e4af03 react-native-date-picker: 4f4f40f6e65798038bb4b1bff47890c2be69c2e6 - react-native-document-picker: 1734eb0aa3dbd1cd7bf1b105936f9b55031ae616 + react-native-document-picker: 254467fec90f263dfc4828210daf3e8baa4fcb81 react-native-fingerprint-scanner: d5e143a361f3f01858e9c45141ddcabc4fd57055 react-native-get-random-values: d16467cf726c618e9c7a8c3c39c31faa2244bbba react-native-gzip: 794e0e964a0d9e1dfd1773fee938adb4d4310e26 @@ -3863,7 +3868,7 @@ SPEC CHECKSUMS: react-native-image-resizer: 290b045c34c69db7574e4d08aadfc4abe1ff5a99 react-native-in-app-review: 1516ba69d60d58053b7eb3aaaf8d2a5a74af8b57 react-native-keep-awake: a351e6f67006b47f316ae2b17ee8ee69386167f4 - react-native-mmkv-storage: b7ce5a5eb3d3bfddcf2df127671abba6ef3d76ae + react-native-mmkv-storage: 31b7b155e690339f5a25cfe56d5e2f68dee4f066 react-native-netinfo: cec9c4e86083cb5b6aba0e0711f563e2fbbff187 react-native-notification-sounds: ce106d58df0dd384bccbd2e84fb53accab7cc068 react-native-orientation-locker: cc6f357b289a2e0dd2210fea0c52cb8e0727fdaa @@ -3875,6 +3880,7 @@ SPEC CHECKSUMS: react-native-share-extension: fdc6aaab51591a2d445df239c446aaa3a99658ec react-native-sodium: 066f76e46c9be13e9260521e3fa994937c4cdab4 react-native-theme-switch-animation: 449d6db7a760f55740505e7403ae8061debc9a7e + react-native-upload: f0198bb4db00ff7dae14904ad59da470550be075 react-native-webview: 654f794a7686b47491cf43aa67f7f428bea00eed React-NativeModulesApple: 46690a0fe94ec28fc6fc686ec797b911d251ded0 React-oscompat: 95875e81f5d4b3c7b2c888d5bd2c9d83450d8bdb diff --git a/apps/mobile/package-lock.json b/apps/mobile/package-lock.json index 7be81d23f..085d5b841 100644 --- a/apps/mobile/package-lock.json +++ b/apps/mobile/package-lock.json @@ -1,12 +1,12 @@ { "name": "@notesnook/mobile", - "version": "3.3.10-beta.0", + "version": "3.3.10-beta.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@notesnook/mobile", - "version": "3.3.10-beta.0", + "version": "3.3.10-beta.2", "hasInstallScript": true, "license": "GPL-3.0-or-later", "dependencies": { @@ -16,6 +16,7 @@ "@ammarahmed/react-native-fingerprint-scanner": "^5.0.1", "@ammarahmed/react-native-share-extension": "^2.9.5", "@ammarahmed/react-native-sodium": "^1.6.8", + "@ammarahmed/react-native-upload": "^6.28.0", "@azure/core-asynciterator-polyfill": "^1.0.2", "@bam.tech/react-native-image-resizer": "3.0.11", "@callstack/repack": "~5.2.1", @@ -41,7 +42,7 @@ "@react-native-community/datetimepicker": "^8.4.5", "@react-native-community/netinfo": "^11.4.1", "@react-native-community/toolbar-android": "^0.2.1", - "@react-native-documents/picker": "^10.1.7", + "@react-native-documents/picker": "^11.0.1", "@react-native-masked-view/masked-view": "^0.3.2", "@react-navigation/elements": "^1.3.3", "@react-navigation/native": "^6.0.10", @@ -529,6 +530,16 @@ "integrity": "sha512-FbX9fMfqJ3ysd+zkSS5di459tPv5iB0fhmK3dx/xo+l07sf7f1gzJu17mghSGkOKkbjXaoLPcq3XLMwWGpvapQ==", "license": "ISC" }, + "node_modules/@ammarahmed/react-native-upload": { + "version": "6.28.0", + "resolved": "https://registry.npmjs.org/@ammarahmed/react-native-upload/-/react-native-upload-6.28.0.tgz", + "integrity": "sha512-0cU6ulbJB2s9KgV2QlQ91//YZ+K5USlKjM6CW9fDHFcGn+Td3tFWB0atnplP35Ih+HeOnYL9t1MuNG4vNzjoFw==", + "license": "BSD-3-Clause", + "peerDependencies": { + "react": "*", + "react-native": ">=0.47.0" + } + }, "node_modules/@azure/core-asynciterator-polyfill": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.2.tgz", @@ -4839,13 +4850,13 @@ } }, "node_modules/@react-native-documents/picker": { - "version": "10.1.7", - "resolved": "https://registry.npmjs.org/@react-native-documents/picker/-/picker-10.1.7.tgz", - "integrity": "sha512-Tb8SPU+pHxrSJmDHBozSUStIPeyFHTHLrU3MW0N3sUAioLd5z+nmUdypfg5fs+Yzp7KTxVW06APe2HLB1ysLww==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@react-native-documents/picker/-/picker-11.0.1.tgz", + "integrity": "sha512-aUq4MHGO/f8BslCFFx9OXz9NLLmcLkYAXp5PAEVau31v7obItPpb71Fe84bxpGV6gALIvGlGgSm6W9kEyU4toA==", "license": "MIT", "peerDependencies": { "react": "*", - "react-native": "*" + "react-native": ">=0.79.0" } }, "node_modules/@react-native-masked-view/masked-view": { diff --git a/apps/mobile/package.json b/apps/mobile/package.json index f3578d63e..ad11a844a 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -1,6 +1,6 @@ { "name": "@notesnook/mobile", - "version": "3.3.10-beta.1", + "version": "3.3.10-beta.2", "private": true, "license": "GPL-3.0-or-later", "scripts": { @@ -32,6 +32,7 @@ "@ammarahmed/react-native-fingerprint-scanner": "^5.0.1", "@ammarahmed/react-native-share-extension": "^2.9.5", "@ammarahmed/react-native-sodium": "^1.6.8", + "@ammarahmed/react-native-upload": "^6.28.0", "@azure/core-asynciterator-polyfill": "^1.0.2", "@bam.tech/react-native-image-resizer": "3.0.11", "@callstack/repack": "~5.2.1", @@ -57,7 +58,7 @@ "@react-native-community/datetimepicker": "^8.4.5", "@react-native-community/netinfo": "^11.4.1", "@react-native-community/toolbar-android": "^0.2.1", - "@react-native-documents/picker": "^10.1.7", + "@react-native-documents/picker": "^11.0.1", "@react-native-masked-view/masked-view": "^0.3.2", "@react-navigation/elements": "^1.3.3", "@react-navigation/native": "^6.0.10", diff --git a/apps/mobile/patches/react-native+0.82.1.patch b/apps/mobile/patches/react-native+0.82.1.patch new file mode 100644 index 000000000..7d3abd62e --- /dev/null +++ b/apps/mobile/patches/react-native+0.82.1.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.js b/node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.js +index 6eca156..5a42107 100644 +--- a/node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.js ++++ b/node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.js +@@ -208,7 +208,7 @@ class KeyboardAvoidingView extends React.Component< + ]; + } else { + this._subscriptions = [ +- Keyboard.addListener('keyboardDidHide', this._onKeyboardChange), ++ Keyboard.addListener('keyboardDidHide', this._onKeyboardHide), + Keyboard.addListener('keyboardDidShow', this._onKeyboardChange), + ]; + } diff --git a/apps/mobile/patches/react-native-actions-shortcuts+1.0.1.patch b/apps/mobile/patches/react-native-actions-shortcuts+1.0.1.patch index ff0695914..2ca0637ca 100644 --- a/apps/mobile/patches/react-native-actions-shortcuts+1.0.1.patch +++ b/apps/mobile/patches/react-native-actions-shortcuts+1.0.1.patch @@ -1,3 +1,22 @@ +diff --git a/node_modules/react-native-actions-shortcuts/android/.settings/org.eclipse.buildship.core.prefs b/node_modules/react-native-actions-shortcuts/android/.settings/org.eclipse.buildship.core.prefs +deleted file mode 100644 +index 8c253d6..0000000 +--- a/node_modules/react-native-actions-shortcuts/android/.settings/org.eclipse.buildship.core.prefs ++++ /dev/null +@@ -1,13 +0,0 @@ +-arguments= +-auto.sync=false +-build.scans.enabled=false +-connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.0)) +-connection.project.dir= +-eclipse.preferences.version=1 +-gradle.user.home= +-java.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home +-jvm.arguments= +-offline.mode=false +-override.workspace.settings=true +-show.console.view=true +-show.executions.view=true diff --git a/node_modules/react-native-actions-shortcuts/android/build.gradle b/node_modules/react-native-actions-shortcuts/android/build.gradle index 19bd311..642ddbc 100644 --- a/node_modules/react-native-actions-shortcuts/android/build.gradle @@ -3788,7 +3807,7 @@ index b438823..ba03915 100644 } diff --git a/node_modules/react-native-actions-shortcuts/android/src/main/java/com/reactnativeshortcuts/ShortcutsModule.kt b/node_modules/react-native-actions-shortcuts/android/src/main/java/com/reactnativeshortcuts/ShortcutsModule.kt -index ec847cc..a4686a0 100644 +index ec847cc..f101793 100644 --- a/node_modules/react-native-actions-shortcuts/android/src/main/java/com/reactnativeshortcuts/ShortcutsModule.kt +++ b/node_modules/react-native-actions-shortcuts/android/src/main/java/com/reactnativeshortcuts/ShortcutsModule.kt @@ -28,18 +28,18 @@ class ShortcutsModule(reactContext: ReactApplicationContext) : @@ -3853,7 +3872,7 @@ index ec847cc..a4686a0 100644 shortcutManager?.removeAllDynamicShortcuts() } -@@ -145,6 +145,19 @@ class ShortcutsModule(reactContext: ReactApplicationContext) : +@@ -145,6 +145,17 @@ class ShortcutsModule(reactContext: ReactApplicationContext) : fun isSupported(): Boolean { return Build.VERSION.SDK_INT >= 25 } @@ -3863,9 +3882,7 @@ index ec847cc..a4686a0 100644 + requestCode: Int, + resultCode: Int, + data: Intent? -+ ) { -+ TODO("Not yet implemented") -+ } ++ ) {} + + override fun onNewIntent(intent: Intent) { + emitEvent(intent) diff --git a/packages/editor-mobile/package-lock.json b/packages/editor-mobile/package-lock.json index 616f2ccf9..3678cbd2e 100644 --- a/packages/editor-mobile/package-lock.json +++ b/packages/editor-mobile/package-lock.json @@ -85,9 +85,6 @@ "@tiptap/extension-placeholder": "2.6.6", "@tiptap/extension-subscript": "2.6.6", "@tiptap/extension-superscript": "2.6.6", - "@tiptap/extension-table": "2.6.6", - "@tiptap/extension-table-cell": "2.6.6", - "@tiptap/extension-table-header": "2.6.6", "@tiptap/extension-table-row": "2.6.6", "@tiptap/extension-task-item": "2.6.6", "@tiptap/extension-task-list": "2.6.6", diff --git a/packages/editor/package-lock.json b/packages/editor/package-lock.json index b865641ed..24efdf2f0 100644 --- a/packages/editor/package-lock.json +++ b/packages/editor/package-lock.json @@ -1532,39 +1532,6 @@ "@styled-system/css": "^5.1.5" } }, - "node_modules/@theme-ui/color-modes": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@theme-ui/color-modes/-/color-modes-0.16.2.tgz", - "integrity": "sha512-jWEWx53lxNgWCT38i/kwLV2rsvJz8lVZgi5oImnVwYba9VejXD23q1ckbNFJHosQ8KKXY87ht0KPC6BQFIiHtQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@theme-ui/core": "^0.16.2", - "@theme-ui/css": "^0.16.2", - "deepmerge": "^4.2.2" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "react": ">=18" - } - }, - "node_modules/@theme-ui/color-modes/node_modules/@theme-ui/core": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@theme-ui/core/-/core-0.16.2.tgz", - "integrity": "sha512-bBd/ltbwO9vIUjF1jtlOX6XN0IIOdf1vzBp2JCKsSOqdfn84m+XL8OogIe/zOhQ+aM94Nrq4+32tFJc8sFav4Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@theme-ui/css": "^0.16.2", - "deepmerge": "^4.2.2" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "react": ">=18" - } - }, "node_modules/@theme-ui/components": { "version": "0.16.1", "resolved": "https://registry.npmjs.org/@theme-ui/components/-/components-0.16.1.tgz", @@ -1610,39 +1577,6 @@ "@emotion/react": "^11.11.1" } }, - "node_modules/@theme-ui/theme-provider": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@theme-ui/theme-provider/-/theme-provider-0.16.2.tgz", - "integrity": "sha512-LRnVevODcGqO0JyLJ3wht+PV3ZoZcJ7XXLJAJWDoGeII4vZcPQKwVy4Lpz/juHsZppQxKcB3U+sQDGBnP25irQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@theme-ui/color-modes": "^0.16.2", - "@theme-ui/core": "^0.16.2", - "@theme-ui/css": "^0.16.2" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "react": ">=18" - } - }, - "node_modules/@theme-ui/theme-provider/node_modules/@theme-ui/core": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@theme-ui/core/-/core-0.16.2.tgz", - "integrity": "sha512-bBd/ltbwO9vIUjF1jtlOX6XN0IIOdf1vzBp2JCKsSOqdfn84m+XL8OogIe/zOhQ+aM94Nrq4+32tFJc8sFav4Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@theme-ui/css": "^0.16.2", - "deepmerge": "^4.2.2" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "react": ">=18" - } - }, "node_modules/@tiptap/core": { "version": "2.6.6", "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.6.6.tgz", @@ -3516,7 +3450,8 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "node_modules/js-yaml": { "version": "3.14.1", @@ -3636,6 +3571,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -5158,6 +5094,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dev": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -5178,6 +5115,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dev": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -5492,6 +5430,7 @@ "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dev": true, "dependencies": { "loose-envify": "^1.1.0" }