mirror of
https://github.com/standardnotes/mobile.git
synced 2026-04-20 22:29:12 -04:00
* feat: files popover (initial commit) * chore: fixes after updating deps * refactor: get rid of extra types * feat: filter files list * feat: rename file * fix: sodium jsi package * chore: update deps * chore: upgrade deps * fix: sodium jsi types * feat: download files * refactor: use screens navigation instead of modals so that next popups are not hidden behind already opened ones * chore: version bump * refactor: navigate to new screen for renaming files * refactor: when downloading the file, append content chunks to it instead of overwriting the whole file * feat: add Share dialog on iOS and separate "Share" and "Download" options on Android * fix: small fixes * feat: show toast notifications on file-related actions * feat: show toast notifications on file-related actions, cleanup unneeded files after share * feat: store downloaded files in "Downloads" folder on Android * feat: show success message on ios after sharing the file * fix: use `Aes` from React Native, remove unused dependency * fix: restore "@standardnotes/react-native-aes" module * feat: add feature flag to show files on dev only * chore: fix lint error * fix: performance optimization * fix: call file protection methods from mutator service * fix: remove event listener correctly after RN version update * feat: download files on android to "Download" folder * fix: remove event listener correctly after RN version update * feat: check the storage permissions on Android on downloading files * fix: don't trigger download if there is another download in progress * style: wrap long file names, remove unneeded styles * style: make file list scrollable, wrap long file names, remove unneeded styles * fix: correctly delete attached file, better wording * refactor: move files related logic to separate service * fix: make the last item in files list reachable on scrolling * fix: show toast notification after attaching/detaching file to a note * feat: show lock icon next to protected files * feat: show lock icon ONLY next to protected files * feat: make search bar from notes list reusable and consume in files list as well * feat: show filtered files count on screen title * refactor: better name for `SearchBar` component * fix: remove hardcoded bottom padding from files list * chore: upgrade dependencies * feat: show files in a separate section on sidebar refactor: move file-related actions to a custom hook * refactor: add types for toast * feat: hide toast notification when pressing it * chore: upgrade deps * feat: show lock icon for protected files in Files section * feat: better look for "Attached"/"All files" tabs switcher * fix: decrease tab switcher height a bit smaller * chore: fix lint errors * feat: show "Export" instead of "Download" on iOS file actions * feat: show different titles for file screen opener link depending on attached files count * fix: show files list in note sidebar with correct vertical distance * fix: optimize file protection toggling * chore: cleanup console logs * fix: remove commented parts * fix: remove not implemented and commented parts * style: more distance between lock and filetype icons * fix: changes based on reviews * fix: remove android-related unneeded configs * chore: upgrade dependencies Co-authored-by: Mo <mo@standardnotes.com>
159 lines
6.7 KiB
JSON
159 lines
6.7 KiB
JSON
{
|
|
"name": "standardnotes-mobile",
|
|
"version": "3.14.1",
|
|
"user-version": "3.14.1",
|
|
"private": true,
|
|
"license": "AGPL-3.0-or-later",
|
|
"scripts": {
|
|
"android-dev": "react-native run-android --variant devDebug --appIdSuffix dev",
|
|
"android-prod-debug": "react-native run-android --variant prodDebug",
|
|
"android-prod-release": "yarn run android:bundle && react-native run-android --variant prodRelease",
|
|
"ios-dev": "react-native run-ios --scheme StandardNotesDev",
|
|
"ios-prod": "react-native run-ios --scheme StandardNotes",
|
|
"clear-cache": "watchman watch-del-all && rm -rf $TMPDIR/react-native-packager-cache-* && rm -rf $TMPDIR/metro-bundler-cache-*",
|
|
"init": "yarn cache clean snjs && yarn && pod-install ios",
|
|
"lint": "npm-run-all --parallel lint:*",
|
|
"lint:eslint": "yarn eslint . --ext .ts,.tsx --fix",
|
|
"lint:ts": "tsc --noEmit",
|
|
"start": "react-native start",
|
|
"test": "jest",
|
|
"postinstall": "patch-package && yarn run ncu",
|
|
"android:bundle": "react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/build/intermediates/res/merged/release/"
|
|
},
|
|
"resolutions": {
|
|
"@types/react": "^17"
|
|
},
|
|
"dependencies": {
|
|
"@expo/react-native-action-sheet": "^3.13.0",
|
|
"@react-native-community/async-storage": "1.12.1",
|
|
"@react-native-community/masked-view": "^0.1.11",
|
|
"@react-native-community/segmented-control": "^2.2.2",
|
|
"@react-navigation/elements": "^1.3.1",
|
|
"@react-navigation/native": "^6.0.8",
|
|
"@react-navigation/stack": "^6.1.1",
|
|
"@standardnotes/components": "^1.7.13",
|
|
"@standardnotes/features": "^1.36.0",
|
|
"@standardnotes/filepicker": "^1.10.3",
|
|
"@standardnotes/payloads": "^1.4.21",
|
|
"@standardnotes/react-native-aes": "^1.4.3",
|
|
"@standardnotes/react-native-textview": "1.0.2",
|
|
"@standardnotes/react-native-utils": "1.0.1",
|
|
"@standardnotes/sncrypto-common": "1.7.3",
|
|
"@standardnotes/snjs": "2.92.9",
|
|
"@standardnotes/stylekit": "5.20.0",
|
|
"@types/styled-components-react-native": "5.1.3",
|
|
"js-base64": "^3.7.2",
|
|
"moment": "^2.29.1",
|
|
"react": "17.0.2",
|
|
"react-native": "0.67.4",
|
|
"react-native-alternate-icons": "standardnotes/react-native-alternate-icons#1d335d",
|
|
"react-native-default-preference": "^1.4.3",
|
|
"react-native-document-picker": "^8.0.0",
|
|
"react-native-fab": "standardnotes/react-native-fab#cb60e00",
|
|
"react-native-file-viewer": "^2.1.5",
|
|
"react-native-fingerprint-scanner": "standardnotes/react-native-fingerprint-scanner#8f3b2df05d88350f1f704417c8b90981cec87301",
|
|
"react-native-flag-secure-android": "standardnotes/react-native-flag-secure-android#cb08e74",
|
|
"react-native-fs": "^2.19.0",
|
|
"react-native-gesture-handler": "2.3.2",
|
|
"react-native-keychain": "^8.0.0",
|
|
"react-native-mail": "standardnotes/react-native-mail#fd26119e67a2ffc5eaa95a9c17049743e39ce2d3",
|
|
"react-native-privacy-snapshot": "standardnotes/react-native-privacy-snapshot#653e904",
|
|
"react-native-reanimated": "^2.5.0",
|
|
"react-native-safe-area-context": "^4.2.2",
|
|
"react-native-screens": "3.13.1",
|
|
"react-native-search-bar": "standardnotes/react-native-search-bar#7d2139d",
|
|
"react-native-search-box": "standardnotes/react-native-search-box#c0de5bab18cb418fef75ef2c2cd921304142e492",
|
|
"react-native-share": "^7.3.7",
|
|
"react-native-sodium-jsi": "1.1.7",
|
|
"react-native-static-server": "standardnotes/react-native-static-server#d0c4cb0feae233634ef26fc33118f258192c7b7d",
|
|
"react-native-store-review": "^0.2.0",
|
|
"react-native-svg": "^12.3.0",
|
|
"react-native-svg-transformer": "^1.0.0",
|
|
"react-native-tab-view": "^3.1.1",
|
|
"react-native-toast-message": "^2.1.3",
|
|
"react-native-url-polyfill": "^1.3.0",
|
|
"react-native-vector-icons": "^9.1.0",
|
|
"react-native-version-info": "^1.1.1",
|
|
"react-native-webview": "11.17.2",
|
|
"react-native-zip-archive": "^6.0.6",
|
|
"react-navigation-header-buttons": "^9.0.1",
|
|
"styled-components": "5.3.5"
|
|
},
|
|
"devDependencies": {
|
|
"@babel/core": "^7.17.8",
|
|
"@babel/preset-typescript": "^7.16.7",
|
|
"@babel/runtime": "^7.17.8",
|
|
"@react-native-community/eslint-config": "^3.0.1",
|
|
"@types/detox": "^18.1.0",
|
|
"@types/faker": "^6.6.9",
|
|
"@types/jest": "^27.4.1",
|
|
"@types/js-base64": "^3.3.1",
|
|
"@types/react-native": "^0.67.3",
|
|
"@types/react-native-vector-icons": "^6.4.10",
|
|
"@types/react-test-renderer": "^17.0.1",
|
|
"@typescript-eslint/eslint-plugin": "^5.17.0",
|
|
"@typescript-eslint/parser": "^5.16.0",
|
|
"babel-jest": "^27.5.1",
|
|
"concurrently": "^7.0.0",
|
|
"detox": "^19.5.7",
|
|
"eslint": "^8.12.0",
|
|
"eslint-plugin-flowtype": "^8.0.3",
|
|
"eslint-plugin-prettier": "^4.0.0",
|
|
"faker": "^6.6.6",
|
|
"jest": "^27.5.1",
|
|
"jest-circus": "^27.5.1",
|
|
"metro-react-native-babel-preset": "^0.69.1",
|
|
"npm-check-updates": "^12.5.4",
|
|
"npm-run-all": "^4.1.5",
|
|
"patch-package": "^6.4.7",
|
|
"pod-install": "^0.1.32",
|
|
"postinstall-postinstall": "^2.1.0",
|
|
"prettier": "^2.6.0",
|
|
"prettier-plugin-organize-imports": "^2.3.4",
|
|
"react-native-pager-view": "^5.4.15",
|
|
"react-test-renderer": "17.0.2",
|
|
"replace-in-file": "^6.3.2",
|
|
"typescript": "^4.6.3"
|
|
},
|
|
"jest": {
|
|
"preset": "react-native"
|
|
},
|
|
"detox": {
|
|
"configurations": {
|
|
"ios.sim.debug": {
|
|
"binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/StandardNotes.app",
|
|
"build": "xcodebuild -workspace ios/StandardNotes.xcworkspace -scheme StandardNotes -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",
|
|
"type": "ios.simulator",
|
|
"device": {
|
|
"type": "iPhone SE (2nd generation)"
|
|
}
|
|
},
|
|
"ios.sim.release": {
|
|
"binaryPath": "ios/build/Build/Products/Release-iphonesimulator/StandardNotes.app",
|
|
"build": "xcodebuild -workspace ios/StandardNotes.xcworkspace -scheme StandardNotes -configuration Release -sdk iphonesimulator -derivedDataPath ios/build",
|
|
"type": "ios.simulator",
|
|
"device": {
|
|
"type": "iPhone 11 Pro"
|
|
}
|
|
},
|
|
"android.emu.debug": {
|
|
"binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk",
|
|
"build": "cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ..",
|
|
"type": "android.emulator",
|
|
"device": {
|
|
"avdName": "pixel"
|
|
}
|
|
},
|
|
"android.emu.release": {
|
|
"binaryPath": "android/app/build/outputs/apk/release/app-release.apk",
|
|
"build": "cd android && ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release && cd ..",
|
|
"type": "android.emulator",
|
|
"device": {
|
|
"avdName": "pixel"
|
|
}
|
|
}
|
|
},
|
|
"test-runner": "jest"
|
|
}
|
|
}
|