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:
|
||||
DEVELOPER_DIR: /Applications/Xcode_13.4.1.app/Contents/Developer
|
||||
ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
||||
SENTRY_ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
||||
LC_ALL: en_US.UTF-8
|
||||
LANG: en_US.UTF-8
|
||||
SENTRY_ORGANIZATION: ${{ secrets.SENTRY_ORGANIZATION }}
|
||||
@ -67,6 +68,7 @@ jobs:
|
||||
- name: -- Step 6 -- Run fastlane
|
||||
env:
|
||||
ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
||||
SENTRY_ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
||||
LC_ALL: en_US.UTF-8
|
||||
LANG: en_US.UTF-8
|
||||
ANDROID_KEYSTORE: ${{ secrets.ANDROID_KEYSTORE }}
|
||||
@ -103,6 +105,7 @@ jobs:
|
||||
- name: -- Step 6 -- Run fastlane
|
||||
env:
|
||||
ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
||||
SENTRY_ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
||||
LC_ALL: en_US.UTF-8
|
||||
LANG: en_US.UTF-8
|
||||
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:
|
||||
CFPropertyList (3.0.5)
|
||||
rexml
|
||||
activesupport (6.1.5)
|
||||
activesupport (6.1.7)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 1.6, < 2)
|
||||
minitest (>= 5.1)
|
||||
tzinfo (~> 2.0)
|
||||
zeitwerk (~> 2.3)
|
||||
addressable (2.8.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
addressable (2.8.1)
|
||||
public_suffix (>= 2.0.2, < 6.0)
|
||||
algoliasearch (1.27.5)
|
||||
httpclient (~> 2.8, >= 2.8.3)
|
||||
json (>= 1.5.1)
|
||||
artifactory (3.0.15)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.2.0)
|
||||
aws-partitions (1.618.0)
|
||||
aws-sdk-core (3.132.0)
|
||||
aws-partitions (1.636.0)
|
||||
aws-sdk-core (3.154.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
aws-partitions (~> 1, >= 1.525.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
@ -86,8 +86,8 @@ GEM
|
||||
escape (0.0.4)
|
||||
ethon (0.15.0)
|
||||
ffi (>= 1.15.0)
|
||||
excon (0.92.4)
|
||||
faraday (1.10.1)
|
||||
excon (0.92.5)
|
||||
faraday (1.10.2)
|
||||
faraday-em_http (~> 1.0)
|
||||
faraday-em_synchrony (~> 1.0)
|
||||
faraday-excon (~> 1.1)
|
||||
@ -116,7 +116,7 @@ GEM
|
||||
faraday_middleware (1.2.0)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.2.6)
|
||||
fastlane (2.209.0)
|
||||
fastlane (2.210.1)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
addressable (>= 2.8, < 3.0.0)
|
||||
artifactory (~> 3.0)
|
||||
@ -156,16 +156,17 @@ GEM
|
||||
xcpretty (~> 0.3.0)
|
||||
xcpretty-travis-formatter (>= 0.0.3)
|
||||
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-yarn (1.2)
|
||||
ffi (1.15.5)
|
||||
fourflusher (2.3.1)
|
||||
fuzzy_match (2.0.4)
|
||||
gh_inspector (1.1.3)
|
||||
google-apis-androidpublisher_v3 (0.25.0)
|
||||
google-apis-core (>= 0.7, < 2.a)
|
||||
google-apis-core (0.7.0)
|
||||
google-apis-androidpublisher_v3 (0.27.0)
|
||||
google-apis-core (>= 0.7.2, < 2.a)
|
||||
google-apis-core (0.9.0)
|
||||
addressable (~> 2.5, >= 2.5.1)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
httpclient (>= 2.8.1, < 3.a)
|
||||
@ -174,8 +175,8 @@ GEM
|
||||
retriable (>= 2.0, < 4.a)
|
||||
rexml
|
||||
webrick
|
||||
google-apis-iamcredentials_v1 (0.13.0)
|
||||
google-apis-core (>= 0.7, < 2.a)
|
||||
google-apis-iamcredentials_v1 (0.14.0)
|
||||
google-apis-core (>= 0.7.2, < 2.a)
|
||||
google-apis-playcustomapp_v1 (0.10.0)
|
||||
google-apis-core (>= 0.7, < 2.a)
|
||||
google-apis-storage_v1 (0.17.0)
|
||||
@ -185,8 +186,8 @@ GEM
|
||||
google-cloud-errors (~> 1.0)
|
||||
google-cloud-env (1.6.0)
|
||||
faraday (>= 0.17.3, < 3.0)
|
||||
google-cloud-errors (1.2.0)
|
||||
google-cloud-storage (1.38.0)
|
||||
google-cloud-errors (1.3.0)
|
||||
google-cloud-storage (1.42.0)
|
||||
addressable (~> 2.8)
|
||||
digest-crc (~> 0.4)
|
||||
google-apis-iamcredentials_v1 (~> 0.1)
|
||||
@ -205,15 +206,15 @@ GEM
|
||||
http-cookie (1.0.5)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.8.3)
|
||||
i18n (1.10.0)
|
||||
i18n (1.12.0)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jmespath (1.6.1)
|
||||
json (2.6.2)
|
||||
jwt (2.4.1)
|
||||
jwt (2.5.0)
|
||||
memoist (0.16.2)
|
||||
mini_magick (4.11.0)
|
||||
mini_mime (1.1.2)
|
||||
minitest (5.15.0)
|
||||
minitest (5.16.3)
|
||||
molinillo (0.8.0)
|
||||
multi_json (1.15.0)
|
||||
multipart-post (2.0.0)
|
||||
@ -255,7 +256,7 @@ GEM
|
||||
tty-cursor (~> 0.7)
|
||||
typhoeus (1.4.0)
|
||||
ethon (>= 0.9.0)
|
||||
tzinfo (2.0.4)
|
||||
tzinfo (2.0.5)
|
||||
concurrent-ruby (~> 1.0)
|
||||
uber (0.1.0)
|
||||
unf (0.1.4)
|
||||
@ -275,7 +276,7 @@ GEM
|
||||
rouge (~> 2.0.7)
|
||||
xcpretty-travis-formatter (1.0.1)
|
||||
xcpretty (~> 0.2, >= 0.0.7)
|
||||
zeitwerk (2.5.4)
|
||||
zeitwerk (2.6.0)
|
||||
|
||||
PLATFORMS
|
||||
universal-darwin-20
|
||||
|
@ -1,8 +1,8 @@
|
||||
# [tooot](https://tooot.app/) app for Mastodon
|
||||
|
||||
[](LICENSE)    [](https://crowdin.tooot.app/project/tooot)
|
||||
[](LICENSE)   [](https://crowdin.tooot.app/project/tooot)
|
||||
|
||||
  
|
||||
 
|
||||
|
||||
## Contribute to translation
|
||||
|
||||
|
@ -13,9 +13,6 @@
|
||||
<!-- [Custom] Expo Notifications -->
|
||||
<meta-data android:name="expo.modules.notifications.default_notification_icon" android:resource="@drawable/ic_stat_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">
|
||||
<intent-filter>
|
||||
<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,
|
||||
extra: { environment: process.env.ENVIRONMENT },
|
||||
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',
|
||||
ios: {
|
||||
bundleIdentifier: 'com.xmflsct.app.tooot'
|
||||
|
@ -1,5 +1,3 @@
|
||||
languages(['de-DE', 'en-US', 'it', 'ko', 'pt-BR', 'vi', 'zh-Hans'])
|
||||
|
||||
name({
|
||||
'default' => "tooot"
|
||||
})
|
||||
|
@ -8,7 +8,6 @@ GITHUB_REPO = "tooot-app/app"
|
||||
|
||||
XCODEPROJ = "./ios/tooot.xcodeproj"
|
||||
INFO_PLIST = "./ios/tooot/Info.plist"
|
||||
EXPO_PLIST = "./ios/tooot/Supporting/Expo.plist"
|
||||
|
||||
desc "ANDROID: Prepare play store"
|
||||
private_lane :prepare_playstore_android do
|
||||
@ -36,6 +35,7 @@ private_lane :build_ios do
|
||||
build_ios_app(
|
||||
export_method: "app-store",
|
||||
include_symbols: true,
|
||||
include_bitcode: true,
|
||||
output_directory: BUILD_DIRECTORY,
|
||||
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 = 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!(
|
||||
:path => config[:reactNativePath],
|
||||
: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 @@
|
||||
/*
|
||||
InfoPlist.strings
|
||||
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";
|
||||
"NSPhotoLibraryAddUsageDescription" = "Allow tooot to save images to your camera roll";
|
||||
"NSPhotoLibraryUsageDescription" = "Allow tooot to save images to your camera roll";
|
||||
|
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 */; };
|
||||
5EE44DD62600124E00A9BCED /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EE44DD52600124E00A9BCED /* File.swift */; };
|
||||
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 */; };
|
||||
E3BC22F5F8ABE515E14CF199 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D878F932AF7A9974E06E461 /* ExpoModulesProvider.swift */; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
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; };
|
||||
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>"; };
|
||||
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; };
|
||||
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 */
|
||||
@ -106,7 +109,6 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E613A80A28282A01003C97D6 /* AppDelegate.mm */,
|
||||
BB2F792B24A3F905000567C9 /* Supporting */,
|
||||
008F07F21AC5B25A0029DE68 /* main.jsbundle */,
|
||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
|
||||
13B07FB51A68108700A75B9A /* Images.xcassets */,
|
||||
@ -183,15 +185,6 @@
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BB2F792B24A3F905000567C9 /* Supporting */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
BB2F792C24A3F905000567C9 /* Expo.plist */,
|
||||
);
|
||||
name = Supporting;
|
||||
path = tooot/Supporting;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D65327D7A22EEC0BE12398D9 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@ -289,6 +282,11 @@
|
||||
en,
|
||||
Base,
|
||||
"zh-Hans",
|
||||
de,
|
||||
it,
|
||||
ko,
|
||||
"pt-BR",
|
||||
vi,
|
||||
);
|
||||
mainGroup = 83CBB9F61A601CBA00E9B192;
|
||||
productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
|
||||
@ -308,7 +306,6 @@
|
||||
files = (
|
||||
5E36538325C9B8BD009F93EE /* RootViewColor.xcassets in Resources */,
|
||||
5EE088C926297820007E5FEC /* InfoPlist.strings in Resources */,
|
||||
BB2F792D24A3F905000567C9 /* Expo.plist in Resources */,
|
||||
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
|
||||
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
|
||||
3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */,
|
||||
@ -341,7 +338,7 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
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 */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
@ -391,13 +388,11 @@
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-tooot/Pods-tooot-resources.sh",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/EXUpdates/EXUpdates.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
"${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",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@ -511,6 +506,11 @@
|
||||
children = (
|
||||
5EE088CA26297820007E5FEC /* en */,
|
||||
5EE088CD2629786B007E5FEC /* zh-Hans */,
|
||||
E69EBACA28DF282D0057EDEC /* de */,
|
||||
E69EBACB28DF283A0057EDEC /* it */,
|
||||
E69EBACC28DF28420057EDEC /* ko */,
|
||||
E69EBACD28DF284D0057EDEC /* pt-BR */,
|
||||
E69EBACE28DF28560057EDEC /* vi */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
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保存图片至相册";
|
||||
"NSPhotoLibraryUsageDescription" = "允许tooot读取相册图片或视频,以添加嘟文附件";
|
||||
"NSPhotoLibraryUsageDescription" = "允许tooot保存图片至相册";
|
||||
|
83
package.json
83
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "tooot",
|
||||
"version": "4.3.2",
|
||||
"version": "4.3.3",
|
||||
"description": "tooot app for Mastodon",
|
||||
"author": "xmflsct <me@xmflsct.com>",
|
||||
"license": "GPL-3.0-or-later",
|
||||
@ -11,44 +11,43 @@
|
||||
"scripts": {
|
||||
"start": "react-native start",
|
||||
"android": "react-native run-android",
|
||||
"iphone": "react-native run-ios",
|
||||
"ipad": "react-native run-ios --simulator 'iPad mini (6th generation)'",
|
||||
"iphone": "react-native run-ios --simulator 'iPhone 14 Pro'",
|
||||
"ipad": "react-native run-ios --simulator 'iPad Pro (11-inch) (3rd generation)'",
|
||||
"app:build": "bundle exec fastlane",
|
||||
"clean": "react-native-clean-project",
|
||||
"postinstall": "patch-package"
|
||||
},
|
||||
"dependencies": {
|
||||
"@expo/react-native-action-sheet": "^3.13.0",
|
||||
"@formatjs/intl-datetimeformat": "^6.0.3",
|
||||
"@formatjs/intl-getcanonicallocales": "^2.0.2",
|
||||
"@formatjs/intl-locale": "^3.0.3",
|
||||
"@formatjs/intl-numberformat": "^8.0.4",
|
||||
"@formatjs/intl-pluralrules": "^5.0.3",
|
||||
"@formatjs/intl-relativetimeformat": "^11.0.3",
|
||||
"@formatjs/intl-datetimeformat": "^6.2.0",
|
||||
"@formatjs/intl-getcanonicallocales": "^2.0.4",
|
||||
"@formatjs/intl-locale": "^3.0.6",
|
||||
"@formatjs/intl-numberformat": "^8.1.3",
|
||||
"@formatjs/intl-pluralrules": "^5.1.3",
|
||||
"@formatjs/intl-relativetimeformat": "^11.1.3",
|
||||
"@mattermost/react-native-paste-input": "^0.5.0",
|
||||
"@neverdull-agency/expo-unlimited-secure-store": "^1.0.10",
|
||||
"@react-native-async-storage/async-storage": "^1.17.9",
|
||||
"@react-native-clipboard/clipboard": "^1.10.0",
|
||||
"@react-native-async-storage/async-storage": "^1.17.10",
|
||||
"@react-native-clipboard/clipboard": "^1.11.1",
|
||||
"@react-native-community/blur": "^4.2.0",
|
||||
"@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-navigation/bottom-tabs": "^6.3.2",
|
||||
"@react-navigation/native": "^6.0.11",
|
||||
"@react-navigation/native-stack": "^6.7.0",
|
||||
"@react-navigation/stack": "^6.2.2",
|
||||
"@reduxjs/toolkit": "^1.8.4",
|
||||
"@sentry/react-native": "^4.2.4",
|
||||
"@react-navigation/bottom-tabs": "^6.4.0",
|
||||
"@react-navigation/native": "^6.0.13",
|
||||
"@react-navigation/native-stack": "^6.9.0",
|
||||
"@react-navigation/stack": "^6.3.1",
|
||||
"@reduxjs/toolkit": "^1.8.5",
|
||||
"@sentry/react-native": "^4.4.0",
|
||||
"@sharcoux/slider": "^6.0.3",
|
||||
"axios": "^0.27.2",
|
||||
"expo": "^46.0.8",
|
||||
"expo": "^46.0.10",
|
||||
"expo-auth-session": "^3.7.1",
|
||||
"expo-av": "^12.0.4",
|
||||
"expo-constants": "^13.2.3",
|
||||
"expo-constants": "^13.2.4",
|
||||
"expo-crypto": "^11.0.0",
|
||||
"expo-device": "^4.3.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-linking": "^3.2.2",
|
||||
"expo-localization": "^13.1.0",
|
||||
@ -56,57 +55,55 @@
|
||||
"expo-random": "^12.3.0",
|
||||
"expo-screen-capture": "^4.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-updates": "^0.14.5",
|
||||
"expo-video-thumbnails": "^6.4.0",
|
||||
"expo-web-browser": "^11.0.0",
|
||||
"i18next": "^21.9.1",
|
||||
"i18next": "^21.9.2",
|
||||
"li": "^1.3.0",
|
||||
"linkify-it": "^4.0.1",
|
||||
"lodash": "^4.17.21",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-i18next": "^11.18.4",
|
||||
"react-intl": "^6.0.5",
|
||||
"react-i18next": "^11.18.6",
|
||||
"react-intl": "^6.1.1",
|
||||
"react-native": "^0.69.4",
|
||||
"react-native-animated-spinkit": "^1.5.2",
|
||||
"react-native-base64": "^0.2.1",
|
||||
"react-native-blurhash": "^1.1.10",
|
||||
"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-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-image-picker": "^4.8.5",
|
||||
"react-native-image-picker": "^4.10.0",
|
||||
"react-native-language-detection": "^0.1.0",
|
||||
"react-native-pager-view": "^5.4.25",
|
||||
"react-native-reanimated": "^2.9.1",
|
||||
"react-native-reanimated-zoom": "^0.3.0",
|
||||
"react-native-safe-area-context": "^4.3.1",
|
||||
"react-native-screens": "^3.16.0",
|
||||
"react-native-pager-view": "^6.0.0",
|
||||
"react-native-reanimated": "^2.10.0",
|
||||
"react-native-reanimated-zoom": "^0.3.1",
|
||||
"react-native-safe-area-context": "^4.3.4",
|
||||
"react-native-screens": "^3.17.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-tab-view": "^3.1.1",
|
||||
"react-query": "^3.39.2",
|
||||
"react-redux": "^8.0.2",
|
||||
"react-redux": "^8.0.4",
|
||||
"redux-persist": "^6.0.0",
|
||||
"rn-placeholder": "^3.0.3",
|
||||
"sentry-expo": "^5.0.2",
|
||||
"tslib": "^2.4.0",
|
||||
"valid-url": "^1.0.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.18.10",
|
||||
"@babel/core": "^7.19.1",
|
||||
"@babel/plugin-proposal-optional-chaining": "^7.18.9",
|
||||
"@babel/preset-react": "^7.18.6",
|
||||
"@babel/preset-typescript": "^7.18.6",
|
||||
"@expo/config": "^7.0.1",
|
||||
"@types/linkify-it": "^3.0.2",
|
||||
"@types/lodash": "^4.14.184",
|
||||
"@types/react": "^18.0.17",
|
||||
"@types/lodash": "^4.14.185",
|
||||
"@types/react": "^18.0.21",
|
||||
"@types/react-dom": "^18.0.6",
|
||||
"@types/react-native": "^0.69.5",
|
||||
"@types/react-native-base64": "^0.2.0",
|
||||
@ -117,10 +114,10 @@
|
||||
"babel-plugin-module-resolver": "^4.1.0",
|
||||
"babel-plugin-transform-remove-console": "^6.9.4",
|
||||
"chalk": "^4.1.2",
|
||||
"dotenv": "^16.0.1",
|
||||
"dotenv": "^16.0.2",
|
||||
"patch-package": "^6.4.7",
|
||||
"postinstall-postinstall": "^2.1.0",
|
||||
"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 timezone from '@root/startup/timezone'
|
||||
import { persistor, store } from '@root/store'
|
||||
import * as Sentry from '@sentry/react-native'
|
||||
import AccessibilityManager from '@utils/accessibility/AccessibilityManager'
|
||||
import {
|
||||
changeLanguage,
|
||||
getSettingsLanguage
|
||||
} from '@utils/slices/settingsSlice'
|
||||
import { changeLanguage, getSettingsLanguage } from '@utils/slices/settingsSlice'
|
||||
import ThemeManager from '@utils/styles/ThemeManager'
|
||||
import * as SplashScreen from 'expo-splash-screen'
|
||||
import React, { useCallback, useEffect, useState } from 'react'
|
||||
@ -24,7 +22,6 @@ import { enableFreeze } from 'react-native-screens'
|
||||
import { QueryClientProvider } from 'react-query'
|
||||
import { Provider } from 'react-redux'
|
||||
import { PersistGate } from 'redux-persist/integration/react'
|
||||
import * as Sentry from 'sentry-expo'
|
||||
|
||||
Platform.select({
|
||||
android: LogBox.ignoreLogs(['Setting a timer for a long period of time'])
|
||||
@ -93,7 +90,6 @@ const App: React.FC = () => {
|
||||
}
|
||||
|
||||
return (
|
||||
<Sentry.Native.TouchEventBoundary>
|
||||
<ActionSheetProvider>
|
||||
<AccessibilityManager>
|
||||
<ThemeManager>
|
||||
@ -101,7 +97,6 @@ const App: React.FC = () => {
|
||||
</ThemeManager>
|
||||
</AccessibilityManager>
|
||||
</ActionSheetProvider>
|
||||
</Sentry.Native.TouchEventBoundary>
|
||||
)
|
||||
} else {
|
||||
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 ScreenImagesViewer from '@screens/ImagesViewer'
|
||||
import ScreenTabs from '@screens/Tabs'
|
||||
import * as Sentry from '@sentry/react-native'
|
||||
import initQuery from '@utils/initQuery'
|
||||
import { RootStackParamList } from '@utils/navigation/navigators'
|
||||
import pushUseConnect from '@utils/push/useConnect'
|
||||
@ -31,7 +32,6 @@ import { IntlProvider } from 'react-intl'
|
||||
import { Alert, Platform, StatusBar } from 'react-native'
|
||||
import ShareMenu from 'react-native-share-menu'
|
||||
import { useSelector } from 'react-redux'
|
||||
import * as Sentry from 'sentry-expo'
|
||||
import { useAppDispatch } from './store'
|
||||
|
||||
const Stack = createNativeStackNavigator<RootStackParamList>()
|
||||
@ -49,10 +49,7 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
|
||||
const routeRef = useRef<{ name?: string; params?: {} }>()
|
||||
|
||||
// Push hooks
|
||||
const instances = useSelector(
|
||||
getInstances,
|
||||
(prev, next) => prev.length === next.length
|
||||
)
|
||||
const instances = useSelector(getInstances, (prev, next) => prev.length === next.length)
|
||||
pushUseConnect({ t, instances })
|
||||
pushUseReceive({ instances })
|
||||
pushUseRespond({ instances })
|
||||
@ -102,9 +99,7 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
|
||||
const currentRoute = navigationRef.getCurrentRoute()
|
||||
routeRef.current = {
|
||||
name: currentRoute?.name,
|
||||
params: currentRoute?.params
|
||||
? JSON.stringify(currentRoute.params)
|
||||
: undefined
|
||||
params: currentRoute?.params ? JSON.stringify(currentRoute.params) : undefined
|
||||
}
|
||||
}, [])
|
||||
const navigationContainerOnStateChange = useCallback(() => {
|
||||
@ -119,7 +114,7 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
|
||||
|
||||
if (previousRoute?.name !== currentRoute?.name) {
|
||||
analytics('screen_view', { screen_name: currentRoute?.name })
|
||||
Sentry.Native.setContext('page', {
|
||||
Sentry.setContext('page', {
|
||||
previous: previousRoute,
|
||||
current: currentRoute
|
||||
})
|
||||
@ -316,9 +311,7 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
|
||||
headerShadowVisible: false,
|
||||
headerTransparent: true,
|
||||
headerStyle: { backgroundColor: 'transparent' },
|
||||
headerLeft: () => (
|
||||
<HeaderLeft content='X' onPress={() => navigation.goBack()} />
|
||||
),
|
||||
headerLeft: () => <HeaderLeft content='X' onPress={() => navigation.goBack()} />,
|
||||
title: t('screenAnnouncements:heading')
|
||||
})}
|
||||
/>
|
||||
|
@ -1,7 +1,7 @@
|
||||
import * as Sentry from '@sentry/react-native'
|
||||
import { mapEnvironment } from '@utils/checkEnvironment'
|
||||
import axios from 'axios'
|
||||
import Constants from 'expo-constants'
|
||||
import * as Sentry from 'sentry-expo'
|
||||
import handleError, { ctx } from './handleError'
|
||||
|
||||
export type Params = {
|
||||
@ -65,12 +65,12 @@ const apiTooot = async <T = unknown>({
|
||||
})
|
||||
.catch(error => {
|
||||
if (sentry) {
|
||||
Sentry.Native.setExtras({
|
||||
Sentry.setExtras({
|
||||
API: 'tooot',
|
||||
...(error?.response && { response: error.response }),
|
||||
...(error?.request && { request: error.request })
|
||||
})
|
||||
Sentry.Native.captureException(error)
|
||||
Sentry.captureException(error)
|
||||
}
|
||||
|
||||
return handleError(error)
|
||||
|
@ -7,6 +7,7 @@ import haptics from '@root/components/haptics'
|
||||
import { useAppDispatch } from '@root/store'
|
||||
import formatText from '@screens/Compose/formatText'
|
||||
import ComposeRoot from '@screens/Compose/Root'
|
||||
import * as Sentry from '@sentry/react-native'
|
||||
import { RootStackScreenProps } from '@utils/navigation/navigators'
|
||||
import { QueryKeyTimeline, useTimelineMutation } from '@utils/queryHooks/timeline'
|
||||
import { updateStoreReview } from '@utils/slices/contextsSlice'
|
||||
@ -24,7 +25,6 @@ import { useTranslation } from 'react-i18next'
|
||||
import { Alert, Keyboard, Platform } from 'react-native'
|
||||
import { useQueryClient } from 'react-query'
|
||||
import { useSelector } from 'react-redux'
|
||||
import * as Sentry from 'sentry-expo'
|
||||
import ComposeDraftsList from './Compose/DraftsList'
|
||||
import ComposeEditAttachment from './Compose/EditAttachment'
|
||||
import { uploadAttachment } from './Compose/Root/Footer/addAttachment'
|
||||
@ -326,7 +326,7 @@ const ScreenCompose: React.FC<RootStackScreenProps<'Screen-Compose'>> = ({
|
||||
]
|
||||
)
|
||||
} else {
|
||||
Sentry.Native.captureMessage('Compose posting', {
|
||||
Sentry.captureMessage('Compose posting', {
|
||||
contexts: { errorObject: error }
|
||||
})
|
||||
haptics('Error')
|
||||
|
@ -7,6 +7,7 @@ import { persistor } from '@root/store'
|
||||
import { getInstanceActive, getInstances } from '@utils/slices/instancesSlice'
|
||||
import { StyleConstants } from '@utils/styles/constants'
|
||||
import { useTheme } from '@utils/styles/ThemeManager'
|
||||
import * as Localization from 'expo-localization'
|
||||
import React from 'react'
|
||||
import { DevSettings } from 'react-native'
|
||||
import { useSelector } from 'react-redux'
|
||||
@ -19,6 +20,16 @@ const SettingsDev: React.FC = () => {
|
||||
|
||||
return (
|
||||
<MenuContainer>
|
||||
<CustomText
|
||||
fontStyle='S'
|
||||
selectable
|
||||
style={{
|
||||
paddingHorizontal: StyleConstants.Spacing.Global.PagePadding,
|
||||
color: colors.primaryDefault
|
||||
}}
|
||||
>
|
||||
{JSON.stringify(Localization.locales)}
|
||||
</CustomText>
|
||||
<CustomText
|
||||
fontStyle='S'
|
||||
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'
|
||||
|
||||
const sentry = () => {
|
||||
log('log', 'Sentry', 'initializing')
|
||||
Sentry.init({
|
||||
// @ts-ignore
|
||||
enabled: !isDevelopment,
|
||||
dsn: 'https://53348b60ff844d52886e90251b3a5f41@o917354.ingest.sentry.io/6410576',
|
||||
enableInExpoDevelopment: false,
|
||||
tracesSampleRate: 0.35,
|
||||
integrations: [
|
||||
new Sentry.ReactNativeTracing({
|
||||
tracingOrigins: ["tooot.app"],
|
||||
}),
|
||||
],
|
||||
autoSessionTracking: true
|
||||
})
|
||||
}
|
||||
|
Reference in New Issue
Block a user