mirror of
https://github.com/tooot-app/app
synced 2025-04-24 23:18:47 +02:00
commit
86acfe48ab
@ -121,9 +121,11 @@ def jscFlavor = 'org.webkit:android-jsc:+'
|
|||||||
* on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
|
* on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
|
||||||
* and the benefits of using Hermes will therefore be sharply reduced.
|
* and the benefits of using Hermes will therefore be sharply reduced.
|
||||||
*/
|
*/
|
||||||
def enableHermes = project.ext.react.get("enableHermes", false);
|
def enableHermes = project.ext.react.get("enableHermes", true);
|
||||||
|
|
||||||
android {
|
android {
|
||||||
|
ndkVersion rootProject.ext.ndkVersion
|
||||||
|
|
||||||
compileSdkVersion rootProject.ext.compileSdkVersion
|
compileSdkVersion rootProject.ext.compileSdkVersion
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
@ -180,7 +182,7 @@ android {
|
|||||||
def abi = output.getFilter(OutputFile.ABI)
|
def abi = output.getFilter(OutputFile.ABI)
|
||||||
if (abi != null) { // null for the universal-debug, universal-release variants
|
if (abi != null) { // null for the universal-debug, universal-release variants
|
||||||
output.versionCodeOverride =
|
output.versionCodeOverride =
|
||||||
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
|
defaultConfig.versionCode * 1000 + versionCodes.get(abi)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,5 +3,10 @@
|
|||||||
|
|
||||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
|
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
|
||||||
|
|
||||||
<application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" />
|
<application
|
||||||
|
android:usesCleartextTraffic="true"
|
||||||
|
tools:targetApi="28"
|
||||||
|
tools:ignore="GoogleAppIndexingWarning">
|
||||||
|
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
|
||||||
|
</application>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
@ -32,6 +32,5 @@
|
|||||||
<data android:scheme="com.xmflsct.app.tooot"/>
|
<data android:scheme="com.xmflsct.app.tooot"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>
|
|
||||||
</application>
|
</application>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
@ -8,8 +8,8 @@ public class BasePackageList {
|
|||||||
public List<Package> getPackageList() {
|
public List<Package> getPackageList() {
|
||||||
return Arrays.<Package>asList(
|
return Arrays.<Package>asList(
|
||||||
new expo.modules.application.ApplicationPackage(),
|
new expo.modules.application.ApplicationPackage(),
|
||||||
new expo.modules.av.AVPackage(),
|
|
||||||
new expo.modules.constants.ConstantsPackage(),
|
new expo.modules.constants.ConstantsPackage(),
|
||||||
|
new expo.modules.av.AVPackage(),
|
||||||
new expo.modules.crypto.CryptoPackage(),
|
new expo.modules.crypto.CryptoPackage(),
|
||||||
new expo.modules.device.DevicePackage(),
|
new expo.modules.device.DevicePackage(),
|
||||||
new expo.modules.errorrecovery.ErrorRecoveryPackage(),
|
new expo.modules.errorrecovery.ErrorRecoveryPackage(),
|
||||||
@ -19,13 +19,13 @@ public class BasePackageList {
|
|||||||
new expo.modules.font.FontLoaderPackage(),
|
new expo.modules.font.FontLoaderPackage(),
|
||||||
new expo.modules.haptics.HapticsPackage(),
|
new expo.modules.haptics.HapticsPackage(),
|
||||||
new expo.modules.imageloader.ImageLoaderPackage(),
|
new expo.modules.imageloader.ImageLoaderPackage(),
|
||||||
|
new expo.modules.permissions.PermissionsPackage(),
|
||||||
new expo.modules.imagepicker.ImagePickerPackage(),
|
new expo.modules.imagepicker.ImagePickerPackage(),
|
||||||
new expo.modules.keepawake.KeepAwakePackage(),
|
new expo.modules.keepawake.KeepAwakePackage(),
|
||||||
new expo.modules.lineargradient.LinearGradientPackage(),
|
new expo.modules.lineargradient.LinearGradientPackage(),
|
||||||
new expo.modules.localization.LocalizationPackage(),
|
new expo.modules.localization.LocalizationPackage(),
|
||||||
new expo.modules.location.LocationPackage(),
|
new expo.modules.location.LocationPackage(),
|
||||||
new expo.modules.notifications.NotificationsPackage(),
|
new expo.modules.notifications.NotificationsPackage(),
|
||||||
new expo.modules.permissions.PermissionsPackage(),
|
|
||||||
new expo.modules.screencapture.ScreenCapturePackage(),
|
new expo.modules.screencapture.ScreenCapturePackage(),
|
||||||
new expo.modules.securestore.SecureStorePackage(),
|
new expo.modules.securestore.SecureStorePackage(),
|
||||||
new expo.modules.splashscreen.SplashScreenPackage(),
|
new expo.modules.splashscreen.SplashScreenPackage(),
|
||||||
|
@ -4,12 +4,12 @@
|
|||||||
standalone="yes"
|
standalone="yes"
|
||||||
?>
|
?>
|
||||||
<resources>
|
<resources>
|
||||||
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
|
||||||
<item name="android:textColor">#000000</item>
|
<item name="android:textColor">#000000</item>
|
||||||
<item name="colorPrimary">@color/colorPrimary</item>
|
<item name="colorPrimary">@color/colorPrimary</item>
|
||||||
<item name="android:windowTranslucentStatus">true</item>
|
<item name="android:windowTranslucentStatus">true</item>
|
||||||
</style>
|
</style>
|
||||||
<style name="Theme.App.SplashScreen" parent="Theme.AppCompat.Light.NoActionBar">
|
<style name="Theme.App.SplashScreen" parent="Theme.AppCompat.DayNight.NoActionBar">
|
||||||
<!-- Below line is handled by '@expo/configure-splash-screen' command and it's discouraged to modify it manually -->
|
<!-- Below line is handled by '@expo/configure-splash-screen' command and it's discouraged to modify it manually -->
|
||||||
<item name="android:windowBackground">@drawable/splashscreen</item>
|
<item name="android:windowBackground">@drawable/splashscreen</item>
|
||||||
<item name="android:windowFullscreen">true</item>
|
<item name="android:windowFullscreen">true</item>
|
||||||
|
@ -2,10 +2,11 @@
|
|||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
ext {
|
ext {
|
||||||
buildToolsVersion = "29.0.2"
|
buildToolsVersion = "29.0.3"
|
||||||
minSdkVersion = 21
|
minSdkVersion = 21
|
||||||
compileSdkVersion = 29
|
compileSdkVersion = 29
|
||||||
targetSdkVersion = 29
|
targetSdkVersion = 29
|
||||||
|
ndkVersion = "20.1.5948944"
|
||||||
}
|
}
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
@ -13,7 +14,7 @@ buildscript {
|
|||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.google.gms:google-services:4.3.3'
|
classpath 'com.google.gms:google-services:4.3.3'
|
||||||
classpath("com.android.tools.build:gradle:3.5.3")
|
classpath("com.android.tools.build:gradle:4.1.0")
|
||||||
|
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
// in the individual module build.gradle files
|
// in the individual module build.gradle files
|
||||||
|
@ -26,7 +26,7 @@ android.useAndroidX=true
|
|||||||
android.enableJetifier=true
|
android.enableJetifier=true
|
||||||
|
|
||||||
# Version of flipper SDK to use with React Native
|
# Version of flipper SDK to use with React Native
|
||||||
FLIPPER_VERSION=0.54.0
|
FLIPPER_VERSION=0.75.1
|
||||||
|
|
||||||
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=4096m -XX:+HeapDumpOnOutOfMemoryError
|
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=4096m -XX:+HeapDumpOnOutOfMemoryError
|
||||||
org.gradle.daemon=true
|
org.gradle.daemon=true
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
21
android/gradlew.bat
vendored
21
android/gradlew.bat
vendored
@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
|
|||||||
|
|
||||||
set JAVA_EXE=java.exe
|
set JAVA_EXE=java.exe
|
||||||
%JAVA_EXE% -version >NUL 2>&1
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
if "%ERRORLEVEL%" == "0" goto init
|
if "%ERRORLEVEL%" == "0" goto execute
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
@ -54,7 +54,7 @@ goto fail
|
|||||||
set JAVA_HOME=%JAVA_HOME:"=%
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
if exist "%JAVA_EXE%" goto init
|
if exist "%JAVA_EXE%" goto execute
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||||
@ -64,28 +64,13 @@ echo location of your Java installation.
|
|||||||
|
|
||||||
goto fail
|
goto fail
|
||||||
|
|
||||||
:init
|
|
||||||
@rem Get command-line arguments, handling Windows variants
|
|
||||||
|
|
||||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
|
||||||
|
|
||||||
:win9xME_args
|
|
||||||
@rem Slurp the command line arguments.
|
|
||||||
set CMD_LINE_ARGS=
|
|
||||||
set _SKIP=2
|
|
||||||
|
|
||||||
:win9xME_args_slurp
|
|
||||||
if "x%~1" == "x" goto execute
|
|
||||||
|
|
||||||
set CMD_LINE_ARGS=%*
|
|
||||||
|
|
||||||
:execute
|
:execute
|
||||||
@rem Setup the command line
|
@rem Setup the command line
|
||||||
|
|
||||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
@rem Execute Gradle
|
@rem Execute Gradle
|
||||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||||
|
|
||||||
:end
|
:end
|
||||||
@rem End local scope for the variables with windows NT shell
|
@rem End local scope for the variables with windows NT shell
|
||||||
|
@ -8,16 +8,16 @@ ensure_env_vars(
|
|||||||
VERSIONS = read_json( json_path: "./package.json" )[:versions]
|
VERSIONS = read_json( json_path: "./package.json" )[:versions]
|
||||||
ENVIRONMENT = ENV["ENVIRONMENT"]
|
ENVIRONMENT = ENV["ENVIRONMENT"]
|
||||||
VERSION = "#{VERSIONS[:major]}.#{VERSIONS[:minor]}"
|
VERSION = "#{VERSIONS[:major]}.#{VERSIONS[:minor]}"
|
||||||
RELEASE_CHANNEL = "#{VERSIONS[:major]}-#{VERSIONS[:minor]}-#{ENVIRONMENT}"
|
RELEASE_CHANNEL = "#{VERSIONS[:major]}-#{ENVIRONMENT}"
|
||||||
BUILD_NUMBER = ENV["GITHUB_RUN_NUMBER"]
|
BUILD_NUMBER = ENV["GITHUB_RUN_NUMBER"]
|
||||||
GITHUB_REPO = "tooot-app/app"
|
GITHUB_REPO = "tooot-app/app"
|
||||||
case ENVIRONMENT
|
case ENVIRONMENT
|
||||||
when "main"
|
|
||||||
GITHUB_RELEASE= ""
|
|
||||||
when "candidate"
|
when "candidate"
|
||||||
GITHUB_RELEASE = "v#{VERSION}-#{VERSIONS[:patch]}"
|
GITHUB_RELEASE = "v#{VERSION}-#{VERSIONS[:patch]}"
|
||||||
when "release"
|
when "release"
|
||||||
GITHUB_RELEASE = "v#{VERSION}"
|
GITHUB_RELEASE = "v#{VERSION}"
|
||||||
|
else
|
||||||
|
GITHUB_RELEASE= ""
|
||||||
end
|
end
|
||||||
|
|
||||||
XCODEPROJ = "./ios/tooot.xcodeproj"
|
XCODEPROJ = "./ios/tooot.xcodeproj"
|
||||||
@ -30,9 +30,7 @@ private_lane :prepare_appstore_ios do
|
|||||||
set_info_plist_value(
|
set_info_plist_value(
|
||||||
path: INFO_PLIST,
|
path: INFO_PLIST,
|
||||||
key: "NSAppTransportSecurity",
|
key: "NSAppTransportSecurity",
|
||||||
value: {
|
value: {}
|
||||||
"NSAllowsArbitraryLoads" => false
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
increment_build_number( xcodeproj: XCODEPROJ, build_number: BUILD_NUMBER, skip_info_plist: true )
|
increment_build_number( xcodeproj: XCODEPROJ, build_number: BUILD_NUMBER, skip_info_plist: true )
|
||||||
app_store_connect_api_key
|
app_store_connect_api_key
|
||||||
@ -84,7 +82,7 @@ private_lane :build_ios do
|
|||||||
install_pods_ios
|
install_pods_ios
|
||||||
prepare_appstore_ios
|
prepare_appstore_ios
|
||||||
match( type: "appstore", readonly: true )
|
match( type: "appstore", readonly: true )
|
||||||
build_ios_app( export_method: "app-store", include_symbols: true, include_bitcode: true )
|
build_ios_app( export_method: "app-store", include_symbols: true, include_bitcode: true, silent: true )
|
||||||
upload_to_testflight(
|
upload_to_testflight(
|
||||||
demo_account_required: true,
|
demo_account_required: true,
|
||||||
distribute_external: true,
|
distribute_external: true,
|
||||||
@ -94,12 +92,12 @@ private_lane :build_ios do
|
|||||||
when "release"
|
when "release"
|
||||||
install_pods_ios
|
install_pods_ios
|
||||||
prepare_appstore_ios
|
prepare_appstore_ios
|
||||||
match( type: "appstore", readonly: true, include_bitcode: true )
|
match( type: "appstore", readonly: true )
|
||||||
build_ios_app( export_method: "app-store" )
|
build_ios_app( export_method: "app-store", include_bitcode: true, silent: true )
|
||||||
else
|
else
|
||||||
if !is_ci
|
if !is_ci
|
||||||
match( type: "development", readonly: true )
|
match( type: "development", readonly: true )
|
||||||
build_ios_app( export_method: "development", output_directory: BUILD_DIRECTORY )
|
build_ios_app( export_method: "development", output_directory: BUILD_DIRECTORY, silent: true )
|
||||||
install_on_device( skip_wifi: true )
|
install_on_device( skip_wifi: true )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
8
ios/File.swift
Normal file
8
ios/File.swift
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
//
|
||||||
|
// File.swift
|
||||||
|
// tooot
|
||||||
|
//
|
||||||
|
// Created by Zheng Zhiyuan (SEBD) on 2021-03-15.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
31
ios/Podfile
31
ios/Podfile
@ -8,28 +8,19 @@ target 'tooot' do
|
|||||||
use_unimodules!
|
use_unimodules!
|
||||||
config = use_native_modules!
|
config = use_native_modules!
|
||||||
|
|
||||||
use_react_native!(:path => config["reactNativePath"])
|
use_react_native!(
|
||||||
|
:path => config[:reactNativePath],
|
||||||
|
# to enable hermes on iOS, change `false` to `true` and then install pods
|
||||||
|
:hermes_enabled => true
|
||||||
|
)
|
||||||
|
|
||||||
# Uncomment the code below to enable Flipper.
|
# Enables Flipper.
|
||||||
#
|
#
|
||||||
# You should not install Flipper in CI environments when creating release
|
# Note that if you have use_frameworks! enabled, Flipper will not work and
|
||||||
# builds, this will lead to significantly slower build times.
|
# you should disable the next line.
|
||||||
#
|
# use_flipper!()
|
||||||
# Note that if you have use_frameworks! enabled, Flipper will not work.
|
|
||||||
#
|
|
||||||
# use_flipper!
|
|
||||||
# post_install do |installer|
|
|
||||||
# flipper_post_install(installer)
|
|
||||||
# end
|
|
||||||
end
|
|
||||||
|
|
||||||
# https://github.com/CocoaPods/CocoaPods/issues/9884
|
post_install do |installer|
|
||||||
post_install do |pi|
|
react_native_post_install(installer)
|
||||||
pi.pods_project.targets.each do |t|
|
|
||||||
t.build_configurations.each do |bc|
|
|
||||||
if bc.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] == '8.0'
|
|
||||||
bc.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
632
ios/Podfile.lock
632
ios/Podfile.lock
@ -1,41 +1,41 @@
|
|||||||
PODS:
|
PODS:
|
||||||
- boost-for-react-native (1.63.0)
|
- boost-for-react-native (1.63.0)
|
||||||
- DoubleConversion (1.1.6)
|
- DoubleConversion (1.1.6)
|
||||||
- EXApplication (2.4.1):
|
- EXApplication (3.0.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- EXAV (8.7.0):
|
- EXAV (9.0.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- UMFileSystemInterface
|
- UMFileSystemInterface
|
||||||
- UMPermissionsInterface
|
- UMPermissionsInterface
|
||||||
- EXConstants (10.0.1):
|
- EXConstants (10.0.1):
|
||||||
- UMConstantsInterface
|
- UMConstantsInterface
|
||||||
- UMCore
|
- UMCore
|
||||||
- EXCrypto (8.4.0):
|
- EXCrypto (9.0.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- EXDevice (3.1.1):
|
- EXDevice (2.4.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- EXErrorRecovery (1.4.0):
|
- EXErrorRecovery (1.4.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- EXFileSystem (9.3.0):
|
- EXFileSystem (9.3.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- UMFileSystemInterface
|
- UMFileSystemInterface
|
||||||
- EXFirebaseAnalytics (2.6.0):
|
- EXFirebaseAnalytics (3.0.0):
|
||||||
- EXFirebaseCore
|
- EXFirebaseCore
|
||||||
- Firebase/Core (= 6.14.0)
|
- Firebase/Core (= 6.14.0)
|
||||||
- UMCore
|
- UMCore
|
||||||
- EXFirebaseCore (1.2.0):
|
- EXFirebaseCore (2.0.0):
|
||||||
- Firebase/Core (= 6.14.0)
|
- Firebase/Core (= 6.14.0)
|
||||||
- UMCore
|
- UMCore
|
||||||
- EXFont (8.4.0):
|
- EXFont (8.4.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- UMFontInterface
|
- UMFontInterface
|
||||||
- EXHaptics (8.4.0):
|
- EXHaptics (9.0.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- EXImageLoader (1.3.0):
|
- EXImageLoader (1.3.0):
|
||||||
- React-Core
|
- React-Core
|
||||||
- UMCore
|
- UMCore
|
||||||
- UMImageLoaderInterface
|
- UMImageLoaderInterface
|
||||||
- EXImagePicker (9.2.1):
|
- EXImagePicker (10.0.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- UMFileSystemInterface
|
- UMFileSystemInterface
|
||||||
- UMPermissionsInterface
|
- UMPermissionsInterface
|
||||||
@ -43,48 +43,48 @@ PODS:
|
|||||||
- UMCore
|
- UMCore
|
||||||
- EXLinearGradient (8.4.0):
|
- EXLinearGradient (8.4.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- EXLocalization (9.1.0):
|
- EXLocalization (10.0.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- EXLocation (10.0.0):
|
- EXLocation (10.0.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- UMPermissionsInterface
|
- UMPermissionsInterface
|
||||||
- UMTaskManagerInterface
|
- UMTaskManagerInterface
|
||||||
- EXNotifications (0.8.2):
|
- EXNotifications (0.9.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- UMPermissionsInterface
|
- UMPermissionsInterface
|
||||||
- EXPermissions (10.0.0):
|
- EXPermissions (11.0.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- UMPermissionsInterface
|
- UMPermissionsInterface
|
||||||
- EXRandom (10.0.0):
|
- EXRandom (11.0.0):
|
||||||
- React-Core
|
- React-Core
|
||||||
- EXScreenCapture (3.0.0):
|
- EXScreenCapture (3.0.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- EXSecureStore (9.3.0):
|
- EXSecureStore (9.3.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- EXSplashScreen (0.8.1):
|
- EXSplashScreen (0.9.0):
|
||||||
- React-Core
|
- React-Core
|
||||||
- UMCore
|
- UMCore
|
||||||
- EXSQLite (8.5.0):
|
- EXSQLite (8.5.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- UMFileSystemInterface
|
- UMFileSystemInterface
|
||||||
- EXStoreReview (2.3.0):
|
- EXStoreReview (3.0.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- EXUpdates (0.3.5):
|
- EXUpdates (0.3.5):
|
||||||
- React
|
- React
|
||||||
- UMCore
|
- UMCore
|
||||||
- EXVideoThumbnails (4.4.0):
|
- EXVideoThumbnails (5.0.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- UMFileSystemInterface
|
- UMFileSystemInterface
|
||||||
- EXWebBrowser (8.6.0):
|
- EXWebBrowser (9.0.0):
|
||||||
- UMCore
|
- UMCore
|
||||||
- FBLazyVector (0.63.4)
|
- FBLazyVector (0.64.0)
|
||||||
- FBReactNativeSpec (0.63.4):
|
- FBReactNativeSpec (0.64.0):
|
||||||
- Folly (= 2020.01.13.00)
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- RCTRequired (= 0.63.4)
|
- RCTRequired (= 0.64.0)
|
||||||
- RCTTypeSafety (= 0.63.4)
|
- RCTTypeSafety (= 0.64.0)
|
||||||
- React-Core (= 0.63.4)
|
- React-Core (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
- ReactCommon/turbomodule/core (= 0.64.0)
|
||||||
- Firebase/Core (6.14.0):
|
- Firebase/Core (6.14.0):
|
||||||
- Firebase/CoreOnly
|
- Firebase/CoreOnly
|
||||||
- FirebaseAnalytics (= 6.1.7)
|
- FirebaseAnalytics (= 6.1.7)
|
||||||
@ -115,15 +115,6 @@ PODS:
|
|||||||
- FirebaseCore (~> 6.5)
|
- FirebaseCore (~> 6.5)
|
||||||
- GoogleUtilities/Environment (~> 6.4)
|
- GoogleUtilities/Environment (~> 6.4)
|
||||||
- GoogleUtilities/UserDefaults (~> 6.4)
|
- GoogleUtilities/UserDefaults (~> 6.4)
|
||||||
- Folly (2020.01.13.00):
|
|
||||||
- boost-for-react-native
|
|
||||||
- DoubleConversion
|
|
||||||
- Folly/Default (= 2020.01.13.00)
|
|
||||||
- glog
|
|
||||||
- Folly/Default (2020.01.13.00):
|
|
||||||
- boost-for-react-native
|
|
||||||
- DoubleConversion
|
|
||||||
- glog
|
|
||||||
- glog (0.3.5)
|
- glog (0.3.5)
|
||||||
- GoogleAppMeasurement (6.1.7):
|
- GoogleAppMeasurement (6.1.7):
|
||||||
- GoogleUtilities/AppDelegateSwizzler (~> 6.0)
|
- GoogleUtilities/AppDelegateSwizzler (~> 6.0)
|
||||||
@ -154,6 +145,8 @@ PODS:
|
|||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
- GoogleUtilities/UserDefaults (6.7.2):
|
- GoogleUtilities/UserDefaults (6.7.2):
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
|
- hermes-engine (0.7.2)
|
||||||
|
- libevent (2.1.12)
|
||||||
- libwebp (1.1.0):
|
- libwebp (1.1.0):
|
||||||
- libwebp/demux (= 1.1.0)
|
- libwebp/demux (= 1.1.0)
|
||||||
- libwebp/mux (= 1.1.0)
|
- libwebp/mux (= 1.1.0)
|
||||||
@ -169,247 +162,293 @@ PODS:
|
|||||||
- nanopb/decode (0.3.9011)
|
- nanopb/decode (0.3.9011)
|
||||||
- nanopb/encode (0.3.9011)
|
- nanopb/encode (0.3.9011)
|
||||||
- PromisesObjC (1.2.12)
|
- PromisesObjC (1.2.12)
|
||||||
- RCTRequired (0.63.4)
|
- RCT-Folly (2020.01.13.00):
|
||||||
- RCTTypeSafety (0.63.4):
|
- boost-for-react-native
|
||||||
- FBLazyVector (= 0.63.4)
|
- DoubleConversion
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- RCTRequired (= 0.63.4)
|
|
||||||
- React-Core (= 0.63.4)
|
|
||||||
- React (0.63.4):
|
|
||||||
- React-Core (= 0.63.4)
|
|
||||||
- React-Core/DevSupport (= 0.63.4)
|
|
||||||
- React-Core/RCTWebSocket (= 0.63.4)
|
|
||||||
- React-RCTActionSheet (= 0.63.4)
|
|
||||||
- React-RCTAnimation (= 0.63.4)
|
|
||||||
- React-RCTBlob (= 0.63.4)
|
|
||||||
- React-RCTImage (= 0.63.4)
|
|
||||||
- React-RCTLinking (= 0.63.4)
|
|
||||||
- React-RCTNetwork (= 0.63.4)
|
|
||||||
- React-RCTSettings (= 0.63.4)
|
|
||||||
- React-RCTText (= 0.63.4)
|
|
||||||
- React-RCTVibration (= 0.63.4)
|
|
||||||
- React-callinvoker (0.63.4)
|
|
||||||
- React-Core (0.63.4):
|
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
- React-Core/Default (= 0.63.4)
|
- RCT-Folly/Default (= 2020.01.13.00)
|
||||||
- React-cxxreact (= 0.63.4)
|
- RCT-Folly/Default (2020.01.13.00):
|
||||||
- React-jsi (= 0.63.4)
|
- boost-for-react-native
|
||||||
- React-jsiexecutor (= 0.63.4)
|
- DoubleConversion
|
||||||
|
- glog
|
||||||
|
- RCT-Folly/Futures (2020.01.13.00):
|
||||||
|
- boost-for-react-native
|
||||||
|
- DoubleConversion
|
||||||
|
- glog
|
||||||
|
- libevent
|
||||||
|
- RCTRequired (0.64.0)
|
||||||
|
- RCTTypeSafety (0.64.0):
|
||||||
|
- FBLazyVector (= 0.64.0)
|
||||||
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
|
- RCTRequired (= 0.64.0)
|
||||||
|
- React-Core (= 0.64.0)
|
||||||
|
- React (0.64.0):
|
||||||
|
- React-Core (= 0.64.0)
|
||||||
|
- React-Core/DevSupport (= 0.64.0)
|
||||||
|
- React-Core/RCTWebSocket (= 0.64.0)
|
||||||
|
- React-RCTActionSheet (= 0.64.0)
|
||||||
|
- React-RCTAnimation (= 0.64.0)
|
||||||
|
- React-RCTBlob (= 0.64.0)
|
||||||
|
- React-RCTImage (= 0.64.0)
|
||||||
|
- React-RCTLinking (= 0.64.0)
|
||||||
|
- React-RCTNetwork (= 0.64.0)
|
||||||
|
- React-RCTSettings (= 0.64.0)
|
||||||
|
- React-RCTText (= 0.64.0)
|
||||||
|
- React-RCTVibration (= 0.64.0)
|
||||||
|
- React-callinvoker (0.64.0)
|
||||||
|
- React-Core (0.64.0):
|
||||||
|
- glog
|
||||||
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
|
- React-Core/Default (= 0.64.0)
|
||||||
|
- React-cxxreact (= 0.64.0)
|
||||||
|
- React-jsi (= 0.64.0)
|
||||||
|
- React-jsiexecutor (= 0.64.0)
|
||||||
|
- React-perflogger (= 0.64.0)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/CoreModulesHeaders (0.63.4):
|
- React-Core/CoreModulesHeaders (0.64.0):
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.63.4)
|
- React-cxxreact (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-jsiexecutor (= 0.63.4)
|
- React-jsiexecutor (= 0.64.0)
|
||||||
|
- React-perflogger (= 0.64.0)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/Default (0.63.4):
|
- React-Core/Default (0.64.0):
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
- React-cxxreact (= 0.63.4)
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- React-jsi (= 0.63.4)
|
- React-cxxreact (= 0.64.0)
|
||||||
- React-jsiexecutor (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
|
- React-jsiexecutor (= 0.64.0)
|
||||||
|
- React-perflogger (= 0.64.0)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/DevSupport (0.63.4):
|
- React-Core/DevSupport (0.64.0):
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
- React-Core/Default (= 0.63.4)
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- React-Core/RCTWebSocket (= 0.63.4)
|
- React-Core/Default (= 0.64.0)
|
||||||
- React-cxxreact (= 0.63.4)
|
- React-Core/RCTWebSocket (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- React-cxxreact (= 0.64.0)
|
||||||
- React-jsiexecutor (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-jsinspector (= 0.63.4)
|
- React-jsiexecutor (= 0.64.0)
|
||||||
|
- React-jsinspector (= 0.64.0)
|
||||||
|
- React-perflogger (= 0.64.0)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTActionSheetHeaders (0.63.4):
|
- React-Core/Hermes (0.64.0):
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
|
- hermes-engine
|
||||||
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
|
- RCT-Folly/Futures
|
||||||
|
- React-cxxreact (= 0.64.0)
|
||||||
|
- React-jsi (= 0.64.0)
|
||||||
|
- React-jsiexecutor (= 0.64.0)
|
||||||
|
- React-perflogger (= 0.64.0)
|
||||||
|
- Yoga
|
||||||
|
- React-Core/RCTActionSheetHeaders (0.64.0):
|
||||||
|
- glog
|
||||||
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.63.4)
|
- React-cxxreact (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-jsiexecutor (= 0.63.4)
|
- React-jsiexecutor (= 0.64.0)
|
||||||
|
- React-perflogger (= 0.64.0)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTAnimationHeaders (0.63.4):
|
- React-Core/RCTAnimationHeaders (0.64.0):
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.63.4)
|
- React-cxxreact (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-jsiexecutor (= 0.63.4)
|
- React-jsiexecutor (= 0.64.0)
|
||||||
|
- React-perflogger (= 0.64.0)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTBlobHeaders (0.63.4):
|
- React-Core/RCTBlobHeaders (0.64.0):
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.63.4)
|
- React-cxxreact (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-jsiexecutor (= 0.63.4)
|
- React-jsiexecutor (= 0.64.0)
|
||||||
|
- React-perflogger (= 0.64.0)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTImageHeaders (0.63.4):
|
- React-Core/RCTImageHeaders (0.64.0):
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.63.4)
|
- React-cxxreact (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-jsiexecutor (= 0.63.4)
|
- React-jsiexecutor (= 0.64.0)
|
||||||
|
- React-perflogger (= 0.64.0)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTLinkingHeaders (0.63.4):
|
- React-Core/RCTLinkingHeaders (0.64.0):
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.63.4)
|
- React-cxxreact (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-jsiexecutor (= 0.63.4)
|
- React-jsiexecutor (= 0.64.0)
|
||||||
|
- React-perflogger (= 0.64.0)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTNetworkHeaders (0.63.4):
|
- React-Core/RCTNetworkHeaders (0.64.0):
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.63.4)
|
- React-cxxreact (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-jsiexecutor (= 0.63.4)
|
- React-jsiexecutor (= 0.64.0)
|
||||||
|
- React-perflogger (= 0.64.0)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTSettingsHeaders (0.63.4):
|
- React-Core/RCTSettingsHeaders (0.64.0):
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.63.4)
|
- React-cxxreact (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-jsiexecutor (= 0.63.4)
|
- React-jsiexecutor (= 0.64.0)
|
||||||
|
- React-perflogger (= 0.64.0)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTTextHeaders (0.63.4):
|
- React-Core/RCTTextHeaders (0.64.0):
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.63.4)
|
- React-cxxreact (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-jsiexecutor (= 0.63.4)
|
- React-jsiexecutor (= 0.64.0)
|
||||||
|
- React-perflogger (= 0.64.0)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTVibrationHeaders (0.63.4):
|
- React-Core/RCTVibrationHeaders (0.64.0):
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.63.4)
|
- React-cxxreact (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-jsiexecutor (= 0.63.4)
|
- React-jsiexecutor (= 0.64.0)
|
||||||
|
- React-perflogger (= 0.64.0)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTWebSocket (0.63.4):
|
- React-Core/RCTWebSocket (0.64.0):
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
- React-Core/Default (= 0.63.4)
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- React-cxxreact (= 0.63.4)
|
- React-Core/Default (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- React-cxxreact (= 0.64.0)
|
||||||
- React-jsiexecutor (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
|
- React-jsiexecutor (= 0.64.0)
|
||||||
|
- React-perflogger (= 0.64.0)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-CoreModules (0.63.4):
|
- React-CoreModules (0.64.0):
|
||||||
- FBReactNativeSpec (= 0.63.4)
|
- FBReactNativeSpec (= 0.64.0)
|
||||||
- Folly (= 2020.01.13.00)
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- RCTTypeSafety (= 0.63.4)
|
- RCTTypeSafety (= 0.64.0)
|
||||||
- React-Core/CoreModulesHeaders (= 0.63.4)
|
- React-Core/CoreModulesHeaders (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-RCTImage (= 0.63.4)
|
- React-RCTImage (= 0.64.0)
|
||||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
- ReactCommon/turbomodule/core (= 0.64.0)
|
||||||
- React-cxxreact (0.63.4):
|
- React-cxxreact (0.64.0):
|
||||||
- boost-for-react-native (= 1.63.0)
|
- boost-for-react-native (= 1.63.0)
|
||||||
- DoubleConversion
|
- DoubleConversion
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
- React-callinvoker (= 0.63.4)
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- React-jsinspector (= 0.63.4)
|
- React-callinvoker (= 0.64.0)
|
||||||
- React-jsi (0.63.4):
|
- React-jsi (= 0.64.0)
|
||||||
|
- React-jsinspector (= 0.64.0)
|
||||||
|
- React-perflogger (= 0.64.0)
|
||||||
|
- React-runtimeexecutor (= 0.64.0)
|
||||||
|
- React-jsi (0.64.0):
|
||||||
- boost-for-react-native (= 1.63.0)
|
- boost-for-react-native (= 1.63.0)
|
||||||
- DoubleConversion
|
- DoubleConversion
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
- React-jsi/Default (= 0.63.4)
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- React-jsi/Default (0.63.4):
|
- React-jsi/Default (= 0.64.0)
|
||||||
|
- React-jsi/Default (0.64.0):
|
||||||
- boost-for-react-native (= 1.63.0)
|
- boost-for-react-native (= 1.63.0)
|
||||||
- DoubleConversion
|
- DoubleConversion
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
- React-jsiexecutor (0.63.4):
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
|
- React-jsiexecutor (0.64.0):
|
||||||
- DoubleConversion
|
- DoubleConversion
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
- React-cxxreact (= 0.63.4)
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- React-jsi (= 0.63.4)
|
- React-cxxreact (= 0.64.0)
|
||||||
- React-jsinspector (0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
|
- React-perflogger (= 0.64.0)
|
||||||
|
- React-jsinspector (0.64.0)
|
||||||
- react-native-blur (0.8.0):
|
- react-native-blur (0.8.0):
|
||||||
- React
|
- React
|
||||||
- react-native-blurhash (1.0.29):
|
- react-native-blurhash (1.1.4):
|
||||||
- React
|
- React-Core
|
||||||
- react-native-cameraroll (4.0.2):
|
- react-native-cameraroll (4.0.2):
|
||||||
- React-Core
|
- React-Core
|
||||||
- react-native-netinfo (5.9.10):
|
- react-native-netinfo (6.0.0):
|
||||||
- React-Core
|
- React-Core
|
||||||
- react-native-safe-area-context (3.1.9):
|
- react-native-pager-view (5.1.2):
|
||||||
|
- React-Core
|
||||||
|
- react-native-safe-area-context (3.2.0):
|
||||||
- React-Core
|
- React-Core
|
||||||
- react-native-segmented-control (2.2.2):
|
- react-native-segmented-control (2.2.2):
|
||||||
- React-Core
|
- React-Core
|
||||||
- react-native-viewpager (4.2.2):
|
- React-perflogger (0.64.0)
|
||||||
- React-Core
|
- React-RCTActionSheet (0.64.0):
|
||||||
- React-RCTActionSheet (0.63.4):
|
- React-Core/RCTActionSheetHeaders (= 0.64.0)
|
||||||
- React-Core/RCTActionSheetHeaders (= 0.63.4)
|
- React-RCTAnimation (0.64.0):
|
||||||
- React-RCTAnimation (0.63.4):
|
- FBReactNativeSpec (= 0.64.0)
|
||||||
- FBReactNativeSpec (= 0.63.4)
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- Folly (= 2020.01.13.00)
|
- RCTTypeSafety (= 0.64.0)
|
||||||
- RCTTypeSafety (= 0.63.4)
|
- React-Core/RCTAnimationHeaders (= 0.64.0)
|
||||||
- React-Core/RCTAnimationHeaders (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- ReactCommon/turbomodule/core (= 0.64.0)
|
||||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
- React-RCTBlob (0.64.0):
|
||||||
- React-RCTBlob (0.63.4):
|
- FBReactNativeSpec (= 0.64.0)
|
||||||
- FBReactNativeSpec (= 0.63.4)
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- Folly (= 2020.01.13.00)
|
- React-Core/RCTBlobHeaders (= 0.64.0)
|
||||||
- React-Core/RCTBlobHeaders (= 0.63.4)
|
- React-Core/RCTWebSocket (= 0.64.0)
|
||||||
- React-Core/RCTWebSocket (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- React-RCTNetwork (= 0.64.0)
|
||||||
- React-RCTNetwork (= 0.63.4)
|
- ReactCommon/turbomodule/core (= 0.64.0)
|
||||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
- React-RCTImage (0.64.0):
|
||||||
- React-RCTImage (0.63.4):
|
- FBReactNativeSpec (= 0.64.0)
|
||||||
- FBReactNativeSpec (= 0.63.4)
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- Folly (= 2020.01.13.00)
|
- RCTTypeSafety (= 0.64.0)
|
||||||
- RCTTypeSafety (= 0.63.4)
|
- React-Core/RCTImageHeaders (= 0.64.0)
|
||||||
- React-Core/RCTImageHeaders (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- React-RCTNetwork (= 0.64.0)
|
||||||
- React-RCTNetwork (= 0.63.4)
|
- ReactCommon/turbomodule/core (= 0.64.0)
|
||||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
- React-RCTLinking (0.64.0):
|
||||||
- React-RCTLinking (0.63.4):
|
- FBReactNativeSpec (= 0.64.0)
|
||||||
- FBReactNativeSpec (= 0.63.4)
|
- React-Core/RCTLinkingHeaders (= 0.64.0)
|
||||||
- React-Core/RCTLinkingHeaders (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- ReactCommon/turbomodule/core (= 0.64.0)
|
||||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
- React-RCTNetwork (0.64.0):
|
||||||
- React-RCTNetwork (0.63.4):
|
- FBReactNativeSpec (= 0.64.0)
|
||||||
- FBReactNativeSpec (= 0.63.4)
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- Folly (= 2020.01.13.00)
|
- RCTTypeSafety (= 0.64.0)
|
||||||
- RCTTypeSafety (= 0.63.4)
|
- React-Core/RCTNetworkHeaders (= 0.64.0)
|
||||||
- React-Core/RCTNetworkHeaders (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- ReactCommon/turbomodule/core (= 0.64.0)
|
||||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
- React-RCTSettings (0.64.0):
|
||||||
- React-RCTSettings (0.63.4):
|
- FBReactNativeSpec (= 0.64.0)
|
||||||
- FBReactNativeSpec (= 0.63.4)
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- Folly (= 2020.01.13.00)
|
- RCTTypeSafety (= 0.64.0)
|
||||||
- RCTTypeSafety (= 0.63.4)
|
- React-Core/RCTSettingsHeaders (= 0.64.0)
|
||||||
- React-Core/RCTSettingsHeaders (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- ReactCommon/turbomodule/core (= 0.64.0)
|
||||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
- React-RCTText (0.64.0):
|
||||||
- React-RCTText (0.63.4):
|
- React-Core/RCTTextHeaders (= 0.64.0)
|
||||||
- React-Core/RCTTextHeaders (= 0.63.4)
|
- React-RCTVibration (0.64.0):
|
||||||
- React-RCTVibration (0.63.4):
|
- FBReactNativeSpec (= 0.64.0)
|
||||||
- FBReactNativeSpec (= 0.63.4)
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- Folly (= 2020.01.13.00)
|
- React-Core/RCTVibrationHeaders (= 0.64.0)
|
||||||
- React-Core/RCTVibrationHeaders (= 0.63.4)
|
- React-jsi (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- ReactCommon/turbomodule/core (= 0.64.0)
|
||||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
- React-runtimeexecutor (0.64.0):
|
||||||
- ReactCommon/turbomodule/core (0.63.4):
|
- React-jsi (= 0.64.0)
|
||||||
|
- ReactCommon/turbomodule/core (0.64.0):
|
||||||
- DoubleConversion
|
- DoubleConversion
|
||||||
- Folly (= 2020.01.13.00)
|
|
||||||
- glog
|
- glog
|
||||||
- React-callinvoker (= 0.63.4)
|
- RCT-Folly (= 2020.01.13.00)
|
||||||
- React-Core (= 0.63.4)
|
- React-callinvoker (= 0.64.0)
|
||||||
- React-cxxreact (= 0.63.4)
|
- React-Core (= 0.64.0)
|
||||||
- React-jsi (= 0.63.4)
|
- React-cxxreact (= 0.64.0)
|
||||||
- RNCAsyncStorage (1.13.3):
|
- React-jsi (= 0.64.0)
|
||||||
|
- React-perflogger (= 0.64.0)
|
||||||
|
- RNCAsyncStorage (1.14.1):
|
||||||
- React-Core
|
- React-Core
|
||||||
- RNCMaskedView (0.1.10):
|
- RNCMaskedView (0.1.10):
|
||||||
- React
|
- React
|
||||||
@ -417,14 +456,14 @@ PODS:
|
|||||||
- React-Core
|
- React-Core
|
||||||
- SDWebImage (~> 5.8)
|
- SDWebImage (~> 5.8)
|
||||||
- SDWebImageWebPCoder (~> 0.6.1)
|
- SDWebImageWebPCoder (~> 0.6.1)
|
||||||
- RNGestureHandler (1.9.0):
|
- RNGestureHandler (1.10.3):
|
||||||
- React-Core
|
- React-Core
|
||||||
- RNReanimated (2.0.0-rc.2):
|
- RNReanimated (2.0.0):
|
||||||
- DoubleConversion
|
- DoubleConversion
|
||||||
- FBLazyVector
|
- FBLazyVector
|
||||||
- FBReactNativeSpec
|
- FBReactNativeSpec
|
||||||
- Folly
|
|
||||||
- glog
|
- glog
|
||||||
|
- RCT-Folly
|
||||||
- RCTRequired
|
- RCTRequired
|
||||||
- RCTTypeSafety
|
- RCTTypeSafety
|
||||||
- React
|
- React
|
||||||
@ -450,9 +489,9 @@ PODS:
|
|||||||
- Yoga
|
- Yoga
|
||||||
- RNScreens (2.17.1):
|
- RNScreens (2.17.1):
|
||||||
- React-Core
|
- React-Core
|
||||||
- RNSentry (2.1.1):
|
- RNSentry (2.3.0):
|
||||||
- React-Core
|
- React-Core
|
||||||
- Sentry (= 6.0.9)
|
- Sentry (= 6.1.4)
|
||||||
- RNSVG (12.1.0):
|
- RNSVG (12.1.0):
|
||||||
- React
|
- React
|
||||||
- SDWebImage (5.10.3):
|
- SDWebImage (5.10.3):
|
||||||
@ -461,9 +500,9 @@ PODS:
|
|||||||
- SDWebImageWebPCoder (0.6.1):
|
- SDWebImageWebPCoder (0.6.1):
|
||||||
- libwebp (~> 1.0)
|
- libwebp (~> 1.0)
|
||||||
- SDWebImage/Core (~> 5.7)
|
- SDWebImage/Core (~> 5.7)
|
||||||
- Sentry (6.0.9):
|
- Sentry (6.1.4):
|
||||||
- Sentry/Core (= 6.0.9)
|
- Sentry/Core (= 6.1.4)
|
||||||
- Sentry/Core (6.0.9)
|
- Sentry/Core (6.1.4)
|
||||||
- UMAppLoader (1.4.0)
|
- UMAppLoader (1.4.0)
|
||||||
- UMBarCodeScannerInterface (5.4.0)
|
- UMBarCodeScannerInterface (5.4.0)
|
||||||
- UMCameraInterface (5.4.0)
|
- UMCameraInterface (5.4.0)
|
||||||
@ -485,9 +524,9 @@ PODS:
|
|||||||
|
|
||||||
DEPENDENCIES:
|
DEPENDENCIES:
|
||||||
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
|
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
|
||||||
- EXApplication (from `../node_modules/expo-application/ios`)
|
- EXApplication (from `../node_modules/expo-notifications/node_modules/expo-application/ios`)
|
||||||
- EXAV (from `../node_modules/expo-av/ios`)
|
- EXAV (from `../node_modules/expo-av/ios`)
|
||||||
- EXConstants (from `../node_modules/sentry-expo/node_modules/expo-constants/ios`)
|
- EXConstants (from `../node_modules/expo-linking/node_modules/expo-constants/ios`)
|
||||||
- EXCrypto (from `../node_modules/expo-crypto/ios`)
|
- EXCrypto (from `../node_modules/expo-crypto/ios`)
|
||||||
- EXDevice (from `../node_modules/expo-device/ios`)
|
- EXDevice (from `../node_modules/expo-device/ios`)
|
||||||
- EXErrorRecovery (from `../node_modules/expo-error-recovery/ios`)
|
- EXErrorRecovery (from `../node_modules/expo-error-recovery/ios`)
|
||||||
@ -503,7 +542,7 @@ DEPENDENCIES:
|
|||||||
- EXLocalization (from `../node_modules/expo-localization/ios`)
|
- EXLocalization (from `../node_modules/expo-localization/ios`)
|
||||||
- EXLocation (from `../node_modules/expo-location/ios`)
|
- EXLocation (from `../node_modules/expo-location/ios`)
|
||||||
- EXNotifications (from `../node_modules/expo-notifications/ios`)
|
- EXNotifications (from `../node_modules/expo-notifications/ios`)
|
||||||
- EXPermissions (from `../node_modules/expo-permissions/ios`)
|
- EXPermissions (from `../node_modules/expo-image-picker/node_modules/expo-permissions/ios`)
|
||||||
- EXRandom (from `../node_modules/expo-random/ios`)
|
- EXRandom (from `../node_modules/expo-random/ios`)
|
||||||
- EXScreenCapture (from `../node_modules/expo-screen-capture/ios`)
|
- EXScreenCapture (from `../node_modules/expo-screen-capture/ios`)
|
||||||
- EXSecureStore (from `../node_modules/expo-secure-store/ios`)
|
- EXSecureStore (from `../node_modules/expo-secure-store/ios`)
|
||||||
@ -514,15 +553,18 @@ DEPENDENCIES:
|
|||||||
- EXVideoThumbnails (from `../node_modules/expo-video-thumbnails/ios`)
|
- EXVideoThumbnails (from `../node_modules/expo-video-thumbnails/ios`)
|
||||||
- EXWebBrowser (from `../node_modules/expo-web-browser/ios`)
|
- EXWebBrowser (from `../node_modules/expo-web-browser/ios`)
|
||||||
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
|
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
|
||||||
- FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`)
|
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
|
||||||
- Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`)
|
|
||||||
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
|
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
|
||||||
|
- hermes-engine (~> 0.7.2)
|
||||||
|
- libevent (~> 2.1.12)
|
||||||
|
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
|
||||||
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
|
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
|
||||||
- RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
|
- RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
|
||||||
- React (from `../node_modules/react-native/`)
|
- React (from `../node_modules/react-native/`)
|
||||||
- React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
|
- React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
|
||||||
- React-Core (from `../node_modules/react-native/`)
|
- React-Core (from `../node_modules/react-native/`)
|
||||||
- React-Core/DevSupport (from `../node_modules/react-native/`)
|
- React-Core/DevSupport (from `../node_modules/react-native/`)
|
||||||
|
- React-Core/Hermes (from `../node_modules/react-native/`)
|
||||||
- React-Core/RCTWebSocket (from `../node_modules/react-native/`)
|
- React-Core/RCTWebSocket (from `../node_modules/react-native/`)
|
||||||
- React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
|
- React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
|
||||||
- React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
|
- React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
|
||||||
@ -533,9 +575,10 @@ DEPENDENCIES:
|
|||||||
- react-native-blurhash (from `../node_modules/react-native-blurhash`)
|
- react-native-blurhash (from `../node_modules/react-native-blurhash`)
|
||||||
- "react-native-cameraroll (from `../node_modules/@react-native-community/cameraroll`)"
|
- "react-native-cameraroll (from `../node_modules/@react-native-community/cameraroll`)"
|
||||||
- "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)"
|
- "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)"
|
||||||
|
- 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-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-segmented-control (from `../node_modules/@react-native-community/segmented-control`)"
|
||||||
- "react-native-viewpager (from `../node_modules/@react-native-community/viewpager`)"
|
- React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
|
||||||
- React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
|
- React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
|
||||||
- React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
|
- React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
|
||||||
- React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
|
- React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
|
||||||
@ -545,6 +588,7 @@ DEPENDENCIES:
|
|||||||
- React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
|
- React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
|
||||||
- React-RCTText (from `../node_modules/react-native/Libraries/Text`)
|
- React-RCTText (from `../node_modules/react-native/Libraries/Text`)
|
||||||
- React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
|
- React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
|
||||||
|
- React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
|
||||||
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
|
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
|
||||||
- "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)"
|
- "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)"
|
||||||
- "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)"
|
- "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)"
|
||||||
@ -582,6 +626,8 @@ SPEC REPOS:
|
|||||||
- GoogleDataTransport
|
- GoogleDataTransport
|
||||||
- GoogleDataTransportCCTSupport
|
- GoogleDataTransportCCTSupport
|
||||||
- GoogleUtilities
|
- GoogleUtilities
|
||||||
|
- hermes-engine
|
||||||
|
- libevent
|
||||||
- libwebp
|
- libwebp
|
||||||
- nanopb
|
- nanopb
|
||||||
- PromisesObjC
|
- PromisesObjC
|
||||||
@ -593,11 +639,11 @@ EXTERNAL SOURCES:
|
|||||||
DoubleConversion:
|
DoubleConversion:
|
||||||
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
|
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
|
||||||
EXApplication:
|
EXApplication:
|
||||||
:path: "../node_modules/expo-application/ios"
|
:path: "../node_modules/expo-notifications/node_modules/expo-application/ios"
|
||||||
EXAV:
|
EXAV:
|
||||||
:path: "../node_modules/expo-av/ios"
|
:path: "../node_modules/expo-av/ios"
|
||||||
EXConstants:
|
EXConstants:
|
||||||
:path: "../node_modules/sentry-expo/node_modules/expo-constants/ios"
|
:path: "../node_modules/expo-linking/node_modules/expo-constants/ios"
|
||||||
EXCrypto:
|
EXCrypto:
|
||||||
:path: "../node_modules/expo-crypto/ios"
|
:path: "../node_modules/expo-crypto/ios"
|
||||||
EXDevice:
|
EXDevice:
|
||||||
@ -629,7 +675,7 @@ EXTERNAL SOURCES:
|
|||||||
EXNotifications:
|
EXNotifications:
|
||||||
:path: "../node_modules/expo-notifications/ios"
|
:path: "../node_modules/expo-notifications/ios"
|
||||||
EXPermissions:
|
EXPermissions:
|
||||||
:path: "../node_modules/expo-permissions/ios"
|
:path: "../node_modules/expo-image-picker/node_modules/expo-permissions/ios"
|
||||||
EXRandom:
|
EXRandom:
|
||||||
:path: "../node_modules/expo-random/ios"
|
:path: "../node_modules/expo-random/ios"
|
||||||
EXScreenCapture:
|
EXScreenCapture:
|
||||||
@ -651,11 +697,11 @@ EXTERNAL SOURCES:
|
|||||||
FBLazyVector:
|
FBLazyVector:
|
||||||
:path: "../node_modules/react-native/Libraries/FBLazyVector"
|
:path: "../node_modules/react-native/Libraries/FBLazyVector"
|
||||||
FBReactNativeSpec:
|
FBReactNativeSpec:
|
||||||
:path: "../node_modules/react-native/Libraries/FBReactNativeSpec"
|
:path: "../node_modules/react-native/React/FBReactNativeSpec"
|
||||||
Folly:
|
|
||||||
:podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec"
|
|
||||||
glog:
|
glog:
|
||||||
:podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
|
:podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
|
||||||
|
RCT-Folly:
|
||||||
|
:podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
|
||||||
RCTRequired:
|
RCTRequired:
|
||||||
:path: "../node_modules/react-native/Libraries/RCTRequired"
|
:path: "../node_modules/react-native/Libraries/RCTRequired"
|
||||||
RCTTypeSafety:
|
RCTTypeSafety:
|
||||||
@ -684,12 +730,14 @@ EXTERNAL SOURCES:
|
|||||||
:path: "../node_modules/@react-native-community/cameraroll"
|
:path: "../node_modules/@react-native-community/cameraroll"
|
||||||
react-native-netinfo:
|
react-native-netinfo:
|
||||||
:path: "../node_modules/@react-native-community/netinfo"
|
:path: "../node_modules/@react-native-community/netinfo"
|
||||||
|
react-native-pager-view:
|
||||||
|
:path: "../node_modules/react-native-pager-view"
|
||||||
react-native-safe-area-context:
|
react-native-safe-area-context:
|
||||||
:path: "../node_modules/react-native-safe-area-context"
|
:path: "../node_modules/react-native-safe-area-context"
|
||||||
react-native-segmented-control:
|
react-native-segmented-control:
|
||||||
:path: "../node_modules/@react-native-community/segmented-control"
|
:path: "../node_modules/@react-native-community/segmented-control"
|
||||||
react-native-viewpager:
|
React-perflogger:
|
||||||
:path: "../node_modules/@react-native-community/viewpager"
|
:path: "../node_modules/react-native/ReactCommon/reactperflogger"
|
||||||
React-RCTActionSheet:
|
React-RCTActionSheet:
|
||||||
:path: "../node_modules/react-native/Libraries/ActionSheetIOS"
|
:path: "../node_modules/react-native/Libraries/ActionSheetIOS"
|
||||||
React-RCTAnimation:
|
React-RCTAnimation:
|
||||||
@ -708,6 +756,8 @@ EXTERNAL SOURCES:
|
|||||||
:path: "../node_modules/react-native/Libraries/Text"
|
:path: "../node_modules/react-native/Libraries/Text"
|
||||||
React-RCTVibration:
|
React-RCTVibration:
|
||||||
:path: "../node_modules/react-native/Libraries/Vibration"
|
:path: "../node_modules/react-native/Libraries/Vibration"
|
||||||
|
React-runtimeexecutor:
|
||||||
|
:path: "../node_modules/react-native/ReactCommon/runtimeexecutor"
|
||||||
ReactCommon:
|
ReactCommon:
|
||||||
:path: "../node_modules/react-native/ReactCommon"
|
:path: "../node_modules/react-native/ReactCommon"
|
||||||
RNCAsyncStorage:
|
RNCAsyncStorage:
|
||||||
@ -757,90 +807,94 @@ EXTERNAL SOURCES:
|
|||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
|
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
|
||||||
DoubleConversion: cde416483dac037923206447da6e1454df403714
|
DoubleConversion: cf9b38bf0b2d048436d9a82ad2abe1404f11e7de
|
||||||
EXApplication: e3c201e7b913d081bbd37bd3c5d0e2cdc21733b4
|
EXApplication: e3a06b6d81f94e526f029a57b2121d6cde044004
|
||||||
EXAV: e32adf44c10a82f723172d5b01d5693890888dd6
|
EXAV: 398170ec4fb575be375f76b65a7218e097f89b30
|
||||||
EXConstants: d9483a8fe0a963dd7ee3389f371303773e6ecd37
|
EXConstants: d9483a8fe0a963dd7ee3389f371303773e6ecd37
|
||||||
EXCrypto: 81948191c3d2caf18fb32f18ee88d87d42532d62
|
EXCrypto: 77fb158996b02292902cc6c4fef59b21c663c673
|
||||||
EXDevice: 101eddd9bc28faba8246ba0c499a65a4821a6b5e
|
EXDevice: 01f54314f618aa4098893f66cd8f2a8a411f33ee
|
||||||
EXErrorRecovery: b46af4b91e2b4ec598ab1fa51d2cf088aaf5511f
|
EXErrorRecovery: b46af4b91e2b4ec598ab1fa51d2cf088aaf5511f
|
||||||
EXFileSystem: 0e4974ab77bff04cda68d2886d070cbe64b93a6b
|
EXFileSystem: 0e4974ab77bff04cda68d2886d070cbe64b93a6b
|
||||||
EXFirebaseAnalytics: d72f553dc0c0a8ee451714499fac21883c3f7369
|
EXFirebaseAnalytics: db3028d0b0b87e4f2a6605947f943417befcad72
|
||||||
EXFirebaseCore: d5befdb22015f9b71168ed89dda0b50dbb07fed1
|
EXFirebaseCore: 2600f770440abaf0ef7b4a6df69f9e6cc2ea76b6
|
||||||
EXFont: 30c64ed8735a180e3f20046e4fdac4ea074d71d3
|
EXFont: 30c64ed8735a180e3f20046e4fdac4ea074d71d3
|
||||||
EXHaptics: 6d2e09387f0eb4d3c8dc97ae905cbea8afe33651
|
EXHaptics: 685bcf63881af13bbd657ad148292db1f7370268
|
||||||
EXImageLoader: f96ec9992733a4224418bbd9382e5485c8948944
|
EXImageLoader: f96ec9992733a4224418bbd9382e5485c8948944
|
||||||
EXImagePicker: 82fb929fb57b38de8d0a2d7fc3ca49726b9b8f78
|
EXImagePicker: 50e8688af1278af72d3235753a825a49465b4a84
|
||||||
EXKeepAwake: 615c5a6fca5c2afedf611bb6f7f2ca323246de94
|
EXKeepAwake: 615c5a6fca5c2afedf611bb6f7f2ca323246de94
|
||||||
EXLinearGradient: c803fbd1aa974be038177b1e45524bc35759fe9c
|
EXLinearGradient: c803fbd1aa974be038177b1e45524bc35759fe9c
|
||||||
EXLocalization: 8b9463c81843da214476b541a27811dd885c9a76
|
EXLocalization: 0470b3cb25dac6cdbe6f12ca15408134dba03c91
|
||||||
EXLocation: d55e2a37f61bcfb4eba9c813b3f4621d896c4c00
|
EXLocation: d55e2a37f61bcfb4eba9c813b3f4621d896c4c00
|
||||||
EXNotifications: fba3319b1555961b99ddd185021b4c7ff978d5dd
|
EXNotifications: 3a88b7b898fa842cae3c5a895a255fab554bc0c8
|
||||||
EXPermissions: 17d4846ad1880f6891c74ae58ca1acb43e47ed47
|
EXPermissions: 015f1129f80266f6c38e3691102546232b641614
|
||||||
EXRandom: d7e0f3dd64810aabd27d59f8ecffee359177e2c3
|
EXRandom: 4f71ea72eaeea674c4597e536e3014b4387af21a
|
||||||
EXScreenCapture: 5b8447139e56e2b922e93ccdc7c773c103fb44fd
|
EXScreenCapture: 5b8447139e56e2b922e93ccdc7c773c103fb44fd
|
||||||
EXSecureStore: 1b571851e6068b30b8ec097be848a04603c03bae
|
EXSecureStore: 1b571851e6068b30b8ec097be848a04603c03bae
|
||||||
EXSplashScreen: 8c7c1112ce7611a853486af4737fe2298eda7657
|
EXSplashScreen: ab5984afcca91e0af6b3138f01a8c47dc4955c51
|
||||||
EXSQLite: bda6a286dded0637bb312ee781239dcca163ff4b
|
EXSQLite: bda6a286dded0637bb312ee781239dcca163ff4b
|
||||||
EXStoreReview: 9b161bd86c172a9755c787982bfc32c7193cf803
|
EXStoreReview: b552c0d512e1b5c2c7371041a033a2827dc01d46
|
||||||
EXUpdates: 74b39409f68eca207075d87b0077bdf37865a8bf
|
EXUpdates: 74b39409f68eca207075d87b0077bdf37865a8bf
|
||||||
EXVideoThumbnails: 8ff241784f1d89fdd451bcdb7f733d06361d44a8
|
EXVideoThumbnails: 0be939563a5d46ce0d1fa9baea7d454b99475763
|
||||||
EXWebBrowser: cb4811e6c883876d2e2ba1c10527de96963d410a
|
EXWebBrowser: 2e708935a91ae0f51f5f8ffc85ba673950f34833
|
||||||
FBLazyVector: 3bb422f41b18121b71783a905c10e58606f7dc3e
|
FBLazyVector: 49cbe4b43e445b06bf29199b6ad2057649e4c8f5
|
||||||
FBReactNativeSpec: f2c97f2529dd79c083355182cc158c9f98f4bd6e
|
FBReactNativeSpec: 9602ea8381acd3aad740e6464663687fad779f80
|
||||||
Firebase: 0219bb4782eb1406f1b9b0628a2e625484ce910d
|
Firebase: 0219bb4782eb1406f1b9b0628a2e625484ce910d
|
||||||
FirebaseAnalytics: f68b9f3f1241385129ae0a83b63627fc420c05e5
|
FirebaseAnalytics: f68b9f3f1241385129ae0a83b63627fc420c05e5
|
||||||
FirebaseCore: 632e05cc5e1199d9147122c16d92305eb04c34bd
|
FirebaseCore: 632e05cc5e1199d9147122c16d92305eb04c34bd
|
||||||
FirebaseCoreDiagnostics: b59c024493a409f8aecba02c99928d0d8431d159
|
FirebaseCoreDiagnostics: b59c024493a409f8aecba02c99928d0d8431d159
|
||||||
FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850
|
FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850
|
||||||
FirebaseInstanceID: ce993a3c3670a8f5d47ce371ac5d143c560608c5
|
FirebaseInstanceID: ce993a3c3670a8f5d47ce371ac5d143c560608c5
|
||||||
Folly: b73c3869541e86821df3c387eb0af5f65addfab4
|
glog: 73c2498ac6884b13ede40eda8228cb1eee9d9d62
|
||||||
glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3
|
|
||||||
GoogleAppMeasurement: db118eb61a97dd8c4f7014e368d3c335cbbcf80a
|
GoogleAppMeasurement: db118eb61a97dd8c4f7014e368d3c335cbbcf80a
|
||||||
GoogleDataTransport: 9a8a16f79feffc7f42096743de2a7c4815e84020
|
GoogleDataTransport: 9a8a16f79feffc7f42096743de2a7c4815e84020
|
||||||
GoogleDataTransportCCTSupport: 0f39025e8cf51f168711bd3fb773938d7e62ddb5
|
GoogleDataTransportCCTSupport: 0f39025e8cf51f168711bd3fb773938d7e62ddb5
|
||||||
GoogleUtilities: 7f2f5a07f888cdb145101d6042bc4422f57e70b3
|
GoogleUtilities: 7f2f5a07f888cdb145101d6042bc4422f57e70b3
|
||||||
|
hermes-engine: 7d97ba46a1e29bacf3e3c61ecb2804a5ddd02d4f
|
||||||
|
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
|
||||||
libwebp: 946cb3063cea9236285f7e9a8505d806d30e07f3
|
libwebp: 946cb3063cea9236285f7e9a8505d806d30e07f3
|
||||||
nanopb: 18003b5e52dab79db540fe93fe9579f399bd1ccd
|
nanopb: 18003b5e52dab79db540fe93fe9579f399bd1ccd
|
||||||
PromisesObjC: 3113f7f76903778cf4a0586bd1ab89329a0b7b97
|
PromisesObjC: 3113f7f76903778cf4a0586bd1ab89329a0b7b97
|
||||||
RCTRequired: 082f10cd3f905d6c124597fd1c14f6f2655ff65e
|
RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c
|
||||||
RCTTypeSafety: 8c9c544ecbf20337d069e4ae7fd9a377aadf504b
|
RCTRequired: 2f8cb5b7533219bf4218a045f92768129cf7050a
|
||||||
React: b0a957a2c44da4113b0c4c9853d8387f8e64e615
|
RCTTypeSafety: 512728b73549e72ad7330b92f3d42936f2a4de5b
|
||||||
React-callinvoker: c3f44dd3cb195b6aa46621fff95ded79d59043fe
|
React: 98eac01574128a790f0bbbafe2d1a8607291ac24
|
||||||
React-Core: d3b2a1ac9a2c13c3bcde712d9281fc1c8a5b315b
|
React-callinvoker: def3f7fae16192df68d9b69fd4bbb59092ee36bc
|
||||||
React-CoreModules: 0581ff36cb797da0943d424f69e7098e43e9be60
|
React-Core: 70a52aa5dbe9b83befae82038451a7df9fd54c5a
|
||||||
React-cxxreact: c1480d4fda5720086c90df537ee7d285d4c57ac3
|
React-CoreModules: 052edef46117862e2570eb3a0f06d81c61d2c4b8
|
||||||
React-jsi: a0418934cf48f25b485631deb27c64dc40fb4c31
|
React-cxxreact: c1dc71b30653cfb4770efdafcbdc0ad6d388baab
|
||||||
React-jsiexecutor: 93bd528844ad21dc07aab1c67cb10abae6df6949
|
React-jsi: 74341196d9547cbcbcfa4b3bbbf03af56431d5a1
|
||||||
React-jsinspector: 58aef7155bc9a9683f5b60b35eccea8722a4f53a
|
React-jsiexecutor: 06a9c77b56902ae7ffcdd7a4905f664adc5d237b
|
||||||
|
React-jsinspector: 0ae35a37b20d5e031eb020a69cc5afdbd6406301
|
||||||
react-native-blur: cad4d93b364f91e7b7931b3fa935455487e5c33c
|
react-native-blur: cad4d93b364f91e7b7931b3fa935455487e5c33c
|
||||||
react-native-blurhash: 90886ae897cafbbdf2773cb3654656bcb34e8f43
|
react-native-blurhash: ec98d751a9cb9075cef0b9e3188244c517d6ab22
|
||||||
react-native-cameraroll: 1965db75c851b15e77a22ca0ac78e32af6b571ae
|
react-native-cameraroll: 1965db75c851b15e77a22ca0ac78e32af6b571ae
|
||||||
react-native-netinfo: 30fb89fa913c342be82a887b56e96be6d71201dd
|
react-native-netinfo: e849fc21ca2f4128a5726c801a82fc6f4a6db50d
|
||||||
react-native-safe-area-context: b6e0e284002381d2ff29fa4fff42b4d8282e3c94
|
react-native-pager-view: c1ec84a464024641ccb1102e9ec12be020d3d74c
|
||||||
|
react-native-safe-area-context: f0906bf8bc9835ac9a9d3f97e8bde2a997d8da79
|
||||||
react-native-segmented-control: 65df6cd0619b780b3843d574a72d4c7cec396097
|
react-native-segmented-control: 65df6cd0619b780b3843d574a72d4c7cec396097
|
||||||
react-native-viewpager: ea945e2881ce9a4a8bcdc84de4ec65ff23c90f6e
|
React-perflogger: 9c547d8f06b9bf00cb447f2b75e8d7f19b7e02af
|
||||||
React-RCTActionSheet: 89a0ca9f4a06c1f93c26067af074ccdce0f40336
|
React-RCTActionSheet: 3080b6e12e0e1a5b313c8c0050699b5c794a1b11
|
||||||
React-RCTAnimation: 1bde3ecc0c104c55df246eda516e0deb03c4e49b
|
React-RCTAnimation: 3f96f21a497ae7dabf4d2f150ee43f906aaf516f
|
||||||
React-RCTBlob: a97d378b527740cc667e03ebfa183a75231ab0f0
|
React-RCTBlob: 283b8e5025e7f954176bc48164f846909002f3ed
|
||||||
React-RCTImage: c1b1f2d3f43a4a528c8946d6092384b5c880d2f0
|
React-RCTImage: 5088a484faac78f2d877e1b79125d3bb1ea94a16
|
||||||
React-RCTLinking: 35ae4ab9dc0410d1fcbdce4d7623194a27214fb2
|
React-RCTLinking: 5e8fbb3e9a8bc2e4e3eb15b1eb8bda5fcac27b8c
|
||||||
React-RCTNetwork: 29ec2696f8d8cfff7331fac83d3e893c95ef43ae
|
React-RCTNetwork: 38ec277217b1e841d5e6a1fa78da65b9212ccb28
|
||||||
React-RCTSettings: 60f0691bba2074ef394f95d4c2265ec284e0a46a
|
React-RCTSettings: 242d6e692108c3de4f3bb74b7586a8799e9ab070
|
||||||
React-RCTText: 5c51df3f08cb9dedc6e790161195d12bac06101c
|
React-RCTText: 8746736ac8eb5a4a74719aa695b7a236a93a83d2
|
||||||
React-RCTVibration: ae4f914cfe8de7d4de95ae1ea6cc8f6315d73d9d
|
React-RCTVibration: 0fd6b21751a33cb72fce1a4a33ab9678416d307a
|
||||||
ReactCommon: 73d79c7039f473b76db6ff7c6b159c478acbbb3b
|
React-runtimeexecutor: cad74a1eaa53ee6e7a3620231939d8fe2c6afcf0
|
||||||
RNCAsyncStorage: da95b83e241a7f5efe3da1a949b3ec3175380be0
|
ReactCommon: cfe2b7fd20e0dbd2d1185cd7d8f99633fbc5ff05
|
||||||
|
RNCAsyncStorage: fe58eec522885718d6b297b7b658bf87d7ca557b
|
||||||
RNCMaskedView: 5a8ec07677aa885546a0d98da336457e2bea557f
|
RNCMaskedView: 5a8ec07677aa885546a0d98da336457e2bea557f
|
||||||
RNFastImage: d4870d58f5936111c56218dbd7fcfc18e65b58ff
|
RNFastImage: d4870d58f5936111c56218dbd7fcfc18e65b58ff
|
||||||
RNGestureHandler: 9b7e605a741412e20e13c512738a31bd1611759b
|
RNGestureHandler: a479ebd5ed4221a810967000735517df0d2db211
|
||||||
RNReanimated: e8a1520b15df106c96214161078c69e4a23b8b29
|
RNReanimated: 64f6c5789f82818c07ba3c71864b73619cb23c76
|
||||||
RNScreens: b6c9607e6fe47c1b6e2f1910d2acd46dd7ecea3a
|
RNScreens: b6c9607e6fe47c1b6e2f1910d2acd46dd7ecea3a
|
||||||
RNSentry: 6b46b6fc1d715a378fbaa5d7d43bc9ce99b500e5
|
RNSentry: 4f6907f9a4a41058988ebaa17666e9a402b50ff2
|
||||||
RNSVG: ce9d996113475209013317e48b05c21ee988d42e
|
RNSVG: ce9d996113475209013317e48b05c21ee988d42e
|
||||||
SDWebImage: e378178472b735e84b007bfb55514c97948a0598
|
SDWebImage: e378178472b735e84b007bfb55514c97948a0598
|
||||||
SDWebImageWebPCoder: d0dac55073088d24b2ac1b191a71a8f8d0adac21
|
SDWebImageWebPCoder: d0dac55073088d24b2ac1b191a71a8f8d0adac21
|
||||||
Sentry: 388c9dc093b2fd3a264466a5c5b21e25959610a9
|
Sentry: 9d055e2de30a77685e86b219acf02e59b82091fc
|
||||||
UMAppLoader: 92d044af52626af3d81a69796ad666fc7a9a7d78
|
UMAppLoader: 92d044af52626af3d81a69796ad666fc7a9a7d78
|
||||||
UMBarCodeScannerInterface: 3f6c1b09ef4b867ce752b8c0b3893bcf9cd85f32
|
UMBarCodeScannerInterface: 3f6c1b09ef4b867ce752b8c0b3893bcf9cd85f32
|
||||||
UMCameraInterface: d516032121192fee9a6c93bdfff0bb2cc7282796
|
UMCameraInterface: d516032121192fee9a6c93bdfff0bb2cc7282796
|
||||||
@ -854,8 +908,8 @@ SPEC CHECKSUMS:
|
|||||||
UMReactNativeAdapter: 172def7895b2cb44a7dd021336e316d5fa8ea958
|
UMReactNativeAdapter: 172def7895b2cb44a7dd021336e316d5fa8ea958
|
||||||
UMSensorsInterface: 4df9ec662134de5614ae61acc249d6912db87ca5
|
UMSensorsInterface: 4df9ec662134de5614ae61acc249d6912db87ca5
|
||||||
UMTaskManagerInterface: 4c60b43eaf3cb05a164bc9113258a171c18b7bf7
|
UMTaskManagerInterface: 4c60b43eaf3cb05a164bc9113258a171c18b7bf7
|
||||||
Yoga: 4bd86afe9883422a7c4028c00e34790f560923d6
|
Yoga: 8c8436d4171c87504c648ae23b1d81242bdf3bbf
|
||||||
|
|
||||||
PODFILE CHECKSUM: 45a588d6415c6afb7aa7c5ef73a2ca1e38011f49
|
PODFILE CHECKSUM: 34cad1fa3f14caa5b138177b6379ac2cba0e1087
|
||||||
|
|
||||||
COCOAPODS: 1.10.1
|
COCOAPODS: 1.10.1
|
||||||
|
4
ios/tooot-Bridging-Header.h
Normal file
4
ios/tooot-Bridging-Header.h
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
//
|
||||||
|
// Use this file to import your target's public headers that you would like to expose to Swift.
|
||||||
|
//
|
||||||
|
|
@ -13,6 +13,7 @@
|
|||||||
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
||||||
3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; };
|
3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; };
|
||||||
5E36538325C9B8BD009F93EE /* RootViewColor.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5E36538225C9B8BD009F93EE /* RootViewColor.xcassets */; };
|
5E36538325C9B8BD009F93EE /* RootViewColor.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5E36538225C9B8BD009F93EE /* RootViewColor.xcassets */; };
|
||||||
|
5EE44DD62600124E00A9BCED /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EE44DD52600124E00A9BCED /* File.swift */; };
|
||||||
96905EF65AED1B983A6B3ABC /* libPods-tooot.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-tooot.a */; };
|
96905EF65AED1B983A6B3ABC /* libPods-tooot.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-tooot.a */; };
|
||||||
BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; };
|
BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; };
|
||||||
DA8B5B7F0DED488CAC0FF169 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = B96B72E5384D44A7B240B27E /* GoogleService-Info.plist */; };
|
DA8B5B7F0DED488CAC0FF169 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = B96B72E5384D44A7B240B27E /* GoogleService-Info.plist */; };
|
||||||
@ -29,6 +30,8 @@
|
|||||||
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = tooot/main.m; sourceTree = "<group>"; };
|
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = tooot/main.m; sourceTree = "<group>"; };
|
||||||
58EEBF8E8E6FB1BC6CAF49B5 /* libPods-tooot.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-tooot.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
58EEBF8E8E6FB1BC6CAF49B5 /* libPods-tooot.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-tooot.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
5E36538225C9B8BD009F93EE /* RootViewColor.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = RootViewColor.xcassets; path = tooot/RootViewColor.xcassets; sourceTree = "<group>"; };
|
5E36538225C9B8BD009F93EE /* RootViewColor.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = RootViewColor.xcassets; path = tooot/RootViewColor.xcassets; sourceTree = "<group>"; };
|
||||||
|
5EE44DD42600124E00A9BCED /* tooot-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "tooot-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||||
|
5EE44DD52600124E00A9BCED /* File.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = File.swift; sourceTree = "<group>"; };
|
||||||
6C2E3173556A471DD304B334 /* Pods-tooot.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tooot.debug.xcconfig"; path = "Target Support Files/Pods-tooot/Pods-tooot.debug.xcconfig"; sourceTree = "<group>"; };
|
6C2E3173556A471DD304B334 /* Pods-tooot.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tooot.debug.xcconfig"; path = "Target Support Files/Pods-tooot/Pods-tooot.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
7A4D352CD337FB3A3BF06240 /* Pods-tooot.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tooot.release.xcconfig"; path = "Target Support Files/Pods-tooot/Pods-tooot.release.xcconfig"; sourceTree = "<group>"; };
|
7A4D352CD337FB3A3BF06240 /* Pods-tooot.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tooot.release.xcconfig"; path = "Target Support Files/Pods-tooot/Pods-tooot.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = tooot/SplashScreen.storyboard; sourceTree = "<group>"; };
|
AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = tooot/SplashScreen.storyboard; sourceTree = "<group>"; };
|
||||||
@ -88,11 +91,13 @@
|
|||||||
83CBB9F61A601CBA00E9B192 = {
|
83CBB9F61A601CBA00E9B192 = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
5EE44DD52600124E00A9BCED /* File.swift */,
|
||||||
13B07FAE1A68108700A75B9A /* tooot */,
|
13B07FAE1A68108700A75B9A /* tooot */,
|
||||||
832341AE1AAA6A7D00B99B32 /* Libraries */,
|
832341AE1AAA6A7D00B99B32 /* Libraries */,
|
||||||
83CBBA001A601CBA00E9B192 /* Products */,
|
83CBBA001A601CBA00E9B192 /* Products */,
|
||||||
2D16E6871FA4F8E400B85C8A /* Frameworks */,
|
2D16E6871FA4F8E400B85C8A /* Frameworks */,
|
||||||
D65327D7A22EEC0BE12398D9 /* Pods */,
|
D65327D7A22EEC0BE12398D9 /* Pods */,
|
||||||
|
5EE44DD42600124E00A9BCED /* tooot-Bridging-Header.h */,
|
||||||
);
|
);
|
||||||
indentWidth = 2;
|
indentWidth = 2;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -111,8 +116,6 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
BB2F792C24A3F905000567C9 /* Expo.plist */,
|
BB2F792C24A3F905000567C9 /* Expo.plist */,
|
||||||
0351DE0CE9C448D9B63B2FD1 /* en.lproj */,
|
|
||||||
24C1D590D0854BB1A4D480A6 /* zh.lproj */,
|
|
||||||
);
|
);
|
||||||
name = Supporting;
|
name = Supporting;
|
||||||
path = tooot/Supporting;
|
path = tooot/Supporting;
|
||||||
@ -141,6 +144,7 @@
|
|||||||
13B07F8E1A680F5B00A75B9A /* Resources */,
|
13B07F8E1A680F5B00A75B9A /* Resources */,
|
||||||
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
|
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
|
||||||
800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */,
|
800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */,
|
||||||
|
5C5B41FC5F9DBE367CF7EF21 /* [CP] Embed Pods Frameworks */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@ -161,7 +165,7 @@
|
|||||||
TargetAttributes = {
|
TargetAttributes = {
|
||||||
13B07F861A680F5B00A75B9A = {
|
13B07F861A680F5B00A75B9A = {
|
||||||
DevelopmentTeam = 8EGBLQ2MA6;
|
DevelopmentTeam = 8EGBLQ2MA6;
|
||||||
LastSwiftMigration = 1120;
|
LastSwiftMigration = 1240;
|
||||||
ProvisioningStyle = Manual;
|
ProvisioningStyle = Manual;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -237,6 +241,24 @@
|
|||||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
|
5C5B41FC5F9DBE367CF7EF21 /* [CP] Embed Pods Frameworks */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-tooot/Pods-tooot-frameworks.sh",
|
||||||
|
"${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework",
|
||||||
|
);
|
||||||
|
name = "[CP] Embed Pods Frameworks";
|
||||||
|
outputPaths = (
|
||||||
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-tooot/Pods-tooot-frameworks.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = {
|
800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@ -282,6 +304,7 @@
|
|||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */,
|
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */,
|
||||||
|
5EE44DD62600124E00A9BCED /* File.swift in Sources */,
|
||||||
13B07FC11A68108700A75B9A /* main.m in Sources */,
|
13B07FC11A68108700A75B9A /* main.m in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -329,6 +352,7 @@
|
|||||||
PRODUCT_BUNDLE_IDENTIFIER = com.xmflsct.app.tooot;
|
PRODUCT_BUNDLE_IDENTIFIER = com.xmflsct.app.tooot;
|
||||||
PRODUCT_NAME = tooot;
|
PRODUCT_NAME = tooot;
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "match Development com.xmflsct.app.tooot";
|
PROVISIONING_PROFILE_SPECIFIER = "match Development com.xmflsct.app.tooot";
|
||||||
|
SWIFT_OBJC_BRIDGING_HEADER = "tooot-Bridging-Header.h";
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = 1;
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
@ -359,6 +383,7 @@
|
|||||||
PRODUCT_BUNDLE_IDENTIFIER = com.xmflsct.app.tooot;
|
PRODUCT_BUNDLE_IDENTIFIER = com.xmflsct.app.tooot;
|
||||||
PRODUCT_NAME = tooot;
|
PRODUCT_NAME = tooot;
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "match AppStore com.xmflsct.app.tooot";
|
PROVISIONING_PROFILE_SPECIFIER = "match AppStore com.xmflsct.app.tooot";
|
||||||
|
SWIFT_OBJC_BRIDGING_HEADER = "tooot-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = 1;
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
@ -398,6 +423,7 @@
|
|||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
ENABLE_TESTABILITY = YES;
|
ENABLE_TESTABILITY = YES;
|
||||||
|
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 i386";
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_DYNAMIC_NO_PIC = NO;
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
@ -459,6 +485,7 @@
|
|||||||
COPY_PHASE_STRIP = YES;
|
COPY_PHASE_STRIP = YES;
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 i386";
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "1130"
|
LastUpgradeVersion = "1210"
|
||||||
version = "1.3">
|
version = "1.3">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
|
@ -41,8 +41,6 @@
|
|||||||
<true/>
|
<true/>
|
||||||
<key>NSAppTransportSecurity</key>
|
<key>NSAppTransportSecurity</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSAllowsArbitraryLoads</key>
|
|
||||||
<true/>
|
|
||||||
<key>NSExceptionDomains</key>
|
<key>NSExceptionDomains</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>localhost</key>
|
<key>localhost</key>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
transformer: {
|
transformer: {
|
||||||
assetPlugins: ['expo-asset/tools/hashAssetFiles'],
|
assetPlugins: ['expo-asset/tools/hashAssetFiles'],
|
||||||
},
|
inlineRequires: true
|
||||||
};
|
}
|
||||||
|
}
|
||||||
|
122
package.json
122
package.json
@ -23,101 +23,99 @@
|
|||||||
"release": "scripts/release.sh"
|
"release": "scripts/release.sh"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@expo/react-native-action-sheet": "^3.8.0",
|
"@expo/react-native-action-sheet": "^3.9.0",
|
||||||
"@neverdull-agency/expo-unlimited-secure-store": "^1.0.10",
|
"@neverdull-agency/expo-unlimited-secure-store": "^1.0.10",
|
||||||
"@react-native-async-storage/async-storage": "^1.13.3",
|
"@react-native-async-storage/async-storage": "^1.14.1",
|
||||||
"@react-native-community/blur": "^3.6.0",
|
"@react-native-community/blur": "^3.6.0",
|
||||||
"@react-native-community/cameraroll": "^4.0.2",
|
"@react-native-community/cameraroll": "^4.0.2",
|
||||||
"@react-native-community/masked-view": "0.1.10",
|
"@react-native-community/masked-view": "0.1.10",
|
||||||
"@react-native-community/netinfo": "^5.9.10",
|
"@react-native-community/netinfo": "^6.0.0",
|
||||||
"@react-native-community/segmented-control": "2.2.2",
|
"@react-native-community/segmented-control": "2.2.2",
|
||||||
"@react-native-community/viewpager": "4.2.2",
|
"@react-navigation/bottom-tabs": "^5.11.8",
|
||||||
"@react-navigation/bottom-tabs": "^5.11.7",
|
"@react-navigation/native": "^5.9.3",
|
||||||
"@react-navigation/native": "^5.9.2",
|
"@react-navigation/stack": "^5.14.3",
|
||||||
"@react-navigation/stack": "^5.14.2",
|
|
||||||
"@reduxjs/toolkit": "^1.5.0",
|
"@reduxjs/toolkit": "^1.5.0",
|
||||||
"@sentry/react-native": "^2.1.1",
|
"@sentry/react-native": "^2.3.0",
|
||||||
"@sharcoux/slider": "^5.0.4",
|
"@sharcoux/slider": "^5.1.3",
|
||||||
"axios": "^0.21.1",
|
"axios": "^0.21.1",
|
||||||
"expo": "^40.0.1",
|
"expo": "^40.0.1",
|
||||||
"expo-auth-session": "~3.0.0",
|
"expo-auth-session": "~3.1.0",
|
||||||
"expo-av": "~8.7.0",
|
"expo-av": "~9.0.0",
|
||||||
"expo-crypto": "~8.4.0",
|
"expo-crypto": "~9.0.0",
|
||||||
"expo-firebase-analytics": "~2.6.0",
|
"expo-firebase-analytics": "~3.0.0",
|
||||||
"expo-haptics": "~8.4.0",
|
"expo-haptics": "~9.0.0",
|
||||||
"expo-image-picker": "~9.2.0",
|
"expo-image-picker": "~10.0.0",
|
||||||
"expo-linking": "~2.0.1",
|
"expo-linking": "~2.1.1",
|
||||||
"expo-localization": "~9.1.0",
|
"expo-localization": "~10.0.0",
|
||||||
"expo-notifications": "~0.8.2",
|
"expo-notifications": "~0.9.0",
|
||||||
"expo-random": "~10.0.0",
|
"expo-random": "~11.0.0",
|
||||||
"expo-screen-capture": "^3.0.0",
|
"expo-screen-capture": "^3.0.0",
|
||||||
"expo-secure-store": "~9.3.0",
|
"expo-splash-screen": "~0.9.0",
|
||||||
"expo-splash-screen": "~0.8.1",
|
|
||||||
"expo-status-bar": "~1.0.3",
|
"expo-status-bar": "~1.0.3",
|
||||||
"expo-store-review": "~2.3.0",
|
"expo-store-review": "~3.0.0",
|
||||||
"expo-video-thumbnails": "~4.4.0",
|
"expo-video-thumbnails": "~5.0.0",
|
||||||
"expo-web-browser": "~8.6.0",
|
"expo-web-browser": "~9.0.0",
|
||||||
"i18next": "^19.8.5",
|
"i18next": "^19.9.2",
|
||||||
"li": "^1.3.0",
|
"li": "^1.3.0",
|
||||||
"lodash": "^4.17.20",
|
"lodash": "^4.17.21",
|
||||||
"react": "16.13.1",
|
"react": "17.0.1",
|
||||||
"react-dom": "16.13.1",
|
"react-dom": "17.0.1",
|
||||||
"react-i18next": "^11.8.5",
|
"react-i18next": "^11.8.10",
|
||||||
"react-native": "~0.63.4",
|
"react-native": "~0.64.0",
|
||||||
"react-native-animated-spinkit": "^1.5.1",
|
"react-native-animated-spinkit": "^1.5.2",
|
||||||
"react-native-blurhash": "^1.0.29",
|
"react-native-blurhash": "^1.1.4",
|
||||||
"react-native-fast-image": "^8.3.4",
|
"react-native-fast-image": "^8.3.4",
|
||||||
"react-native-feather": "^1.0.2",
|
"react-native-feather": "^1.0.2",
|
||||||
"react-native-flash-message": "^0.1.23",
|
"react-native-flash-message": "^0.1.23",
|
||||||
"react-native-gesture-handler": "~1.9.0",
|
"react-native-gesture-handler": "~1.10.3",
|
||||||
"react-native-htmlview": "^0.16.0",
|
"react-native-htmlview": "^0.16.0",
|
||||||
"react-native-reanimated": "^2.0.0-rc.2",
|
"react-native-pager-view": "^5.1.2",
|
||||||
"react-native-safe-area-context": "3.1.9",
|
"react-native-reanimated": "^2.0.0",
|
||||||
"react-native-screens": "~2.18.1",
|
"react-native-safe-area-context": "3.2.0",
|
||||||
|
"react-native-screens": "~2.17.1",
|
||||||
"react-native-svg": "12.1.0",
|
"react-native-svg": "12.1.0",
|
||||||
"react-native-swipe-list-view": "^3.2.6",
|
"react-native-swipe-list-view": "^3.2.6",
|
||||||
"react-native-tab-view": "^2.15.2",
|
"react-native-tab-view": "^3.0.0",
|
||||||
"react-native-tab-view-viewpager-adapter": "^1.1.0",
|
|
||||||
"react-native-unimodules": "~0.12.0",
|
"react-native-unimodules": "~0.12.0",
|
||||||
"react-query": "^3.12.0",
|
"react-query": "^3.12.2",
|
||||||
"react-redux": "^7.2.2",
|
"react-redux": "^7.2.2",
|
||||||
"react-timeago": "^5.2.0",
|
"react-timeago": "^5.2.0",
|
||||||
"redux-persist": "^6.0.0",
|
"redux-persist": "^6.0.0",
|
||||||
"rn-placeholder": "^3.0.3",
|
"rn-placeholder": "^3.0.3",
|
||||||
"sentry-expo": "^3.0.4",
|
"sentry-expo": "^3.0.5",
|
||||||
"tslib": "^2.1.0"
|
"tslib": "^2.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "~7.12.10",
|
"@babel/core": "~7.13.10",
|
||||||
"@babel/plugin-proposal-optional-chaining": "^7.12.7",
|
"@babel/plugin-proposal-optional-chaining": "^7.13.8",
|
||||||
"@babel/preset-typescript": "^7.12.7",
|
"@babel/preset-typescript": "^7.13.0",
|
||||||
"@expo/config": "^3.3.26",
|
"@expo/config": "^3.3.31",
|
||||||
"@jest/types": "^26.6.2",
|
"@jest/types": "^26.6.2",
|
||||||
"@testing-library/jest-native": "^3.4.3",
|
"@testing-library/jest-native": "^4.0.1",
|
||||||
"@testing-library/react-hooks": "^3.7.0",
|
"@testing-library/react-hooks": "^5.1.0",
|
||||||
"@testing-library/react-native": "^7.1.0",
|
"@testing-library/react-native": "^7.2.0",
|
||||||
"@types/jest": "^26.0.19",
|
"@types/jest": "^26.0.20",
|
||||||
"@types/lodash": "^4.14.164",
|
"@types/lodash": "^4.14.168",
|
||||||
"@types/react": "~16.9.35",
|
"@types/react": "~17.0.3",
|
||||||
"@types/react-dom": "~16.9.8",
|
"@types/react-dom": "~17.0.2",
|
||||||
"@types/react-native": "~0.63.46",
|
"@types/react-native": "~0.63.52",
|
||||||
"@types/react-navigation": "^3.4.0",
|
"@types/react-navigation": "^3.4.0",
|
||||||
"@types/react-redux": "^7.1.16",
|
"@types/react-redux": "^7.1.16",
|
||||||
"@types/react-test-renderer": "^17.0.0",
|
"@types/react-test-renderer": "^17.0.1",
|
||||||
"@types/react-timeago": "^4.1.2",
|
"@types/react-timeago": "^4.1.2",
|
||||||
"@welldone-software/why-did-you-render": "^6.0.5",
|
"@welldone-software/why-did-you-render": "^6.1.1",
|
||||||
"babel-jest": "~25.2.6",
|
"babel-jest": "~26.6.3",
|
||||||
"babel-plugin-module-resolver": "^4.1.0",
|
"babel-plugin-module-resolver": "^4.1.0",
|
||||||
"babel-plugin-transform-remove-console": "^6.9.4",
|
"babel-plugin-transform-remove-console": "^6.9.4",
|
||||||
"chalk": "^4.1.0",
|
"chalk": "^4.1.0",
|
||||||
"dotenv": "^8.2.0",
|
"dotenv": "^8.2.0",
|
||||||
"jest": "^26.6.3",
|
"jest": "^26.6.3",
|
||||||
"jest-expo": "^40.0.1",
|
"jest-expo": "^40.0.2",
|
||||||
"nock": "^13.0.5",
|
"nock": "^13.0.11",
|
||||||
"react-navigation": "^4.4.3",
|
"react-navigation": "^4.4.4",
|
||||||
"react-navigation-stack": "^2.10.2",
|
"react-navigation-stack": "^2.10.4",
|
||||||
"react-test-renderer": "^16.13.1",
|
"react-test-renderer": "^17.0.1",
|
||||||
"typescript": "~4.1.3",
|
"typescript": "~4.2.3",
|
||||||
"uri-scheme": "^1.0.67"
|
"uri-scheme": "^1.0.68"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
3
src/@types/react-navigation.d.ts
vendored
3
src/@types/react-navigation.d.ts
vendored
@ -12,6 +12,9 @@ declare namespace Nav {
|
|||||||
type: 'account'
|
type: 'account'
|
||||||
account: Mastodon.Account
|
account: Mastodon.Account
|
||||||
}
|
}
|
||||||
|
| {
|
||||||
|
type: 'notifications_filter'
|
||||||
|
}
|
||||||
'Screen-Announcements': { showAll: boolean }
|
'Screen-Announcements': { showAll: boolean }
|
||||||
'Screen-Compose':
|
'Screen-Compose':
|
||||||
| {
|
| {
|
||||||
|
@ -5,7 +5,6 @@ import audio from '@root/startup/audio'
|
|||||||
import dev from '@root/startup/dev'
|
import dev from '@root/startup/dev'
|
||||||
import log from '@root/startup/log'
|
import log from '@root/startup/log'
|
||||||
import netInfo from '@root/startup/netInfo'
|
import netInfo from '@root/startup/netInfo'
|
||||||
import onlineStatus from '@root/startup/onlineStatus'
|
|
||||||
import sentry from '@root/startup/sentry'
|
import sentry from '@root/startup/sentry'
|
||||||
import { persistor, store } from '@root/store'
|
import { persistor, store } from '@root/store'
|
||||||
import { getSettingsLanguage } from '@utils/slices/settingsSlice'
|
import { getSettingsLanguage } from '@utils/slices/settingsSlice'
|
||||||
@ -28,7 +27,6 @@ dev()
|
|||||||
sentry()
|
sentry()
|
||||||
audio()
|
audio()
|
||||||
push()
|
push()
|
||||||
onlineStatus()
|
|
||||||
|
|
||||||
log('log', 'react-query', 'initializing')
|
log('log', 'react-query', 'initializing')
|
||||||
const queryClient = new QueryClient()
|
const queryClient = new QueryClient()
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { displayMessage, Message } from '@components/Message'
|
import { displayMessage, Message, removeMessage } from '@components/Message'
|
||||||
|
import { useNetInfo } from '@react-native-community/netinfo'
|
||||||
import {
|
import {
|
||||||
NavigationContainer,
|
NavigationContainer,
|
||||||
NavigationContainerRef
|
NavigationContainerRef
|
||||||
@ -22,7 +23,7 @@ import React, { createRef, useCallback, useEffect, useRef } from 'react'
|
|||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import { Alert, Platform, StatusBar } from 'react-native'
|
import { Alert, Platform, StatusBar } from 'react-native'
|
||||||
import { createNativeStackNavigator } from 'react-native-screens/native-stack'
|
import { createNativeStackNavigator } from 'react-native-screens/native-stack'
|
||||||
import { useQueryClient } from 'react-query'
|
import { onlineManager, useQueryClient } from 'react-query'
|
||||||
import { useDispatch, useSelector } from 'react-redux'
|
import { useDispatch, useSelector } from 'react-redux'
|
||||||
import * as Sentry from 'sentry-expo'
|
import * as Sentry from 'sentry-expo'
|
||||||
|
|
||||||
@ -46,18 +47,25 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
|
|||||||
|
|
||||||
const routeNameRef = useRef<string | undefined>()
|
const routeNameRef = useRef<string | undefined>()
|
||||||
|
|
||||||
// const isConnected = useNetInfo().isConnected
|
const isConnected = useNetInfo().isConnected
|
||||||
// const [firstRender, setFirstRender] = useState(false)
|
useEffect(() => {
|
||||||
// useEffect(() => {
|
switch (isConnected) {
|
||||||
// if (firstRender) {
|
case true:
|
||||||
// // bug in netInfo on first render as false
|
onlineManager.setOnline(isConnected)
|
||||||
// if (isConnected !== false) {
|
removeMessage()
|
||||||
// toast({ type: 'error', content: '手机🈚️网络', autoHide: false })
|
break
|
||||||
// }
|
case false:
|
||||||
// } else {
|
onlineManager.setOnline(isConnected)
|
||||||
// setFirstRender(true)
|
displayMessage({
|
||||||
// }
|
mode,
|
||||||
// }, [isConnected, firstRender])
|
type: 'error',
|
||||||
|
message: t('network.disconnected.message'),
|
||||||
|
description: t('network.disconnected.description'),
|
||||||
|
autoHide: false
|
||||||
|
})
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}, [isConnected])
|
||||||
|
|
||||||
// Push hooks
|
// Push hooks
|
||||||
const instances = useSelector(
|
const instances = useSelector(
|
||||||
@ -192,3 +200,6 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default React.memo(Screens, () => true)
|
export default React.memo(Screens, () => true)
|
||||||
|
function toast (arg0: { type: string; content: string; autoHide: boolean }) {
|
||||||
|
throw new Error('Function not implemented.')
|
||||||
|
}
|
||||||
|
@ -9,7 +9,7 @@ export type Params = {
|
|||||||
domain?: string
|
domain?: string
|
||||||
url: string
|
url: string
|
||||||
params?: {
|
params?: {
|
||||||
[key: string]: string | number | boolean
|
[key: string]: string | number | boolean | string[] | number[] | boolean[]
|
||||||
}
|
}
|
||||||
headers?: { [key: string]: string }
|
headers?: { [key: string]: string }
|
||||||
body?: FormData | Object
|
body?: FormData | Object
|
||||||
|
@ -10,7 +10,7 @@ export type Params = {
|
|||||||
version?: 'v1' | 'v2'
|
version?: 'v1' | 'v2'
|
||||||
url: string
|
url: string
|
||||||
params?: {
|
params?: {
|
||||||
[key: string]: string | number | boolean
|
[key: string]: string | number | boolean | string[] | number[] | boolean[]
|
||||||
}
|
}
|
||||||
headers?: { [key: string]: string }
|
headers?: { [key: string]: string }
|
||||||
body?: FormData
|
body?: FormData
|
||||||
@ -38,7 +38,7 @@ const apiInstance = async <T = unknown>({
|
|||||||
domain = state.instances.instances[instanceActive].url
|
domain = state.instances.instances[instanceActive].url
|
||||||
token = state.instances.instances[instanceActive].token
|
token = state.instances.instances[instanceActive].token
|
||||||
} else {
|
} else {
|
||||||
console.error(
|
console.warn(
|
||||||
ctx.bgRed.white.bold(' API ') + ' ' + 'No instance domain is provided'
|
ctx.bgRed.white.bold(' API ') + ' ' + 'No instance domain is provided'
|
||||||
)
|
)
|
||||||
return Promise.reject()
|
return Promise.reject()
|
||||||
|
@ -3,7 +3,10 @@ import { StyleConstants } from '@utils/styles/constants'
|
|||||||
import { useTheme } from '@utils/styles/ThemeManager'
|
import { useTheme } from '@utils/styles/ThemeManager'
|
||||||
import { getTheme } from '@utils/styles/themes'
|
import { getTheme } from '@utils/styles/themes'
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import FlashMessage, { showMessage } from 'react-native-flash-message'
|
import FlashMessage, {
|
||||||
|
hideMessage,
|
||||||
|
showMessage
|
||||||
|
} from 'react-native-flash-message'
|
||||||
import haptics from './haptics'
|
import haptics from './haptics'
|
||||||
|
|
||||||
const displayMessage = ({
|
const displayMessage = ({
|
||||||
@ -70,6 +73,10 @@ const displayMessage = ({
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const removeMessage = () => {
|
||||||
|
hideMessage()
|
||||||
|
}
|
||||||
|
|
||||||
const Message = React.memo(
|
const Message = React.memo(
|
||||||
() => {
|
() => {
|
||||||
const { mode, theme } = useTheme()
|
const { mode, theme } = useTheme()
|
||||||
@ -100,4 +107,4 @@ const Message = React.memo(
|
|||||||
() => true
|
() => true
|
||||||
)
|
)
|
||||||
|
|
||||||
export { Message, displayMessage }
|
export { Message, displayMessage, removeMessage }
|
||||||
|
@ -140,20 +140,13 @@ const TimelineConversation: React.FC<Props> = ({
|
|||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</View>
|
</View>
|
||||||
<View
|
<TimelineActions
|
||||||
style={{
|
queryKey={queryKey}
|
||||||
paddingLeft: highlighted
|
status={conversation.last_status}
|
||||||
? 0
|
highlighted={highlighted}
|
||||||
: StyleConstants.Avatar.M + StyleConstants.Spacing.S
|
accts={conversation.accounts.map(account => account.acct)}
|
||||||
}}
|
reblog={false}
|
||||||
>
|
/>
|
||||||
<TimelineActions
|
|
||||||
queryKey={queryKey}
|
|
||||||
status={conversation.last_status}
|
|
||||||
accts={conversation.accounts.map(account => account.acct)}
|
|
||||||
reblog={false}
|
|
||||||
/>
|
|
||||||
</View>
|
|
||||||
</>
|
</>
|
||||||
) : null}
|
) : null}
|
||||||
</Pressable>
|
</Pressable>
|
||||||
|
@ -132,27 +132,19 @@ const TimelineDefault: React.FC<Props> = ({
|
|||||||
<TimelineActionsUsers status={actualStatus} highlighted={highlighted} />
|
<TimelineActionsUsers status={actualStatus} highlighted={highlighted} />
|
||||||
|
|
||||||
{queryKey && !disableDetails && (
|
{queryKey && !disableDetails && (
|
||||||
<View
|
<TimelineActions
|
||||||
style={{
|
queryKey={queryKey}
|
||||||
paddingLeft: highlighted
|
rootQueryKey={rootQueryKey}
|
||||||
? 0
|
highlighted={highlighted}
|
||||||
: StyleConstants.Avatar.M + StyleConstants.Spacing.S
|
status={actualStatus}
|
||||||
}}
|
accts={uniqBy(
|
||||||
>
|
([actualStatus.account] as Mastodon.Account[] & Mastodon.Mention[])
|
||||||
<TimelineActions
|
.concat(actualStatus.mentions)
|
||||||
queryKey={queryKey}
|
.filter(d => d?.id !== instanceAccount?.id),
|
||||||
rootQueryKey={rootQueryKey}
|
d => d.id
|
||||||
status={actualStatus}
|
).map(d => d.acct)}
|
||||||
accts={uniqBy(
|
reblog={item.reblog ? true : false}
|
||||||
([actualStatus.account] as Mastodon.Account[] &
|
/>
|
||||||
Mastodon.Mention[])
|
|
||||||
.concat(actualStatus.mentions)
|
|
||||||
.filter(d => d.id !== instanceAccount?.id),
|
|
||||||
d => d.id
|
|
||||||
).map(d => d.acct)}
|
|
||||||
reblog={item.reblog ? true : false}
|
|
||||||
/>
|
|
||||||
</View>
|
|
||||||
)}
|
)}
|
||||||
</Pressable>
|
</Pressable>
|
||||||
)
|
)
|
||||||
|
@ -129,28 +129,21 @@ const TimelineNotifications: React.FC<Props> = ({
|
|||||||
) : null}
|
) : null}
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
{notification.status && (
|
{notification.status ? (
|
||||||
<View
|
<TimelineActions
|
||||||
style={{
|
queryKey={queryKey}
|
||||||
paddingLeft: highlighted
|
status={notification.status}
|
||||||
? 0
|
highlighted={highlighted}
|
||||||
: StyleConstants.Avatar.M + StyleConstants.Spacing.S
|
accts={uniqBy(
|
||||||
}}
|
([notification.status.account] as Mastodon.Account[] &
|
||||||
>
|
Mastodon.Mention[])
|
||||||
<TimelineActions
|
.concat(notification.status.mentions)
|
||||||
queryKey={queryKey}
|
.filter(d => d.id !== instanceAccount?.id),
|
||||||
status={notification.status}
|
d => d.id
|
||||||
accts={uniqBy(
|
).map(d => d.acct)}
|
||||||
([notification.status.account] as Mastodon.Account[] &
|
reblog={false}
|
||||||
Mastodon.Mention[])
|
/>
|
||||||
.concat(notification.status.mentions)
|
) : null}
|
||||||
.filter(d => d.id !== instanceAccount?.id),
|
|
||||||
d => d.id
|
|
||||||
).map(d => d.acct)}
|
|
||||||
reblog={false}
|
|
||||||
/>
|
|
||||||
</View>
|
|
||||||
)}
|
|
||||||
</Pressable>
|
</Pressable>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ import { StyleConstants } from '@utils/styles/constants'
|
|||||||
import { useTheme } from '@utils/styles/ThemeManager'
|
import { useTheme } from '@utils/styles/ThemeManager'
|
||||||
import React, { useCallback, useRef, useState } from 'react'
|
import React, { useCallback, useRef, useState } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import { StyleSheet, Text, View } from 'react-native'
|
import { Platform, StyleSheet, Text, View } from 'react-native'
|
||||||
import { Circle } from 'react-native-animated-spinkit'
|
import { Circle } from 'react-native-animated-spinkit'
|
||||||
import Animated, {
|
import Animated, {
|
||||||
Extrapolate,
|
Extrapolate,
|
||||||
@ -45,6 +45,9 @@ const TimelineRefresh: React.FC<Props> = ({
|
|||||||
fetchingType,
|
fetchingType,
|
||||||
disableRefresh = false
|
disableRefresh = false
|
||||||
}) => {
|
}) => {
|
||||||
|
if (Platform.OS !== 'ios') {
|
||||||
|
return null
|
||||||
|
}
|
||||||
if (disableRefresh) {
|
if (disableRefresh) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
@ -17,13 +17,14 @@ import { useQueryClient } from 'react-query'
|
|||||||
export interface Props {
|
export interface Props {
|
||||||
queryKey: QueryKeyTimeline
|
queryKey: QueryKeyTimeline
|
||||||
rootQueryKey?: QueryKeyTimeline
|
rootQueryKey?: QueryKeyTimeline
|
||||||
|
highlighted: boolean
|
||||||
status: Mastodon.Status
|
status: Mastodon.Status
|
||||||
accts: Mastodon.Account['acct'][] // When replying to conversations
|
accts: Mastodon.Account['acct'][] // When replying to conversations
|
||||||
reblog: boolean
|
reblog: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
const TimelineActions = React.memo(
|
const TimelineActions = React.memo(
|
||||||
({ queryKey, rootQueryKey, status, accts, reblog }: Props) => {
|
({ queryKey, rootQueryKey, highlighted, status, accts, reblog }: Props) => {
|
||||||
const navigation = useNavigation()
|
const navigation = useNavigation()
|
||||||
const { t } = useTranslation('componentTimeline')
|
const { t } = useTranslation('componentTimeline')
|
||||||
const { mode, theme } = useTheme()
|
const { mode, theme } = useTheme()
|
||||||
@ -256,7 +257,13 @@ const TimelineActions = React.memo(
|
|||||||
)
|
)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<View
|
||||||
|
style={{
|
||||||
|
paddingLeft: highlighted
|
||||||
|
? 0
|
||||||
|
: StyleConstants.Avatar.M + StyleConstants.Spacing.S
|
||||||
|
}}
|
||||||
|
>
|
||||||
<View style={styles.actions}>
|
<View style={styles.actions}>
|
||||||
<Pressable
|
<Pressable
|
||||||
style={styles.action}
|
style={styles.action}
|
||||||
@ -285,7 +292,7 @@ const TimelineActions = React.memo(
|
|||||||
children={childrenBookmark}
|
children={childrenBookmark}
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
</>
|
</View>
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
() => true
|
() => true
|
||||||
|
@ -24,9 +24,9 @@ const TimelineFullConversation = React.memo(
|
|||||||
).length) ? (
|
).length) ? (
|
||||||
<Text
|
<Text
|
||||||
style={{
|
style={{
|
||||||
...StyleConstants.FontStyle.M,
|
...StyleConstants.FontStyle.S,
|
||||||
color: theme.blue,
|
color: theme.blue,
|
||||||
marginTop: StyleConstants.Font.Size.M / 2
|
marginTop: StyleConstants.Font.Size.S
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{t('shared.fullConversation')}
|
{t('shared.fullConversation')}
|
||||||
|
@ -32,5 +32,6 @@ export default {
|
|||||||
componentRelativeTime: require('./components/relativeTime').default,
|
componentRelativeTime: require('./components/relativeTime').default,
|
||||||
componentTimeline: require('./components/timeline').default,
|
componentTimeline: require('./components/timeline').default,
|
||||||
|
|
||||||
|
screenActions: require('./screens/screenActions').default,
|
||||||
screenImageViewer: require('./screens/screenImageViewer').default
|
screenImageViewer: require('./screens/screenImageViewer').default
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,21 @@
|
|||||||
export default {
|
export default {
|
||||||
|
network: {
|
||||||
|
disconnected: {
|
||||||
|
message: 'Lost network connection',
|
||||||
|
description: "Please check your phone's network setting"
|
||||||
|
}
|
||||||
|
},
|
||||||
screenshot: {
|
screenshot: {
|
||||||
title: 'Privacy Protection',
|
title: 'Privacy Protection',
|
||||||
message: 'Please do not disclose other user\'s identity, such as username, avatar, etc. Thank you!',
|
message:
|
||||||
|
"Please do not disclose other user's identity, such as username, avatar, etc. Thank you!",
|
||||||
button: 'Confirm'
|
button: 'Confirm'
|
||||||
},
|
},
|
||||||
index: {
|
index: {
|
||||||
localCorrupt: 'Login expired, please login again'
|
localCorrupt: 'Login expired, please login again'
|
||||||
},
|
},
|
||||||
buttons: {
|
buttons: {
|
||||||
|
apply: 'Apply',
|
||||||
cancel: 'Cancel'
|
cancel: 'Cancel'
|
||||||
},
|
},
|
||||||
toastMessage: {
|
toastMessage: {
|
||||||
|
19
src/i18n/en/screens/screenActions.ts
Normal file
19
src/i18n/en/screens/screenActions.ts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
export default {
|
||||||
|
content: {
|
||||||
|
button: {
|
||||||
|
apply: '$t(common:buttons.apply)',
|
||||||
|
cancel: '$t(common:buttons.cancel)'
|
||||||
|
},
|
||||||
|
notificationsFilter: {
|
||||||
|
heading: 'Show notification types',
|
||||||
|
content: {
|
||||||
|
follow: '$t(meSettingsPush:content.follow.heading)',
|
||||||
|
favourite: '$t(meSettingsPush:content.favourite.heading)',
|
||||||
|
reblog: '$t(meSettingsPush:content.reblog.heading)',
|
||||||
|
mention: '$t(meSettingsPush:content.mention.heading)',
|
||||||
|
poll: '$t(meSettingsPush:content.poll.heading)',
|
||||||
|
follow_request: 'Follow request'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -32,5 +32,6 @@ export default {
|
|||||||
componentRelativeTime: require('./components/relativeTime').default,
|
componentRelativeTime: require('./components/relativeTime').default,
|
||||||
componentTimeline: require('./components/timeline').default,
|
componentTimeline: require('./components/timeline').default,
|
||||||
|
|
||||||
|
screenActions: require('./screens/screenActions').default,
|
||||||
screenImageViewer: require('./screens/screenImageViewer').default
|
screenImageViewer: require('./screens/screenImageViewer').default
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,10 @@
|
|||||||
export default {
|
export default {
|
||||||
|
network: {
|
||||||
|
disconnected: {
|
||||||
|
message: '无法连接到网络',
|
||||||
|
description: '请检查手机设置里的网络连接'
|
||||||
|
}
|
||||||
|
},
|
||||||
screenshot: {
|
screenshot: {
|
||||||
title: '隐私保护',
|
title: '隐私保护',
|
||||||
message: '请确保不要泄露其它用户的敏感信息,例如用户名、头像等,谢谢!',
|
message: '请确保不要泄露其它用户的敏感信息,例如用户名、头像等,谢谢!',
|
||||||
@ -8,6 +14,7 @@ export default {
|
|||||||
localCorrupt: '登录已过期,请重新登录'
|
localCorrupt: '登录已过期,请重新登录'
|
||||||
},
|
},
|
||||||
buttons: {
|
buttons: {
|
||||||
|
apply: '应用',
|
||||||
cancel: '取消'
|
cancel: '取消'
|
||||||
},
|
},
|
||||||
toastMessage: {
|
toastMessage: {
|
||||||
|
@ -36,7 +36,7 @@ export default {
|
|||||||
function: '转嘟'
|
function: '转嘟'
|
||||||
},
|
},
|
||||||
bookmarked: {
|
bookmarked: {
|
||||||
function: '收藏嘟文'
|
function: '喜欢嘟文'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
actionsUsers: {
|
actionsUsers: {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
export default {
|
export default {
|
||||||
heading: '收藏',
|
heading: '喜欢',
|
||||||
content: {}
|
content: {}
|
||||||
}
|
}
|
||||||
|
19
src/i18n/zh-Hans/screens/screenActions.ts
Normal file
19
src/i18n/zh-Hans/screens/screenActions.ts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
export default {
|
||||||
|
content: {
|
||||||
|
button: {
|
||||||
|
apply: '$t(common:buttons.apply)',
|
||||||
|
cancel: '$t(common:buttons.cancel)'
|
||||||
|
},
|
||||||
|
notificationsFilter: {
|
||||||
|
heading: '显示通知',
|
||||||
|
content: {
|
||||||
|
follow: '$t(meSettingsPush:content.follow.heading)',
|
||||||
|
favourite: '$t(meSettingsPush:content.favourite.heading)',
|
||||||
|
reblog: '$t(meSettingsPush:content.reblog.heading)',
|
||||||
|
mention: '$t(meSettingsPush:content.mention.heading)',
|
||||||
|
poll: '$t(meSettingsPush:content.poll.heading)',
|
||||||
|
follow_request: '关注请求'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -6,7 +6,7 @@ export default {
|
|||||||
},
|
},
|
||||||
statuses: {
|
statuses: {
|
||||||
reblogged_by: '{{count}} 人转嘟',
|
reblogged_by: '{{count}} 人转嘟',
|
||||||
favourited_by: '{{count}} 人收藏'
|
favourited_by: '{{count}} 人喜欢'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
94
src/screens/Actions/NotificationsFilter.tsx
Normal file
94
src/screens/Actions/NotificationsFilter.tsx
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
import Button from '@components/Button'
|
||||||
|
import MenuContainer from '@components/Menu/Container'
|
||||||
|
import MenuHeader from '@components/Menu/Header'
|
||||||
|
import MenuRow from '@components/Menu/Row'
|
||||||
|
import { useNavigation } from '@react-navigation/native'
|
||||||
|
import {
|
||||||
|
getInstanceNotificationsFilter,
|
||||||
|
updateInstanceNotificationsFilter
|
||||||
|
} from '@utils/slices/instancesSlice'
|
||||||
|
import { StyleConstants } from '@utils/styles/constants'
|
||||||
|
import React, { useMemo } from 'react'
|
||||||
|
import { StyleSheet } from 'react-native'
|
||||||
|
import { useTranslation } from 'react-i18next'
|
||||||
|
import { useDispatch, useSelector } from 'react-redux'
|
||||||
|
import { useQueryClient } from 'react-query'
|
||||||
|
import { QueryKeyTimeline } from '@utils/queryHooks/timeline'
|
||||||
|
|
||||||
|
const ActionsNotificationsFilter: React.FC = () => {
|
||||||
|
const navigation = useNavigation()
|
||||||
|
const { t } = useTranslation('screenActions')
|
||||||
|
|
||||||
|
const queryKey: QueryKeyTimeline = ['Timeline', { page: 'Notifications' }]
|
||||||
|
const queryClient = useQueryClient()
|
||||||
|
|
||||||
|
const dispatch = useDispatch()
|
||||||
|
const instanceNotificationsFilter = useSelector(
|
||||||
|
getInstanceNotificationsFilter
|
||||||
|
)
|
||||||
|
|
||||||
|
if (!instanceNotificationsFilter) {
|
||||||
|
navigation.goBack()
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
const options = useMemo(() => {
|
||||||
|
return (
|
||||||
|
instanceNotificationsFilter &&
|
||||||
|
([
|
||||||
|
'follow',
|
||||||
|
'favourite',
|
||||||
|
'reblog',
|
||||||
|
'mention',
|
||||||
|
'poll',
|
||||||
|
'follow_request'
|
||||||
|
] as [
|
||||||
|
'follow',
|
||||||
|
'favourite',
|
||||||
|
'reblog',
|
||||||
|
'mention',
|
||||||
|
'poll',
|
||||||
|
'follow_request'
|
||||||
|
]).map(type => (
|
||||||
|
<MenuRow
|
||||||
|
key={type}
|
||||||
|
title={t(`content.notificationsFilter.content.${type}`)}
|
||||||
|
switchValue={instanceNotificationsFilter[type]}
|
||||||
|
switchOnValueChange={() =>
|
||||||
|
dispatch(
|
||||||
|
updateInstanceNotificationsFilter({
|
||||||
|
...instanceNotificationsFilter,
|
||||||
|
[type]: !instanceNotificationsFilter[type]
|
||||||
|
})
|
||||||
|
)
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
))
|
||||||
|
)
|
||||||
|
}, [instanceNotificationsFilter])
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<MenuContainer>
|
||||||
|
<MenuHeader heading={t(`content.notificationsFilter.heading`)} />
|
||||||
|
{options}
|
||||||
|
</MenuContainer>
|
||||||
|
<Button
|
||||||
|
type='text'
|
||||||
|
content={t('content.button.apply')}
|
||||||
|
onPress={() => {
|
||||||
|
queryClient.resetQueries(queryKey)
|
||||||
|
}}
|
||||||
|
style={styles.button}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
button: {
|
||||||
|
marginHorizontal: StyleConstants.Spacing.Global.PagePadding * 2
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
export default ActionsNotificationsFilter
|
@ -28,6 +28,7 @@ import { useSafeAreaInsets } from 'react-native-safe-area-context'
|
|||||||
import { useSelector } from 'react-redux'
|
import { useSelector } from 'react-redux'
|
||||||
import ActionsAccount from './Account'
|
import ActionsAccount from './Account'
|
||||||
import ActionsDomain from './Domain'
|
import ActionsDomain from './Domain'
|
||||||
|
import ActionsNotificationsFilter from './NotificationsFilter'
|
||||||
import ActionsShare from './Share'
|
import ActionsShare from './Share'
|
||||||
import ActionsStatus from './Status'
|
import ActionsStatus from './Status'
|
||||||
|
|
||||||
@ -40,21 +41,21 @@ const ScreenActionsRoot = React.memo(
|
|||||||
({ route: { params }, navigation }: ScreenAccountProp) => {
|
({ route: { params }, navigation }: ScreenAccountProp) => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
|
|
||||||
const localAccount = useSelector(
|
const instanceAccount = useSelector(
|
||||||
getInstanceAccount,
|
getInstanceAccount,
|
||||||
(prev, next) => prev?.id === next?.id
|
(prev, next) => prev?.id === next?.id
|
||||||
)
|
)
|
||||||
let sameAccount = false
|
let sameAccount = false
|
||||||
switch (params.type) {
|
switch (params.type) {
|
||||||
case 'status':
|
case 'status':
|
||||||
sameAccount = localAccount?.id === params.status.account.id
|
sameAccount = instanceAccount?.id === params.status.account.id
|
||||||
break
|
break
|
||||||
case 'account':
|
case 'account':
|
||||||
sameAccount = localAccount?.id === params.account.id
|
sameAccount = instanceAccount?.id === params.account.id
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
const localDomain = useSelector(getInstanceUrl)
|
const instanceDomain = useSelector(getInstanceUrl)
|
||||||
let sameDomain = true
|
let sameDomain = true
|
||||||
let statusDomain: string
|
let statusDomain: string
|
||||||
switch (params.type) {
|
switch (params.type) {
|
||||||
@ -62,7 +63,7 @@ const ScreenActionsRoot = React.memo(
|
|||||||
statusDomain = params.status.uri
|
statusDomain = params.status.uri
|
||||||
? params.status.uri.split(new RegExp(/\/\/(.*?)\//))[1]
|
? params.status.uri.split(new RegExp(/\/\/(.*?)\//))[1]
|
||||||
: ''
|
: ''
|
||||||
sameDomain = localDomain === statusDomain
|
sameDomain = instanceDomain === statusDomain
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,7 +87,6 @@ const ScreenActionsRoot = React.memo(
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
const dismiss = useCallback(() => {
|
const dismiss = useCallback(() => {
|
||||||
panY.value = withTiming(DEFAULT_VALUE)
|
|
||||||
navigation.goBack()
|
navigation.goBack()
|
||||||
}, [])
|
}, [])
|
||||||
const onGestureEvent = useAnimatedGestureHandler({
|
const onGestureEvent = useAnimatedGestureHandler({
|
||||||
@ -137,6 +137,14 @@ const ScreenActionsRoot = React.memo(
|
|||||||
type={params.type}
|
type={params.type}
|
||||||
dismiss={dismiss}
|
dismiss={dismiss}
|
||||||
/>
|
/>
|
||||||
|
<Button
|
||||||
|
type='text'
|
||||||
|
content={t('common:buttons.cancel')}
|
||||||
|
onPress={() => {
|
||||||
|
analytics('bottomsheet_acknowledge')
|
||||||
|
}}
|
||||||
|
style={styles.button}
|
||||||
|
/>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
case 'account':
|
case 'account':
|
||||||
@ -150,8 +158,18 @@ const ScreenActionsRoot = React.memo(
|
|||||||
type={params.type}
|
type={params.type}
|
||||||
dismiss={dismiss}
|
dismiss={dismiss}
|
||||||
/>
|
/>
|
||||||
|
<Button
|
||||||
|
type='text'
|
||||||
|
content={t('common:buttons.cancel')}
|
||||||
|
onPress={() => {
|
||||||
|
analytics('bottomsheet_acknowledge')
|
||||||
|
}}
|
||||||
|
style={styles.button}
|
||||||
|
/>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
|
case 'notifications_filter':
|
||||||
|
return <ActionsNotificationsFilter />
|
||||||
}
|
}
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
@ -188,15 +206,6 @@ const ScreenActionsRoot = React.memo(
|
|||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
{actions}
|
{actions}
|
||||||
<Button
|
|
||||||
type='text'
|
|
||||||
content={t('common:buttons.cancel')}
|
|
||||||
onPress={() => {
|
|
||||||
analytics('bottomsheet_cancel')
|
|
||||||
// dismiss()
|
|
||||||
}}
|
|
||||||
style={styles.button}
|
|
||||||
/>
|
|
||||||
</Animated.View>
|
</Animated.View>
|
||||||
</PanGestureHandler>
|
</PanGestureHandler>
|
||||||
</Animated.View>
|
</Animated.View>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import analytics from '@components/analytics'
|
import analytics from '@components/analytics'
|
||||||
import { HeaderLeft, HeaderRight } from '@components/Header'
|
import { HeaderCenter, HeaderLeft, HeaderRight } from '@components/Header'
|
||||||
import { StackScreenProps } from '@react-navigation/stack'
|
import { StackScreenProps } from '@react-navigation/stack'
|
||||||
import haptics from '@root/components/haptics'
|
import haptics from '@root/components/haptics'
|
||||||
import formatText from '@screens/Compose/formatText'
|
import formatText from '@screens/Compose/formatText'
|
||||||
@ -371,6 +371,13 @@ const ScreenCompose: React.FC<ScreenComposeProp> = ({
|
|||||||
},
|
},
|
||||||
headerTintColor:
|
headerTintColor:
|
||||||
totalTextCount > maxTootChars ? theme.red : theme.secondary,
|
totalTextCount > maxTootChars ? theme.red : theme.secondary,
|
||||||
|
headerCenter: () => (
|
||||||
|
<HeaderCenter
|
||||||
|
content={`${totalTextCount} / ${maxTootChars}${
|
||||||
|
__DEV__ ? ` Dirty: ${composeState.dirty.toString()}` : ''
|
||||||
|
}`}
|
||||||
|
/>
|
||||||
|
),
|
||||||
headerRight
|
headerRight
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
@ -39,7 +39,8 @@ const ComposeEditAttachmentSubmit: React.FC<Props> = ({ index }) => {
|
|||||||
) {
|
) {
|
||||||
formData.append(
|
formData.append(
|
||||||
'focus',
|
'focus',
|
||||||
`${theAttachment.meta.focus.x},${-theAttachment.meta.focus.y}`
|
`${theAttachment.meta.focus.x || 0},${-theAttachment.meta.focus.y ||
|
||||||
|
0}`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,12 +5,10 @@ import TimelineDefault from '@components/Timeline/Default'
|
|||||||
import { BottomTabScreenProps } from '@react-navigation/bottom-tabs'
|
import { BottomTabScreenProps } from '@react-navigation/bottom-tabs'
|
||||||
import { ScreenTabsParamList } from '@screens/Tabs'
|
import { ScreenTabsParamList } from '@screens/Tabs'
|
||||||
import { QueryKeyTimeline } from '@utils/queryHooks/timeline'
|
import { QueryKeyTimeline } from '@utils/queryHooks/timeline'
|
||||||
import { getInstanceActive } from '@utils/slices/instancesSlice'
|
|
||||||
import React, { useCallback, useMemo } from 'react'
|
import React, { useCallback, useMemo } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import { Platform } from 'react-native'
|
import { Platform } from 'react-native'
|
||||||
import { createNativeStackNavigator } from 'react-native-screens/native-stack'
|
import { createNativeStackNavigator } from 'react-native-screens/native-stack'
|
||||||
import { useSelector } from 'react-redux'
|
|
||||||
import sharedScreens from './Shared/sharedScreens'
|
import sharedScreens from './Shared/sharedScreens'
|
||||||
|
|
||||||
export type TabLocalProp = BottomTabScreenProps<
|
export type TabLocalProp = BottomTabScreenProps<
|
||||||
@ -22,8 +20,7 @@ const Stack = createNativeStackNavigator<Nav.TabLocalStackParamList>()
|
|||||||
|
|
||||||
const TabLocal = React.memo(
|
const TabLocal = React.memo(
|
||||||
({ navigation }: TabLocalProp) => {
|
({ navigation }: TabLocalProp) => {
|
||||||
const { t } = useTranslation('local')
|
const { t, i18n } = useTranslation('local')
|
||||||
const instanceActive = useSelector(getInstanceActive)
|
|
||||||
|
|
||||||
const screenOptions = useMemo(
|
const screenOptions = useMemo(
|
||||||
() => ({
|
() => ({
|
||||||
@ -51,7 +48,7 @@ const TabLocal = React.memo(
|
|||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
[]
|
[i18n.language]
|
||||||
)
|
)
|
||||||
|
|
||||||
const queryKey: QueryKeyTimeline = ['Timeline', { page: 'Following' }]
|
const queryKey: QueryKeyTimeline = ['Timeline', { page: 'Following' }]
|
||||||
@ -60,10 +57,7 @@ const TabLocal = React.memo(
|
|||||||
[]
|
[]
|
||||||
)
|
)
|
||||||
const children = useCallback(
|
const children = useCallback(
|
||||||
() =>
|
() => <Timeline queryKey={queryKey} customProps={{ renderItem }} />,
|
||||||
instanceActive !== -1 ? (
|
|
||||||
<Timeline queryKey={queryKey} customProps={{ renderItem }} />
|
|
||||||
) : null,
|
|
||||||
[]
|
[]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
import { HeaderCenter } from '@components/Header'
|
import analytics from '@components/analytics'
|
||||||
|
import { HeaderCenter, HeaderRight } from '@components/Header'
|
||||||
import Timeline from '@components/Timeline'
|
import Timeline from '@components/Timeline'
|
||||||
import TimelineNotifications from '@components/Timeline/Notifications'
|
import TimelineNotifications from '@components/Timeline/Notifications'
|
||||||
|
import { useNavigation } from '@react-navigation/native'
|
||||||
import sharedScreens from '@screens/Tabs/Shared/sharedScreens'
|
import sharedScreens from '@screens/Tabs/Shared/sharedScreens'
|
||||||
import { QueryKeyTimeline } from '@utils/queryHooks/timeline'
|
import { QueryKeyTimeline } from '@utils/queryHooks/timeline'
|
||||||
import React, { useCallback, useMemo } from 'react'
|
import React, { useCallback, useMemo } from 'react'
|
||||||
@ -12,9 +14,17 @@ const Stack = createNativeStackNavigator<Nav.TabNotificationsStackParamList>()
|
|||||||
|
|
||||||
const TabNotifications = React.memo(
|
const TabNotifications = React.memo(
|
||||||
() => {
|
() => {
|
||||||
const { t } = useTranslation()
|
const navigation = useNavigation()
|
||||||
|
const { t, i18n } = useTranslation()
|
||||||
|
|
||||||
const screenOptions = useMemo(
|
const screenOptions = useMemo(
|
||||||
|
() => ({
|
||||||
|
headerHideShadow: true,
|
||||||
|
headerTopInsetEnabled: false
|
||||||
|
}),
|
||||||
|
[]
|
||||||
|
)
|
||||||
|
const screenOptionsRoot = useMemo(
|
||||||
() => ({
|
() => ({
|
||||||
headerTitle: t('notifications:heading'),
|
headerTitle: t('notifications:heading'),
|
||||||
...(Platform.OS === 'android' && {
|
...(Platform.OS === 'android' && {
|
||||||
@ -22,10 +32,19 @@ const TabNotifications = React.memo(
|
|||||||
<HeaderCenter content={t('notifications:heading')} />
|
<HeaderCenter content={t('notifications:heading')} />
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
headerHideShadow: true,
|
headerRight: () => (
|
||||||
headerTopInsetEnabled: false
|
<HeaderRight
|
||||||
|
content='Filter'
|
||||||
|
onPress={() => {
|
||||||
|
analytics('notificationsfilter_tap')
|
||||||
|
navigation.navigate('Screen-Actions', {
|
||||||
|
type: 'notifications_filter'
|
||||||
|
})
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
)
|
||||||
}),
|
}),
|
||||||
[]
|
[i18n.language]
|
||||||
)
|
)
|
||||||
|
|
||||||
const queryKey: QueryKeyTimeline = ['Timeline', { page: 'Notifications' }]
|
const queryKey: QueryKeyTimeline = ['Timeline', { page: 'Notifications' }]
|
||||||
@ -42,7 +61,11 @@ const TabNotifications = React.memo(
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Stack.Navigator screenOptions={screenOptions}>
|
<Stack.Navigator screenOptions={screenOptions}>
|
||||||
<Stack.Screen name='Tab-Notifications-Root' children={children} />
|
<Stack.Screen
|
||||||
|
name='Tab-Notifications-Root'
|
||||||
|
children={children}
|
||||||
|
options={screenOptionsRoot}
|
||||||
|
/>
|
||||||
{sharedScreens(Stack as any)}
|
{sharedScreens(Stack as any)}
|
||||||
</Stack.Navigator>
|
</Stack.Navigator>
|
||||||
)
|
)
|
||||||
|
@ -4,19 +4,15 @@ import Timeline from '@components/Timeline'
|
|||||||
import TimelineDefault from '@components/Timeline/Default'
|
import TimelineDefault from '@components/Timeline/Default'
|
||||||
import SegmentedControl from '@react-native-community/segmented-control'
|
import SegmentedControl from '@react-native-community/segmented-control'
|
||||||
import { BottomTabScreenProps } from '@react-navigation/bottom-tabs'
|
import { BottomTabScreenProps } from '@react-navigation/bottom-tabs'
|
||||||
import { useNavigation } from '@react-navigation/native'
|
|
||||||
import { ScreenTabsParamList } from '@screens/Tabs'
|
import { ScreenTabsParamList } from '@screens/Tabs'
|
||||||
import sharedScreens from '@screens/Tabs/Shared/sharedScreens'
|
import sharedScreens from '@screens/Tabs/Shared/sharedScreens'
|
||||||
import { QueryKeyTimeline } from '@utils/queryHooks/timeline'
|
import { QueryKeyTimeline } from '@utils/queryHooks/timeline'
|
||||||
import { getInstanceActive } from '@utils/slices/instancesSlice'
|
|
||||||
import { useTheme } from '@utils/styles/ThemeManager'
|
import { useTheme } from '@utils/styles/ThemeManager'
|
||||||
import React, { useCallback, useMemo, useState } from 'react'
|
import React, { useCallback, useMemo, useState } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import { Dimensions, StyleSheet } from 'react-native'
|
import { Dimensions, StyleSheet } from 'react-native'
|
||||||
import { createNativeStackNavigator } from 'react-native-screens/native-stack'
|
import { createNativeStackNavigator } from 'react-native-screens/native-stack'
|
||||||
import { TabView } from 'react-native-tab-view'
|
import { TabView } from 'react-native-tab-view'
|
||||||
import ViewPagerAdapter from 'react-native-tab-view-viewpager-adapter'
|
|
||||||
import { useSelector } from 'react-redux'
|
|
||||||
|
|
||||||
export type TabPublicProps = BottomTabScreenProps<
|
export type TabPublicProps = BottomTabScreenProps<
|
||||||
ScreenTabsParamList,
|
ScreenTabsParamList,
|
||||||
@ -29,7 +25,6 @@ const TabPublic = React.memo(
|
|||||||
({ navigation }: TabPublicProps) => {
|
({ navigation }: TabPublicProps) => {
|
||||||
const { t, i18n } = useTranslation()
|
const { t, i18n } = useTranslation()
|
||||||
const { mode } = useTheme()
|
const { mode } = useTheme()
|
||||||
const instanceActive = useSelector(getInstanceActive)
|
|
||||||
|
|
||||||
const [segment, setSegment] = useState(0)
|
const [segment, setSegment] = useState(0)
|
||||||
const pages: {
|
const pages: {
|
||||||
@ -82,10 +77,7 @@ const TabPublic = React.memo(
|
|||||||
)
|
)
|
||||||
|
|
||||||
const routes = pages.map(p => ({ key: p.key }))
|
const routes = pages.map(p => ({ key: p.key }))
|
||||||
const renderPager = useCallback(
|
|
||||||
props => <ViewPagerAdapter {...props} />,
|
|
||||||
[]
|
|
||||||
)
|
|
||||||
const renderScene = useCallback(
|
const renderScene = useCallback(
|
||||||
({
|
({
|
||||||
route: { key: page }
|
route: { key: page }
|
||||||
@ -103,20 +95,19 @@ const TabPublic = React.memo(
|
|||||||
[]
|
[]
|
||||||
)
|
)
|
||||||
const children = useCallback(
|
const children = useCallback(
|
||||||
() =>
|
() => (
|
||||||
instanceActive !== -1 ? (
|
// @ts-ignore
|
||||||
<TabView
|
<TabView
|
||||||
lazy
|
lazy
|
||||||
swipeEnabled
|
swipeEnabled
|
||||||
renderPager={renderPager}
|
renderScene={renderScene}
|
||||||
renderScene={renderScene}
|
renderTabBar={() => null}
|
||||||
renderTabBar={() => null}
|
onIndexChange={index => setSegment(index)}
|
||||||
onIndexChange={index => setSegment(index)}
|
navigationState={{ index: segment, routes }}
|
||||||
navigationState={{ index: segment, routes }}
|
initialLayout={{ width: Dimensions.get('screen').width }}
|
||||||
initialLayout={{ width: Dimensions.get('screen').width }}
|
/>
|
||||||
/>
|
),
|
||||||
) : null,
|
[segment]
|
||||||
[segment, instanceActive]
|
|
||||||
)
|
)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -211,7 +211,14 @@ const sharedScreens = (
|
|||||||
}
|
}
|
||||||
}: SharedUsersProp) => ({
|
}: SharedUsersProp) => ({
|
||||||
headerLeft: () => <HeaderLeft onPress={() => navigation.goBack()} />,
|
headerLeft: () => <HeaderLeft onPress={() => navigation.goBack()} />,
|
||||||
headerTitle: t(`sharedUsers:heading.${reference}.${type}`, { count })
|
headerTitle: t(`sharedUsers:heading.${reference}.${type}`, { count }),
|
||||||
|
...(Platform.OS === 'android' && {
|
||||||
|
headerCenter: () => (
|
||||||
|
<HeaderCenter
|
||||||
|
content={t(`sharedUsers:heading.${reference}.${type}`, { count })}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
})
|
||||||
})}
|
})}
|
||||||
/>
|
/>
|
||||||
]
|
]
|
||||||
|
@ -13,6 +13,7 @@ const netInfo = async (): Promise<{
|
|||||||
corrupted?: string
|
corrupted?: string
|
||||||
}> => {
|
}> => {
|
||||||
log('log', 'netInfo', 'initializing')
|
log('log', 'netInfo', 'initializing')
|
||||||
|
|
||||||
const netInfo = await NetInfo.fetch()
|
const netInfo = await NetInfo.fetch()
|
||||||
const instance = getInstance(store.getState())
|
const instance = getInstance(store.getState())
|
||||||
|
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
import NetInfo from '@react-native-community/netinfo'
|
|
||||||
import { onlineManager } from 'react-query'
|
|
||||||
import log from './log'
|
|
||||||
|
|
||||||
const onlineStatus = () =>
|
|
||||||
onlineManager.setEventListener(setOnline => {
|
|
||||||
log('log', 'onlineStatus', 'added onlineManager listener')
|
|
||||||
return NetInfo.addEventListener(state => {
|
|
||||||
log('log', 'onlineStatus', `setting online state ${state.isConnected}`)
|
|
||||||
// @ts-ignore
|
|
||||||
setOnline(state.isConnected)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
export default onlineStatus
|
|
33
src/store.ts
33
src/store.ts
@ -5,7 +5,7 @@ import {
|
|||||||
configureStore,
|
configureStore,
|
||||||
getDefaultMiddleware
|
getDefaultMiddleware
|
||||||
} from '@reduxjs/toolkit'
|
} from '@reduxjs/toolkit'
|
||||||
import { InstancesV3 } from '@utils/migrations/instances/v3'
|
import instancesMigration from '@utils/migrations/instances/migration'
|
||||||
import contextsSlice from '@utils/slices/contextsSlice'
|
import contextsSlice from '@utils/slices/contextsSlice'
|
||||||
import instancesSlice from '@utils/slices/instancesSlice'
|
import instancesSlice from '@utils/slices/instancesSlice'
|
||||||
import settingsSlice from '@utils/slices/settingsSlice'
|
import settingsSlice from '@utils/slices/settingsSlice'
|
||||||
@ -21,40 +21,13 @@ const contextsPersistConfig = {
|
|||||||
storage: AsyncStorage
|
storage: AsyncStorage
|
||||||
}
|
}
|
||||||
|
|
||||||
const instancesMigration = {
|
|
||||||
4: (state: InstancesV3) => {
|
|
||||||
return {
|
|
||||||
instances: state.local.instances.map((instance, index) => {
|
|
||||||
// @ts-ignore
|
|
||||||
delete instance.notification
|
|
||||||
return {
|
|
||||||
...instance,
|
|
||||||
active: state.local.activeIndex === index,
|
|
||||||
push: {
|
|
||||||
global: { loading: false, value: false },
|
|
||||||
decode: { loading: false, value: false },
|
|
||||||
alerts: {
|
|
||||||
follow: { loading: false, value: true },
|
|
||||||
favourite: { loading: false, value: true },
|
|
||||||
reblog: { loading: false, value: true },
|
|
||||||
mention: { loading: false, value: true },
|
|
||||||
poll: { loading: false, value: true }
|
|
||||||
},
|
|
||||||
keys: undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const instancesPersistConfig = {
|
const instancesPersistConfig = {
|
||||||
key: 'instances',
|
key: 'instances',
|
||||||
prefix,
|
prefix,
|
||||||
storage: secureStorage,
|
storage: secureStorage,
|
||||||
version: 4,
|
version: 5,
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
migrate: createMigrate(instancesMigration)
|
migrate: createMigrate(instancesMigration, { debug: true })
|
||||||
}
|
}
|
||||||
|
|
||||||
const settingsPersistConfig = {
|
const settingsPersistConfig = {
|
||||||
|
53
src/utils/migrations/instances/migration.ts
Normal file
53
src/utils/migrations/instances/migration.ts
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
import { InstanceV3 } from './v3'
|
||||||
|
import { InstanceV4 } from './v4'
|
||||||
|
|
||||||
|
const instancesMigration = {
|
||||||
|
4: (state: InstanceV3) => {
|
||||||
|
return {
|
||||||
|
instances: state.local.instances.map((instance, index) => {
|
||||||
|
// @ts-ignore
|
||||||
|
delete instance.notification
|
||||||
|
return {
|
||||||
|
...instance,
|
||||||
|
active: state.local.activeIndex === index,
|
||||||
|
push: {
|
||||||
|
global: { loading: false, value: false },
|
||||||
|
decode: { loading: false, value: false },
|
||||||
|
alerts: {
|
||||||
|
follow: { loading: false, value: true },
|
||||||
|
favourite: { loading: false, value: true },
|
||||||
|
reblog: { loading: false, value: true },
|
||||||
|
mention: { loading: false, value: true },
|
||||||
|
poll: { loading: false, value: true }
|
||||||
|
},
|
||||||
|
keys: undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
5: (state: InstanceV4) => {
|
||||||
|
// Migration is run on each start, don't know why
|
||||||
|
// @ts-ignore
|
||||||
|
if (state.instances.length && !state.instances[0].notifications_filter) {
|
||||||
|
return {
|
||||||
|
instances: state.instances.map(instance => {
|
||||||
|
// @ts-ignore
|
||||||
|
instance.notifications_filter = {
|
||||||
|
follow: true,
|
||||||
|
favourite: true,
|
||||||
|
reblog: true,
|
||||||
|
mention: true,
|
||||||
|
poll: true,
|
||||||
|
follow_request: true
|
||||||
|
}
|
||||||
|
return instance
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return state
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default instancesMigration
|
@ -21,7 +21,7 @@ type InstanceLocal = {
|
|||||||
drafts: any[]
|
drafts: any[]
|
||||||
}
|
}
|
||||||
|
|
||||||
export type InstancesV3 = {
|
export type InstanceV3 = {
|
||||||
local: {
|
local: {
|
||||||
activeIndex: number | null
|
activeIndex: number | null
|
||||||
instances: InstanceLocal[]
|
instances: InstanceLocal[]
|
||||||
|
84
src/utils/migrations/instances/v4.ts
Normal file
84
src/utils/migrations/instances/v4.ts
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
import { ComposeStateDraft } from "@screens/Compose/utils/types"
|
||||||
|
|
||||||
|
type Instance = {
|
||||||
|
active: boolean
|
||||||
|
appData: {
|
||||||
|
clientId: string
|
||||||
|
clientSecret: string
|
||||||
|
}
|
||||||
|
url: string
|
||||||
|
token: string
|
||||||
|
uri: Mastodon.Instance['uri']
|
||||||
|
urls: Mastodon.Instance['urls']
|
||||||
|
max_toot_chars: number
|
||||||
|
account: {
|
||||||
|
id: Mastodon.Account['id']
|
||||||
|
acct: Mastodon.Account['acct']
|
||||||
|
avatarStatic: Mastodon.Account['avatar_static']
|
||||||
|
preferences: Mastodon.Preferences
|
||||||
|
}
|
||||||
|
push:
|
||||||
|
| {
|
||||||
|
global: { loading: boolean; value: boolean }
|
||||||
|
decode: { loading: boolean; value: true }
|
||||||
|
alerts: {
|
||||||
|
follow: {
|
||||||
|
loading: boolean
|
||||||
|
value: Mastodon.PushSubscription['alerts']['follow']
|
||||||
|
}
|
||||||
|
favourite: {
|
||||||
|
loading: boolean
|
||||||
|
value: Mastodon.PushSubscription['alerts']['favourite']
|
||||||
|
}
|
||||||
|
reblog: {
|
||||||
|
loading: boolean
|
||||||
|
value: Mastodon.PushSubscription['alerts']['reblog']
|
||||||
|
}
|
||||||
|
mention: {
|
||||||
|
loading: boolean
|
||||||
|
value: Mastodon.PushSubscription['alerts']['mention']
|
||||||
|
}
|
||||||
|
poll: {
|
||||||
|
loading: boolean
|
||||||
|
value: Mastodon.PushSubscription['alerts']['poll']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
keys: {
|
||||||
|
auth: string
|
||||||
|
public: string
|
||||||
|
private: string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
| {
|
||||||
|
global: { loading: boolean; value: boolean }
|
||||||
|
decode: { loading: boolean; value: false }
|
||||||
|
alerts: {
|
||||||
|
follow: {
|
||||||
|
loading: boolean
|
||||||
|
value: Mastodon.PushSubscription['alerts']['follow']
|
||||||
|
}
|
||||||
|
favourite: {
|
||||||
|
loading: boolean
|
||||||
|
value: Mastodon.PushSubscription['alerts']['favourite']
|
||||||
|
}
|
||||||
|
reblog: {
|
||||||
|
loading: boolean
|
||||||
|
value: Mastodon.PushSubscription['alerts']['reblog']
|
||||||
|
}
|
||||||
|
mention: {
|
||||||
|
loading: boolean
|
||||||
|
value: Mastodon.PushSubscription['alerts']['mention']
|
||||||
|
}
|
||||||
|
poll: {
|
||||||
|
loading: boolean
|
||||||
|
value: Mastodon.PushSubscription['alerts']['poll']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
keys: undefined
|
||||||
|
}
|
||||||
|
drafts: ComposeStateDraft[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export type InstanceV4 = {
|
||||||
|
instances: Instance[]
|
||||||
|
}
|
@ -1,5 +1,10 @@
|
|||||||
import apiInstance from '@api/instance'
|
import apiInstance from '@api/instance'
|
||||||
import haptics from '@components/haptics'
|
import haptics from '@components/haptics'
|
||||||
|
import { store } from '@root/store'
|
||||||
|
import {
|
||||||
|
getInstanceActive,
|
||||||
|
getInstanceNotificationsFilter
|
||||||
|
} from '@utils/slices/instancesSlice'
|
||||||
import { AxiosError } from 'axios'
|
import { AxiosError } from 'axios'
|
||||||
import { uniqBy } from 'lodash'
|
import { uniqBy } from 'lodash'
|
||||||
import {
|
import {
|
||||||
@ -59,10 +64,19 @@ const queryFunction = ({
|
|||||||
})
|
})
|
||||||
|
|
||||||
case 'Notifications':
|
case 'Notifications':
|
||||||
|
const rootStore = store.getState()
|
||||||
|
const notificationsFilter = getInstanceNotificationsFilter(rootStore)
|
||||||
return apiInstance<Mastodon.Notification[]>({
|
return apiInstance<Mastodon.Notification[]>({
|
||||||
method: 'get',
|
method: 'get',
|
||||||
url: 'notifications',
|
url: 'notifications',
|
||||||
params
|
params: {
|
||||||
|
...params,
|
||||||
|
...(notificationsFilter && {
|
||||||
|
exclude_types: Object.keys(notificationsFilter)
|
||||||
|
// @ts-ignore
|
||||||
|
.filter(filter => notificationsFilter[filter] === false)
|
||||||
|
})
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
case 'Account_Default':
|
case 'Account_Default':
|
||||||
|
@ -70,6 +70,14 @@ const addInstance = createAsyncThunk(
|
|||||||
avatarStatic: avatar_static,
|
avatarStatic: avatar_static,
|
||||||
preferences
|
preferences
|
||||||
},
|
},
|
||||||
|
notifications_filter: {
|
||||||
|
follow: true,
|
||||||
|
favourite: true,
|
||||||
|
reblog: true,
|
||||||
|
mention: true,
|
||||||
|
poll: true,
|
||||||
|
follow_request: true
|
||||||
|
},
|
||||||
push: {
|
push: {
|
||||||
global: { loading: false, value: false },
|
global: { loading: false, value: false },
|
||||||
decode: { loading: false, value: false },
|
decode: { loading: false, value: false },
|
||||||
|
@ -29,10 +29,18 @@ export type Instance = {
|
|||||||
avatarStatic: Mastodon.Account['avatar_static']
|
avatarStatic: Mastodon.Account['avatar_static']
|
||||||
preferences: Mastodon.Preferences
|
preferences: Mastodon.Preferences
|
||||||
}
|
}
|
||||||
|
notifications_filter: {
|
||||||
|
follow: boolean
|
||||||
|
favourite: boolean
|
||||||
|
reblog: boolean
|
||||||
|
mention: boolean
|
||||||
|
poll: boolean
|
||||||
|
follow_request: boolean
|
||||||
|
}
|
||||||
push:
|
push:
|
||||||
| {
|
| {
|
||||||
global: { loading: boolean; value: true }
|
global: { loading: boolean; value: boolean }
|
||||||
decode: { loading: boolean; value: boolean }
|
decode: { loading: boolean; value: true }
|
||||||
alerts: {
|
alerts: {
|
||||||
follow: {
|
follow: {
|
||||||
loading: boolean
|
loading: boolean
|
||||||
@ -62,8 +70,8 @@ export type Instance = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
| {
|
| {
|
||||||
global: { loading: boolean; value: false }
|
global: { loading: boolean; value: boolean }
|
||||||
decode: { loading: boolean; value: boolean }
|
decode: { loading: boolean; value: false }
|
||||||
alerts: {
|
alerts: {
|
||||||
follow: {
|
follow: {
|
||||||
loading: boolean
|
loading: boolean
|
||||||
@ -125,6 +133,13 @@ const instancesSlice = createSlice({
|
|||||||
...action.payload
|
...action.payload
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
updateInstanceNotificationsFilter: (
|
||||||
|
{ instances },
|
||||||
|
action: PayloadAction<Instance['notifications_filter']>
|
||||||
|
) => {
|
||||||
|
const activeIndex = findInstanceActive(instances)
|
||||||
|
instances[activeIndex].notifications_filter = action.payload
|
||||||
|
},
|
||||||
updateInstanceDraft: (
|
updateInstanceDraft: (
|
||||||
{ instances },
|
{ instances },
|
||||||
action: PayloadAction<ComposeStateDraft>
|
action: PayloadAction<ComposeStateDraft>
|
||||||
@ -312,6 +327,15 @@ export const getInstanceAccount = ({ instances: { instances } }: RootState) => {
|
|||||||
return instanceActive !== -1 ? instances[instanceActive].account : null
|
return instanceActive !== -1 ? instances[instanceActive].account : null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const getInstanceNotificationsFilter = ({
|
||||||
|
instances: { instances }
|
||||||
|
}: RootState) => {
|
||||||
|
const instanceActive = findInstanceActive(instances)
|
||||||
|
return instanceActive !== -1
|
||||||
|
? instances[instanceActive].notifications_filter
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
|
||||||
export const getInstancePush = ({ instances: { instances } }: RootState) => {
|
export const getInstancePush = ({ instances: { instances } }: RootState) => {
|
||||||
const instanceActive = findInstanceActive(instances)
|
const instanceActive = findInstanceActive(instances)
|
||||||
return instanceActive !== -1 ? instances[instanceActive].push : null
|
return instanceActive !== -1 ? instances[instanceActive].push : null
|
||||||
@ -325,6 +349,7 @@ export const getInstanceDrafts = ({ instances: { instances } }: RootState) => {
|
|||||||
export const {
|
export const {
|
||||||
updateInstanceActive,
|
updateInstanceActive,
|
||||||
updateInstanceAccount,
|
updateInstanceAccount,
|
||||||
|
updateInstanceNotificationsFilter,
|
||||||
updateInstanceDraft,
|
updateInstanceDraft,
|
||||||
removeInstanceDraft,
|
removeInstanceDraft,
|
||||||
disableAllPushes
|
disableAllPushes
|
||||||
|
@ -6,14 +6,14 @@ export const StyleConstants = {
|
|||||||
LineHeight: {
|
LineHeight: {
|
||||||
S: 20,
|
S: 20,
|
||||||
M: 22,
|
M: 22,
|
||||||
L: 30
|
L: 28
|
||||||
},
|
},
|
||||||
Weight: { Normal: '400' as '400', Bold: '600' as '600' }
|
Weight: { Normal: '400' as '400', Bold: '600' as '600' }
|
||||||
},
|
},
|
||||||
FontStyle: {
|
FontStyle: {
|
||||||
S: { fontSize: 14, lineHeight: 20 },
|
S: { fontSize: 14, lineHeight: 20 },
|
||||||
M: { fontSize: 16, lineHeight: 22 },
|
M: { fontSize: 16, lineHeight: 22 },
|
||||||
L: { fontSize: 20, lineHeight: 30 }
|
L: { fontSize: 20, lineHeight: 28 }
|
||||||
},
|
},
|
||||||
|
|
||||||
Spacing: {
|
Spacing: {
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
import { Dimensions } from 'react-native'
|
// import { Dimensions } from 'react-native'
|
||||||
|
|
||||||
const { width } = Dimensions.get('screen')
|
// const { width } = Dimensions.get('screen')
|
||||||
|
|
||||||
const guidelineBaseWidth = 375
|
// const guidelineBaseWidth = 375
|
||||||
// const guidelineBaseHeight = 667
|
// const guidelineBaseHeight = 667
|
||||||
|
|
||||||
const scale = (size: number) => (width / guidelineBaseWidth) * size
|
// const scale = (size: number) => (width / guidelineBaseWidth) * size
|
||||||
// const verticalScale = (size: number) => (height / guidelineBaseHeight) * size
|
// const verticalScale = (size: number) => (height / guidelineBaseHeight) * size
|
||||||
// const adaptiveScale = (size: number, factor: number = 0) =>
|
// const adaptiveScale = (size: number, factor: number = 0) =>
|
||||||
// size + (scale(size) - size) * factor
|
// size + (scale(size) - size) * factor
|
||||||
|
Loading…
x
Reference in New Issue
Block a user