mirror of
https://github.com/tooot-app/app
synced 2025-06-05 22:19:13 +02:00
3
.github/workflows/build.yml
vendored
3
.github/workflows/build.yml
vendored
@ -27,6 +27,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
DEVELOPER_DIR: /Applications/Xcode_13.4.1.app/Contents/Developer
|
DEVELOPER_DIR: /Applications/Xcode_13.4.1.app/Contents/Developer
|
||||||
ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
||||||
|
SENTRY_ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
||||||
LC_ALL: en_US.UTF-8
|
LC_ALL: en_US.UTF-8
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
SENTRY_ORGANIZATION: ${{ secrets.SENTRY_ORGANIZATION }}
|
SENTRY_ORGANIZATION: ${{ secrets.SENTRY_ORGANIZATION }}
|
||||||
@ -67,6 +68,7 @@ jobs:
|
|||||||
- name: -- Step 6 -- Run fastlane
|
- name: -- Step 6 -- Run fastlane
|
||||||
env:
|
env:
|
||||||
ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
||||||
|
SENTRY_ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
||||||
LC_ALL: en_US.UTF-8
|
LC_ALL: en_US.UTF-8
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
ANDROID_KEYSTORE: ${{ secrets.ANDROID_KEYSTORE }}
|
ANDROID_KEYSTORE: ${{ secrets.ANDROID_KEYSTORE }}
|
||||||
@ -103,6 +105,7 @@ jobs:
|
|||||||
- name: -- Step 6 -- Run fastlane
|
- name: -- Step 6 -- Run fastlane
|
||||||
env:
|
env:
|
||||||
ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
||||||
|
SENTRY_ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
||||||
LC_ALL: en_US.UTF-8
|
LC_ALL: en_US.UTF-8
|
||||||
LANG: en_US.UTF-8
|
LANG: en_US.UTF-8
|
||||||
SENTRY_ORGANIZATION: ${{ secrets.SENTRY_ORGANIZATION }}
|
SENTRY_ORGANIZATION: ${{ secrets.SENTRY_ORGANIZATION }}
|
||||||
|
70
.github/workflows/codeql-analysis.yml
vendored
70
.github/workflows/codeql-analysis.yml
vendored
@ -1,70 +0,0 @@
|
|||||||
# For most projects, this workflow file will not need changing; you simply need
|
|
||||||
# to commit it to your repository.
|
|
||||||
#
|
|
||||||
# You may wish to alter this file to override the set of languages analyzed,
|
|
||||||
# or to provide custom queries or build logic.
|
|
||||||
#
|
|
||||||
# ******** NOTE ********
|
|
||||||
# We have attempted to detect the languages in your repository. Please check
|
|
||||||
# the `language` matrix defined below to confirm you have the correct set of
|
|
||||||
# supported CodeQL languages.
|
|
||||||
#
|
|
||||||
name: "CodeQL"
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ main ]
|
|
||||||
# pull_request:
|
|
||||||
# # The branches below must be a subset of the branches above
|
|
||||||
# branches: [ main ]
|
|
||||||
# schedule:
|
|
||||||
# - cron: '35 4 * * 4'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
analyze:
|
|
||||||
name: Analyze
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
actions: read
|
|
||||||
contents: read
|
|
||||||
security-events: write
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
language: [ 'javascript' ]
|
|
||||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
|
||||||
# Learn more about CodeQL language support at https://git.io/codeql-language-support
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: github/codeql-action/init@v1
|
|
||||||
with:
|
|
||||||
languages: ${{ matrix.language }}
|
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
||||||
# By default, queries listed here will override any specified in a config file.
|
|
||||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
|
||||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
|
||||||
|
|
||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
|
||||||
# If this step fails, then you should remove it and run the build manually (see below)
|
|
||||||
- name: Autobuild
|
|
||||||
uses: github/codeql-action/autobuild@v1
|
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
|
||||||
# 📚 https://git.io/JvXDl
|
|
||||||
|
|
||||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
|
||||||
# and modify them (or add more) to build your code if your project
|
|
||||||
# uses a compiled language
|
|
||||||
|
|
||||||
#- run: |
|
|
||||||
# make bootstrap
|
|
||||||
# make release
|
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
|
||||||
uses: github/codeql-action/analyze@v1
|
|
43
Gemfile.lock
43
Gemfile.lock
@ -3,22 +3,22 @@ GEM
|
|||||||
specs:
|
specs:
|
||||||
CFPropertyList (3.0.5)
|
CFPropertyList (3.0.5)
|
||||||
rexml
|
rexml
|
||||||
activesupport (6.1.5)
|
activesupport (6.1.7)
|
||||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||||
i18n (>= 1.6, < 2)
|
i18n (>= 1.6, < 2)
|
||||||
minitest (>= 5.1)
|
minitest (>= 5.1)
|
||||||
tzinfo (~> 2.0)
|
tzinfo (~> 2.0)
|
||||||
zeitwerk (~> 2.3)
|
zeitwerk (~> 2.3)
|
||||||
addressable (2.8.0)
|
addressable (2.8.1)
|
||||||
public_suffix (>= 2.0.2, < 5.0)
|
public_suffix (>= 2.0.2, < 6.0)
|
||||||
algoliasearch (1.27.5)
|
algoliasearch (1.27.5)
|
||||||
httpclient (~> 2.8, >= 2.8.3)
|
httpclient (~> 2.8, >= 2.8.3)
|
||||||
json (>= 1.5.1)
|
json (>= 1.5.1)
|
||||||
artifactory (3.0.15)
|
artifactory (3.0.15)
|
||||||
atomos (0.1.3)
|
atomos (0.1.3)
|
||||||
aws-eventstream (1.2.0)
|
aws-eventstream (1.2.0)
|
||||||
aws-partitions (1.618.0)
|
aws-partitions (1.636.0)
|
||||||
aws-sdk-core (3.132.0)
|
aws-sdk-core (3.154.0)
|
||||||
aws-eventstream (~> 1, >= 1.0.2)
|
aws-eventstream (~> 1, >= 1.0.2)
|
||||||
aws-partitions (~> 1, >= 1.525.0)
|
aws-partitions (~> 1, >= 1.525.0)
|
||||||
aws-sigv4 (~> 1.1)
|
aws-sigv4 (~> 1.1)
|
||||||
@ -86,8 +86,8 @@ GEM
|
|||||||
escape (0.0.4)
|
escape (0.0.4)
|
||||||
ethon (0.15.0)
|
ethon (0.15.0)
|
||||||
ffi (>= 1.15.0)
|
ffi (>= 1.15.0)
|
||||||
excon (0.92.4)
|
excon (0.92.5)
|
||||||
faraday (1.10.1)
|
faraday (1.10.2)
|
||||||
faraday-em_http (~> 1.0)
|
faraday-em_http (~> 1.0)
|
||||||
faraday-em_synchrony (~> 1.0)
|
faraday-em_synchrony (~> 1.0)
|
||||||
faraday-excon (~> 1.1)
|
faraday-excon (~> 1.1)
|
||||||
@ -116,7 +116,7 @@ GEM
|
|||||||
faraday_middleware (1.2.0)
|
faraday_middleware (1.2.0)
|
||||||
faraday (~> 1.0)
|
faraday (~> 1.0)
|
||||||
fastimage (2.2.6)
|
fastimage (2.2.6)
|
||||||
fastlane (2.209.0)
|
fastlane (2.210.1)
|
||||||
CFPropertyList (>= 2.3, < 4.0.0)
|
CFPropertyList (>= 2.3, < 4.0.0)
|
||||||
addressable (>= 2.8, < 3.0.0)
|
addressable (>= 2.8, < 3.0.0)
|
||||||
artifactory (~> 3.0)
|
artifactory (~> 3.0)
|
||||||
@ -156,16 +156,17 @@ GEM
|
|||||||
xcpretty (~> 0.3.0)
|
xcpretty (~> 0.3.0)
|
||||||
xcpretty-travis-formatter (>= 0.0.3)
|
xcpretty-travis-formatter (>= 0.0.3)
|
||||||
fastlane-plugin-json (1.1.0)
|
fastlane-plugin-json (1.1.0)
|
||||||
fastlane-plugin-sentry (1.12.2)
|
fastlane-plugin-sentry (1.13.1)
|
||||||
|
os (~> 1.1, >= 1.1.4)
|
||||||
fastlane-plugin-versioning_android (0.1.0)
|
fastlane-plugin-versioning_android (0.1.0)
|
||||||
fastlane-plugin-yarn (1.2)
|
fastlane-plugin-yarn (1.2)
|
||||||
ffi (1.15.5)
|
ffi (1.15.5)
|
||||||
fourflusher (2.3.1)
|
fourflusher (2.3.1)
|
||||||
fuzzy_match (2.0.4)
|
fuzzy_match (2.0.4)
|
||||||
gh_inspector (1.1.3)
|
gh_inspector (1.1.3)
|
||||||
google-apis-androidpublisher_v3 (0.25.0)
|
google-apis-androidpublisher_v3 (0.27.0)
|
||||||
google-apis-core (>= 0.7, < 2.a)
|
google-apis-core (>= 0.7.2, < 2.a)
|
||||||
google-apis-core (0.7.0)
|
google-apis-core (0.9.0)
|
||||||
addressable (~> 2.5, >= 2.5.1)
|
addressable (~> 2.5, >= 2.5.1)
|
||||||
googleauth (>= 0.16.2, < 2.a)
|
googleauth (>= 0.16.2, < 2.a)
|
||||||
httpclient (>= 2.8.1, < 3.a)
|
httpclient (>= 2.8.1, < 3.a)
|
||||||
@ -174,8 +175,8 @@ GEM
|
|||||||
retriable (>= 2.0, < 4.a)
|
retriable (>= 2.0, < 4.a)
|
||||||
rexml
|
rexml
|
||||||
webrick
|
webrick
|
||||||
google-apis-iamcredentials_v1 (0.13.0)
|
google-apis-iamcredentials_v1 (0.14.0)
|
||||||
google-apis-core (>= 0.7, < 2.a)
|
google-apis-core (>= 0.7.2, < 2.a)
|
||||||
google-apis-playcustomapp_v1 (0.10.0)
|
google-apis-playcustomapp_v1 (0.10.0)
|
||||||
google-apis-core (>= 0.7, < 2.a)
|
google-apis-core (>= 0.7, < 2.a)
|
||||||
google-apis-storage_v1 (0.17.0)
|
google-apis-storage_v1 (0.17.0)
|
||||||
@ -185,8 +186,8 @@ GEM
|
|||||||
google-cloud-errors (~> 1.0)
|
google-cloud-errors (~> 1.0)
|
||||||
google-cloud-env (1.6.0)
|
google-cloud-env (1.6.0)
|
||||||
faraday (>= 0.17.3, < 3.0)
|
faraday (>= 0.17.3, < 3.0)
|
||||||
google-cloud-errors (1.2.0)
|
google-cloud-errors (1.3.0)
|
||||||
google-cloud-storage (1.38.0)
|
google-cloud-storage (1.42.0)
|
||||||
addressable (~> 2.8)
|
addressable (~> 2.8)
|
||||||
digest-crc (~> 0.4)
|
digest-crc (~> 0.4)
|
||||||
google-apis-iamcredentials_v1 (~> 0.1)
|
google-apis-iamcredentials_v1 (~> 0.1)
|
||||||
@ -205,15 +206,15 @@ GEM
|
|||||||
http-cookie (1.0.5)
|
http-cookie (1.0.5)
|
||||||
domain_name (~> 0.5)
|
domain_name (~> 0.5)
|
||||||
httpclient (2.8.3)
|
httpclient (2.8.3)
|
||||||
i18n (1.10.0)
|
i18n (1.12.0)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
jmespath (1.6.1)
|
jmespath (1.6.1)
|
||||||
json (2.6.2)
|
json (2.6.2)
|
||||||
jwt (2.4.1)
|
jwt (2.5.0)
|
||||||
memoist (0.16.2)
|
memoist (0.16.2)
|
||||||
mini_magick (4.11.0)
|
mini_magick (4.11.0)
|
||||||
mini_mime (1.1.2)
|
mini_mime (1.1.2)
|
||||||
minitest (5.15.0)
|
minitest (5.16.3)
|
||||||
molinillo (0.8.0)
|
molinillo (0.8.0)
|
||||||
multi_json (1.15.0)
|
multi_json (1.15.0)
|
||||||
multipart-post (2.0.0)
|
multipart-post (2.0.0)
|
||||||
@ -255,7 +256,7 @@ GEM
|
|||||||
tty-cursor (~> 0.7)
|
tty-cursor (~> 0.7)
|
||||||
typhoeus (1.4.0)
|
typhoeus (1.4.0)
|
||||||
ethon (>= 0.9.0)
|
ethon (>= 0.9.0)
|
||||||
tzinfo (2.0.4)
|
tzinfo (2.0.5)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
uber (0.1.0)
|
uber (0.1.0)
|
||||||
unf (0.1.4)
|
unf (0.1.4)
|
||||||
@ -275,7 +276,7 @@ GEM
|
|||||||
rouge (~> 2.0.7)
|
rouge (~> 2.0.7)
|
||||||
xcpretty-travis-formatter (1.0.1)
|
xcpretty-travis-formatter (1.0.1)
|
||||||
xcpretty (~> 0.2, >= 0.0.7)
|
xcpretty (~> 0.2, >= 0.0.7)
|
||||||
zeitwerk (2.5.4)
|
zeitwerk (2.6.0)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
universal-darwin-20
|
universal-darwin-20
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# [tooot](https://tooot.app/) app for Mastodon
|
# [tooot](https://tooot.app/) app for Mastodon
|
||||||
|
|
||||||
[](LICENSE)    [](https://crowdin.tooot.app/project/tooot)
|
[](LICENSE)   [](https://crowdin.tooot.app/project/tooot)
|
||||||
|
|
||||||
  
|
 
|
||||||
|
|
||||||
## Contribute to translation
|
## Contribute to translation
|
||||||
|
|
||||||
|
@ -13,9 +13,6 @@
|
|||||||
<!-- [Custom] Expo Notifications -->
|
<!-- [Custom] Expo Notifications -->
|
||||||
<meta-data android:name="expo.modules.notifications.default_notification_icon" android:resource="@drawable/ic_stat_notifications" />
|
<meta-data android:name="expo.modules.notifications.default_notification_icon" android:resource="@drawable/ic_stat_notifications" />
|
||||||
<!-- [Custom] End Expo Notifications -->
|
<!-- [Custom] End Expo Notifications -->
|
||||||
<meta-data android:name="expo.modules.updates.AUTO_SETUP" android:value="false"/>
|
|
||||||
<meta-data android:name="expo.modules.updates.ENABLED" android:value="false"/>
|
|
||||||
<meta-data android:name="expo.modules.updates.EXPO_SDK_VERSION" android:value="46.0.0"/>
|
|
||||||
<activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:exported="true" android:theme="@style/Theme.App.SplashScreen" android:screenOrientation="portrait" android:documentLaunchMode="never">
|
<activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:exported="true" android:theme="@style/Theme.App.SplashScreen" android:screenOrientation="portrait" android:documentLaunchMode="never">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
<action android:name="android.intent.action.MAIN"/>
|
||||||
|
3
android/sentry.properties
Normal file
3
android/sentry.properties
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
defaults.url=https://sentry.io/
|
||||||
|
defaults.org=tooot
|
||||||
|
defaults.project=app
|
@ -10,20 +10,6 @@ export default (): ExpoConfig => ({
|
|||||||
version,
|
version,
|
||||||
extra: { environment: process.env.ENVIRONMENT },
|
extra: { environment: process.env.ENVIRONMENT },
|
||||||
privacy: 'hidden',
|
privacy: 'hidden',
|
||||||
hooks: {
|
|
||||||
postPublish: [
|
|
||||||
{
|
|
||||||
file: 'sentry-expo/upload-sourcemaps',
|
|
||||||
config: {
|
|
||||||
organization: process.env.SENTRY_ORGANIZATION,
|
|
||||||
project: process.env.SENTRY_PROJECT,
|
|
||||||
authToken: process.env.SENTRY_AUTH_TOKEN,
|
|
||||||
setCommits: process.env.GITHUB_SHA || undefined,
|
|
||||||
deployEnv: process.env.ENVIRONMENT
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
jsEngine: 'hermes',
|
jsEngine: 'hermes',
|
||||||
ios: {
|
ios: {
|
||||||
bundleIdentifier: 'com.xmflsct.app.tooot'
|
bundleIdentifier: 'com.xmflsct.app.tooot'
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
languages(['de-DE', 'en-US', 'it', 'ko', 'pt-BR', 'vi', 'zh-Hans'])
|
|
||||||
|
|
||||||
name({
|
name({
|
||||||
'default' => "tooot"
|
'default' => "tooot"
|
||||||
})
|
})
|
||||||
|
@ -8,7 +8,6 @@ GITHUB_REPO = "tooot-app/app"
|
|||||||
|
|
||||||
XCODEPROJ = "./ios/tooot.xcodeproj"
|
XCODEPROJ = "./ios/tooot.xcodeproj"
|
||||||
INFO_PLIST = "./ios/tooot/Info.plist"
|
INFO_PLIST = "./ios/tooot/Info.plist"
|
||||||
EXPO_PLIST = "./ios/tooot/Supporting/Expo.plist"
|
|
||||||
|
|
||||||
desc "ANDROID: Prepare play store"
|
desc "ANDROID: Prepare play store"
|
||||||
private_lane :prepare_playstore_android do
|
private_lane :prepare_playstore_android do
|
||||||
@ -36,6 +35,7 @@ private_lane :build_ios do
|
|||||||
build_ios_app(
|
build_ios_app(
|
||||||
export_method: "app-store",
|
export_method: "app-store",
|
||||||
include_symbols: true,
|
include_symbols: true,
|
||||||
|
include_bitcode: true,
|
||||||
output_directory: BUILD_DIRECTORY,
|
output_directory: BUILD_DIRECTORY,
|
||||||
silent: false
|
silent: false
|
||||||
)
|
)
|
||||||
|
@ -1 +0,0 @@
|
|||||||
../en-US/release_notes.txt
|
|
@ -1,2 +0,0 @@
|
|||||||
Support selecting multiple images
|
|
||||||
Long press toot to show options
|
|
@ -1,2 +0,0 @@
|
|||||||
支持同时上传多张图片
|
|
||||||
长按嘟文弹出嘟文选项
|
|
@ -17,6 +17,12 @@ target 'tooot' do
|
|||||||
# Flags change depending on the env values.
|
# Flags change depending on the env values.
|
||||||
flags = get_default_flags()
|
flags = get_default_flags()
|
||||||
|
|
||||||
|
# https://stackoverflow.com/questions/72289521/swift-pods-cannot-yet-be-integrated-as-static-libraries-firebasecoreinternal-lib/72969220#72969220
|
||||||
|
pod 'Firebase', :modular_headers => true
|
||||||
|
pod 'FirebaseCore', :modular_headers => true
|
||||||
|
pod 'GoogleUtilities', :modular_headers => true
|
||||||
|
$RNFirebaseAsStaticFramework = true
|
||||||
|
|
||||||
use_react_native!(
|
use_react_native!(
|
||||||
:path => config[:reactNativePath],
|
:path => config[:reactNativePath],
|
||||||
:production => production,
|
:production => production,
|
||||||
|
748
ios/Podfile.lock
748
ios/Podfile.lock
File diff suppressed because it is too large
Load Diff
2
ios/de.lproj/InfoPlist.strings
Normal file
2
ios/de.lproj/InfoPlist.strings
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
"NSPhotoLibraryAddUsageDescription" = "Erlauben Sie tooot, Bilder in Ihrer Kamerarolle zu speichern";
|
||||||
|
"NSPhotoLibraryUsageDescription" = "Erlauben Sie tooot, Bilder in Ihrer Kamerarolle zu speichern";
|
@ -1,10 +1,2 @@
|
|||||||
/*
|
"NSPhotoLibraryAddUsageDescription" = "Allow tooot to save images to your camera roll";
|
||||||
InfoPlist.strings
|
"NSPhotoLibraryUsageDescription" = "Allow tooot to save images to your camera roll";
|
||||||
tooot
|
|
||||||
|
|
||||||
Created by Zheng Zhiyuan (SEBD) on 2021-04-16.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
"NSPhotoLibraryAddUsageDescription" = "Allow tooot to save an image to your camera roll";
|
|
||||||
"NSPhotoLibraryUsageDescription" = "Allow tooot to access your camera roll to attach photos or videos to your toot";
|
|
||||||
|
2
ios/it.lproj/InfoPlist.strings
Normal file
2
ios/it.lproj/InfoPlist.strings
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
"NSPhotoLibraryAddUsageDescription" = "Consentire a tooot di salvare le immagini nel rullino fotografico";
|
||||||
|
"NSPhotoLibraryUsageDescription" = "Consentire a tooot di salvare le immagini nel rullino fotografico";
|
2
ios/ko.lproj/InfoPlist.strings
Normal file
2
ios/ko.lproj/InfoPlist.strings
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
"NSPhotoLibraryAddUsageDescription" = "tooot가 이미지를 카메라 롤에 저장하도록 허용";
|
||||||
|
"NSPhotoLibraryUsageDescription" = "tooot가 이미지를 카메라 롤에 저장하도록 허용";
|
2
ios/pt-BR.lproj/InfoPlist.strings
Normal file
2
ios/pt-BR.lproj/InfoPlist.strings
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
"NSPhotoLibraryAddUsageDescription" = "Permita guardar imagens em seu rolo de câmera";
|
||||||
|
"NSPhotoLibraryUsageDescription" = "Permita guardar imagens em seu rolo de câmera";
|
3
ios/sentry.properties
Normal file
3
ios/sentry.properties
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
defaults.url=https://sentry.io/
|
||||||
|
defaults.org=tooot
|
||||||
|
defaults.project=app
|
@ -17,7 +17,6 @@
|
|||||||
5EE088C926297820007E5FEC /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5EE088CB26297820007E5FEC /* InfoPlist.strings */; };
|
5EE088C926297820007E5FEC /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5EE088CB26297820007E5FEC /* InfoPlist.strings */; };
|
||||||
5EE44DD62600124E00A9BCED /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EE44DD52600124E00A9BCED /* File.swift */; };
|
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 */; };
|
|
||||||
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 */; };
|
||||||
E3BC22F5F8ABE515E14CF199 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D878F932AF7A9974E06E461 /* ExpoModulesProvider.swift */; };
|
E3BC22F5F8ABE515E14CF199 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D878F932AF7A9974E06E461 /* ExpoModulesProvider.swift */; };
|
||||||
E613A80B28282A01003C97D6 /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = E613A80A28282A01003C97D6 /* AppDelegate.mm */; };
|
E613A80B28282A01003C97D6 /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = E613A80A28282A01003C97D6 /* AppDelegate.mm */; };
|
||||||
@ -71,13 +70,17 @@
|
|||||||
9D878F932AF7A9974E06E461 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-tooot/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
|
9D878F932AF7A9974E06E461 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-tooot/ExpoModulesProvider.swift"; 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>"; };
|
||||||
B96B72E5384D44A7B240B27E /* GoogleService-Info.plist */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "tooot/GoogleService-Info.plist"; sourceTree = "<group>"; };
|
B96B72E5384D44A7B240B27E /* GoogleService-Info.plist */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "tooot/GoogleService-Info.plist"; sourceTree = "<group>"; };
|
||||||
BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = "<group>"; };
|
|
||||||
DF8133F098604A10B0D94952 /* boop.mp3 */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = boop.mp3; path = tooot/boop.mp3; sourceTree = "<group>"; };
|
DF8133F098604A10B0D94952 /* boop.mp3 */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = boop.mp3; path = tooot/boop.mp3; sourceTree = "<group>"; };
|
||||||
E613A80A28282A01003C97D6 /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = tooot/AppDelegate.mm; sourceTree = "<group>"; };
|
E613A80A28282A01003C97D6 /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = tooot/AppDelegate.mm; sourceTree = "<group>"; };
|
||||||
E633A420281EAEAB000E540F /* ShareExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ShareExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
E633A420281EAEAB000E540F /* ShareExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ShareExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
E633A427281EAEAB000E540F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
E633A427281EAEAB000E540F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
E633A42F281EAF38000E540F /* ShareViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ShareViewController.swift; path = "../../node_modules/react-native-share-menu/ios/ShareViewController.swift"; sourceTree = "<group>"; };
|
E633A42F281EAF38000E540F /* ShareViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ShareViewController.swift; path = "../../node_modules/react-native-share-menu/ios/ShareViewController.swift"; sourceTree = "<group>"; };
|
||||||
E633A431281EB55C000E540F /* ShareExtension-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ShareExtension-Bridging-Header.h"; sourceTree = "<group>"; };
|
E633A431281EB55C000E540F /* ShareExtension-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ShareExtension-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||||
|
E69EBACA28DF282D0057EDEC /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||||
|
E69EBACB28DF283A0057EDEC /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||||
|
E69EBACC28DF28420057EDEC /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||||
|
E69EBACD28DF284D0057EDEC /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
|
||||||
|
E69EBACE28DF28560057EDEC /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||||
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
||||||
ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };
|
ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
@ -106,7 +109,6 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
E613A80A28282A01003C97D6 /* AppDelegate.mm */,
|
E613A80A28282A01003C97D6 /* AppDelegate.mm */,
|
||||||
BB2F792B24A3F905000567C9 /* Supporting */,
|
|
||||||
008F07F21AC5B25A0029DE68 /* main.jsbundle */,
|
008F07F21AC5B25A0029DE68 /* main.jsbundle */,
|
||||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
|
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
|
||||||
13B07FB51A68108700A75B9A /* Images.xcassets */,
|
13B07FB51A68108700A75B9A /* Images.xcassets */,
|
||||||
@ -183,15 +185,6 @@
|
|||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
BB2F792B24A3F905000567C9 /* Supporting */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
BB2F792C24A3F905000567C9 /* Expo.plist */,
|
|
||||||
);
|
|
||||||
name = Supporting;
|
|
||||||
path = tooot/Supporting;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
D65327D7A22EEC0BE12398D9 /* Pods */ = {
|
D65327D7A22EEC0BE12398D9 /* Pods */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@ -289,6 +282,11 @@
|
|||||||
en,
|
en,
|
||||||
Base,
|
Base,
|
||||||
"zh-Hans",
|
"zh-Hans",
|
||||||
|
de,
|
||||||
|
it,
|
||||||
|
ko,
|
||||||
|
"pt-BR",
|
||||||
|
vi,
|
||||||
);
|
);
|
||||||
mainGroup = 83CBB9F61A601CBA00E9B192;
|
mainGroup = 83CBB9F61A601CBA00E9B192;
|
||||||
productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
|
productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
|
||||||
@ -308,7 +306,6 @@
|
|||||||
files = (
|
files = (
|
||||||
5E36538325C9B8BD009F93EE /* RootViewColor.xcassets in Resources */,
|
5E36538325C9B8BD009F93EE /* RootViewColor.xcassets in Resources */,
|
||||||
5EE088C926297820007E5FEC /* InfoPlist.strings in Resources */,
|
5EE088C926297820007E5FEC /* InfoPlist.strings in Resources */,
|
||||||
BB2F792D24A3F905000567C9 /* Expo.plist in Resources */,
|
|
||||||
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
|
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
|
||||||
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
|
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
|
||||||
3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */,
|
3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */,
|
||||||
@ -341,7 +338,7 @@
|
|||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
|
shellScript = "set -e\nexport SENTRY_PROPERTIES=sentry.properties\nexport EXTRA_PACKAGER_ARGS=\"--sourcemap-output $DERIVED_FILE_DIR/main.jsbundle.map\"\nset -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\nSENTRY_CLI_PATH=\"../node_modules/@sentry/cli/bin/sentry-cli\"\n/bin/sh -c \"$WITH_ENVIRONMENT \\\"$SENTRY_CLI_PATH react-native xcode $REACT_NATIVE_XCODE\\\"\"";
|
||||||
};
|
};
|
||||||
08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = {
|
08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
@ -391,13 +388,11 @@
|
|||||||
inputPaths = (
|
inputPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-tooot/Pods-tooot-resources.sh",
|
"${PODS_ROOT}/Target Support Files/Pods-tooot/Pods-tooot-resources.sh",
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle",
|
"${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle",
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/EXUpdates/EXUpdates.bundle",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||||
);
|
);
|
||||||
name = "[CP] Copy Pods Resources";
|
name = "[CP] Copy Pods Resources";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle",
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle",
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXUpdates.bundle",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -511,6 +506,11 @@
|
|||||||
children = (
|
children = (
|
||||||
5EE088CA26297820007E5FEC /* en */,
|
5EE088CA26297820007E5FEC /* en */,
|
||||||
5EE088CD2629786B007E5FEC /* zh-Hans */,
|
5EE088CD2629786B007E5FEC /* zh-Hans */,
|
||||||
|
E69EBACA28DF282D0057EDEC /* de */,
|
||||||
|
E69EBACB28DF283A0057EDEC /* it */,
|
||||||
|
E69EBACC28DF28420057EDEC /* ko */,
|
||||||
|
E69EBACD28DF284D0057EDEC /* pt-BR */,
|
||||||
|
E69EBACE28DF28560057EDEC /* vi */,
|
||||||
);
|
);
|
||||||
name = InfoPlist.strings;
|
name = InfoPlist.strings;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>EXUpdatesAutoSetup</key>
|
|
||||||
<false/>
|
|
||||||
<key>EXUpdatesEnabled</key>
|
|
||||||
<false/>
|
|
||||||
<key>EXUpdatesSDKVersion</key>
|
|
||||||
<string>46.0.0</string>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
2
ios/vi.lproj/InfoPlist.strings
Normal file
2
ios/vi.lproj/InfoPlist.strings
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
"NSPhotoLibraryAddUsageDescription" = "Cho phép quá nhiều để lưu hình ảnh vào thư viện ảnh của bạn";
|
||||||
|
"NSPhotoLibraryUsageDescription" = "Cho phép quá nhiều để lưu hình ảnh vào thư viện ảnh của bạn";
|
@ -1,10 +1,2 @@
|
|||||||
/*
|
|
||||||
InfoPlist.strings
|
|
||||||
tooot
|
|
||||||
|
|
||||||
Created by Zheng Zhiyuan (SEBD) on 2021-04-16.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
"NSPhotoLibraryAddUsageDescription" = "允许tooot保存图片至相册";
|
"NSPhotoLibraryAddUsageDescription" = "允许tooot保存图片至相册";
|
||||||
"NSPhotoLibraryUsageDescription" = "允许tooot读取相册图片或视频,以添加嘟文附件";
|
"NSPhotoLibraryUsageDescription" = "允许tooot保存图片至相册";
|
||||||
|
83
package.json
83
package.json
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "tooot",
|
"name": "tooot",
|
||||||
"version": "4.3.2",
|
"version": "4.3.3",
|
||||||
"description": "tooot app for Mastodon",
|
"description": "tooot app for Mastodon",
|
||||||
"author": "xmflsct <me@xmflsct.com>",
|
"author": "xmflsct <me@xmflsct.com>",
|
||||||
"license": "GPL-3.0-or-later",
|
"license": "GPL-3.0-or-later",
|
||||||
@ -11,44 +11,43 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "react-native start",
|
"start": "react-native start",
|
||||||
"android": "react-native run-android",
|
"android": "react-native run-android",
|
||||||
"iphone": "react-native run-ios",
|
"iphone": "react-native run-ios --simulator 'iPhone 14 Pro'",
|
||||||
"ipad": "react-native run-ios --simulator 'iPad mini (6th generation)'",
|
"ipad": "react-native run-ios --simulator 'iPad Pro (11-inch) (3rd generation)'",
|
||||||
"app:build": "bundle exec fastlane",
|
"app:build": "bundle exec fastlane",
|
||||||
"clean": "react-native-clean-project",
|
"clean": "react-native-clean-project",
|
||||||
"postinstall": "patch-package"
|
"postinstall": "patch-package"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@expo/react-native-action-sheet": "^3.13.0",
|
"@expo/react-native-action-sheet": "^3.13.0",
|
||||||
"@formatjs/intl-datetimeformat": "^6.0.3",
|
"@formatjs/intl-datetimeformat": "^6.2.0",
|
||||||
"@formatjs/intl-getcanonicallocales": "^2.0.2",
|
"@formatjs/intl-getcanonicallocales": "^2.0.4",
|
||||||
"@formatjs/intl-locale": "^3.0.3",
|
"@formatjs/intl-locale": "^3.0.6",
|
||||||
"@formatjs/intl-numberformat": "^8.0.4",
|
"@formatjs/intl-numberformat": "^8.1.3",
|
||||||
"@formatjs/intl-pluralrules": "^5.0.3",
|
"@formatjs/intl-pluralrules": "^5.1.3",
|
||||||
"@formatjs/intl-relativetimeformat": "^11.0.3",
|
"@formatjs/intl-relativetimeformat": "^11.1.3",
|
||||||
"@mattermost/react-native-paste-input": "^0.5.0",
|
"@mattermost/react-native-paste-input": "^0.5.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.17.9",
|
"@react-native-async-storage/async-storage": "^1.17.10",
|
||||||
"@react-native-clipboard/clipboard": "^1.10.0",
|
"@react-native-clipboard/clipboard": "^1.11.1",
|
||||||
"@react-native-community/blur": "^4.2.0",
|
"@react-native-community/blur": "^4.2.0",
|
||||||
"@react-native-community/cameraroll": "^4.1.2",
|
"@react-native-community/cameraroll": "^4.1.2",
|
||||||
"@react-native-community/netinfo": "^9.3.0",
|
"@react-native-community/netinfo": "^9.3.1",
|
||||||
"@react-native-community/segmented-control": "^2.2.2",
|
"@react-native-community/segmented-control": "^2.2.2",
|
||||||
"@react-navigation/bottom-tabs": "^6.3.2",
|
"@react-navigation/bottom-tabs": "^6.4.0",
|
||||||
"@react-navigation/native": "^6.0.11",
|
"@react-navigation/native": "^6.0.13",
|
||||||
"@react-navigation/native-stack": "^6.7.0",
|
"@react-navigation/native-stack": "^6.9.0",
|
||||||
"@react-navigation/stack": "^6.2.2",
|
"@react-navigation/stack": "^6.3.1",
|
||||||
"@reduxjs/toolkit": "^1.8.4",
|
"@reduxjs/toolkit": "^1.8.5",
|
||||||
"@sentry/react-native": "^4.2.4",
|
"@sentry/react-native": "^4.4.0",
|
||||||
"@sharcoux/slider": "^6.0.3",
|
"@sharcoux/slider": "^6.0.3",
|
||||||
"axios": "^0.27.2",
|
"axios": "^0.27.2",
|
||||||
"expo": "^46.0.8",
|
"expo": "^46.0.10",
|
||||||
"expo-auth-session": "^3.7.1",
|
"expo-auth-session": "^3.7.1",
|
||||||
"expo-av": "^12.0.4",
|
"expo-av": "^12.0.4",
|
||||||
"expo-constants": "^13.2.3",
|
"expo-constants": "^13.2.4",
|
||||||
"expo-crypto": "^11.0.0",
|
"expo-crypto": "^11.0.0",
|
||||||
"expo-device": "^4.3.0",
|
|
||||||
"expo-file-system": "^14.1.0",
|
"expo-file-system": "^14.1.0",
|
||||||
"expo-firebase-analytics": "^7.1.1",
|
"expo-firebase-analytics": "^7.2.0",
|
||||||
"expo-haptics": "^11.3.0",
|
"expo-haptics": "^11.3.0",
|
||||||
"expo-linking": "^3.2.2",
|
"expo-linking": "^3.2.2",
|
||||||
"expo-localization": "^13.1.0",
|
"expo-localization": "^13.1.0",
|
||||||
@ -56,57 +55,55 @@
|
|||||||
"expo-random": "^12.3.0",
|
"expo-random": "^12.3.0",
|
||||||
"expo-screen-capture": "^4.3.0",
|
"expo-screen-capture": "^4.3.0",
|
||||||
"expo-secure-store": "^11.3.0",
|
"expo-secure-store": "^11.3.0",
|
||||||
"expo-splash-screen": "^0.16.1",
|
"expo-splash-screen": "^0.16.2",
|
||||||
"expo-store-review": "^5.3.0",
|
"expo-store-review": "^5.3.0",
|
||||||
"expo-updates": "^0.14.5",
|
|
||||||
"expo-video-thumbnails": "^6.4.0",
|
"expo-video-thumbnails": "^6.4.0",
|
||||||
"expo-web-browser": "^11.0.0",
|
"expo-web-browser": "^11.0.0",
|
||||||
"i18next": "^21.9.1",
|
"i18next": "^21.9.2",
|
||||||
"li": "^1.3.0",
|
"li": "^1.3.0",
|
||||||
"linkify-it": "^4.0.1",
|
"linkify-it": "^4.0.1",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"react-i18next": "^11.18.4",
|
"react-i18next": "^11.18.6",
|
||||||
"react-intl": "^6.0.5",
|
"react-intl": "^6.1.1",
|
||||||
"react-native": "^0.69.4",
|
"react-native": "^0.69.4",
|
||||||
"react-native-animated-spinkit": "^1.5.2",
|
"react-native-animated-spinkit": "^1.5.2",
|
||||||
"react-native-base64": "^0.2.1",
|
"react-native-base64": "^0.2.1",
|
||||||
"react-native-blurhash": "^1.1.10",
|
"react-native-blurhash": "^1.1.10",
|
||||||
"react-native-context-menu-view": "xmflsct/react-native-context-menu-view",
|
"react-native-context-menu-view": "xmflsct/react-native-context-menu-view",
|
||||||
"react-native-fast-image": "^8.5.11",
|
"react-native-fast-image": "^8.6.1",
|
||||||
"react-native-feather": "^1.1.2",
|
"react-native-feather": "^1.1.2",
|
||||||
"react-native-flash-message": "^0.3.1",
|
"react-native-flash-message": "^0.3.1",
|
||||||
"react-native-gesture-handler": "^2.5.0",
|
"react-native-gesture-handler": "^2.6.2",
|
||||||
"react-native-htmlview": "^0.16.0",
|
"react-native-htmlview": "^0.16.0",
|
||||||
"react-native-image-picker": "^4.8.5",
|
"react-native-image-picker": "^4.10.0",
|
||||||
"react-native-language-detection": "^0.1.0",
|
"react-native-language-detection": "^0.1.0",
|
||||||
"react-native-pager-view": "^5.4.25",
|
"react-native-pager-view": "^6.0.0",
|
||||||
"react-native-reanimated": "^2.9.1",
|
"react-native-reanimated": "^2.10.0",
|
||||||
"react-native-reanimated-zoom": "^0.3.0",
|
"react-native-reanimated-zoom": "^0.3.1",
|
||||||
"react-native-safe-area-context": "^4.3.1",
|
"react-native-safe-area-context": "^4.3.4",
|
||||||
"react-native-screens": "^3.16.0",
|
"react-native-screens": "^3.17.0",
|
||||||
"react-native-share-menu": "^6.0.0",
|
"react-native-share-menu": "^6.0.0",
|
||||||
"react-native-svg": "^13.0.0",
|
"react-native-svg": "13.0.0",
|
||||||
"react-native-swipe-list-view": "^3.2.9",
|
"react-native-swipe-list-view": "^3.2.9",
|
||||||
"react-native-tab-view": "^3.1.1",
|
"react-native-tab-view": "^3.1.1",
|
||||||
"react-query": "^3.39.2",
|
"react-query": "^3.39.2",
|
||||||
"react-redux": "^8.0.2",
|
"react-redux": "^8.0.4",
|
||||||
"redux-persist": "^6.0.0",
|
"redux-persist": "^6.0.0",
|
||||||
"rn-placeholder": "^3.0.3",
|
"rn-placeholder": "^3.0.3",
|
||||||
"sentry-expo": "^5.0.2",
|
|
||||||
"tslib": "^2.4.0",
|
"tslib": "^2.4.0",
|
||||||
"valid-url": "^1.0.9"
|
"valid-url": "^1.0.9"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.18.10",
|
"@babel/core": "^7.19.1",
|
||||||
"@babel/plugin-proposal-optional-chaining": "^7.18.9",
|
"@babel/plugin-proposal-optional-chaining": "^7.18.9",
|
||||||
"@babel/preset-react": "^7.18.6",
|
"@babel/preset-react": "^7.18.6",
|
||||||
"@babel/preset-typescript": "^7.18.6",
|
"@babel/preset-typescript": "^7.18.6",
|
||||||
"@expo/config": "^7.0.1",
|
"@expo/config": "^7.0.1",
|
||||||
"@types/linkify-it": "^3.0.2",
|
"@types/linkify-it": "^3.0.2",
|
||||||
"@types/lodash": "^4.14.184",
|
"@types/lodash": "^4.14.185",
|
||||||
"@types/react": "^18.0.17",
|
"@types/react": "^18.0.21",
|
||||||
"@types/react-dom": "^18.0.6",
|
"@types/react-dom": "^18.0.6",
|
||||||
"@types/react-native": "^0.69.5",
|
"@types/react-native": "^0.69.5",
|
||||||
"@types/react-native-base64": "^0.2.0",
|
"@types/react-native-base64": "^0.2.0",
|
||||||
@ -117,10 +114,10 @@
|
|||||||
"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.2",
|
"chalk": "^4.1.2",
|
||||||
"dotenv": "^16.0.1",
|
"dotenv": "^16.0.2",
|
||||||
"patch-package": "^6.4.7",
|
"patch-package": "^6.4.7",
|
||||||
"postinstall-postinstall": "^2.1.0",
|
"postinstall-postinstall": "^2.1.0",
|
||||||
"react-native-clean-project": "^4.0.1",
|
"react-native-clean-project": "^4.0.1",
|
||||||
"typescript": "^4.7.4"
|
"typescript": "^4.8.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
51
patches/@sentry+react-native+4.4.0.patch
Normal file
51
patches/@sentry+react-native+4.4.0.patch
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
diff --git a/node_modules/@sentry/react-native/ios/RNSentry.h b/node_modules/@sentry/react-native/ios/RNSentry.h
|
||||||
|
index 6f7df58..84b50c9 100644
|
||||||
|
--- a/node_modules/@sentry/react-native/ios/RNSentry.h
|
||||||
|
+++ b/node_modules/@sentry/react-native/ios/RNSentry.h
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
#if __has_include(<React/RCTBridge.h>)
|
||||||
|
#import <React/RCTBridge.h>
|
||||||
|
#else
|
||||||
|
-#import "RCTBridge.h"
|
||||||
|
+#import <React/RCTBridge.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@interface RNSentry : NSObject <RCTBridgeModule>
|
||||||
|
diff --git a/node_modules/@sentry/react-native/ios/RNSentry.m b/node_modules/@sentry/react-native/ios/RNSentry.m
|
||||||
|
index 32a6087..003a001 100644
|
||||||
|
--- a/node_modules/@sentry/react-native/ios/RNSentry.m
|
||||||
|
+++ b/node_modules/@sentry/react-native/ios/RNSentry.m
|
||||||
|
@@ -3,7 +3,7 @@
|
||||||
|
#if __has_include(<React/RCTConvert.h>)
|
||||||
|
#import <React/RCTConvert.h>
|
||||||
|
#else
|
||||||
|
-#import "RCTConvert.h"
|
||||||
|
+#import <React/RCTConvert.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#import <Sentry/Sentry.h>
|
||||||
|
diff --git a/node_modules/@sentry/react-native/react-native.config.js b/node_modules/@sentry/react-native/react-native.config.js
|
||||||
|
index f85fa01..053999b 100644
|
||||||
|
--- a/node_modules/@sentry/react-native/react-native.config.js
|
||||||
|
+++ b/node_modules/@sentry/react-native/react-native.config.js
|
||||||
|
@@ -1,18 +1,10 @@
|
||||||
|
module.exports = {
|
||||||
|
dependency: {
|
||||||
|
platforms: {
|
||||||
|
- ios: {
|
||||||
|
- sharedLibraries: ['libz']
|
||||||
|
- },
|
||||||
|
+ ios: {},
|
||||||
|
android: {
|
||||||
|
packageInstance: 'new RNSentryPackage()'
|
||||||
|
}
|
||||||
|
- },
|
||||||
|
- hooks: {
|
||||||
|
- postlink:
|
||||||
|
- 'node node_modules/@sentry/wizard/dist/bin.js -i reactNative -p ios android',
|
||||||
|
- postunlink:
|
||||||
|
- 'node node_modules/@sentry/wizard/dist/bin.js -i reactNative -p ios android --uninstall'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
\ No newline at end of file
|
@ -1,13 +0,0 @@
|
|||||||
diff --git a/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt b/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt
|
|
||||||
index 55e08c2..dee876b 100644
|
|
||||||
--- a/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt
|
|
||||||
+++ b/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt
|
|
||||||
@@ -165,7 +165,7 @@ open class ScreenContainer<T : ScreenFragment>(context: Context?) : ViewGroup(co
|
|
||||||
try {
|
|
||||||
FragmentManager.findFragment<Fragment>(rootView).childFragmentManager
|
|
||||||
} catch (ex: IllegalStateException) {
|
|
||||||
- throw IllegalStateException("Failed to find fragment for React Root View")
|
|
||||||
+ context.supportFragmentManager
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
11
src/App.tsx
11
src/App.tsx
@ -10,11 +10,9 @@ import push from '@root/startup/push'
|
|||||||
import sentry from '@root/startup/sentry'
|
import sentry from '@root/startup/sentry'
|
||||||
import timezone from '@root/startup/timezone'
|
import timezone from '@root/startup/timezone'
|
||||||
import { persistor, store } from '@root/store'
|
import { persistor, store } from '@root/store'
|
||||||
|
import * as Sentry from '@sentry/react-native'
|
||||||
import AccessibilityManager from '@utils/accessibility/AccessibilityManager'
|
import AccessibilityManager from '@utils/accessibility/AccessibilityManager'
|
||||||
import {
|
import { changeLanguage, getSettingsLanguage } from '@utils/slices/settingsSlice'
|
||||||
changeLanguage,
|
|
||||||
getSettingsLanguage
|
|
||||||
} from '@utils/slices/settingsSlice'
|
|
||||||
import ThemeManager from '@utils/styles/ThemeManager'
|
import ThemeManager from '@utils/styles/ThemeManager'
|
||||||
import * as SplashScreen from 'expo-splash-screen'
|
import * as SplashScreen from 'expo-splash-screen'
|
||||||
import React, { useCallback, useEffect, useState } from 'react'
|
import React, { useCallback, useEffect, useState } from 'react'
|
||||||
@ -24,7 +22,6 @@ import { enableFreeze } from 'react-native-screens'
|
|||||||
import { QueryClientProvider } from 'react-query'
|
import { QueryClientProvider } from 'react-query'
|
||||||
import { Provider } from 'react-redux'
|
import { Provider } from 'react-redux'
|
||||||
import { PersistGate } from 'redux-persist/integration/react'
|
import { PersistGate } from 'redux-persist/integration/react'
|
||||||
import * as Sentry from 'sentry-expo'
|
|
||||||
|
|
||||||
Platform.select({
|
Platform.select({
|
||||||
android: LogBox.ignoreLogs(['Setting a timer for a long period of time'])
|
android: LogBox.ignoreLogs(['Setting a timer for a long period of time'])
|
||||||
@ -93,7 +90,6 @@ const App: React.FC = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Sentry.Native.TouchEventBoundary>
|
|
||||||
<ActionSheetProvider>
|
<ActionSheetProvider>
|
||||||
<AccessibilityManager>
|
<AccessibilityManager>
|
||||||
<ThemeManager>
|
<ThemeManager>
|
||||||
@ -101,7 +97,6 @@ const App: React.FC = () => {
|
|||||||
</ThemeManager>
|
</ThemeManager>
|
||||||
</AccessibilityManager>
|
</AccessibilityManager>
|
||||||
</ActionSheetProvider>
|
</ActionSheetProvider>
|
||||||
</Sentry.Native.TouchEventBoundary>
|
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
return null
|
return null
|
||||||
@ -114,4 +109,4 @@ const App: React.FC = () => {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default React.memo(App, () => true)
|
export default Sentry.wrap(App)
|
||||||
|
@ -10,6 +10,7 @@ import ScreenAnnouncements from '@screens/Announcements'
|
|||||||
import ScreenCompose from '@screens/Compose'
|
import ScreenCompose from '@screens/Compose'
|
||||||
import ScreenImagesViewer from '@screens/ImagesViewer'
|
import ScreenImagesViewer from '@screens/ImagesViewer'
|
||||||
import ScreenTabs from '@screens/Tabs'
|
import ScreenTabs from '@screens/Tabs'
|
||||||
|
import * as Sentry from '@sentry/react-native'
|
||||||
import initQuery from '@utils/initQuery'
|
import initQuery from '@utils/initQuery'
|
||||||
import { RootStackParamList } from '@utils/navigation/navigators'
|
import { RootStackParamList } from '@utils/navigation/navigators'
|
||||||
import pushUseConnect from '@utils/push/useConnect'
|
import pushUseConnect from '@utils/push/useConnect'
|
||||||
@ -31,7 +32,6 @@ import { IntlProvider } from 'react-intl'
|
|||||||
import { Alert, Platform, StatusBar } from 'react-native'
|
import { Alert, Platform, StatusBar } from 'react-native'
|
||||||
import ShareMenu from 'react-native-share-menu'
|
import ShareMenu from 'react-native-share-menu'
|
||||||
import { useSelector } from 'react-redux'
|
import { useSelector } from 'react-redux'
|
||||||
import * as Sentry from 'sentry-expo'
|
|
||||||
import { useAppDispatch } from './store'
|
import { useAppDispatch } from './store'
|
||||||
|
|
||||||
const Stack = createNativeStackNavigator<RootStackParamList>()
|
const Stack = createNativeStackNavigator<RootStackParamList>()
|
||||||
@ -49,10 +49,7 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
|
|||||||
const routeRef = useRef<{ name?: string; params?: {} }>()
|
const routeRef = useRef<{ name?: string; params?: {} }>()
|
||||||
|
|
||||||
// Push hooks
|
// Push hooks
|
||||||
const instances = useSelector(
|
const instances = useSelector(getInstances, (prev, next) => prev.length === next.length)
|
||||||
getInstances,
|
|
||||||
(prev, next) => prev.length === next.length
|
|
||||||
)
|
|
||||||
pushUseConnect({ t, instances })
|
pushUseConnect({ t, instances })
|
||||||
pushUseReceive({ instances })
|
pushUseReceive({ instances })
|
||||||
pushUseRespond({ instances })
|
pushUseRespond({ instances })
|
||||||
@ -102,9 +99,7 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
|
|||||||
const currentRoute = navigationRef.getCurrentRoute()
|
const currentRoute = navigationRef.getCurrentRoute()
|
||||||
routeRef.current = {
|
routeRef.current = {
|
||||||
name: currentRoute?.name,
|
name: currentRoute?.name,
|
||||||
params: currentRoute?.params
|
params: currentRoute?.params ? JSON.stringify(currentRoute.params) : undefined
|
||||||
? JSON.stringify(currentRoute.params)
|
|
||||||
: undefined
|
|
||||||
}
|
}
|
||||||
}, [])
|
}, [])
|
||||||
const navigationContainerOnStateChange = useCallback(() => {
|
const navigationContainerOnStateChange = useCallback(() => {
|
||||||
@ -119,7 +114,7 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
|
|||||||
|
|
||||||
if (previousRoute?.name !== currentRoute?.name) {
|
if (previousRoute?.name !== currentRoute?.name) {
|
||||||
analytics('screen_view', { screen_name: currentRoute?.name })
|
analytics('screen_view', { screen_name: currentRoute?.name })
|
||||||
Sentry.Native.setContext('page', {
|
Sentry.setContext('page', {
|
||||||
previous: previousRoute,
|
previous: previousRoute,
|
||||||
current: currentRoute
|
current: currentRoute
|
||||||
})
|
})
|
||||||
@ -316,9 +311,7 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
|
|||||||
headerShadowVisible: false,
|
headerShadowVisible: false,
|
||||||
headerTransparent: true,
|
headerTransparent: true,
|
||||||
headerStyle: { backgroundColor: 'transparent' },
|
headerStyle: { backgroundColor: 'transparent' },
|
||||||
headerLeft: () => (
|
headerLeft: () => <HeaderLeft content='X' onPress={() => navigation.goBack()} />,
|
||||||
<HeaderLeft content='X' onPress={() => navigation.goBack()} />
|
|
||||||
),
|
|
||||||
title: t('screenAnnouncements:heading')
|
title: t('screenAnnouncements:heading')
|
||||||
})}
|
})}
|
||||||
/>
|
/>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
import * as Sentry from '@sentry/react-native'
|
||||||
import { mapEnvironment } from '@utils/checkEnvironment'
|
import { mapEnvironment } from '@utils/checkEnvironment'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import Constants from 'expo-constants'
|
import Constants from 'expo-constants'
|
||||||
import * as Sentry from 'sentry-expo'
|
|
||||||
import handleError, { ctx } from './handleError'
|
import handleError, { ctx } from './handleError'
|
||||||
|
|
||||||
export type Params = {
|
export type Params = {
|
||||||
@ -65,12 +65,12 @@ const apiTooot = async <T = unknown>({
|
|||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
if (sentry) {
|
if (sentry) {
|
||||||
Sentry.Native.setExtras({
|
Sentry.setExtras({
|
||||||
API: 'tooot',
|
API: 'tooot',
|
||||||
...(error?.response && { response: error.response }),
|
...(error?.response && { response: error.response }),
|
||||||
...(error?.request && { request: error.request })
|
...(error?.request && { request: error.request })
|
||||||
})
|
})
|
||||||
Sentry.Native.captureException(error)
|
Sentry.captureException(error)
|
||||||
}
|
}
|
||||||
|
|
||||||
return handleError(error)
|
return handleError(error)
|
||||||
|
@ -7,6 +7,7 @@ import haptics from '@root/components/haptics'
|
|||||||
import { useAppDispatch } from '@root/store'
|
import { useAppDispatch } from '@root/store'
|
||||||
import formatText from '@screens/Compose/formatText'
|
import formatText from '@screens/Compose/formatText'
|
||||||
import ComposeRoot from '@screens/Compose/Root'
|
import ComposeRoot from '@screens/Compose/Root'
|
||||||
|
import * as Sentry from '@sentry/react-native'
|
||||||
import { RootStackScreenProps } from '@utils/navigation/navigators'
|
import { RootStackScreenProps } from '@utils/navigation/navigators'
|
||||||
import { QueryKeyTimeline, useTimelineMutation } from '@utils/queryHooks/timeline'
|
import { QueryKeyTimeline, useTimelineMutation } from '@utils/queryHooks/timeline'
|
||||||
import { updateStoreReview } from '@utils/slices/contextsSlice'
|
import { updateStoreReview } from '@utils/slices/contextsSlice'
|
||||||
@ -24,7 +25,6 @@ import { useTranslation } from 'react-i18next'
|
|||||||
import { Alert, Keyboard, Platform } from 'react-native'
|
import { Alert, Keyboard, Platform } from 'react-native'
|
||||||
import { useQueryClient } from 'react-query'
|
import { useQueryClient } from 'react-query'
|
||||||
import { useSelector } from 'react-redux'
|
import { useSelector } from 'react-redux'
|
||||||
import * as Sentry from 'sentry-expo'
|
|
||||||
import ComposeDraftsList from './Compose/DraftsList'
|
import ComposeDraftsList from './Compose/DraftsList'
|
||||||
import ComposeEditAttachment from './Compose/EditAttachment'
|
import ComposeEditAttachment from './Compose/EditAttachment'
|
||||||
import { uploadAttachment } from './Compose/Root/Footer/addAttachment'
|
import { uploadAttachment } from './Compose/Root/Footer/addAttachment'
|
||||||
@ -326,7 +326,7 @@ const ScreenCompose: React.FC<RootStackScreenProps<'Screen-Compose'>> = ({
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
Sentry.Native.captureMessage('Compose posting', {
|
Sentry.captureMessage('Compose posting', {
|
||||||
contexts: { errorObject: error }
|
contexts: { errorObject: error }
|
||||||
})
|
})
|
||||||
haptics('Error')
|
haptics('Error')
|
||||||
|
@ -7,6 +7,7 @@ import { persistor } from '@root/store'
|
|||||||
import { getInstanceActive, getInstances } from '@utils/slices/instancesSlice'
|
import { getInstanceActive, getInstances } from '@utils/slices/instancesSlice'
|
||||||
import { StyleConstants } from '@utils/styles/constants'
|
import { StyleConstants } from '@utils/styles/constants'
|
||||||
import { useTheme } from '@utils/styles/ThemeManager'
|
import { useTheme } from '@utils/styles/ThemeManager'
|
||||||
|
import * as Localization from 'expo-localization'
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import { DevSettings } from 'react-native'
|
import { DevSettings } from 'react-native'
|
||||||
import { useSelector } from 'react-redux'
|
import { useSelector } from 'react-redux'
|
||||||
@ -19,6 +20,16 @@ const SettingsDev: React.FC = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<MenuContainer>
|
<MenuContainer>
|
||||||
|
<CustomText
|
||||||
|
fontStyle='S'
|
||||||
|
selectable
|
||||||
|
style={{
|
||||||
|
paddingHorizontal: StyleConstants.Spacing.Global.PagePadding,
|
||||||
|
color: colors.primaryDefault
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{JSON.stringify(Localization.locales)}
|
||||||
|
</CustomText>
|
||||||
<CustomText
|
<CustomText
|
||||||
fontStyle='S'
|
fontStyle='S'
|
||||||
selectable
|
selectable
|
||||||
|
@ -1,12 +1,18 @@
|
|||||||
import * as Sentry from 'sentry-expo'
|
import * as Sentry from "@sentry/react-native";
|
||||||
|
import { isDevelopment } from "@utils/checkEnvironment";
|
||||||
import log from './log'
|
import log from './log'
|
||||||
|
|
||||||
const sentry = () => {
|
const sentry = () => {
|
||||||
log('log', 'Sentry', 'initializing')
|
log('log', 'Sentry', 'initializing')
|
||||||
Sentry.init({
|
Sentry.init({
|
||||||
// @ts-ignore
|
enabled: !isDevelopment,
|
||||||
dsn: 'https://53348b60ff844d52886e90251b3a5f41@o917354.ingest.sentry.io/6410576',
|
dsn: 'https://53348b60ff844d52886e90251b3a5f41@o917354.ingest.sentry.io/6410576',
|
||||||
enableInExpoDevelopment: false,
|
tracesSampleRate: 0.35,
|
||||||
|
integrations: [
|
||||||
|
new Sentry.ReactNativeTracing({
|
||||||
|
tracingOrigins: ["tooot.app"],
|
||||||
|
}),
|
||||||
|
],
|
||||||
autoSessionTracking: true
|
autoSessionTracking: true
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user