mirror of
https://github.com/standardnotes/mobile.git
synced 2026-02-25 11:06:17 -05:00
chore: major deps (#574)
* chore: upgrade core rn dep * chore: move rn document picker to main deps * chore: upgrade dev deps * chore: upgrade rnsodium * chore: upgrade styled-components * chore: upgrade rn doc picker * chore: upgrade react navigation * chore: upgrade sntextview and react-native-aes * chore: update static server patch file * chore: fix types * chore: upgrade snjs deps * chore: lint * chore: bump version
This commit is contained in:
2
.bundle/config
Normal file
2
.bundle/config
Normal file
@@ -0,0 +1,2 @@
|
||||
BUNDLE_PATH: "vendor/bundle"
|
||||
BUNDLE_FORCE_RUBY_PLATFORM: 1
|
||||
@@ -1,28 +1,23 @@
|
||||
{
|
||||
"name": "SN Mobile container",
|
||||
"build": {
|
||||
"dockerfile": "Dockerfile",
|
||||
// Update 'VARIANT' to pick a Node version: 10, 12, 14
|
||||
"args": { "VARIANT": "14" }
|
||||
},
|
||||
"name": "SN Mobile container",
|
||||
"build": {
|
||||
"dockerfile": "Dockerfile",
|
||||
// Update 'VARIANT' to pick a Node version: 10, 12, 14
|
||||
"args": { "VARIANT": "14" }
|
||||
},
|
||||
|
||||
// Set *default* container specific settings.json values on container create.
|
||||
"settings": {
|
||||
"terminal.integrated.shell.linux": "/bin/bash"
|
||||
},
|
||||
// Add the IDs of extensions you want installed when the container is created.
|
||||
"extensions": [
|
||||
"dbaeumer.vscode-eslint",
|
||||
"jpoissonnier.vscode-styled-components"
|
||||
],
|
||||
|
||||
// Add the IDs of extensions you want installed when the container is created.
|
||||
"extensions": [
|
||||
"dbaeumer.vscode-eslint",
|
||||
"jpoissonnier.vscode-styled-components"
|
||||
],
|
||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||
// "forwardPorts": [],
|
||||
|
||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||
// "forwardPorts": [],
|
||||
// Use 'postCreateCommand' to run commands after the container is created.
|
||||
"postCreateCommand": "yarn install"
|
||||
|
||||
// Use 'postCreateCommand' to run commands after the container is created.
|
||||
"postCreateCommand": "yarn install",
|
||||
|
||||
// Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root.
|
||||
// "remoteUser": "node"
|
||||
// Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root.
|
||||
// "remoteUser": "node"
|
||||
}
|
||||
|
||||
14
.eslintrc.js
14
.eslintrc.js
@@ -1,11 +1,19 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
extends: '@react-native-community',
|
||||
extends: ['@react-native-community', 'prettier'],
|
||||
parser: '@typescript-eslint/parser',
|
||||
plugins: ['@typescript-eslint'],
|
||||
overrides: [
|
||||
{
|
||||
files: ['*.ts', '*.tsx'],
|
||||
rules: {
|
||||
'@typescript-eslint/no-shadow': ['error'],
|
||||
'no-shadow': 'off',
|
||||
'no-undef': 'off',
|
||||
},
|
||||
},
|
||||
],
|
||||
rules: {
|
||||
'prettier/prettier': 'warn',
|
||||
'no-shadow': 'off',
|
||||
'@typescript-eslint/no-shadow': ['error'],
|
||||
},
|
||||
};
|
||||
|
||||
65
.flowconfig
Normal file
65
.flowconfig
Normal file
@@ -0,0 +1,65 @@
|
||||
[ignore]
|
||||
; We fork some components by platform
|
||||
.*/*[.]android.js
|
||||
|
||||
; Ignore "BUCK" generated dirs
|
||||
<PROJECT_ROOT>/\.buckd/
|
||||
|
||||
; Ignore polyfills
|
||||
node_modules/react-native/Libraries/polyfills/.*
|
||||
|
||||
; Flow doesn't support platforms
|
||||
.*/Libraries/Utilities/LoadingView.js
|
||||
|
||||
[untyped]
|
||||
.*/node_modules/@react-native-community/cli/.*/.*
|
||||
|
||||
[include]
|
||||
|
||||
[libs]
|
||||
node_modules/react-native/interface.js
|
||||
node_modules/react-native/flow/
|
||||
|
||||
[options]
|
||||
emoji=true
|
||||
|
||||
exact_by_default=true
|
||||
|
||||
format.bracket_spacing=false
|
||||
|
||||
module.file_ext=.js
|
||||
module.file_ext=.json
|
||||
module.file_ext=.ios.js
|
||||
|
||||
munge_underscores=true
|
||||
|
||||
module.name_mapper='^react-native/\(.*\)$' -> '<PROJECT_ROOT>/node_modules/react-native/\1'
|
||||
module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '<PROJECT_ROOT>/node_modules/react-native/Libraries/Image/RelativeImageStub'
|
||||
|
||||
suppress_type=$FlowIssue
|
||||
suppress_type=$FlowFixMe
|
||||
suppress_type=$FlowFixMeProps
|
||||
suppress_type=$FlowFixMeState
|
||||
|
||||
[lints]
|
||||
sketchy-null-number=warn
|
||||
sketchy-null-mixed=warn
|
||||
sketchy-number=warn
|
||||
untyped-type-import=warn
|
||||
nonstrict-import=warn
|
||||
deprecated-type=warn
|
||||
unsafe-getters-setters=warn
|
||||
unnecessary-invariant=warn
|
||||
signature-verification-failure=warn
|
||||
|
||||
[strict]
|
||||
deprecated-type
|
||||
nonstrict-import
|
||||
sketchy-null
|
||||
unclear-type
|
||||
unsafe-getters-setters
|
||||
untyped-import
|
||||
untyped-type-import
|
||||
|
||||
[version]
|
||||
^0.162.0
|
||||
2
.gitattributes
vendored
2
.gitattributes
vendored
@@ -1,2 +0,0 @@
|
||||
# specific for windows script files
|
||||
*.bat text eol=crlf
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -74,3 +74,5 @@ ios-release.bundle.map
|
||||
/android/*.hprof
|
||||
|
||||
codeqldb
|
||||
|
||||
vendor/bundle
|
||||
@@ -1,7 +1,6 @@
|
||||
module.exports = {
|
||||
arrowParens: 'avoid',
|
||||
bracketSpacing: true,
|
||||
jsxBracketSameLine: false,
|
||||
jsxSingleQuote: false,
|
||||
printWidth: 80,
|
||||
quoteProps: 'as-needed',
|
||||
|
||||
1
.ruby-version
Normal file
1
.ruby-version
Normal file
@@ -0,0 +1 @@
|
||||
2.7.4
|
||||
4
Gemfile
4
Gemfile
@@ -4,6 +4,10 @@
|
||||
|
||||
source "https://rubygems.org"
|
||||
|
||||
# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
|
||||
ruby '2.7.4'
|
||||
|
||||
gem 'cocoapods', '~> 1.11', '>= 1.11.2'
|
||||
gem 'fastlane'
|
||||
gem 'fastlane-plugin-bundletool'
|
||||
gem 'xcode-install'
|
||||
|
||||
79
Gemfile.lock
79
Gemfile.lock
@@ -3,8 +3,17 @@ GEM
|
||||
specs:
|
||||
CFPropertyList (3.0.5)
|
||||
rexml
|
||||
activesupport (6.1.5)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 1.6, < 2)
|
||||
minitest (>= 5.1)
|
||||
tzinfo (~> 2.0)
|
||||
zeitwerk (~> 2.3)
|
||||
addressable (2.8.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
algoliasearch (1.27.5)
|
||||
httpclient (~> 2.8, >= 2.8.3)
|
||||
json (>= 1.5.1)
|
||||
artifactory (3.0.15)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.2.0)
|
||||
@@ -25,10 +34,48 @@ GEM
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
babosa (1.0.4)
|
||||
claide (1.0.3)
|
||||
cocoapods (1.11.3)
|
||||
addressable (~> 2.8)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
cocoapods-core (= 1.11.3)
|
||||
cocoapods-deintegrate (>= 1.0.3, < 2.0)
|
||||
cocoapods-downloader (>= 1.4.0, < 2.0)
|
||||
cocoapods-plugins (>= 1.0.0, < 2.0)
|
||||
cocoapods-search (>= 1.0.0, < 2.0)
|
||||
cocoapods-trunk (>= 1.4.0, < 2.0)
|
||||
cocoapods-try (>= 1.1.0, < 2.0)
|
||||
colored2 (~> 3.1)
|
||||
escape (~> 0.0.4)
|
||||
fourflusher (>= 2.3.0, < 3.0)
|
||||
gh_inspector (~> 1.0)
|
||||
molinillo (~> 0.8.0)
|
||||
nap (~> 1.0)
|
||||
ruby-macho (>= 1.0, < 3.0)
|
||||
xcodeproj (>= 1.21.0, < 2.0)
|
||||
cocoapods-core (1.11.3)
|
||||
activesupport (>= 5.0, < 7)
|
||||
addressable (~> 2.8)
|
||||
algoliasearch (~> 1.0)
|
||||
concurrent-ruby (~> 1.1)
|
||||
fuzzy_match (~> 2.0.4)
|
||||
nap (~> 1.0)
|
||||
netrc (~> 0.11)
|
||||
public_suffix (~> 4.0)
|
||||
typhoeus (~> 1.0)
|
||||
cocoapods-deintegrate (1.0.5)
|
||||
cocoapods-downloader (1.5.1)
|
||||
cocoapods-plugins (1.0.0)
|
||||
nap
|
||||
cocoapods-search (1.0.1)
|
||||
cocoapods-trunk (1.6.0)
|
||||
nap (>= 0.8, < 2.0)
|
||||
netrc (~> 0.11)
|
||||
cocoapods-try (1.2.0)
|
||||
colored (1.2)
|
||||
colored2 (3.1.2)
|
||||
commander (4.6.0)
|
||||
highline (~> 2.0.0)
|
||||
concurrent-ruby (1.1.9)
|
||||
declarative (0.0.20)
|
||||
digest-crc (0.6.4)
|
||||
rake (>= 12.0.0, < 14.0.0)
|
||||
@@ -36,6 +83,9 @@ GEM
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
dotenv (2.7.6)
|
||||
emoji_regex (3.2.3)
|
||||
escape (0.0.4)
|
||||
ethon (0.15.0)
|
||||
ffi (>= 1.15.0)
|
||||
excon (0.89.0)
|
||||
faraday (1.8.0)
|
||||
faraday-em_http (~> 1.0)
|
||||
@@ -101,13 +151,11 @@ GEM
|
||||
xcodeproj (>= 1.13.0, < 2.0.0)
|
||||
xcpretty (~> 0.3.0)
|
||||
xcpretty-travis-formatter (>= 0.0.3)
|
||||
fastlane-plugin-bugsnag (2.2.0)
|
||||
git
|
||||
xml-simple
|
||||
fastlane-plugin-bundletool (1.0.4)
|
||||
ffi (1.15.5)
|
||||
fourflusher (2.3.1)
|
||||
fuzzy_match (2.0.4)
|
||||
gh_inspector (1.1.3)
|
||||
git (1.10.0)
|
||||
rchardet (~> 1.8)
|
||||
google-apis-androidpublisher_v3 (0.14.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-core (0.4.1)
|
||||
@@ -150,22 +198,27 @@ GEM
|
||||
http-cookie (1.0.4)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.8.3)
|
||||
i18n (1.10.0)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jmespath (1.4.0)
|
||||
json (2.6.1)
|
||||
jwt (2.3.0)
|
||||
memoist (0.16.2)
|
||||
mini_magick (4.11.0)
|
||||
mini_mime (1.1.2)
|
||||
minitest (5.15.0)
|
||||
molinillo (0.8.0)
|
||||
multi_json (1.15.0)
|
||||
multipart-post (2.0.0)
|
||||
nanaimo (0.3.0)
|
||||
nap (1.1.0)
|
||||
naturally (2.2.1)
|
||||
netrc (0.11.0)
|
||||
optparse (0.1.1)
|
||||
os (1.1.4)
|
||||
plist (3.6.0)
|
||||
public_suffix (4.0.6)
|
||||
rake (13.0.6)
|
||||
rchardet (1.8.0)
|
||||
representable (3.1.1)
|
||||
declarative (< 0.1.0)
|
||||
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||
@@ -173,6 +226,7 @@ GEM
|
||||
retriable (3.1.2)
|
||||
rexml (3.2.5)
|
||||
rouge (2.0.7)
|
||||
ruby-macho (2.5.1)
|
||||
ruby2_keywords (0.0.5)
|
||||
rubyzip (2.3.2)
|
||||
security (0.1.3)
|
||||
@@ -192,6 +246,10 @@ GEM
|
||||
tty-screen (0.8.1)
|
||||
tty-spinner (0.9.3)
|
||||
tty-cursor (~> 0.7)
|
||||
typhoeus (1.4.0)
|
||||
ethon (>= 0.9.0)
|
||||
tzinfo (2.0.4)
|
||||
concurrent-ruby (~> 1.0)
|
||||
uber (0.1.0)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
@@ -213,18 +271,19 @@ GEM
|
||||
rouge (~> 2.0.7)
|
||||
xcpretty-travis-formatter (1.0.1)
|
||||
xcpretty (~> 0.2, >= 0.0.7)
|
||||
xml-simple (1.1.9)
|
||||
rexml
|
||||
zeitwerk (2.5.4)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
x86_64-darwin-18
|
||||
|
||||
DEPENDENCIES
|
||||
cocoapods (~> 1.11, >= 1.11.2)
|
||||
fastlane
|
||||
fastlane-plugin-bugsnag
|
||||
fastlane-plugin-bundletool
|
||||
xcode-install
|
||||
|
||||
RUBY VERSION
|
||||
ruby 2.7.4p191
|
||||
|
||||
BUNDLED WITH
|
||||
2.2.2
|
||||
|
||||
@@ -120,7 +120,7 @@ def jscFlavor = 'org.webkit:android-jsc:+'
|
||||
/**
|
||||
* Whether to enable the Hermes VM.
|
||||
*
|
||||
* This should be set on project.ext.react and mirrored here. If it is not set
|
||||
* This should be set on project.ext.react and that value will be read here. If it is not set
|
||||
* on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
|
||||
* and the benefits of using Hermes will therefore be sharply reduced.
|
||||
*/
|
||||
@@ -228,6 +228,7 @@ dependencies {
|
||||
|
||||
implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
|
||||
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02'
|
||||
implementation 'de.undercouch:gradle-download-task:5.0.2'
|
||||
|
||||
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
|
||||
exclude group:'com.facebook.fbjni'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#Thu Nov 09 11:32:04 CST 2017
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
|
||||
zipStorePath=wrapper/dists
|
||||
3
android/app/proguard-rules.pro
vendored
3
android/app/proguard-rules.pro
vendored
@@ -21,6 +21,9 @@
|
||||
-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters
|
||||
-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip
|
||||
|
||||
-keep class com.swmansion.reanimated.** { *; }
|
||||
-keep class com.facebook.react.turbomodule.** { *; }
|
||||
|
||||
# Do not strip any method/class that is annotated with @DoNotStrip
|
||||
-keep @com.facebook.proguard.annotations.DoNotStrip class *
|
||||
-keep @com.facebook.common.internal.DoNotStrip class *
|
||||
|
||||
29
android/app/src/main/res/drawable/rn_edit_text_material.xml
Normal file
29
android/app/src/main/res/drawable/rn_edit_text_material.xml
Normal file
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2014 The Android Open Source Project
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<inset xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material"
|
||||
android:insetRight="@dimen/abc_edit_text_inset_horizontal_material"
|
||||
android:insetTop="@dimen/abc_edit_text_inset_top_material"
|
||||
android:insetBottom="@dimen/abc_edit_text_inset_bottom_material">
|
||||
<selector>
|
||||
<!--
|
||||
This file is a copy of abc_edit_text_material (https://bit.ly/3k8fX7I).
|
||||
The item below with state_pressed="false" and state_focused="false" causes a NullPointerException.
|
||||
NullPointerException:tempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)'
|
||||
<item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
|
||||
For more info, see https://bit.ly/3CdLStv (react-native/pull/29452) and https://bit.ly/3nxOMoR.
|
||||
-->
|
||||
<item android:state_enabled="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
|
||||
<item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha"/>
|
||||
</selector>
|
||||
</inset>
|
||||
@@ -4,6 +4,7 @@
|
||||
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<!-- Customize your theme here. -->
|
||||
<item name="android:windowBackground">@color/background</item>
|
||||
<item name="android:editTextBackground">@drawable/rn_edit_text_material</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
buildscript {
|
||||
ext.kotlinVersion = '1.3.50'
|
||||
ext.kotlinVersion = '1.5.20'
|
||||
|
||||
ext {
|
||||
buildToolsVersion = "30.0.3"
|
||||
@@ -18,8 +18,9 @@ buildscript {
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
classpath('com.android.tools.build:gradle:4.2.2')
|
||||
classpath('com.android.tools.build:gradle:7.1.2')
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
|
||||
classpath 'de.undercouch:gradle-download-task:5.0.2'
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
@@ -28,8 +29,6 @@ buildscript {
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
mavenLocal()
|
||||
maven {
|
||||
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
|
||||
url("$rootDir/../node_modules/react-native/android")
|
||||
@@ -38,6 +37,13 @@ allprojects {
|
||||
// Android JSC is installed from npm
|
||||
url("$rootDir/../node_modules/jsc-android/dist")
|
||||
}
|
||||
mavenCentral {
|
||||
// We don't want to fetch react-native from Maven Central as there are
|
||||
// older versions over there.
|
||||
content {
|
||||
excludeGroup "com.facebook.react"
|
||||
}
|
||||
}
|
||||
google()
|
||||
jcenter()
|
||||
maven {
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
# Specifies the JVM arguments used for the daemon process.
|
||||
# The setting is particularly useful for tweaking memory settings.
|
||||
# Default value: -Xmx10248m -XX:MaxPermSize=256m
|
||||
# Default value: -Xmx1024m -XX:MaxPermSize=256m
|
||||
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
|
||||
|
||||
# When configured, Gradle will run in incubating parallel mode.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
@@ -1,3 +1,4 @@
|
||||
module.exports = {
|
||||
presets: ['module:metro-react-native-babel-preset'],
|
||||
plugins: ['react-native-reanimated/plugin'],
|
||||
};
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
const faker = require('faker');
|
||||
import { by, device, element, expect, waitFor } from 'detox';
|
||||
import Detox, { by, device, element, expect, waitFor } from 'detox';
|
||||
|
||||
// eslint-disable-next-line no-undef
|
||||
export const expectToBeVisible = async (testedElement: Detox.DetoxAny) => {
|
||||
export const expectToBeVisible = async (
|
||||
testedElement: Detox.IndexableNativeElement
|
||||
) => {
|
||||
try {
|
||||
await expect(testedElement).toBeVisible();
|
||||
return true;
|
||||
@@ -13,13 +14,10 @@ export const expectToBeVisible = async (testedElement: Detox.DetoxAny) => {
|
||||
|
||||
const checkAfterReinstall = async () => {
|
||||
if (device.getPlatform() === 'ios') {
|
||||
let alertVisible = await expectToBeVisible(
|
||||
element(
|
||||
by
|
||||
.label('Delete Local Data')
|
||||
.and(by.type('_UIAlertControllerActionView'))
|
||||
)
|
||||
const alertElement = element(
|
||||
by.label('Delete Local Data').and(by.type('_UIAlertControllerActionView'))
|
||||
);
|
||||
let alertVisible = await expectToBeVisible(alertElement);
|
||||
if (alertVisible) {
|
||||
await element(
|
||||
by
|
||||
@@ -59,5 +57,5 @@ export const openComposeNewNoteScreen = async () => {
|
||||
export const randomCredentials = {
|
||||
email: faker.internet.exampleEmail(),
|
||||
password: faker.internet.password(),
|
||||
syncServerUrl: 'https://app-dev.standardnotes.org',
|
||||
syncServerUrl: 'https://app-dev.standardnotes.com',
|
||||
};
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
// import { openComposeNewNoteScreen } from '../../helpers';
|
||||
// import faker from 'faker';
|
||||
// import { element, by, expect, waitFor } from 'detox';
|
||||
|
||||
// describe('Compose', () => {
|
||||
// describe('Form', () => {
|
||||
// // beforeAll(async () => {
|
||||
// // await openComposeNewNoteScreen();
|
||||
// // });
|
||||
|
||||
// // it('should have the "Title" and "Content" fields visible', async () => {
|
||||
// // await expect(element(by.id('noteTitleField'))).toBeVisible();
|
||||
// // await expect(element(by.id('noteContentField'))).toBeVisible();
|
||||
// // });
|
||||
|
||||
// // it('should have the back button visible', async () => {
|
||||
// // await expect(element(by.id('headerButton'))).toBeVisible();
|
||||
// // });
|
||||
// // });
|
||||
|
||||
// // describe('New note', () => {
|
||||
// // it('should be created with only the "Title"', async () => {
|
||||
// // const noteTitle = faker.random.word();
|
||||
// // await element(by.id('noteTitleField')).typeText(noteTitle);
|
||||
// // await waitFor(element(by.id('noteTitleField')))
|
||||
// // .toHaveText(noteTitle)
|
||||
// // .withTimeout(2000);
|
||||
// // });
|
||||
|
||||
// // afterEach(async () => {
|
||||
// // await element(by.id('headerButton')).tap();
|
||||
// // });
|
||||
// // });
|
||||
// });
|
||||
541
ios/Podfile.lock
541
ios/Podfile.lock
@@ -2,14 +2,14 @@ PODS:
|
||||
- boost (1.76.0)
|
||||
- CocoaAsyncSocket (7.6.5)
|
||||
- DoubleConversion (1.1.6)
|
||||
- FBLazyVector (0.66.4)
|
||||
- FBReactNativeSpec (0.66.4):
|
||||
- FBLazyVector (0.67.4)
|
||||
- FBReactNativeSpec (0.67.4):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTRequired (= 0.66.4)
|
||||
- RCTTypeSafety (= 0.66.4)
|
||||
- React-Core (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- ReactCommon/turbomodule/core (= 0.66.4)
|
||||
- RCTRequired (= 0.67.4)
|
||||
- RCTTypeSafety (= 0.67.4)
|
||||
- React-Core (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (= 0.67.4)
|
||||
- Flipper (0.99.0):
|
||||
- Flipper-Folly (~> 2.6)
|
||||
- Flipper-RSocket (~> 1.4)
|
||||
@@ -88,318 +88,350 @@ PODS:
|
||||
- DoubleConversion
|
||||
- fmt (~> 6.2.1)
|
||||
- glog
|
||||
- RCTRequired (0.66.4)
|
||||
- RCTTypeSafety (0.66.4):
|
||||
- FBLazyVector (= 0.66.4)
|
||||
- RCTRequired (0.67.4)
|
||||
- RCTTypeSafety (0.67.4):
|
||||
- FBLazyVector (= 0.67.4)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTRequired (= 0.66.4)
|
||||
- React-Core (= 0.66.4)
|
||||
- React (0.66.4):
|
||||
- React-Core (= 0.66.4)
|
||||
- React-Core/DevSupport (= 0.66.4)
|
||||
- React-Core/RCTWebSocket (= 0.66.4)
|
||||
- React-RCTActionSheet (= 0.66.4)
|
||||
- React-RCTAnimation (= 0.66.4)
|
||||
- React-RCTBlob (= 0.66.4)
|
||||
- React-RCTImage (= 0.66.4)
|
||||
- React-RCTLinking (= 0.66.4)
|
||||
- React-RCTNetwork (= 0.66.4)
|
||||
- React-RCTSettings (= 0.66.4)
|
||||
- React-RCTText (= 0.66.4)
|
||||
- React-RCTVibration (= 0.66.4)
|
||||
- React-callinvoker (0.66.4)
|
||||
- React-Core (0.66.4):
|
||||
- RCTRequired (= 0.67.4)
|
||||
- React-Core (= 0.67.4)
|
||||
- React (0.67.4):
|
||||
- React-Core (= 0.67.4)
|
||||
- React-Core/DevSupport (= 0.67.4)
|
||||
- React-Core/RCTWebSocket (= 0.67.4)
|
||||
- React-RCTActionSheet (= 0.67.4)
|
||||
- React-RCTAnimation (= 0.67.4)
|
||||
- React-RCTBlob (= 0.67.4)
|
||||
- React-RCTImage (= 0.67.4)
|
||||
- React-RCTLinking (= 0.67.4)
|
||||
- React-RCTNetwork (= 0.67.4)
|
||||
- React-RCTSettings (= 0.67.4)
|
||||
- React-RCTText (= 0.67.4)
|
||||
- React-RCTVibration (= 0.67.4)
|
||||
- React-callinvoker (0.67.4)
|
||||
- React-Core (0.67.4):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default (= 0.66.4)
|
||||
- React-cxxreact (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-jsiexecutor (= 0.66.4)
|
||||
- React-perflogger (= 0.66.4)
|
||||
- React-Core/Default (= 0.67.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- Yoga
|
||||
- React-Core/CoreModulesHeaders (0.66.4):
|
||||
- React-Core/CoreModulesHeaders (0.67.4):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-jsiexecutor (= 0.66.4)
|
||||
- React-perflogger (= 0.66.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- Yoga
|
||||
- React-Core/Default (0.66.4):
|
||||
- React-Core/Default (0.67.4):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-cxxreact (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-jsiexecutor (= 0.66.4)
|
||||
- React-perflogger (= 0.66.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- Yoga
|
||||
- React-Core/DevSupport (0.66.4):
|
||||
- React-Core/DevSupport (0.67.4):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default (= 0.66.4)
|
||||
- React-Core/RCTWebSocket (= 0.66.4)
|
||||
- React-cxxreact (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-jsiexecutor (= 0.66.4)
|
||||
- React-jsinspector (= 0.66.4)
|
||||
- React-perflogger (= 0.66.4)
|
||||
- React-Core/Default (= 0.67.4)
|
||||
- React-Core/RCTWebSocket (= 0.67.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-jsinspector (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- Yoga
|
||||
- React-Core/RCTActionSheetHeaders (0.66.4):
|
||||
- React-Core/RCTActionSheetHeaders (0.67.4):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-jsiexecutor (= 0.66.4)
|
||||
- React-perflogger (= 0.66.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- Yoga
|
||||
- React-Core/RCTAnimationHeaders (0.66.4):
|
||||
- React-Core/RCTAnimationHeaders (0.67.4):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-jsiexecutor (= 0.66.4)
|
||||
- React-perflogger (= 0.66.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- Yoga
|
||||
- React-Core/RCTBlobHeaders (0.66.4):
|
||||
- React-Core/RCTBlobHeaders (0.67.4):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-jsiexecutor (= 0.66.4)
|
||||
- React-perflogger (= 0.66.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- Yoga
|
||||
- React-Core/RCTImageHeaders (0.66.4):
|
||||
- React-Core/RCTImageHeaders (0.67.4):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-jsiexecutor (= 0.66.4)
|
||||
- React-perflogger (= 0.66.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- Yoga
|
||||
- React-Core/RCTLinkingHeaders (0.66.4):
|
||||
- React-Core/RCTLinkingHeaders (0.67.4):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-jsiexecutor (= 0.66.4)
|
||||
- React-perflogger (= 0.66.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- Yoga
|
||||
- React-Core/RCTNetworkHeaders (0.66.4):
|
||||
- React-Core/RCTNetworkHeaders (0.67.4):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-jsiexecutor (= 0.66.4)
|
||||
- React-perflogger (= 0.66.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- Yoga
|
||||
- React-Core/RCTSettingsHeaders (0.66.4):
|
||||
- React-Core/RCTSettingsHeaders (0.67.4):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-jsiexecutor (= 0.66.4)
|
||||
- React-perflogger (= 0.66.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- Yoga
|
||||
- React-Core/RCTTextHeaders (0.66.4):
|
||||
- React-Core/RCTTextHeaders (0.67.4):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-jsiexecutor (= 0.66.4)
|
||||
- React-perflogger (= 0.66.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- Yoga
|
||||
- React-Core/RCTVibrationHeaders (0.66.4):
|
||||
- React-Core/RCTVibrationHeaders (0.67.4):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-jsiexecutor (= 0.66.4)
|
||||
- React-perflogger (= 0.66.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- Yoga
|
||||
- React-Core/RCTWebSocket (0.66.4):
|
||||
- React-Core/RCTWebSocket (0.67.4):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default (= 0.66.4)
|
||||
- React-cxxreact (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-jsiexecutor (= 0.66.4)
|
||||
- React-perflogger (= 0.66.4)
|
||||
- React-Core/Default (= 0.67.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- Yoga
|
||||
- React-CoreModules (0.66.4):
|
||||
- FBReactNativeSpec (= 0.66.4)
|
||||
- React-CoreModules (0.67.4):
|
||||
- FBReactNativeSpec (= 0.67.4)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTTypeSafety (= 0.66.4)
|
||||
- React-Core/CoreModulesHeaders (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-RCTImage (= 0.66.4)
|
||||
- ReactCommon/turbomodule/core (= 0.66.4)
|
||||
- React-cxxreact (0.66.4):
|
||||
- RCTTypeSafety (= 0.67.4)
|
||||
- React-Core/CoreModulesHeaders (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-RCTImage (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (= 0.67.4)
|
||||
- React-cxxreact (0.67.4):
|
||||
- boost (= 1.76.0)
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-callinvoker (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-jsinspector (= 0.66.4)
|
||||
- React-logger (= 0.66.4)
|
||||
- React-perflogger (= 0.66.4)
|
||||
- React-runtimeexecutor (= 0.66.4)
|
||||
- React-jsi (0.66.4):
|
||||
- React-callinvoker (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsinspector (= 0.67.4)
|
||||
- React-logger (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-runtimeexecutor (= 0.67.4)
|
||||
- React-jsi (0.67.4):
|
||||
- boost (= 1.76.0)
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-jsi/Default (= 0.66.4)
|
||||
- React-jsi/Default (0.66.4):
|
||||
- React-jsi/Default (= 0.67.4)
|
||||
- React-jsi/Default (0.67.4):
|
||||
- boost (= 1.76.0)
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-jsiexecutor (0.66.4):
|
||||
- React-jsiexecutor (0.67.4):
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-cxxreact (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-perflogger (= 0.66.4)
|
||||
- React-jsinspector (0.66.4)
|
||||
- React-logger (0.66.4):
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-jsinspector (0.67.4)
|
||||
- React-logger (0.67.4):
|
||||
- glog
|
||||
- react-native-aes (1.3.9):
|
||||
- react-native-aes (1.4.3):
|
||||
- React-Core
|
||||
- react-native-document-picker (5.0.4):
|
||||
- react-native-document-picker (8.0.0):
|
||||
- React-Core
|
||||
- react-native-fingerprint-scanner (5.0.0):
|
||||
- React-Core
|
||||
- react-native-mail (4.1.0):
|
||||
- React-Core
|
||||
- react-native-safe-area-context (3.1.9):
|
||||
- react-native-pager-view (5.4.15):
|
||||
- React-Core
|
||||
- react-native-safe-area-context (4.2.1):
|
||||
- RCT-Folly
|
||||
- RCTRequired
|
||||
- RCTTypeSafety
|
||||
- React
|
||||
- ReactCommon/turbomodule/core
|
||||
- react-native-segmented-control (2.2.2):
|
||||
- React-Core
|
||||
- react-native-sodium-jsi (1.1.3):
|
||||
- react-native-sodium-jsi (1.1.7):
|
||||
- React-Core
|
||||
- react-native-static-server (0.5.0):
|
||||
- GCDWebServer (~> 3.0)
|
||||
- React
|
||||
- react-native-version-info (1.1.0):
|
||||
- react-native-version-info (1.1.1):
|
||||
- React-Core
|
||||
- react-native-webview (11.15.0):
|
||||
- react-native-webview (11.17.2):
|
||||
- React-Core
|
||||
- React-perflogger (0.66.4)
|
||||
- React-RCTActionSheet (0.66.4):
|
||||
- React-Core/RCTActionSheetHeaders (= 0.66.4)
|
||||
- React-RCTAnimation (0.66.4):
|
||||
- FBReactNativeSpec (= 0.66.4)
|
||||
- React-perflogger (0.67.4)
|
||||
- React-RCTActionSheet (0.67.4):
|
||||
- React-Core/RCTActionSheetHeaders (= 0.67.4)
|
||||
- React-RCTAnimation (0.67.4):
|
||||
- FBReactNativeSpec (= 0.67.4)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTTypeSafety (= 0.66.4)
|
||||
- React-Core/RCTAnimationHeaders (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- ReactCommon/turbomodule/core (= 0.66.4)
|
||||
- React-RCTBlob (0.66.4):
|
||||
- FBReactNativeSpec (= 0.66.4)
|
||||
- RCTTypeSafety (= 0.67.4)
|
||||
- React-Core/RCTAnimationHeaders (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (= 0.67.4)
|
||||
- React-RCTBlob (0.67.4):
|
||||
- FBReactNativeSpec (= 0.67.4)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/RCTBlobHeaders (= 0.66.4)
|
||||
- React-Core/RCTWebSocket (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-RCTNetwork (= 0.66.4)
|
||||
- ReactCommon/turbomodule/core (= 0.66.4)
|
||||
- React-RCTImage (0.66.4):
|
||||
- FBReactNativeSpec (= 0.66.4)
|
||||
- React-Core/RCTBlobHeaders (= 0.67.4)
|
||||
- React-Core/RCTWebSocket (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-RCTNetwork (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (= 0.67.4)
|
||||
- React-RCTImage (0.67.4):
|
||||
- FBReactNativeSpec (= 0.67.4)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTTypeSafety (= 0.66.4)
|
||||
- React-Core/RCTImageHeaders (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-RCTNetwork (= 0.66.4)
|
||||
- ReactCommon/turbomodule/core (= 0.66.4)
|
||||
- React-RCTLinking (0.66.4):
|
||||
- FBReactNativeSpec (= 0.66.4)
|
||||
- React-Core/RCTLinkingHeaders (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- ReactCommon/turbomodule/core (= 0.66.4)
|
||||
- React-RCTNetwork (0.66.4):
|
||||
- FBReactNativeSpec (= 0.66.4)
|
||||
- RCTTypeSafety (= 0.67.4)
|
||||
- React-Core/RCTImageHeaders (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-RCTNetwork (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (= 0.67.4)
|
||||
- React-RCTLinking (0.67.4):
|
||||
- FBReactNativeSpec (= 0.67.4)
|
||||
- React-Core/RCTLinkingHeaders (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (= 0.67.4)
|
||||
- React-RCTNetwork (0.67.4):
|
||||
- FBReactNativeSpec (= 0.67.4)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTTypeSafety (= 0.66.4)
|
||||
- React-Core/RCTNetworkHeaders (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- ReactCommon/turbomodule/core (= 0.66.4)
|
||||
- React-RCTSettings (0.66.4):
|
||||
- FBReactNativeSpec (= 0.66.4)
|
||||
- RCTTypeSafety (= 0.67.4)
|
||||
- React-Core/RCTNetworkHeaders (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (= 0.67.4)
|
||||
- React-RCTSettings (0.67.4):
|
||||
- FBReactNativeSpec (= 0.67.4)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTTypeSafety (= 0.66.4)
|
||||
- React-Core/RCTSettingsHeaders (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- ReactCommon/turbomodule/core (= 0.66.4)
|
||||
- React-RCTText (0.66.4):
|
||||
- React-Core/RCTTextHeaders (= 0.66.4)
|
||||
- React-RCTVibration (0.66.4):
|
||||
- FBReactNativeSpec (= 0.66.4)
|
||||
- RCTTypeSafety (= 0.67.4)
|
||||
- React-Core/RCTSettingsHeaders (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (= 0.67.4)
|
||||
- React-RCTText (0.67.4):
|
||||
- React-Core/RCTTextHeaders (= 0.67.4)
|
||||
- React-RCTVibration (0.67.4):
|
||||
- FBReactNativeSpec (= 0.67.4)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/RCTVibrationHeaders (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- ReactCommon/turbomodule/core (= 0.66.4)
|
||||
- React-runtimeexecutor (0.66.4):
|
||||
- React-jsi (= 0.66.4)
|
||||
- ReactCommon/turbomodule/core (0.66.4):
|
||||
- React-Core/RCTVibrationHeaders (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (= 0.67.4)
|
||||
- React-runtimeexecutor (0.67.4):
|
||||
- React-jsi (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (0.67.4):
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-callinvoker (= 0.66.4)
|
||||
- React-Core (= 0.66.4)
|
||||
- React-cxxreact (= 0.66.4)
|
||||
- React-jsi (= 0.66.4)
|
||||
- React-logger (= 0.66.4)
|
||||
- React-perflogger (= 0.66.4)
|
||||
- React-callinvoker (= 0.67.4)
|
||||
- React-Core (= 0.67.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-logger (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- ReactNativeAlternateIcons (0.3.0):
|
||||
- React
|
||||
- RNCAsyncStorage (1.12.1):
|
||||
- React-Core
|
||||
- RNCMaskedView (0.1.10):
|
||||
- RNCMaskedView (0.1.11):
|
||||
- React
|
||||
- RNDefaultPreference (1.4.3):
|
||||
- React
|
||||
- RNFileViewer (2.1.4):
|
||||
- RNFileViewer (2.1.5):
|
||||
- React-Core
|
||||
- RNFS (2.16.6):
|
||||
- React
|
||||
- RNGestureHandler (1.9.0):
|
||||
- RNFS (2.19.0):
|
||||
- React-Core
|
||||
- RNGestureHandler (2.3.2):
|
||||
- React-Core
|
||||
- RNKeychain (8.0.0):
|
||||
- React-Core
|
||||
- RNKeychain (4.0.5):
|
||||
- React
|
||||
- RNPrivacySnapshot (1.0.0):
|
||||
- React-Core
|
||||
- RNReanimated (1.13.3):
|
||||
- RNReanimated (2.4.1):
|
||||
- DoubleConversion
|
||||
- FBLazyVector
|
||||
- FBReactNativeSpec
|
||||
- glog
|
||||
- RCT-Folly
|
||||
- RCTRequired
|
||||
- RCTTypeSafety
|
||||
- React
|
||||
- React-callinvoker
|
||||
- React-Core
|
||||
- RNScreens (3.4.0):
|
||||
- React-Core/DevSupport
|
||||
- React-Core/RCTWebSocket
|
||||
- React-CoreModules
|
||||
- React-cxxreact
|
||||
- React-jsi
|
||||
- React-jsiexecutor
|
||||
- React-jsinspector
|
||||
- React-RCTActionSheet
|
||||
- React-RCTAnimation
|
||||
- React-RCTBlob
|
||||
- React-RCTImage
|
||||
- React-RCTLinking
|
||||
- React-RCTNetwork
|
||||
- React-RCTSettings
|
||||
- React-RCTText
|
||||
- ReactCommon/turbomodule/core
|
||||
- Yoga
|
||||
- RNScreens (3.13.1):
|
||||
- React-Core
|
||||
- React-RCTImage
|
||||
- RNSearchBar (3.5.1):
|
||||
- React-Core
|
||||
- RNStoreReview (0.1.5):
|
||||
- React
|
||||
- RNSVG (12.1.1):
|
||||
- React
|
||||
- RNVectorIcons (7.1.0):
|
||||
- React
|
||||
- RNZipArchive (6.0.2):
|
||||
- RNStoreReview (0.2.0):
|
||||
- React-Core
|
||||
- RNZipArchive/Core (= 6.0.2)
|
||||
- RNSVG (12.3.0):
|
||||
- React-Core
|
||||
- RNVectorIcons (9.1.0):
|
||||
- React-Core
|
||||
- RNZipArchive (6.0.6):
|
||||
- React-Core
|
||||
- RNZipArchive/Core (= 6.0.6)
|
||||
- SSZipArchive (= 2.2.3)
|
||||
- RNZipArchive/Core (6.0.2):
|
||||
- RNZipArchive/Core (6.0.6):
|
||||
- React-Core
|
||||
- SSZipArchive (= 2.2.3)
|
||||
- sn-textview (1.0.1):
|
||||
- sn-textview (1.0.2):
|
||||
- React-Core
|
||||
- SNReactNative (1.0.1):
|
||||
- React-Core
|
||||
@@ -436,6 +468,7 @@ DEPENDENCIES:
|
||||
- FlipperKit/FlipperKitUserDefaultsPlugin (= 0.99.0)
|
||||
- FlipperKit/SKIOSNetworkPlugin (= 0.99.0)
|
||||
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
|
||||
- OpenSSL-Universal (= 1.1.180)
|
||||
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
|
||||
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
|
||||
- RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
|
||||
@@ -450,10 +483,11 @@ DEPENDENCIES:
|
||||
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
|
||||
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
|
||||
- React-logger (from `../node_modules/react-native/ReactCommon/logger`)
|
||||
- react-native-aes (from `../node_modules/react-native-aes-crypto`)
|
||||
- "react-native-aes (from `../node_modules/@standardnotes/react-native-aes`)"
|
||||
- react-native-document-picker (from `../node_modules/react-native-document-picker`)
|
||||
- react-native-fingerprint-scanner (from `../node_modules/react-native-fingerprint-scanner`)
|
||||
- react-native-mail (from `../node_modules/react-native-mail`)
|
||||
- react-native-pager-view (from `../node_modules/react-native-pager-view`)
|
||||
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
|
||||
- "react-native-segmented-control (from `../node_modules/@react-native-community/segmented-control`)"
|
||||
- react-native-sodium-jsi (from `../node_modules/react-native-sodium-jsi`)
|
||||
@@ -549,13 +583,15 @@ EXTERNAL SOURCES:
|
||||
React-logger:
|
||||
:path: "../node_modules/react-native/ReactCommon/logger"
|
||||
react-native-aes:
|
||||
:path: "../node_modules/react-native-aes-crypto"
|
||||
:path: "../node_modules/@standardnotes/react-native-aes"
|
||||
react-native-document-picker:
|
||||
:path: "../node_modules/react-native-document-picker"
|
||||
react-native-fingerprint-scanner:
|
||||
:path: "../node_modules/react-native-fingerprint-scanner"
|
||||
react-native-mail:
|
||||
:path: "../node_modules/react-native-mail"
|
||||
react-native-pager-view:
|
||||
:path: "../node_modules/react-native-pager-view"
|
||||
react-native-safe-area-context:
|
||||
:path: "../node_modules/react-native-safe-area-context"
|
||||
react-native-segmented-control:
|
||||
@@ -635,8 +671,8 @@ SPEC CHECKSUMS:
|
||||
boost: a7c83b31436843459a1961bfd74b96033dc77234
|
||||
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
|
||||
DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662
|
||||
FBLazyVector: e5569e42a1c79ca00521846c223173a57aca1fe1
|
||||
FBReactNativeSpec: fe08c1cd7e2e205718d77ad14b34957cce949b58
|
||||
FBLazyVector: f7b0632c6437e312acf6349288d9aa4cb6d59030
|
||||
FBReactNativeSpec: 0f4e1f4cfeace095694436e7c7fcc5bf4b03a0ff
|
||||
Flipper: 30e8eeeed6abdc98edaf32af0cda2f198be4b733
|
||||
Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c
|
||||
Flipper-DoubleConversion: 57ffbe81ef95306cc9e69c4aa3aeeeeb58a6a28c
|
||||
@@ -652,62 +688,63 @@ SPEC CHECKSUMS:
|
||||
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
|
||||
OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b
|
||||
RCT-Folly: a21c126816d8025b547704b777a2ba552f3d9fa9
|
||||
RCTRequired: 4bf86c70714490bca4bf2696148638284622644b
|
||||
RCTTypeSafety: c475a7059eb77935fa53d2c17db299893f057d5d
|
||||
React: f64af14e3f2c50f6f2c91a5fd250e4ff1b3c3459
|
||||
React-callinvoker: b74e4ae80287780dcdf0cab262bcb581eeef56e7
|
||||
React-Core: 3eb7432bad96ff1d25aebc1defbae013fee2fd0e
|
||||
React-CoreModules: ad9e1fd5650e16666c57a08328df86fd7e480cb9
|
||||
React-cxxreact: 02633ff398cf7e91a2c1e12590d323c4a4b8668a
|
||||
React-jsi: 805c41a927d6499fb811772acb971467d9204633
|
||||
React-jsiexecutor: 94ce921e1d8ce7023366873ec371f3441383b396
|
||||
React-jsinspector: d0374f7509d407d2264168b6d0fad0b54e300b85
|
||||
React-logger: 933f80c97c633ee8965d609876848148e3fef438
|
||||
react-native-aes: a13199300208e4eda1df14506a276415561e02bd
|
||||
react-native-document-picker: 1a7518132d4a06b67f459be9bb1464a567d2b3b4
|
||||
RCTRequired: 0aa6c1c27e1d65920df35ceea5341a5fe76bdb79
|
||||
RCTTypeSafety: d76a59d00632891e11ed7522dba3fd1a995e573a
|
||||
React: ab8c09da2e7704f4b3ebad4baa6cfdfcc852dcb5
|
||||
React-callinvoker: 216fb96b482da516b8aba4142b145938f6ea92f0
|
||||
React-Core: af99b93aff83599485e0e0879879aafa35ceae32
|
||||
React-CoreModules: 137a054ce8c547e81dc3502933b1bc0fd08df05d
|
||||
React-cxxreact: ec5ee6b08664f5b8ac71d8ad912f54d540c4f817
|
||||
React-jsi: 3e084c80fd364cee64668d5df46d40c39f7973e1
|
||||
React-jsiexecutor: cbdf37cebdc4f5d8b3d0bf5ccaa6147fd9de9f3d
|
||||
React-jsinspector: f4775ea9118cbe1f72b834f0f842baa7a99508d8
|
||||
React-logger: a1f028f6d8639a3f364ef80419e5e862e1115250
|
||||
react-native-aes: 420f829e2c4ff32e3deb2aa056094a6a29fcf992
|
||||
react-native-document-picker: 429972f7ece4463aa5bcdd789622b3a674a3c5d1
|
||||
react-native-fingerprint-scanner: be63e626b31fb951780a5fac5328b065a61a3d6e
|
||||
react-native-mail: 5fe7239a5b5c1e858d425501c03d1ab977434122
|
||||
react-native-safe-area-context: b6e0e284002381d2ff29fa4fff42b4d8282e3c94
|
||||
react-native-pager-view: b1914469643f40042e65d78cbf3d3dfebd6fb0d9
|
||||
react-native-safe-area-context: 806f8370bf9fc9db90a3413aaa1aab0d2e22fdf3
|
||||
react-native-segmented-control: 65df6cd0619b780b3843d574a72d4c7cec396097
|
||||
react-native-sodium-jsi: e86fb6bc2f48b5148c1339b07b18a7f3799d17a3
|
||||
react-native-sodium-jsi: 42be5954ce2e66a56f1907e35e2561bcc54a0472
|
||||
react-native-static-server: 201b2a945a35096be3ae7f43e367c65bcbd61343
|
||||
react-native-version-info: 36490da17d2c6b5cc21321c70e433784dee7ed0b
|
||||
react-native-webview: e89bf2dba26a04cda967814df3ed1be99f291233
|
||||
React-perflogger: 93075d8931c32cd1fce8a98c15d2d5ccc4d891bd
|
||||
React-RCTActionSheet: 7d3041e6761b4f3044a37079ddcb156575fb6d89
|
||||
React-RCTAnimation: 743e88b55ac62511ae5c2e22803d4f503f2a3a13
|
||||
React-RCTBlob: bee3a2f98fa7fc25c957c8643494244f74bea0a0
|
||||
React-RCTImage: 19fc9e29b06cc38611c553494f8d3040bf78c24e
|
||||
React-RCTLinking: dc799503979c8c711126d66328e7ce8f25c2848f
|
||||
React-RCTNetwork: 417e4e34cf3c19eaa5fd4e9eb20180d662a799ce
|
||||
React-RCTSettings: 4df89417265af26501a7e0e9192a34d3d9848dff
|
||||
React-RCTText: f8a21c3499ab322326290fa9b701ae29aa093aa5
|
||||
React-RCTVibration: e3ffca672dd3772536cb844274094b0e2c31b187
|
||||
React-runtimeexecutor: dec32ee6f2e2a26e13e58152271535fadff5455a
|
||||
ReactCommon: 57b69f6383eafcbd7da625bfa6003810332313c4
|
||||
react-native-version-info: a106f23009ac0db4ee00de39574eb546682579b9
|
||||
react-native-webview: 380c1a03ec94b7ed764dac8db1e7c9952d08c93a
|
||||
React-perflogger: 0afaf2f01a47fd0fc368a93bfbb5bd3b26db6e7f
|
||||
React-RCTActionSheet: 59f35c4029e0b532fc42114241a06e170b7431a2
|
||||
React-RCTAnimation: aae4f4bed122e78bdab72f7118d291d70a932ce2
|
||||
React-RCTBlob: f6fb23394b4f28cd86fa7e9f5f6ae45c23669fda
|
||||
React-RCTImage: 638815cf96124386dd296067246d91441932ae3f
|
||||
React-RCTLinking: 254dd06283dd6fdb784285f95e7cec8053c3270f
|
||||
React-RCTNetwork: 8a4c2d4f357268e520b060572d02bc69a9b991fb
|
||||
React-RCTSettings: 35d44cbb9972ab933bd0a59ea3e6646dcb030ba3
|
||||
React-RCTText: cc5315df8458cfa7b537e621271ef43273955a97
|
||||
React-RCTVibration: 3b52a7dced19cdb025b4f88ab26ceb2d85f30ba2
|
||||
React-runtimeexecutor: a9d3c82ddf7ffdad9fbe6a81c6d6f8c06385464d
|
||||
ReactCommon: 07d0c460b9ba9af3eaf1b8f5abe7daaad28c9c4e
|
||||
ReactNativeAlternateIcons: b2a8a729d9d9756ed0652c352694f190407f297f
|
||||
RNCAsyncStorage: b03032fdbdb725bea0bd9e5ec5a7272865ae7398
|
||||
RNCMaskedView: 5a8ec07677aa885546a0d98da336457e2bea557f
|
||||
RNCMaskedView: 0e1bc4bfa8365eba5fbbb71e07fbdc0555249489
|
||||
RNDefaultPreference: 2f8d6d54230edbd78708ada8d63bb275e5a8415b
|
||||
RNFileViewer: 83cc066ad795b1f986791d03b56fe0ee14b6a69f
|
||||
RNFS: 2bd9eb49dc82fa9676382f0585b992c424cd59df
|
||||
RNGestureHandler: 9b7e605a741412e20e13c512738a31bd1611759b
|
||||
RNKeychain: 840f8e6f13be0576202aefcdffd26a4f54bfe7b5
|
||||
RNFileViewer: ce7ca3ac370e18554d35d6355cffd7c30437c592
|
||||
RNFS: fc610f78fdf8bfc89a9e5cc2f898519f4dba1002
|
||||
RNGestureHandler: 6e757e487a4834e7280e98e9bac66d2d9c575e9c
|
||||
RNKeychain: 4f63aada75ebafd26f4bc2c670199461eab85d94
|
||||
RNPrivacySnapshot: 8eaf571478a353f2e5184f5c803164f22428b023
|
||||
RNReanimated: 514a11da3a2bcc6c3dfd9de32b38e2b9bf101926
|
||||
RNScreens: 21b73c94c9117e1110a79ee0ee80c93ccefed8ce
|
||||
RNReanimated: 32c91e28f5780937b8efc07ddde1bab8d373fe0b
|
||||
RNScreens: 40a2cb40a02a609938137a1e0acfbf8fc9eebf19
|
||||
RNSearchBar: 5ed8e13ba8a6c701fbd2afdfe4164493d24b2aee
|
||||
RNStoreReview: 62d6afd7c37db711a594bbffca6b0ea3a812b7a8
|
||||
RNSVG: 551acb6562324b1d52a4e0758f7ca0ec234e278f
|
||||
RNVectorIcons: bc69e6a278b14842063605de32bec61f0b251a59
|
||||
RNZipArchive: 3dd2de5b7f590d79e83270508b78870bf5a54f36
|
||||
sn-textview: 0211237b3e0edeeb23aed2a9c47b78af35a81e95
|
||||
RNStoreReview: d7d2a006e14030fe101cac9da487a17f98d73eff
|
||||
RNSVG: 302bfc9905bd8122f08966dc2ce2d07b7b52b9f8
|
||||
RNVectorIcons: 7923e585eaeb139b9f4531d25a125a1500162a0b
|
||||
RNZipArchive: 9e6af1bebc9c7ddb42893bc4e70804321227c3ec
|
||||
sn-textview: aaeeb41791e7d1784072adfb6b610db9b764acda
|
||||
SNReactNative: b5e9e529c175c13f3a618e27c76cf3071213d5e1
|
||||
SSZipArchive: 62d4947b08730e4cda640473b0066d209ff033c9
|
||||
TrustKit: 073855e3adecd317417bda4ac9e9ac54a2e3b9f2
|
||||
Yoga: e7dc4e71caba6472ff48ad7d234389b91dadc280
|
||||
Yoga: d6b6a80659aa3e91aaba01d0012e7edcbedcbecd
|
||||
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
|
||||
|
||||
PODFILE CHECKSUM: 297552073de1fdbc5a3585e9037f5cfd60308641
|
||||
|
||||
COCOAPODS: 1.11.2
|
||||
COCOAPODS: 1.11.3
|
||||
|
||||
@@ -756,7 +756,6 @@
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"\"$(SDKROOT)/usr/lib/swift\"",
|
||||
"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
|
||||
"\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"",
|
||||
"\"$(inherited)\"",
|
||||
);
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
@@ -815,7 +814,6 @@
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"\"$(SDKROOT)/usr/lib/swift\"",
|
||||
"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
|
||||
"\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"",
|
||||
"\"$(inherited)\"",
|
||||
);
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
|
||||
@@ -6,25 +6,25 @@
|
||||
* https://stackoverflow.com/a/65231261/2504429
|
||||
* @format
|
||||
*/
|
||||
const {getDefaultConfig} = require('metro-config');
|
||||
const { getDefaultConfig } = require('metro-config');
|
||||
|
||||
module.exports = (async () => {
|
||||
const {
|
||||
resolver: {sourceExts, assetExts},
|
||||
resolver: { sourceExts, assetExts },
|
||||
} = await getDefaultConfig();
|
||||
return {
|
||||
transformer: {
|
||||
getTransformOptions: async () => ({
|
||||
transform: {
|
||||
experimentalImportSupport: false,
|
||||
inlineRequires: false,
|
||||
inlineRequires: true,
|
||||
},
|
||||
}),
|
||||
babelTransformerPath: require.resolve('react-native-svg-transformer')
|
||||
babelTransformerPath: require.resolve('react-native-svg-transformer'),
|
||||
},
|
||||
resolver: {
|
||||
assetExts: assetExts.filter(ext => ext !== "svg"),
|
||||
sourceExts: [...sourceExts, "svg"]
|
||||
assetExts: assetExts.filter(ext => ext !== 'svg'),
|
||||
sourceExts: [...sourceExts, 'svg'],
|
||||
},
|
||||
};
|
||||
})();
|
||||
|
||||
128
package.json
128
package.json
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "standardnotes-mobile",
|
||||
"version": "3.12.1",
|
||||
"user-version": "3.12.1",
|
||||
"version": "3.13.0",
|
||||
"user-version": "3.13.0",
|
||||
"private": true,
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"scripts": {
|
||||
@@ -15,89 +15,99 @@
|
||||
"lint:eslint": "yarn eslint . --ext .ts,.tsx --fix",
|
||||
"lint:ts": "tsc --noEmit",
|
||||
"start": "react-native start",
|
||||
"test": "jest"
|
||||
"test": "jest",
|
||||
"postinstall": "patch-package"
|
||||
},
|
||||
"resolutions": {
|
||||
"@types/react": "^17"
|
||||
},
|
||||
"dependencies": {
|
||||
"@expo/react-native-action-sheet": "^3.8.0",
|
||||
"@expo/react-native-action-sheet": "^3.13.0",
|
||||
"@react-native-community/async-storage": "1.12.1",
|
||||
"@react-native-community/masked-view": "^0.1.10",
|
||||
"@react-native-community/masked-view": "^0.1.11",
|
||||
"@react-native-community/segmented-control": "^2.2.2",
|
||||
"@react-navigation/native": "^5.9.3",
|
||||
"@react-navigation/stack": "^5.14.3",
|
||||
"@react-navigation/elements": "^1.3.1",
|
||||
"@react-navigation/native": "^6.0.8",
|
||||
"@react-navigation/stack": "^6.1.1",
|
||||
"@standardnotes/components": "^1.7.12",
|
||||
"@standardnotes/features": "^1.34.10",
|
||||
"@standardnotes/payloads": "^1.4.10",
|
||||
"@standardnotes/react-native-textview": "1.0.1",
|
||||
"@standardnotes/features": "^1.35.1",
|
||||
"@standardnotes/payloads": "^1.4.14",
|
||||
"@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.83.0",
|
||||
"@standardnotes/stylekit": "5.16.0",
|
||||
"js-base64": "^3.5.2",
|
||||
"@standardnotes/snjs": "2.87.0",
|
||||
"@standardnotes/stylekit": "5.17.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.66.4",
|
||||
"react-native-aes-crypto": "standardnotes/react-native-aes#6430299",
|
||||
"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.4",
|
||||
"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.16.6",
|
||||
"react-native-gesture-handler": "^1.9.0",
|
||||
"react-native-keychain": "^4.0.5",
|
||||
"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": "^1.13.3",
|
||||
"react-native-safe-area-context": "^3.1.9",
|
||||
"react-native-screens": "3.4.0",
|
||||
"react-native-reanimated": "^2.4.1",
|
||||
"react-native-safe-area-context": "^4.2.1",
|
||||
"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-sodium-jsi": "1.1.3",
|
||||
"react-native-sodium-jsi": "1.1.7",
|
||||
"react-native-static-server": "standardnotes/react-native-static-server#d0c4cb0feae233634ef26fc33118f258192c7b7d",
|
||||
"react-native-store-review": "^0.1.5",
|
||||
"react-native-svg": "^12.1.1",
|
||||
"react-native-store-review": "^0.2.0",
|
||||
"react-native-svg": "^12.3.0",
|
||||
"react-native-svg-transformer": "^1.0.0",
|
||||
"react-native-tab-view": "^2.15.2",
|
||||
"react-native-tab-view": "^3.1.1",
|
||||
"react-native-url-polyfill": "^1.3.0",
|
||||
"react-native-vector-icons": "^7.1.0",
|
||||
"react-native-version-info": "^1.1.0",
|
||||
"react-native-webview": "11.15.0",
|
||||
"react-native-zip-archive": "^6.0.2",
|
||||
"react-navigation-header-buttons": "^6.0.2",
|
||||
"styled-components": "^5.2.1"
|
||||
"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.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.11.6",
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"@react-native-community/eslint-config": "^2.0.0",
|
||||
"@types/detox": "^16.4.1",
|
||||
"@types/faker": "^5.1.3",
|
||||
"@types/jest": "^26.0.14",
|
||||
"@types/js-base64": "^3.0.0",
|
||||
"@types/react-native": "0.66.4",
|
||||
"@types/react-native-vector-icons": "^6.4.6",
|
||||
"@types/styled-components": "5.1.5",
|
||||
"@typescript-eslint/eslint-plugin": "^4.11.1",
|
||||
"@typescript-eslint/parser": "^4.11.1",
|
||||
"babel-jest": "^26.6.3",
|
||||
"concurrently": "^5.3.0",
|
||||
"detox": "^17.8.3",
|
||||
"eslint": "^7.10.0",
|
||||
"eslint-plugin-prettier": "^3.1.4",
|
||||
"faker": "^5.1.0",
|
||||
"jest": "^26.6.3",
|
||||
"jest-circus": "^26.6.3",
|
||||
"metro-react-native-babel-preset": "^0.66.2",
|
||||
"@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.15.0",
|
||||
"@typescript-eslint/parser": "^5.15.0",
|
||||
"babel-jest": "^27.5.1",
|
||||
"concurrently": "^7.0.0",
|
||||
"detox": "^19.5.7",
|
||||
"eslint": "^8.11.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-run-all": "^4.1.5",
|
||||
"pod-install": "^0.1.30",
|
||||
"patch-package": "^6.4.7",
|
||||
"pod-install": "^0.1.32",
|
||||
"postinstall-postinstall": "^2.1.0",
|
||||
"prettier": "^2.2.1",
|
||||
"prettier-plugin-organize-imports": "^1.1.1",
|
||||
"react-native-document-picker": "^5.0.4",
|
||||
"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.1.0",
|
||||
"typescript": "^3.9.4"
|
||||
"replace-in-file": "^6.3.2",
|
||||
"typescript": "^4.6.2"
|
||||
},
|
||||
"jest": {
|
||||
"preset": "react-native"
|
||||
|
||||
61
patches/react-native-static-server+0.5.0.patch
Normal file
61
patches/react-native-static-server+0.5.0.patch
Normal file
@@ -0,0 +1,61 @@
|
||||
diff --git a/node_modules/react-native-static-server/android/build.gradle b/node_modules/react-native-static-server/android/build.gradle
|
||||
index 0c7bca6..6de3115 100644
|
||||
--- a/node_modules/react-native-static-server/android/build.gradle
|
||||
+++ b/node_modules/react-native-static-server/android/build.gradle
|
||||
@@ -20,7 +20,7 @@ def safeExtGet(prop, fallback) {
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.library'
|
||||
-apply plugin: 'maven'
|
||||
+apply plugin: 'maven-publish'
|
||||
|
||||
buildscript {
|
||||
// The Android Gradle plugin is only required when opening the android folder stand-alone.
|
||||
@@ -39,7 +39,7 @@ buildscript {
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.library'
|
||||
-apply plugin: 'maven'
|
||||
+apply plugin: 'maven-publish'
|
||||
|
||||
android {
|
||||
compileSdkVersion safeExtGet('compileSdkVersion', DEFAULT_COMPILE_SDK_VERSION)
|
||||
@@ -108,17 +108,6 @@ def configureReactNativePom(def pom) {
|
||||
afterEvaluate { project ->
|
||||
// some Gradle build hooks ref:
|
||||
// https://www.oreilly.com/library/view/gradle-beyond-the/9781449373801/ch03.html
|
||||
- task androidJavadoc(type: Javadoc) {
|
||||
- source = android.sourceSets.main.java.srcDirs
|
||||
- classpath += files(android.bootClasspath)
|
||||
- classpath += files(project.getConfigurations().getByName('compile').asList())
|
||||
- include '**/*.java'
|
||||
- }
|
||||
-
|
||||
- task androidJavadocJar(type: Jar, dependsOn: androidJavadoc) {
|
||||
- classifier = 'javadoc'
|
||||
- from androidJavadoc.destinationDir
|
||||
- }
|
||||
|
||||
task androidSourcesJar(type: Jar) {
|
||||
classifier = 'sources'
|
||||
@@ -137,15 +126,13 @@ afterEvaluate { project ->
|
||||
|
||||
artifacts {
|
||||
archives androidSourcesJar
|
||||
- archives androidJavadocJar
|
||||
}
|
||||
+}
|
||||
|
||||
- task installArchives(type: Upload) {
|
||||
- configuration = configurations.archives
|
||||
- repositories.mavenDeployer {
|
||||
- // Deploy to react-native-event-bridge/maven, ready to publish to npm
|
||||
- repository url: "file://${projectDir}/../android/maven"
|
||||
- configureReactNativePom pom
|
||||
+publishing {
|
||||
+ repositories {
|
||||
+ maven {
|
||||
+ url = uri("file://${projectDir}/../android/maven")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -132,13 +132,12 @@ export const App = (props: { env: 'prod' | 'dev' }) => {
|
||||
>();
|
||||
|
||||
useEffect(() => {
|
||||
const removeAppChangeObserver = applicationGroupRef.current.addApplicationChangeObserver(
|
||||
() => {
|
||||
const removeAppChangeObserver =
|
||||
applicationGroupRef.current.addApplicationChangeObserver(() => {
|
||||
const mobileApplication = applicationGroupRef.current
|
||||
.primaryApplication as MobileApplication;
|
||||
setApplication(mobileApplication);
|
||||
}
|
||||
);
|
||||
});
|
||||
return removeAppChangeObserver;
|
||||
}, [applicationGroupRef.current.primaryApplication]);
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ import { HeaderTitleParams } from './App';
|
||||
import { ApplicationContext } from './ApplicationContext';
|
||||
import { ModalStackNavigationProp } from './ModalStack';
|
||||
|
||||
type AppStackNavigatorParamList = {
|
||||
export type AppStackNavigatorParamList = {
|
||||
[SCREEN_NOTES]: HeaderTitleParams;
|
||||
[SCREEN_COMPOSE]: HeaderTitleParams | undefined;
|
||||
[SCREEN_VIEW_PROTECTED_NOTE]: {
|
||||
@@ -50,15 +50,14 @@ type AppStackNavigatorParamList = {
|
||||
};
|
||||
};
|
||||
|
||||
export type AppStackNavigationProp<
|
||||
T extends keyof AppStackNavigatorParamList
|
||||
> = {
|
||||
navigation: CompositeNavigationProp<
|
||||
ModalStackNavigationProp<'AppStack'>['navigation'],
|
||||
StackNavigationProp<AppStackNavigatorParamList, T>
|
||||
>;
|
||||
route: RouteProp<AppStackNavigatorParamList, T>;
|
||||
};
|
||||
export type AppStackNavigationProp<T extends keyof AppStackNavigatorParamList> =
|
||||
{
|
||||
navigation: CompositeNavigationProp<
|
||||
ModalStackNavigationProp<'AppStack'>['navigation'],
|
||||
StackNavigationProp<AppStackNavigatorParamList, T>
|
||||
>;
|
||||
route: RouteProp<AppStackNavigatorParamList, T>;
|
||||
};
|
||||
|
||||
const AppStack = createStackNavigator<AppStackNavigatorParamList>();
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ import { ApplicationContext } from './ApplicationContext';
|
||||
import { AppStackComponent } from './AppStack';
|
||||
import { HistoryStack } from './HistoryStack';
|
||||
|
||||
type ModalStackNavigatorParamList = {
|
||||
export type ModalStackNavigatorParamList = {
|
||||
AppStack: undefined;
|
||||
HistoryStack: undefined;
|
||||
[SCREEN_SETTINGS]: undefined;
|
||||
@@ -68,11 +68,11 @@ export const MainStackComponent = ({ env }: { env: 'prod' | 'dev' }) => {
|
||||
<MainStack.Navigator
|
||||
screenOptions={{
|
||||
gestureEnabled: false,
|
||||
presentation: 'modal',
|
||||
headerStyle: {
|
||||
backgroundColor: theme.stylekitContrastBackgroundColor,
|
||||
},
|
||||
}}
|
||||
mode="modal"
|
||||
initialRouteName="AppStack"
|
||||
>
|
||||
<MainStack.Screen
|
||||
|
||||
@@ -4,7 +4,7 @@ import {
|
||||
HeaderButton,
|
||||
HeaderButtonProps,
|
||||
} from 'react-navigation-header-buttons';
|
||||
import { ThemeContext } from 'styled-components/native';
|
||||
import { ThemeContext } from 'styled-components';
|
||||
|
||||
export const IoniconsHeaderButton = (passMeFurther: HeaderButtonProps) => {
|
||||
// the `passMeFurther` variable here contains props from <Item .../> as well as <HeaderButtons ... />
|
||||
|
||||
@@ -2,7 +2,8 @@ import { SectionedTableCellTouchableHighlight } from '@Components/SectionedTable
|
||||
import React, { useContext } from 'react';
|
||||
import { Platform } from 'react-native';
|
||||
import Icon from 'react-native-vector-icons/Ionicons';
|
||||
import styled, { css, ThemeContext } from 'styled-components/native';
|
||||
import { ThemeContext } from 'styled-components';
|
||||
import styled, { css } from 'styled-components/native';
|
||||
|
||||
type Props = {
|
||||
testID?: string;
|
||||
@@ -111,7 +112,7 @@ export const SectionedAccessoryTableCell: React.FC<Props> = props => {
|
||||
if (props.color) {
|
||||
color = props.color;
|
||||
}
|
||||
let icon = null;
|
||||
let icon: any = null;
|
||||
|
||||
if (iconName) {
|
||||
icon = (
|
||||
|
||||
@@ -174,11 +174,10 @@ export class ApplicationState extends ApplicationService {
|
||||
}
|
||||
|
||||
async onAppStart() {
|
||||
this.removePreferencesLoadedListener = this.prefService.addPreferencesLoadedObserver(
|
||||
() => {
|
||||
this.removePreferencesLoadedListener =
|
||||
this.prefService.addPreferencesLoadedObserver(() => {
|
||||
this.notifyOfStateChange(AppStateType.PreferencesChanged);
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
await this.loadUnlockTiming();
|
||||
}
|
||||
@@ -627,12 +626,14 @@ export class ApplicationState extends ApplicationService {
|
||||
* while non-app cycle events are custom events like locking and unlocking
|
||||
*/
|
||||
isAppVisibilityChange(state: AppStateType) {
|
||||
return ([
|
||||
AppStateType.LosingFocus,
|
||||
AppStateType.EnteringBackground,
|
||||
AppStateType.GainingFocus,
|
||||
AppStateType.ResumingFromBackground,
|
||||
] as Array<AppStateType>).includes(state);
|
||||
return (
|
||||
[
|
||||
AppStateType.LosingFocus,
|
||||
AppStateType.EnteringBackground,
|
||||
AppStateType.GainingFocus,
|
||||
AppStateType.ResumingFromBackground,
|
||||
] as Array<AppStateType>
|
||||
).includes(state);
|
||||
}
|
||||
|
||||
private async getScreenshotPrivacyEnabled(): Promise<boolean | undefined> {
|
||||
|
||||
@@ -106,9 +106,8 @@ export class ComponentManager extends SNComponentManager {
|
||||
|
||||
const version = nativeFeature?.version || component.package_info?.version;
|
||||
|
||||
const existingPackageJson = await this.getDownloadedComponentPackageJsonFile(
|
||||
identifier
|
||||
);
|
||||
const existingPackageJson =
|
||||
await this.getDownloadedComponentPackageJsonFile(identifier);
|
||||
const existingVersion = existingPackageJson?.version;
|
||||
this.log('Existing package version', existingVersion);
|
||||
this.log('Latest package version', version);
|
||||
@@ -235,9 +234,8 @@ export class ComponentManager extends SNComponentManager {
|
||||
|
||||
this.log('Finished download to tmp location', tmpLocation);
|
||||
|
||||
const requireChecksumVerification = !!this.nativeFeatureForIdentifier(
|
||||
identifier
|
||||
);
|
||||
const requireChecksumVerification =
|
||||
!!this.nativeFeatureForIdentifier(identifier);
|
||||
if (requireChecksumVerification) {
|
||||
const passes = await this.passesChecksumValidation(
|
||||
tmpLocation,
|
||||
|
||||
@@ -31,7 +31,8 @@ export class InstallationService extends ApplicationService {
|
||||
|
||||
const hasNormalKeys =
|
||||
this.application?.hasAccount() || this.application?.hasPasscode();
|
||||
const keychainKey = await this.application?.deviceInterface?.getRawKeychainValue();
|
||||
const keychainKey =
|
||||
await this.application?.deviceInterface?.getRawKeychainValue();
|
||||
const hasKeychainValue = !(
|
||||
isNullOrUndefined(keychainKey) ||
|
||||
(typeof keychainKey === 'object' && Object.keys(keychainKey).length === 0)
|
||||
@@ -46,9 +47,10 @@ export class InstallationService extends ApplicationService {
|
||||
* Because of migration failure first run key might not be in non wrapped storage
|
||||
*/
|
||||
if (firstRunKeyMissing) {
|
||||
const fallbackFirstRunValue = await this.application?.deviceInterface?.getRawStorageValue(
|
||||
FIRST_RUN_KEY
|
||||
);
|
||||
const fallbackFirstRunValue =
|
||||
await this.application?.deviceInterface?.getRawStorageValue(
|
||||
FIRST_RUN_KEY
|
||||
);
|
||||
firstRunKeyMissing = isNullOrUndefined(fallbackFirstRunValue);
|
||||
}
|
||||
return !hasNormalKeys && hasKeychainValue && firstRunKeyMissing;
|
||||
|
||||
@@ -1,9 +1,19 @@
|
||||
import { NavigationContainerRef, StackActions } from '@react-navigation/native';
|
||||
import { AppStackNavigatorParamList } from '@Root/AppStack';
|
||||
import { ModalStackNavigatorParamList } from '@Root/ModalStack';
|
||||
import * as React from 'react';
|
||||
|
||||
export const navigationRef = React.createRef<NavigationContainerRef>();
|
||||
export const navigationRef =
|
||||
React.createRef<
|
||||
NavigationContainerRef<
|
||||
AppStackNavigatorParamList & ModalStackNavigatorParamList
|
||||
>
|
||||
>();
|
||||
|
||||
export function navigate(name: string, params?: any) {
|
||||
export function navigate(
|
||||
name: keyof AppStackNavigatorParamList | keyof ModalStackNavigatorParamList,
|
||||
params?: any
|
||||
) {
|
||||
navigationRef.current?.navigate(name, params);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@ import {
|
||||
} from '@standardnotes/snjs';
|
||||
import { MobileApplication } from './application';
|
||||
|
||||
// eslint-disable-next-line no-shadow
|
||||
export enum PrefKey {
|
||||
SortNotesBy = 'sortBy',
|
||||
SortNotesReverse = 'sortReverse',
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
/* eslint-disable no-bitwise */
|
||||
import Aes from '@standardnotes/react-native-aes';
|
||||
import {
|
||||
Base64String,
|
||||
HexString,
|
||||
SNPureCrypto,
|
||||
SodiumConstant,
|
||||
StreamDecryptor,
|
||||
StreamDecryptorResult,
|
||||
StreamEncryptor,
|
||||
timingSafeEqual,
|
||||
Utf8String,
|
||||
} from '@standardnotes/sncrypto-common';
|
||||
import Aes from 'react-native-aes-crypto';
|
||||
import * as Sodium from 'react-native-sodium-jsi';
|
||||
|
||||
export class SNReactNativeCrypto implements SNPureCrypto {
|
||||
@@ -127,39 +125,42 @@ export class SNReactNativeCrypto implements SNPureCrypto {
|
||||
}
|
||||
}
|
||||
|
||||
public xchacha20StreamInitEncryptor(key: HexString): StreamEncryptor {
|
||||
return Sodium.crypto_secretstream_xchacha20poly1305_init_push(key);
|
||||
public xchacha20StreamInitEncryptor(
|
||||
key: HexString
|
||||
): Sodium.MobileStreamEncryptor {
|
||||
const encryptor =
|
||||
Sodium.crypto_secretstream_xchacha20poly1305_init_push(key);
|
||||
return encryptor;
|
||||
}
|
||||
|
||||
public xchacha20StreamEncryptorPush(
|
||||
encryptor: StreamEncryptor,
|
||||
encryptor: Sodium.MobileStreamEncryptor,
|
||||
plainBuffer: Uint8Array,
|
||||
assocData: Utf8String,
|
||||
tag: SodiumConstant = SodiumConstant.CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH
|
||||
): Uint8Array {
|
||||
const encryptedBuffer = Sodium.crypto_secretstream_xchacha20poly1305_push(
|
||||
encryptor.state as never,
|
||||
plainBuffer,
|
||||
encryptor,
|
||||
plainBuffer.buffer,
|
||||
assocData,
|
||||
tag
|
||||
);
|
||||
return encryptedBuffer;
|
||||
return new Uint8Array(encryptedBuffer);
|
||||
}
|
||||
|
||||
public xchacha20StreamInitDecryptor(
|
||||
header: Base64String,
|
||||
key: HexString
|
||||
): StreamDecryptor {
|
||||
const state = Sodium.crypto_secretstream_xchacha20poly1305_init_pull(
|
||||
): Sodium.MobileStreamDecryptor {
|
||||
const decryptor = Sodium.crypto_secretstream_xchacha20poly1305_init_pull(
|
||||
header,
|
||||
key
|
||||
);
|
||||
|
||||
return { state };
|
||||
return decryptor;
|
||||
}
|
||||
|
||||
public xchacha20StreamDecryptorPush(
|
||||
decryptor: StreamDecryptor,
|
||||
decryptor: Sodium.MobileStreamDecryptor,
|
||||
encryptedBuffer: Uint8Array,
|
||||
assocData: Utf8String
|
||||
): StreamDecryptorResult | false {
|
||||
@@ -171,16 +172,19 @@ export class SNReactNativeCrypto implements SNPureCrypto {
|
||||
}
|
||||
|
||||
const result = Sodium.crypto_secretstream_xchacha20poly1305_pull(
|
||||
decryptor.state as never,
|
||||
encryptedBuffer,
|
||||
decryptor,
|
||||
encryptedBuffer.buffer,
|
||||
assocData
|
||||
);
|
||||
|
||||
if ((result as unknown) === false) {
|
||||
if (!result) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return result;
|
||||
return {
|
||||
message: new Uint8Array(result.message),
|
||||
tag: result.tag,
|
||||
};
|
||||
}
|
||||
|
||||
public generateUUID() {
|
||||
|
||||
@@ -135,11 +135,10 @@ export const useHasEditor = () => {
|
||||
const [hasEditor, setHasEditor] = React.useState<boolean>(false);
|
||||
|
||||
useEffect(() => {
|
||||
const removeEditorObserver = application?.editorGroup.addActiveControllerChangeObserver(
|
||||
newEditor => {
|
||||
const removeEditorObserver =
|
||||
application?.editorGroup.addActiveControllerChangeObserver(newEditor => {
|
||||
setHasEditor(Boolean(newEditor));
|
||||
}
|
||||
);
|
||||
});
|
||||
return removeEditorObserver;
|
||||
}, [application]);
|
||||
|
||||
@@ -389,10 +388,8 @@ export const useProtectionSessionExpiry = () => {
|
||||
}, [application]);
|
||||
|
||||
// State
|
||||
const [
|
||||
protectionsDisabledUntil,
|
||||
setProtectionsDisabledUntil,
|
||||
] = React.useState(getProtectionsDisabledUntil());
|
||||
const [protectionsDisabledUntil, setProtectionsDisabledUntil] =
|
||||
React.useState(getProtectionsDisabledUntil());
|
||||
|
||||
useEffect(() => {
|
||||
const removeProtectionLengthSubscriber = application?.addEventObserver(
|
||||
|
||||
@@ -5,8 +5,8 @@ import { SectionedTableCell } from '@Components/SectionedTableCell';
|
||||
import { SectionHeader } from '@Components/SectionHeader';
|
||||
import { AppStateType, PasscodeKeyboardType } from '@Lib/application_state';
|
||||
import { MobileDeviceInterface } from '@Lib/interface';
|
||||
import { HeaderHeightContext } from '@react-navigation/elements';
|
||||
import { useFocusEffect } from '@react-navigation/native';
|
||||
import { HeaderHeightContext } from '@react-navigation/stack';
|
||||
import { ApplicationContext } from '@Root/ApplicationContext';
|
||||
import { ModalStackNavigationProp } from '@Root/ModalStack';
|
||||
import { SCREEN_AUTHENTICATE } from '@Screens/screens';
|
||||
@@ -38,7 +38,7 @@ import {
|
||||
import FingerprintScanner from 'react-native-fingerprint-scanner';
|
||||
import { hide } from 'react-native-privacy-snapshot';
|
||||
import { HeaderButtons, Item } from 'react-navigation-header-buttons';
|
||||
import { ThemeContext } from 'styled-components/native';
|
||||
import { ThemeContext } from 'styled-components';
|
||||
import {
|
||||
BaseView,
|
||||
Input,
|
||||
@@ -200,7 +200,9 @@ export const Authenticate = ({
|
||||
|
||||
const checkForBiometrics = useCallback(
|
||||
async () =>
|
||||
(application?.deviceInterface as MobileDeviceInterface).getDeviceBiometricsAvailability(),
|
||||
(
|
||||
application?.deviceInterface as MobileDeviceInterface
|
||||
).getDeviceBiometricsAvailability(),
|
||||
[application]
|
||||
);
|
||||
|
||||
|
||||
@@ -8,7 +8,6 @@ export const isInActiveState = (state: AuthenticationValueStateType) =>
|
||||
state !== AuthenticationValueStateType.WaitingInput &&
|
||||
state !== AuthenticationValueStateType.Success;
|
||||
|
||||
// eslint-disable-next-line no-shadow
|
||||
export enum AuthenticationValueStateType {
|
||||
WaitingTurn = 0,
|
||||
WaitingInput = 1,
|
||||
|
||||
@@ -65,19 +65,19 @@ export const ComponentView = ({
|
||||
|
||||
// State
|
||||
const [showWebView, setShowWebView] = useState<boolean>(true);
|
||||
const [requiresLocalEditor, setRequiresLocalEditor] = useState<boolean>(
|
||||
false
|
||||
);
|
||||
const [requiresLocalEditor, setRequiresLocalEditor] =
|
||||
useState<boolean>(false);
|
||||
const [localEditorReady, setLocalEditorReady] = useState<boolean>(false);
|
||||
|
||||
// Ref
|
||||
const didLoadRootUrl = useRef<boolean>(false);
|
||||
const webViewRef = useRef<WebView>(null);
|
||||
const timeoutRef = useRef<number | undefined>(undefined);
|
||||
const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(
|
||||
undefined
|
||||
);
|
||||
|
||||
const navigation = useNavigation<
|
||||
AppStackNavigationProp<typeof SCREEN_NOTES>['navigation']
|
||||
>();
|
||||
const navigation =
|
||||
useNavigation<AppStackNavigationProp<typeof SCREEN_NOTES>['navigation']>();
|
||||
|
||||
useEffect(() => {
|
||||
const removeBlurScreenListener = navigation.addListener('blur', () => {
|
||||
@@ -238,34 +238,35 @@ export const ComponentView = ({
|
||||
onLoadStart();
|
||||
};
|
||||
|
||||
const onShouldStartLoadWithRequest: OnShouldStartLoadWithRequest = request => {
|
||||
log('Setting last iframe URL to', request.url);
|
||||
/** The first request can typically be 'about:blank', which we want to ignore */
|
||||
if (!didLoadRootUrl.current) {
|
||||
didLoadRootUrl.current = request.url === componentViewer.url!;
|
||||
}
|
||||
/**
|
||||
* We want to handle link clicks within an editor by opening the browser
|
||||
* instead of loading inline. On iOS, onShouldStartLoadWithRequest is
|
||||
* called for all requests including the initial request to load the editor.
|
||||
* On iOS, clicks in the editors have a navigationType of 'click', but on
|
||||
* Android, this is not the case (no navigationType).
|
||||
* However, on Android, this function is not called for the initial request.
|
||||
* So that might be one way to determine if this request is a click or the
|
||||
* actual editor load request. But I don't think it's safe to rely on this
|
||||
* being the case in the future. So on Android, we'll handle url loads only
|
||||
* if the url isn't equal to the editor url.
|
||||
*/
|
||||
const onShouldStartLoadWithRequest: OnShouldStartLoadWithRequest =
|
||||
request => {
|
||||
log('Setting last iframe URL to', request.url);
|
||||
/** The first request can typically be 'about:blank', which we want to ignore */
|
||||
if (!didLoadRootUrl.current) {
|
||||
didLoadRootUrl.current = request.url === componentViewer.url!;
|
||||
}
|
||||
/**
|
||||
* We want to handle link clicks within an editor by opening the browser
|
||||
* instead of loading inline. On iOS, onShouldStartLoadWithRequest is
|
||||
* called for all requests including the initial request to load the editor.
|
||||
* On iOS, clicks in the editors have a navigationType of 'click', but on
|
||||
* Android, this is not the case (no navigationType).
|
||||
* However, on Android, this function is not called for the initial request.
|
||||
* So that might be one way to determine if this request is a click or the
|
||||
* actual editor load request. But I don't think it's safe to rely on this
|
||||
* being the case in the future. So on Android, we'll handle url loads only
|
||||
* if the url isn't equal to the editor url.
|
||||
*/
|
||||
|
||||
if (
|
||||
(Platform.OS === 'ios' && request.navigationType === 'click') ||
|
||||
(Platform.OS === 'android' && request.url !== componentViewer.url!)
|
||||
) {
|
||||
application!.deviceInterface!.openUrl(request.url);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
if (
|
||||
(Platform.OS === 'ios' && request.navigationType === 'click') ||
|
||||
(Platform.OS === 'android' && request.url !== componentViewer.url!)
|
||||
) {
|
||||
application!.deviceInterface!.openUrl(request.url);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
const defaultInjectedJavaScript = () => {
|
||||
return `(function() {
|
||||
|
||||
@@ -60,10 +60,10 @@ export class Compose extends React.Component<{}, State> {
|
||||
static contextType = ApplicationContext;
|
||||
context: React.ContextType<typeof ApplicationContext>;
|
||||
editorViewRef: React.RefObject<SNTextView> = createRef();
|
||||
saveTimeout: number | undefined;
|
||||
saveTimeout: ReturnType<typeof setTimeout> | undefined;
|
||||
alreadySaved: boolean = false;
|
||||
statusTimeout: number | undefined;
|
||||
downloadingMessageTimeout: number | undefined;
|
||||
statusTimeout: ReturnType<typeof setTimeout> | undefined;
|
||||
downloadingMessageTimeout: ReturnType<typeof setTimeout> | undefined;
|
||||
removeNoteInnerValueObserver?: () => void;
|
||||
removeComponentsObserver?: () => void;
|
||||
removeStreamComponents?: () => void;
|
||||
@@ -90,8 +90,8 @@ export class Compose extends React.Component<{}, State> {
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
this.removeNoteInnerValueObserver = this.editor?.addNoteInnerValueChangeObserver(
|
||||
(note, source) => {
|
||||
this.removeNoteInnerValueObserver =
|
||||
this.editor?.addNoteInnerValueChangeObserver((note, source) => {
|
||||
if (isPayloadSourceRetrieved(source!)) {
|
||||
this.setState({
|
||||
title: note.title,
|
||||
@@ -122,8 +122,7 @@ export class Compose extends React.Component<{}, State> {
|
||||
this.showSavingStatus();
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
this.removeStreamComponents = this.context?.streamItems(
|
||||
ContentType.Component,
|
||||
|
||||
@@ -10,7 +10,7 @@ import { useCustomActionSheet } from '@Style/custom_action_sheet';
|
||||
import React, { useCallback, useContext, useEffect, useState } from 'react';
|
||||
import { FlatList, ListRenderItem, RefreshControl } from 'react-native';
|
||||
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
||||
import { ThemeContext } from 'styled-components/native';
|
||||
import { ThemeContext } from 'styled-components';
|
||||
import { SessionCell } from './SessionCell';
|
||||
|
||||
const useSessions = (): [
|
||||
|
||||
@@ -16,7 +16,7 @@ import {
|
||||
TabBar,
|
||||
TabView,
|
||||
} from 'react-native-tab-view';
|
||||
import { ThemeContext } from 'styled-components/native';
|
||||
import { ThemeContext } from 'styled-components';
|
||||
import { IosTabBarContainer } from './NoteHistory.styled';
|
||||
import { RemoteHistory } from './RemoteHistory';
|
||||
import { SessionHistory } from './SessionHistory';
|
||||
|
||||
@@ -20,9 +20,8 @@ export const RemoteHistory: React.FC<Props> = ({ note, onPress }) => {
|
||||
const insets = useSafeAreaInsets();
|
||||
|
||||
// State
|
||||
const [remoteHistoryList, setRemoteHistoryList] = useState<
|
||||
RevisionListEntry[]
|
||||
>();
|
||||
const [remoteHistoryList, setRemoteHistoryList] =
|
||||
useState<RevisionListEntry[]>();
|
||||
const [fetchingRemoteHistory, setFetchingRemoteHistory] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -31,9 +30,8 @@ export const RemoteHistory: React.FC<Props> = ({ note, onPress }) => {
|
||||
const fetchRemoteHistoryList = async () => {
|
||||
if (note) {
|
||||
setFetchingRemoteHistory(true);
|
||||
const newRemoteHistory = await application?.historyManager?.remoteHistoryForItem(
|
||||
note
|
||||
);
|
||||
const newRemoteHistory =
|
||||
await application?.historyManager?.remoteHistoryForItem(note);
|
||||
if (isMounted) {
|
||||
setFetchingRemoteHistory(false);
|
||||
setRemoteHistoryList(newRemoteHistory);
|
||||
@@ -49,10 +47,8 @@ export const RemoteHistory: React.FC<Props> = ({ note, onPress }) => {
|
||||
|
||||
const onItemPress = useCallback(
|
||||
async (item: RevisionListEntry) => {
|
||||
const remoteRevision = await application?.historyManager!.fetchRemoteRevision(
|
||||
note.uuid,
|
||||
item
|
||||
);
|
||||
const remoteRevision =
|
||||
await application?.historyManager!.fetchRemoteRevision(note.uuid, item);
|
||||
if (remoteRevision) {
|
||||
onPress(
|
||||
item.uuid,
|
||||
|
||||
@@ -59,7 +59,7 @@ export const NoteCell = ({
|
||||
const [selected, setSelected] = useState(false);
|
||||
|
||||
// Ref
|
||||
const selectionTimeout = useRef<number>();
|
||||
const selectionTimeout = useRef<ReturnType<typeof setTimeout>>();
|
||||
const elementRef = useRef<View>(null);
|
||||
|
||||
const { showActionSheet } = useCustomActionSheet();
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
import { SNNote } from '@standardnotes/snjs';
|
||||
import React, { useContext } from 'react';
|
||||
import styled, { ThemeContext } from 'styled-components/native';
|
||||
import { ThemeContext } from 'styled-components';
|
||||
import styled from 'styled-components/native';
|
||||
|
||||
type NoteFlag = {
|
||||
text: string;
|
||||
color: string;
|
||||
};
|
||||
|
||||
const FlagsContainer = styled.View`
|
||||
flex-direction: row;
|
||||
@@ -31,7 +37,7 @@ export const NoteCellFlags = ({
|
||||
}) => {
|
||||
const theme = useContext(ThemeContext);
|
||||
|
||||
let flags = [];
|
||||
let flags: NoteFlag[] = [];
|
||||
|
||||
if (note.errorDecrypting) {
|
||||
if (note.waitingForKey) {
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { SnIcon, TEditorIcon } from '@Components/SnIcon';
|
||||
import { SNNote } from '@standardnotes/snjs';
|
||||
import React, { useContext } from 'react';
|
||||
import styled, { ThemeContext } from 'styled-components/native';
|
||||
import { ThemeContext } from 'styled-components';
|
||||
import styled from 'styled-components/native';
|
||||
|
||||
const FlagIconsContainer = styled.View`
|
||||
display: flex;
|
||||
|
||||
@@ -26,7 +26,7 @@ import {
|
||||
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
||||
import IosSearchBar from 'react-native-search-bar';
|
||||
import AndroidSearchBar from 'react-native-search-box';
|
||||
import { ThemeContext } from 'styled-components/native';
|
||||
import { ThemeContext } from 'styled-components';
|
||||
import { NoteCell } from './NoteCell';
|
||||
import {
|
||||
Container,
|
||||
@@ -82,9 +82,8 @@ export const NoteList = (props: Props) => {
|
||||
const androidSearchBarInputRef = useRef<typeof AndroidSearchBar>(null);
|
||||
const noteListRef = useRef<FlatList>(null);
|
||||
|
||||
const navigation = useNavigation<
|
||||
AppStackNavigationProp<typeof SCREEN_NOTES>['navigation']
|
||||
>();
|
||||
const navigation =
|
||||
useNavigation<AppStackNavigationProp<typeof SCREEN_NOTES>['navigation']>();
|
||||
|
||||
const dismissKeyboard = () => {
|
||||
iosSearchBarInputRef.current?.blur();
|
||||
|
||||
@@ -28,7 +28,7 @@ import React, {
|
||||
useState,
|
||||
} from 'react';
|
||||
import FAB from 'react-native-fab';
|
||||
import { ThemeContext } from 'styled-components/native';
|
||||
import { ThemeContext } from 'styled-components';
|
||||
import { NoteList } from './NoteList';
|
||||
import { StyledIcon } from './Notes.styled';
|
||||
|
||||
@@ -49,9 +49,10 @@ export const Notes = React.memo(
|
||||
// Context
|
||||
const application = useContext(ApplicationContext);
|
||||
const theme = useContext(ThemeContext);
|
||||
const navigation = useNavigation<
|
||||
AppStackNavigationProp<typeof SCREEN_NOTES>['navigation']
|
||||
>();
|
||||
const navigation =
|
||||
useNavigation<
|
||||
AppStackNavigationProp<typeof SCREEN_NOTES>['navigation']
|
||||
>();
|
||||
|
||||
/**
|
||||
* Update sync status
|
||||
@@ -87,26 +88,20 @@ export const Notes = React.memo(
|
||||
const [selectedNoteId, setSelectedNoteId] = useState<SNNote['uuid']>();
|
||||
const [searchText, setSearchText] = useState('');
|
||||
const [searchOptions, setSearchOptions] = useState<SearchOptions>([]);
|
||||
const [
|
||||
includeProtectedNoteText,
|
||||
setIncludeProtectedNoteText,
|
||||
] = useState<boolean>(
|
||||
() =>
|
||||
!(
|
||||
application!.hasProtectionSources() &&
|
||||
!application!.hasUnprotectedAccessSession()
|
||||
)
|
||||
);
|
||||
const [includeArchivedNotes, setIncludeArchivedNotes] = useState<boolean>(
|
||||
false
|
||||
);
|
||||
const [includeTrashedNotes, setIncludeTrashedNotes] = useState<boolean>(
|
||||
false
|
||||
);
|
||||
const [
|
||||
includeProtectedStarted,
|
||||
setIncludeProtectedStarted,
|
||||
] = useState<boolean>(false);
|
||||
const [includeProtectedNoteText, setIncludeProtectedNoteText] =
|
||||
useState<boolean>(
|
||||
() =>
|
||||
!(
|
||||
application!.hasProtectionSources() &&
|
||||
!application!.hasUnprotectedAccessSession()
|
||||
)
|
||||
);
|
||||
const [includeArchivedNotes, setIncludeArchivedNotes] =
|
||||
useState<boolean>(false);
|
||||
const [includeTrashedNotes, setIncludeTrashedNotes] =
|
||||
useState<boolean>(false);
|
||||
const [includeProtectedStarted, setIncludeProtectedStarted] =
|
||||
useState<boolean>(false);
|
||||
const [shouldFocusSearch, setShouldFocusSearch] = useState<boolean>(false);
|
||||
|
||||
const haveDisplayOptions = useRef(false);
|
||||
@@ -211,13 +206,14 @@ export const Notes = React.memo(
|
||||
|
||||
useEffect(() => {
|
||||
let mounted = true;
|
||||
const removeEditorObserver = application?.editorGroup.addActiveControllerChangeObserver(
|
||||
activeEditor => {
|
||||
if (mounted) {
|
||||
setSelectedNoteId(activeEditor?.note?.uuid);
|
||||
const removeEditorObserver =
|
||||
application?.editorGroup.addActiveControllerChangeObserver(
|
||||
activeEditor => {
|
||||
if (mounted) {
|
||||
setSelectedNoteId(activeEditor?.note?.uuid);
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
);
|
||||
|
||||
return () => {
|
||||
mounted = false;
|
||||
@@ -291,7 +287,8 @@ export const Notes = React.memo(
|
||||
|
||||
if (includeProtected) {
|
||||
setIncludeProtectedStarted(true);
|
||||
allowToggling = await application?.authorizeSearchingProtectedNotesText();
|
||||
allowToggling =
|
||||
await application?.authorizeSearchingProtectedNotesText();
|
||||
}
|
||||
|
||||
setIncludeProtectedStarted(false);
|
||||
|
||||
@@ -20,7 +20,7 @@ const SIGN_IN_TEXT = 'Sign in or register to backup your notes';
|
||||
export const OfflineBanner: React.FC = () => {
|
||||
const navigation = useNavigation();
|
||||
const onPress = () => {
|
||||
navigation.navigate(SCREEN_SETTINGS);
|
||||
navigation.navigate(SCREEN_SETTINGS as never);
|
||||
};
|
||||
|
||||
return (
|
||||
|
||||
@@ -11,7 +11,7 @@ import { hexToRGBA } from '@Style/utils';
|
||||
import React, { useContext, useEffect, useMemo, useState } from 'react';
|
||||
import { LayoutChangeEvent } from 'react-native';
|
||||
import Icon from 'react-native-vector-icons/Ionicons';
|
||||
import { ThemeContext } from 'styled-components/native';
|
||||
import { ThemeContext } from 'styled-components';
|
||||
import { Compose } from './Compose/Compose';
|
||||
import { Notes } from './Notes/Notes';
|
||||
import {
|
||||
@@ -77,11 +77,12 @@ export const Root = () => {
|
||||
}
|
||||
}
|
||||
);
|
||||
const removeNoteObserver = application?.editorGroup.addActiveControllerChangeObserver(
|
||||
activeController => {
|
||||
setActiveNoteId(activeController?.note.uuid);
|
||||
}
|
||||
);
|
||||
const removeNoteObserver =
|
||||
application?.editorGroup.addActiveControllerChangeObserver(
|
||||
activeController => {
|
||||
setActiveNoteId(activeController?.note.uuid);
|
||||
}
|
||||
);
|
||||
return () => {
|
||||
if (removeApplicationStateEventHandler) {
|
||||
removeApplicationStateEventHandler();
|
||||
|
||||
@@ -15,8 +15,7 @@ const URLS = {
|
||||
privacy: 'https://standardnotes.com/privacy',
|
||||
help: 'https://standardnotes.com/help',
|
||||
rate: Platform.select({
|
||||
ios:
|
||||
'https://itunes.apple.com/us/app/standard-notes/id1285392450?ls=1&mt=8',
|
||||
ios: 'https://itunes.apple.com/us/app/standard-notes/id1285392450?ls=1&mt=8',
|
||||
android: 'market://details?id=com.standardnotes',
|
||||
}) as string,
|
||||
};
|
||||
|
||||
@@ -25,9 +25,10 @@ export const OptionsSection = ({ title, encryptionAvailable }: Props) => {
|
||||
// Context
|
||||
const application = useContext(ApplicationContext);
|
||||
const [signedIn] = useSignedIn();
|
||||
const navigation = useNavigation<
|
||||
ModalStackNavigationProp<typeof SCREEN_SETTINGS>['navigation']
|
||||
>();
|
||||
const navigation =
|
||||
useNavigation<
|
||||
ModalStackNavigationProp<typeof SCREEN_SETTINGS>['navigation']
|
||||
>();
|
||||
|
||||
// State
|
||||
const [importing, setImporting] = useState(false);
|
||||
@@ -87,7 +88,7 @@ export const OptionsSection = ({ title, encryptionAvailable }: Props) => {
|
||||
ButtonType.Danger
|
||||
)
|
||||
) {
|
||||
await application!.signOut();
|
||||
await application!.user.signOut();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -137,9 +138,10 @@ export const OptionsSection = ({ title, encryptionAvailable }: Props) => {
|
||||
|
||||
const onImportPress = async () => {
|
||||
try {
|
||||
const selectedFile = await DocumentPicker.pick({
|
||||
const selectedFiles = await DocumentPicker.pick({
|
||||
type: [DocumentPicker.types.plainText],
|
||||
});
|
||||
const selectedFile = selectedFiles[0];
|
||||
const selectedFileURI =
|
||||
Platform.OS === 'ios'
|
||||
? decodeURIComponent(selectedFile.uri)
|
||||
|
||||
@@ -24,9 +24,10 @@ type Props = {
|
||||
};
|
||||
|
||||
export const SecuritySection = (props: Props) => {
|
||||
const navigation = useNavigation<
|
||||
ModalStackNavigationProp<typeof SCREEN_SETTINGS>['navigation']
|
||||
>();
|
||||
const navigation =
|
||||
useNavigation<
|
||||
ModalStackNavigationProp<typeof SCREEN_SETTINGS>['navigation']
|
||||
>();
|
||||
// Context
|
||||
const application = useContext(ApplicationContext);
|
||||
|
||||
@@ -68,7 +69,9 @@ export const SecuritySection = (props: Props) => {
|
||||
};
|
||||
getHasBiometrics();
|
||||
const hasBiometricsSupport = async () => {
|
||||
const hasBiometricsAvailable = await (application?.deviceInterface as MobileDeviceInterface).getDeviceBiometricsAvailability();
|
||||
const hasBiometricsAvailable = await (
|
||||
application?.deviceInterface as MobileDeviceInterface
|
||||
).getDeviceBiometricsAvailability();
|
||||
if (mounted) {
|
||||
setSupportsBiometrics(hasBiometricsAvailable);
|
||||
}
|
||||
|
||||
@@ -37,10 +37,8 @@ export const Listed: FC<TProps> = ({ note }) => {
|
||||
const [listedAccountDetails, setListedAccountDetails] = useState<
|
||||
TListedAccountItem[]
|
||||
>([]);
|
||||
const [
|
||||
authorUrlWithInProgressAction,
|
||||
setAuthorUrlWithInProgressAction,
|
||||
] = useState<string | null>(null);
|
||||
const [authorUrlWithInProgressAction, setAuthorUrlWithInProgressAction] =
|
||||
useState<string | null>(null);
|
||||
|
||||
const { showActionSheet } = useCustomActionSheet();
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ import FAB from 'react-native-fab';
|
||||
import { FlatList } from 'react-native-gesture-handler';
|
||||
import DrawerLayout from 'react-native-gesture-handler/DrawerLayout';
|
||||
import Icon from 'react-native-vector-icons/Ionicons';
|
||||
import { ThemeContext } from 'styled-components/native';
|
||||
import { ThemeContext } from 'styled-components';
|
||||
import {
|
||||
FirstSafeAreaView,
|
||||
MainSafeAreaView,
|
||||
@@ -261,7 +261,7 @@ export const MainSideMenu = React.memo(({ drawerRef }: Props) => {
|
||||
|
||||
const openSettings = () => {
|
||||
drawerRef?.closeDrawer();
|
||||
navigation?.navigate(SCREEN_SETTINGS);
|
||||
navigation?.navigate(SCREEN_SETTINGS as never);
|
||||
};
|
||||
|
||||
const outOfSyncPressed = async () => {
|
||||
|
||||
@@ -51,7 +51,7 @@ import FAB from 'react-native-fab';
|
||||
import { FlatList } from 'react-native-gesture-handler';
|
||||
import DrawerLayout from 'react-native-gesture-handler/DrawerLayout';
|
||||
import Icon from 'react-native-vector-icons/Ionicons';
|
||||
import { ThemeContext } from 'styled-components/native';
|
||||
import { ThemeContext } from 'styled-components';
|
||||
import { SafeAreaContainer, useStyles } from './NoteSideMenu.styled';
|
||||
import {
|
||||
SideMenuOption,
|
||||
@@ -101,9 +101,10 @@ export const NoteSideMenu = React.memo((props: Props) => {
|
||||
// Context
|
||||
const theme = useContext(ThemeContext);
|
||||
const application = useContext(ApplicationContext);
|
||||
const navigation = useNavigation<
|
||||
AppStackNavigationProp<typeof SCREEN_COMPOSE>['navigation']
|
||||
>();
|
||||
const navigation =
|
||||
useNavigation<
|
||||
AppStackNavigationProp<typeof SCREEN_COMPOSE>['navigation']
|
||||
>();
|
||||
const { showActionSheet } = useCustomActionSheet();
|
||||
const styles = useStyles(theme);
|
||||
|
||||
@@ -154,16 +155,15 @@ export const NoteSideMenu = React.memo((props: Props) => {
|
||||
|
||||
useEffect(() => {
|
||||
let mounted = true;
|
||||
const removeEditorObserver = application?.editorGroup.addActiveControllerChangeObserver(
|
||||
() => {
|
||||
const removeEditorObserver =
|
||||
application?.editorGroup.addActiveControllerChangeObserver(() => {
|
||||
if (mounted) {
|
||||
const activeController =
|
||||
application?.editorGroup.activeNoteViewController;
|
||||
setNote(activeController?.note);
|
||||
setEditor(activeController);
|
||||
}
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
return () => {
|
||||
mounted = false;
|
||||
@@ -575,7 +575,7 @@ export const NoteSideMenu = React.memo((props: Props) => {
|
||||
mutator.removeItemAsRelationship(note);
|
||||
});
|
||||
} else {
|
||||
await application?.addTagHierarchyToNote(note, tag as SNTag);
|
||||
await application?.items.addTagToNote(note, tag as SNTag, true);
|
||||
}
|
||||
}
|
||||
reloadTags();
|
||||
@@ -607,12 +607,8 @@ export const NoteSideMenu = React.memo((props: Props) => {
|
||||
selectedTags,
|
||||
}))}
|
||||
renderItem={({ item }) => {
|
||||
const {
|
||||
OptionsSection,
|
||||
EditorsSection,
|
||||
ListedSection,
|
||||
TagsSection,
|
||||
} = MenuSections;
|
||||
const { OptionsSection, EditorsSection, ListedSection, TagsSection } =
|
||||
MenuSections;
|
||||
|
||||
if (item.key === OptionsSection) {
|
||||
return (
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Circle } from '@Components/Circle';
|
||||
import React, { useContext } from 'react';
|
||||
import Icon from 'react-native-vector-icons/Ionicons';
|
||||
import { ThemeContext } from 'styled-components/native';
|
||||
import { ThemeContext } from 'styled-components';
|
||||
import {
|
||||
CellContent,
|
||||
IconAscii,
|
||||
|
||||
@@ -4,7 +4,7 @@ import { ApplicationContext } from '@Root/ApplicationContext';
|
||||
import { ContentType } from '@standardnotes/snjs';
|
||||
import React, { useContext, useEffect, useMemo, useState } from 'react';
|
||||
import { ViewProps } from 'react-native';
|
||||
import { ThemeContext } from 'styled-components/native';
|
||||
import { ThemeContext } from 'styled-components';
|
||||
import {
|
||||
Cell,
|
||||
IconCircle,
|
||||
|
||||
@@ -40,9 +40,10 @@ export const TagSelectionList = React.memo(
|
||||
}: Props) => {
|
||||
// Context
|
||||
const application = useContext(ApplicationContext);
|
||||
const navigation = useNavigation<
|
||||
AppStackNavigationProp<typeof SCREEN_COMPOSE>['navigation']
|
||||
>();
|
||||
const navigation =
|
||||
useNavigation<
|
||||
AppStackNavigationProp<typeof SCREEN_COMPOSE>['navigation']
|
||||
>();
|
||||
const { showActionSheet } = useCustomActionSheet();
|
||||
|
||||
// State
|
||||
|
||||
@@ -2,14 +2,18 @@ export const SCREEN_AUTHENTICATE = 'Authenticate';
|
||||
|
||||
export const SCREEN_NOTES = 'Notes' as 'Notes';
|
||||
export const SCREEN_COMPOSE = 'Compose' as 'Compose';
|
||||
export const SCREEN_INPUT_MODAL_PASSCODE = 'InputModalPasscode' as 'InputModalPasscode';
|
||||
export const SCREEN_INPUT_MODAL_PASSCODE =
|
||||
'InputModalPasscode' as 'InputModalPasscode';
|
||||
export const SCREEN_INPUT_MODAL_TAG = 'InputModalTag' as 'InputModalTag';
|
||||
export const SCREEN_NOTE_HISTORY = 'NoteSessionHistory' as 'NoteSessionHistory';
|
||||
export const SCREEN_NOTE_HISTORY_PREVIEW = 'NoteSessionHistoryPreview' as 'NoteSessionHistoryPreview';
|
||||
export const SCREEN_NOTE_HISTORY_PREVIEW =
|
||||
'NoteSessionHistoryPreview' as 'NoteSessionHistoryPreview';
|
||||
|
||||
export const SCREEN_SETTINGS = 'Settings';
|
||||
export const SCREEN_MANAGE_SESSIONS = 'ManageSessions' as 'ManageSessions';
|
||||
|
||||
export const MODAL_BLOCKING_ALERT = 'ModalBlockingAlert' as 'ModalBlockingAlert';
|
||||
export const MODAL_BLOCKING_ALERT =
|
||||
'ModalBlockingAlert' as 'ModalBlockingAlert';
|
||||
|
||||
export const SCREEN_VIEW_PROTECTED_NOTE = 'ViewProtectedNote' as 'ViewProtectedNote';
|
||||
export const SCREEN_VIEW_PROTECTED_NOTE =
|
||||
'ViewProtectedNote' as 'ViewProtectedNote';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { useActionSheet } from '@expo/react-native-action-sheet';
|
||||
import React, { useContext } from 'react';
|
||||
import { findNodeHandle } from 'react-native';
|
||||
import { ThemeContext } from 'styled-components/native';
|
||||
import { ThemeContext } from 'styled-components';
|
||||
|
||||
export type CustomActionSheetOption =
|
||||
| {
|
||||
@@ -59,7 +59,7 @@ export const useCustomActionSheet = () => {
|
||||
anchor: anchor ? findNodeHandle(anchor) ?? undefined : undefined,
|
||||
},
|
||||
buttonIndex => {
|
||||
let option = tempOptions[buttonIndex];
|
||||
let option = tempOptions[buttonIndex!];
|
||||
option.callback && option.callback(option);
|
||||
}
|
||||
);
|
||||
|
||||
@@ -51,7 +51,7 @@ type MobileThemeContent = {
|
||||
|
||||
export class MobileTheme extends SNTheme {
|
||||
get mobileContent() {
|
||||
return (this.safeContent as any) as MobileThemeContent;
|
||||
return this.safeContent as any as MobileThemeContent;
|
||||
}
|
||||
|
||||
static BuildTheme(variables?: MobileThemeVariables) {
|
||||
@@ -69,7 +69,6 @@ export class MobileTheme extends SNTheme {
|
||||
}
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-shadow
|
||||
enum SystemThemeTint {
|
||||
Blue = 'Blue',
|
||||
Dark = 'Dark',
|
||||
|
||||
@@ -1,36 +1,33 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
/* Basic Options */
|
||||
"target": "esnext",
|
||||
"module": "ESNext",
|
||||
"lib": ["ESNext"],
|
||||
"allowJs": true,
|
||||
"jsx": "react-native",
|
||||
"noEmit": true,
|
||||
"isolatedModules": false,
|
||||
"strict": true,
|
||||
"skipLibCheck": true,
|
||||
// "noImplicitAny": false,
|
||||
"moduleResolution": "node",
|
||||
"baseUrl": "src",
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"baseUrl": "src",
|
||||
"esModuleInterop": true,
|
||||
"isolatedModules": true,
|
||||
"jsx": "react-native",
|
||||
"lib": ["ESNext"],
|
||||
"module": "ESNext",
|
||||
"moduleResolution": "node",
|
||||
"noEmit": true,
|
||||
"noImplicitAny": true,
|
||||
"resolveJsonModule": true,
|
||||
"skipLibCheck": true,
|
||||
"strict": true,
|
||||
"target": "esnext",
|
||||
"typeRoots": ["node_modules/@types", "./src/types/*"],
|
||||
"paths": {
|
||||
"@Components/*": ["./components/*"],
|
||||
"@Lib/*": ["./lib/*"],
|
||||
"@Screens/*": ["./screens/*"],
|
||||
"@Style/*": ["./style/*"],
|
||||
"@Root/*": ["./*"]
|
||||
},
|
||||
"types": ["jest"],
|
||||
"typeRoots": ["./src/types/*", "node_modules/@types"],
|
||||
"resolveJsonModule": true
|
||||
}
|
||||
},
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
"babel.config.js",
|
||||
"metro.config.js",
|
||||
"jest.config.js",
|
||||
"types"
|
||||
"jest.config.js"
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user