mirror of https://github.com/tooot-app/app
commit
eedeb6394f
|
@ -10,11 +10,10 @@ jobs:
|
|||
runs-on: macos-12
|
||||
steps:
|
||||
- name: -- Step 0 -- Extract branch name
|
||||
shell: bash
|
||||
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
|
||||
uses: tj-actions/branch-names@v6
|
||||
id: branch
|
||||
- name: -- Step 1 -- Checkout code
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
- name: -- Step 2 -- Setup node
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
|
@ -26,8 +25,8 @@ jobs:
|
|||
- name: -- Step 5 -- Run fastlane
|
||||
env:
|
||||
DEVELOPER_DIR: /Applications/Xcode_14.1.app/Contents/Developer
|
||||
ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
||||
SENTRY_ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
||||
ENVIRONMENT: ${{ steps.branch.outputs.current_branch }}
|
||||
SENTRY_ENVIRONMENT: ${{ steps.branch.outputs.current_branch }}
|
||||
LC_ALL: en_US.UTF-8
|
||||
LANG: en_US.UTF-8
|
||||
SENTRY_ORGANIZATION: ${{ secrets.SENTRY_ORGANIZATION }}
|
||||
|
@ -47,11 +46,10 @@ jobs:
|
|||
runs-on: macos-12
|
||||
steps:
|
||||
- name: -- Step 0 -- Extract branch name
|
||||
shell: bash
|
||||
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
|
||||
uses: tj-actions/branch-names@v6
|
||||
id: branch
|
||||
- name: -- Step 1 -- Checkout code
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
- name: -- Step 2 -- Setup node
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
|
@ -67,8 +65,8 @@ jobs:
|
|||
run: bundle install
|
||||
- name: -- Step 6 -- Run fastlane
|
||||
env:
|
||||
ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
||||
SENTRY_ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
||||
ENVIRONMENT: ${{ steps.branch.outputs.current_branch }}
|
||||
SENTRY_ENVIRONMENT: ${{ steps.branch.outputs.current_branch }}
|
||||
LC_ALL: en_US.UTF-8
|
||||
LANG: en_US.UTF-8
|
||||
ANDROID_KEYSTORE: ${{ secrets.ANDROID_KEYSTORE }}
|
||||
|
@ -84,11 +82,10 @@ jobs:
|
|||
needs: [build-ios, build-android]
|
||||
steps:
|
||||
- name: -- Step 0 -- Extract branch name
|
||||
shell: bash
|
||||
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
|
||||
uses: tj-actions/branch-names@v6
|
||||
id: branch
|
||||
- name: -- Step 1 -- Checkout code
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
- name: -- Step 2 -- Setup node
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
|
@ -104,8 +101,8 @@ jobs:
|
|||
run: bundle install
|
||||
- name: -- Step 6 -- Run fastlane
|
||||
env:
|
||||
ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
||||
SENTRY_ENVIRONMENT: ${{ steps.branch.outputs.branch }}
|
||||
ENVIRONMENT: ${{ steps.branch.outputs.current_branch }}
|
||||
SENTRY_ENVIRONMENT: ${{ steps.branch.outputs.current_branch }}
|
||||
LC_ALL: en_US.UTF-8
|
||||
LANG: en_US.UTF-8
|
||||
SENTRY_ORGANIZATION: ${{ secrets.SENTRY_ORGANIZATION }}
|
||||
|
|
|
@ -41,6 +41,7 @@ build/
|
|||
local.properties
|
||||
*.iml
|
||||
*.hprof
|
||||
.cxx/
|
||||
|
||||
# node.js
|
||||
#
|
||||
|
|
|
@ -11,6 +11,8 @@ Please **do not** create a pull request to update translation. tooot's translati
|
|||
|
||||
## Special thanks
|
||||
|
||||
[@pat](https://piaille.fr/@pat) for French translation
|
||||
|
||||
[@forenta](https://github.com/forenta) for German translation
|
||||
|
||||
[@andrigamerita](https://github.com/andrigamerita) for Italian translation
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
apply plugin: "com.android.application"
|
||||
|
||||
import com.android.build.OutputFile
|
||||
import org.apache.tools.ant.taskdefs.condition.Os
|
||||
|
||||
/**
|
||||
* The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
|
||||
|
@ -78,7 +79,7 @@ import com.android.build.OutputFile
|
|||
*/
|
||||
|
||||
project.ext.react = [
|
||||
enableHermes: (findProperty('expo.jsEngine') ?: "jsc") == "hermes",
|
||||
enableHermes: true,
|
||||
]
|
||||
|
||||
apply from: new File(["node", "--print", "require.resolve('react-native/package.json')"].execute().text.trim(), "../react.gradle")
|
||||
|
@ -146,22 +147,14 @@ android {
|
|||
versionName "0.2"
|
||||
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
|
||||
if (isNewArchitectureEnabled()) {
|
||||
// We configure the NDK build only if you decide to opt-in for the New Architecture.
|
||||
// We configure the CMake build only if you decide to opt-in for the New Architecture.
|
||||
externalNativeBuild {
|
||||
ndkBuild {
|
||||
arguments "APP_PLATFORM=android-21",
|
||||
"APP_STL=c++_shared",
|
||||
"NDK_TOOLCHAIN_VERSION=clang",
|
||||
"GENERATED_SRC_DIR=$buildDir/generated/source",
|
||||
"PROJECT_BUILD_DIR=$buildDir",
|
||||
"REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid",
|
||||
"REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build"
|
||||
"NODE_MODULES_DIR=$rootDir/../node_modules"
|
||||
cFlags "-Wall", "-Werror", "-fexceptions", "-frtti", "-DWITH_INSPECTOR=1"
|
||||
cppFlags "-std=c++17"
|
||||
// Make sure this target name is the same you specify inside the
|
||||
// src/main/jni/Android.mk file for the `LOCAL_MODULE` variable.
|
||||
targets "tooot_appmodules"
|
||||
cmake {
|
||||
arguments "-DPROJECT_BUILD_DIR=$buildDir",
|
||||
"-DREACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid",
|
||||
"-DREACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build",
|
||||
"-DNODE_MODULES_DIR=$rootDir/../node_modules",
|
||||
"-DANDROID_STL=c++_shared"
|
||||
}
|
||||
}
|
||||
if (!enableSeparateBuildPerCPUArchitecture) {
|
||||
|
@ -172,10 +165,10 @@ android {
|
|||
}
|
||||
}
|
||||
if (isNewArchitectureEnabled()) {
|
||||
// We configure the NDK build only if you decide to opt-in for the New Architecture.
|
||||
// We configure the CMake build only if you decide to opt-in for the New Architecture.
|
||||
externalNativeBuild {
|
||||
ndkBuild {
|
||||
path "$projectDir/src/main/jni/Android.mk"
|
||||
cmake {
|
||||
path "$projectDir/src/main/jni/CMakeLists.txt"
|
||||
}
|
||||
}
|
||||
def reactAndroidProjectDir = project(':ReactAndroid').projectDir
|
||||
|
@ -196,15 +189,15 @@ android {
|
|||
preDebugBuild.dependsOn(packageReactNdkDebugLibs)
|
||||
preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)
|
||||
// Due to a bug inside AGP, we have to explicitly set a dependency
|
||||
// between configureNdkBuild* tasks and the preBuild tasks.
|
||||
// between configureCMakeDebug* tasks and the preBuild tasks.
|
||||
// This can be removed once this is solved: https://issuetracker.google.com/issues/207403732
|
||||
configureNdkBuildRelease.dependsOn(preReleaseBuild)
|
||||
configureNdkBuildDebug.dependsOn(preDebugBuild)
|
||||
configureCMakeRelWithDebInfo.dependsOn(preReleaseBuild)
|
||||
configureCMakeDebug.dependsOn(preDebugBuild)
|
||||
reactNativeArchitectures().each { architecture ->
|
||||
tasks.findByName("configureNdkBuildDebug[${architecture}]")?.configure {
|
||||
tasks.findByName("configureCMakeDebug[${architecture}]")?.configure {
|
||||
dependsOn("preDebugBuild")
|
||||
}
|
||||
tasks.findByName("configureNdkBuildRelease[${architecture}]")?.configure {
|
||||
tasks.findByName("configureCMakeRelWithDebInfo[${architecture}]")?.configure {
|
||||
dependsOn("preReleaseBuild")
|
||||
}
|
||||
}
|
||||
|
@ -314,7 +307,7 @@ dependencies {
|
|||
if (isNewArchitectureEnabled()) {
|
||||
// If new architecture is enabled, we let you build RN from source
|
||||
// Otherwise we fallback to a prebuilt .aar bundled in the NPM package.
|
||||
// This will be applied to all the imported transtitive dependency.
|
||||
// This will be applied to all the imported transitive dependency.
|
||||
configurations.all {
|
||||
resolutionStrategy.dependencySubstitution {
|
||||
substitute(module("com.facebook.react:react-native"))
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
import org.apache.tools.ant.taskdefs.condition.Os
|
||||
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
buildscript {
|
||||
|
@ -9,13 +7,10 @@ buildscript {
|
|||
compileSdkVersion = 31
|
||||
targetSdkVersion = 31
|
||||
kotlinVersion = '1.6.10'
|
||||
|
||||
if (System.properties['os.arch'] == "aarch64") {
|
||||
// For M1 Users we need to use the NDK 24 which added support for aarch64
|
||||
ndkVersion = "24.0.8215888"
|
||||
} else if (Os.isFamily(Os.FAMILY_WINDOWS)) {
|
||||
// For Android Users, we need to use NDK 23, otherwise the build will
|
||||
// fail due to paths longer than the OS limit
|
||||
ndkVersion = "23.1.7779620"
|
||||
} else {
|
||||
// Otherwise we default to the side-by-side NDK version from AGP.
|
||||
ndkVersion = "21.4.7075529"
|
||||
|
@ -24,10 +19,11 @@ buildscript {
|
|||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.google.gms:google-services:4.3.3'
|
||||
classpath("com.android.tools.build:gradle:7.1.1")
|
||||
classpath("com.android.tools.build:gradle:7.2.1")
|
||||
classpath("com.facebook.react:react-native-gradle-plugin")
|
||||
classpath("de.undercouch:gradle-download-task:5.0.1")
|
||||
|
||||
|
@ -38,20 +34,6 @@ buildscript {
|
|||
|
||||
allprojects {
|
||||
repositories {
|
||||
exclusiveContent {
|
||||
// We get React Native's Android binaries exclusively through npm,
|
||||
// from a local Maven repo inside node_modules/react-native/.
|
||||
// (The use of exclusiveContent prevents looking elsewhere like Maven Central
|
||||
// and potentially getting a wrong version.)
|
||||
filter {
|
||||
includeGroup "com.facebook.react"
|
||||
}
|
||||
forRepository {
|
||||
maven {
|
||||
url "$rootDir/../node_modules/react-native/android"
|
||||
}
|
||||
}
|
||||
}
|
||||
mavenLocal()
|
||||
maven {
|
||||
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
|
||||
|
@ -64,6 +46,7 @@ allprojects {
|
|||
|
||||
google()
|
||||
mavenCentral()
|
||||
jcenter()
|
||||
maven { url 'https://www.jitpack.io' }
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
|
@ -1,5 +1,5 @@
|
|||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
|
|
@ -10,7 +10,6 @@ export default (): ExpoConfig => ({
|
|||
version,
|
||||
extra: { environment: process.env.ENVIRONMENT },
|
||||
privacy: 'hidden',
|
||||
jsEngine: 'hermes',
|
||||
ios: {
|
||||
bundleIdentifier: 'com.xmflsct.app.tooot'
|
||||
},
|
||||
|
|
17
ios/Podfile
17
ios/Podfile
|
@ -2,11 +2,9 @@ require File.join(File.dirname(`node --print "require.resolve('expo/package.json
|
|||
require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods")
|
||||
require File.join(File.dirname(`node --print "require.resolve('@react-native-community/cli-platform-ios/package.json')"`), "native_modules")
|
||||
|
||||
platform :ios, '12.4'
|
||||
platform :ios, '13.0'
|
||||
install! 'cocoapods', :deterministic_uuids => false
|
||||
|
||||
production = ENV["PRODUCTION"] == "1"
|
||||
|
||||
require 'json'
|
||||
podfile_properties = JSON.parse(File.read('./Podfile.properties.json')) rescue {}
|
||||
|
||||
|
@ -25,8 +23,7 @@ target 'tooot' do
|
|||
|
||||
use_react_native!(
|
||||
:path => config[:reactNativePath],
|
||||
:production => production,
|
||||
:hermes_enabled => podfile_properties['expo.jsEngine'] == 'hermes',
|
||||
:hermes_enabled => true,
|
||||
:fabric_enabled => flags[:fabric_enabled],
|
||||
:flipper_configuration => FlipperConfiguration.disabled,
|
||||
# An absolute path to your application root.
|
||||
|
@ -34,7 +31,12 @@ target 'tooot' do
|
|||
)
|
||||
|
||||
post_install do |installer|
|
||||
react_native_post_install(installer)
|
||||
react_native_post_install(
|
||||
installer,
|
||||
# Set `mac_catalyst_enabled` to `true` in order to apply patches
|
||||
# necessary for Mac Catalyst builds
|
||||
:mac_catalyst_enabled => false
|
||||
)
|
||||
__apply_Xcode_12_5_M1_post_install_workaround(installer)
|
||||
|
||||
# For share extension
|
||||
|
@ -65,8 +67,7 @@ end
|
|||
|
||||
target 'ShareExtension' do
|
||||
use_react_native!(
|
||||
:production => production,
|
||||
:hermes_enabled => podfile_properties['expo.jsEngine'] == 'hermes',
|
||||
:hermes_enabled => true,
|
||||
:flipper_configuration => FlipperConfiguration.disabled
|
||||
)
|
||||
|
||||
|
|
774
ios/Podfile.lock
774
ios/Podfile.lock
|
@ -1,65 +1,64 @@
|
|||
PODS:
|
||||
- boost (1.76.0)
|
||||
- DoubleConversion (1.1.6)
|
||||
- EXApplication (4.2.2):
|
||||
- EXApplication (5.0.1):
|
||||
- ExpoModulesCore
|
||||
- EXAV (12.0.4):
|
||||
- EXAV (13.0.1):
|
||||
- ExpoModulesCore
|
||||
- React-runtimeexecutor
|
||||
- ReactCommon
|
||||
- EXConstants (13.2.4):
|
||||
- ReactCommon/turbomodule/core
|
||||
- EXConstants (14.0.2):
|
||||
- ExpoModulesCore
|
||||
- EXErrorRecovery (3.2.0):
|
||||
- EXErrorRecovery (4.0.1):
|
||||
- ExpoModulesCore
|
||||
- EXFileSystem (14.1.0):
|
||||
- EXFileSystem (15.1.1):
|
||||
- ExpoModulesCore
|
||||
- EXFirebaseAnalytics (7.2.0):
|
||||
- EXFirebaseAnalytics (8.0.0):
|
||||
- EXFirebaseCore
|
||||
- ExpoModulesCore
|
||||
- Firebase/Core (= 9.5.0)
|
||||
- EXFirebaseCore (5.2.0):
|
||||
- EXFirebaseCore (6.0.0):
|
||||
- ExpoModulesCore
|
||||
- Firebase/Core (= 9.5.0)
|
||||
- EXFont (10.2.1):
|
||||
- EXFont (11.0.1):
|
||||
- ExpoModulesCore
|
||||
- EXNotifications (0.16.1):
|
||||
- EXNotifications (0.17.0):
|
||||
- ExpoModulesCore
|
||||
- Expo (46.0.16):
|
||||
- Expo (47.0.3):
|
||||
- ExpoModulesCore
|
||||
- ExpoCrypto (11.0.0):
|
||||
- ExpoCrypto (12.0.0):
|
||||
- ExpoModulesCore
|
||||
- ExpoHaptics (11.3.0):
|
||||
- ExpoHaptics (12.0.1):
|
||||
- ExpoModulesCore
|
||||
- ExpoKeepAwake (10.2.0):
|
||||
- ExpoKeepAwake (11.0.1):
|
||||
- ExpoModulesCore
|
||||
- ExpoLocalization (13.1.0):
|
||||
- ExpoLocalization (14.0.0):
|
||||
- ExpoModulesCore
|
||||
- ExpoModulesCore (0.11.8):
|
||||
- ExpoModulesCore (1.0.2):
|
||||
- React-Core
|
||||
- ReactCommon/turbomodule/core
|
||||
- ExpoRandom (12.3.0):
|
||||
- ExpoRandom (13.0.0):
|
||||
- ExpoModulesCore
|
||||
- ExpoWebBrowser (11.0.0):
|
||||
- ExpoStoreReview (6.0.0):
|
||||
- ExpoModulesCore
|
||||
- EXScreenCapture (4.3.0):
|
||||
- ExpoWebBrowser (12.0.0):
|
||||
- ExpoModulesCore
|
||||
- EXSecureStore (11.3.0):
|
||||
- EXScreenCapture (5.0.0):
|
||||
- ExpoModulesCore
|
||||
- EXSplashScreen (0.16.2):
|
||||
- EXSecureStore (12.0.0):
|
||||
- ExpoModulesCore
|
||||
- EXSplashScreen (0.17.4):
|
||||
- ExpoModulesCore
|
||||
- React-Core
|
||||
- EXStoreReview (5.3.0):
|
||||
- EXVideoThumbnails (7.0.0):
|
||||
- ExpoModulesCore
|
||||
- EXVideoThumbnails (6.4.0):
|
||||
- ExpoModulesCore
|
||||
- FBLazyVector (0.69.6)
|
||||
- FBReactNativeSpec (0.69.6):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTRequired (= 0.69.6)
|
||||
- RCTTypeSafety (= 0.69.6)
|
||||
- React-Core (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- ReactCommon/turbomodule/core (= 0.69.6)
|
||||
- FBLazyVector (0.70.5)
|
||||
- FBReactNativeSpec (0.70.5):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- RCTRequired (= 0.70.5)
|
||||
- RCTTypeSafety (= 0.70.5)
|
||||
- React-Core (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- ReactCommon/turbomodule/core (= 0.70.5)
|
||||
- Firebase (9.5.0):
|
||||
- Firebase/Core (= 9.5.0)
|
||||
- Firebase/Core (9.5.0):
|
||||
|
@ -128,287 +127,287 @@ PODS:
|
|||
- GoogleUtilities/Environment (~> 7.7)
|
||||
- nanopb (< 2.30910.0, >= 2.30908.0)
|
||||
- PromisesObjC (< 3.0, >= 1.2)
|
||||
- GoogleUtilities (7.8.0):
|
||||
- GoogleUtilities/AppDelegateSwizzler (= 7.8.0)
|
||||
- GoogleUtilities/Environment (= 7.8.0)
|
||||
- GoogleUtilities/ISASwizzler (= 7.8.0)
|
||||
- GoogleUtilities/Logger (= 7.8.0)
|
||||
- GoogleUtilities/MethodSwizzler (= 7.8.0)
|
||||
- GoogleUtilities/Network (= 7.8.0)
|
||||
- "GoogleUtilities/NSData+zlib (= 7.8.0)"
|
||||
- GoogleUtilities/Reachability (= 7.8.0)
|
||||
- GoogleUtilities/SwizzlerTestHelpers (= 7.8.0)
|
||||
- GoogleUtilities/UserDefaults (= 7.8.0)
|
||||
- GoogleUtilities/AppDelegateSwizzler (7.8.0):
|
||||
- GoogleUtilities (7.10.0):
|
||||
- GoogleUtilities/AppDelegateSwizzler (= 7.10.0)
|
||||
- GoogleUtilities/Environment (= 7.10.0)
|
||||
- GoogleUtilities/ISASwizzler (= 7.10.0)
|
||||
- GoogleUtilities/Logger (= 7.10.0)
|
||||
- GoogleUtilities/MethodSwizzler (= 7.10.0)
|
||||
- GoogleUtilities/Network (= 7.10.0)
|
||||
- "GoogleUtilities/NSData+zlib (= 7.10.0)"
|
||||
- GoogleUtilities/Reachability (= 7.10.0)
|
||||
- GoogleUtilities/SwizzlerTestHelpers (= 7.10.0)
|
||||
- GoogleUtilities/UserDefaults (= 7.10.0)
|
||||
- GoogleUtilities/AppDelegateSwizzler (7.10.0):
|
||||
- GoogleUtilities/Environment
|
||||
- GoogleUtilities/Logger
|
||||
- GoogleUtilities/Network
|
||||
- GoogleUtilities/Environment (7.8.0):
|
||||
- GoogleUtilities/Environment (7.10.0):
|
||||
- PromisesObjC (< 3.0, >= 1.2)
|
||||
- GoogleUtilities/ISASwizzler (7.8.0)
|
||||
- GoogleUtilities/Logger (7.8.0):
|
||||
- GoogleUtilities/ISASwizzler (7.10.0)
|
||||
- GoogleUtilities/Logger (7.10.0):
|
||||
- GoogleUtilities/Environment
|
||||
- GoogleUtilities/MethodSwizzler (7.8.0):
|
||||
- GoogleUtilities/MethodSwizzler (7.10.0):
|
||||
- GoogleUtilities/Logger
|
||||
- GoogleUtilities/Network (7.8.0):
|
||||
- GoogleUtilities/Network (7.10.0):
|
||||
- GoogleUtilities/Logger
|
||||
- "GoogleUtilities/NSData+zlib"
|
||||
- GoogleUtilities/Reachability
|
||||
- "GoogleUtilities/NSData+zlib (7.8.0)"
|
||||
- GoogleUtilities/Reachability (7.8.0):
|
||||
- "GoogleUtilities/NSData+zlib (7.10.0)"
|
||||
- GoogleUtilities/Reachability (7.10.0):
|
||||
- GoogleUtilities/Logger
|
||||
- GoogleUtilities/SwizzlerTestHelpers (7.8.0):
|
||||
- GoogleUtilities/SwizzlerTestHelpers (7.10.0):
|
||||
- GoogleUtilities/MethodSwizzler
|
||||
- GoogleUtilities/UserDefaults (7.8.0):
|
||||
- GoogleUtilities/UserDefaults (7.10.0):
|
||||
- GoogleUtilities/Logger
|
||||
- hermes-engine (0.69.6)
|
||||
- hermes-engine (0.70.5)
|
||||
- libevent (2.1.12)
|
||||
- libwebp (1.2.3):
|
||||
- libwebp/demux (= 1.2.3)
|
||||
- libwebp/mux (= 1.2.3)
|
||||
- libwebp/webp (= 1.2.3)
|
||||
- libwebp/demux (1.2.3):
|
||||
- libwebp (1.2.4):
|
||||
- libwebp/demux (= 1.2.4)
|
||||
- libwebp/mux (= 1.2.4)
|
||||
- libwebp/webp (= 1.2.4)
|
||||
- libwebp/demux (1.2.4):
|
||||
- libwebp/webp
|
||||
- libwebp/mux (1.2.3):
|
||||
- libwebp/mux (1.2.4):
|
||||
- libwebp/demux
|
||||
- libwebp/webp (1.2.3)
|
||||
- libwebp/webp (1.2.4)
|
||||
- nanopb (2.30909.0):
|
||||
- nanopb/decode (= 2.30909.0)
|
||||
- nanopb/encode (= 2.30909.0)
|
||||
- nanopb/decode (2.30909.0)
|
||||
- nanopb/encode (2.30909.0)
|
||||
- PromisesObjC (2.1.1)
|
||||
- RCT-Folly (2021.06.28.00-v2):
|
||||
- RCT-Folly (2021.07.22.00):
|
||||
- boost
|
||||
- DoubleConversion
|
||||
- fmt (~> 6.2.1)
|
||||
- glog
|
||||
- RCT-Folly/Default (= 2021.06.28.00-v2)
|
||||
- RCT-Folly/Default (2021.06.28.00-v2):
|
||||
- RCT-Folly/Default (= 2021.07.22.00)
|
||||
- RCT-Folly/Default (2021.07.22.00):
|
||||
- boost
|
||||
- DoubleConversion
|
||||
- fmt (~> 6.2.1)
|
||||
- glog
|
||||
- RCT-Folly/Futures (2021.06.28.00-v2):
|
||||
- RCT-Folly/Futures (2021.07.22.00):
|
||||
- boost
|
||||
- DoubleConversion
|
||||
- fmt (~> 6.2.1)
|
||||
- glog
|
||||
- libevent
|
||||
- RCTRequired (0.69.6)
|
||||
- RCTTypeSafety (0.69.6):
|
||||
- FBLazyVector (= 0.69.6)
|
||||
- RCTRequired (= 0.69.6)
|
||||
- React-Core (= 0.69.6)
|
||||
- React (0.69.6):
|
||||
- React-Core (= 0.69.6)
|
||||
- React-Core/DevSupport (= 0.69.6)
|
||||
- React-Core/RCTWebSocket (= 0.69.6)
|
||||
- React-RCTActionSheet (= 0.69.6)
|
||||
- React-RCTAnimation (= 0.69.6)
|
||||
- React-RCTBlob (= 0.69.6)
|
||||
- React-RCTImage (= 0.69.6)
|
||||
- React-RCTLinking (= 0.69.6)
|
||||
- React-RCTNetwork (= 0.69.6)
|
||||
- React-RCTSettings (= 0.69.6)
|
||||
- React-RCTText (= 0.69.6)
|
||||
- React-RCTVibration (= 0.69.6)
|
||||
- React-bridging (0.69.6):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-callinvoker (0.69.6)
|
||||
- React-Codegen (0.69.6):
|
||||
- FBReactNativeSpec (= 0.69.6)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTRequired (= 0.69.6)
|
||||
- RCTTypeSafety (= 0.69.6)
|
||||
- React-Core (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-jsiexecutor (= 0.69.6)
|
||||
- ReactCommon/turbomodule/core (= 0.69.6)
|
||||
- React-Core (0.69.6):
|
||||
- RCTRequired (0.70.5)
|
||||
- RCTTypeSafety (0.70.5):
|
||||
- FBLazyVector (= 0.70.5)
|
||||
- RCTRequired (= 0.70.5)
|
||||
- React-Core (= 0.70.5)
|
||||
- React (0.70.5):
|
||||
- React-Core (= 0.70.5)
|
||||
- React-Core/DevSupport (= 0.70.5)
|
||||
- React-Core/RCTWebSocket (= 0.70.5)
|
||||
- React-RCTActionSheet (= 0.70.5)
|
||||
- React-RCTAnimation (= 0.70.5)
|
||||
- React-RCTBlob (= 0.70.5)
|
||||
- React-RCTImage (= 0.70.5)
|
||||
- React-RCTLinking (= 0.70.5)
|
||||
- React-RCTNetwork (= 0.70.5)
|
||||
- React-RCTSettings (= 0.70.5)
|
||||
- React-RCTText (= 0.70.5)
|
||||
- React-RCTVibration (= 0.70.5)
|
||||
- React-bridging (0.70.5):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-callinvoker (0.70.5)
|
||||
- React-Codegen (0.70.5):
|
||||
- FBReactNativeSpec (= 0.70.5)
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- RCTRequired (= 0.70.5)
|
||||
- RCTTypeSafety (= 0.70.5)
|
||||
- React-Core (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-jsiexecutor (= 0.70.5)
|
||||
- ReactCommon/turbomodule/core (= 0.70.5)
|
||||
- React-Core (0.70.5):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default (= 0.69.6)
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-jsiexecutor (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default (= 0.70.5)
|
||||
- React-cxxreact (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-jsiexecutor (= 0.70.5)
|
||||
- React-perflogger (= 0.70.5)
|
||||
- Yoga
|
||||
- React-Core/CoreModulesHeaders (0.69.6):
|
||||
- React-Core/CoreModulesHeaders (0.70.5):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-jsiexecutor (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- React-cxxreact (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-jsiexecutor (= 0.70.5)
|
||||
- React-perflogger (= 0.70.5)
|
||||
- Yoga
|
||||
- React-Core/Default (0.69.6):
|
||||
- React-Core/Default (0.70.5):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-jsiexecutor (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-cxxreact (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-jsiexecutor (= 0.70.5)
|
||||
- React-perflogger (= 0.70.5)
|
||||
- Yoga
|
||||
- React-Core/DevSupport (0.69.6):
|
||||
- React-Core/DevSupport (0.70.5):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default (= 0.69.6)
|
||||
- React-Core/RCTWebSocket (= 0.69.6)
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-jsiexecutor (= 0.69.6)
|
||||
- React-jsinspector (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default (= 0.70.5)
|
||||
- React-Core/RCTWebSocket (= 0.70.5)
|
||||
- React-cxxreact (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-jsiexecutor (= 0.70.5)
|
||||
- React-jsinspector (= 0.70.5)
|
||||
- React-perflogger (= 0.70.5)
|
||||
- Yoga
|
||||
- React-Core/RCTActionSheetHeaders (0.69.6):
|
||||
- React-Core/RCTActionSheetHeaders (0.70.5):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-jsiexecutor (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- React-cxxreact (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-jsiexecutor (= 0.70.5)
|
||||
- React-perflogger (= 0.70.5)
|
||||
- Yoga
|
||||
- React-Core/RCTAnimationHeaders (0.69.6):
|
||||
- React-Core/RCTAnimationHeaders (0.70.5):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-jsiexecutor (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- React-cxxreact (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-jsiexecutor (= 0.70.5)
|
||||
- React-perflogger (= 0.70.5)
|
||||
- Yoga
|
||||
- React-Core/RCTBlobHeaders (0.69.6):
|
||||
- React-Core/RCTBlobHeaders (0.70.5):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-jsiexecutor (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- React-cxxreact (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-jsiexecutor (= 0.70.5)
|
||||
- React-perflogger (= 0.70.5)
|
||||
- Yoga
|
||||
- React-Core/RCTImageHeaders (0.69.6):
|
||||
- React-Core/RCTImageHeaders (0.70.5):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-jsiexecutor (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- React-cxxreact (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-jsiexecutor (= 0.70.5)
|
||||
- React-perflogger (= 0.70.5)
|
||||
- Yoga
|
||||
- React-Core/RCTLinkingHeaders (0.69.6):
|
||||
- React-Core/RCTLinkingHeaders (0.70.5):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-jsiexecutor (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- React-cxxreact (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-jsiexecutor (= 0.70.5)
|
||||
- React-perflogger (= 0.70.5)
|
||||
- Yoga
|
||||
- React-Core/RCTNetworkHeaders (0.69.6):
|
||||
- React-Core/RCTNetworkHeaders (0.70.5):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-jsiexecutor (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- React-cxxreact (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-jsiexecutor (= 0.70.5)
|
||||
- React-perflogger (= 0.70.5)
|
||||
- Yoga
|
||||
- React-Core/RCTSettingsHeaders (0.69.6):
|
||||
- React-Core/RCTSettingsHeaders (0.70.5):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-jsiexecutor (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- React-cxxreact (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-jsiexecutor (= 0.70.5)
|
||||
- React-perflogger (= 0.70.5)
|
||||
- Yoga
|
||||
- React-Core/RCTTextHeaders (0.69.6):
|
||||
- React-Core/RCTTextHeaders (0.70.5):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-jsiexecutor (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- React-cxxreact (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-jsiexecutor (= 0.70.5)
|
||||
- React-perflogger (= 0.70.5)
|
||||
- Yoga
|
||||
- React-Core/RCTVibrationHeaders (0.69.6):
|
||||
- React-Core/RCTVibrationHeaders (0.70.5):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-jsiexecutor (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- React-cxxreact (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-jsiexecutor (= 0.70.5)
|
||||
- React-perflogger (= 0.70.5)
|
||||
- Yoga
|
||||
- React-Core/RCTWebSocket (0.69.6):
|
||||
- React-Core/RCTWebSocket (0.70.5):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default (= 0.69.6)
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-jsiexecutor (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core/Default (= 0.70.5)
|
||||
- React-cxxreact (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-jsiexecutor (= 0.70.5)
|
||||
- React-perflogger (= 0.70.5)
|
||||
- Yoga
|
||||
- React-CoreModules (0.69.6):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTTypeSafety (= 0.69.6)
|
||||
- React-Codegen (= 0.69.6)
|
||||
- React-Core/CoreModulesHeaders (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-RCTImage (= 0.69.6)
|
||||
- ReactCommon/turbomodule/core (= 0.69.6)
|
||||
- React-cxxreact (0.69.6):
|
||||
- React-CoreModules (0.70.5):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- RCTTypeSafety (= 0.70.5)
|
||||
- React-Codegen (= 0.70.5)
|
||||
- React-Core/CoreModulesHeaders (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-RCTImage (= 0.70.5)
|
||||
- ReactCommon/turbomodule/core (= 0.70.5)
|
||||
- React-cxxreact (0.70.5):
|
||||
- boost (= 1.76.0)
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-callinvoker (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-jsinspector (= 0.69.6)
|
||||
- React-logger (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- React-runtimeexecutor (= 0.69.6)
|
||||
- React-hermes (0.69.6):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-callinvoker (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-jsinspector (= 0.70.5)
|
||||
- React-logger (= 0.70.5)
|
||||
- React-perflogger (= 0.70.5)
|
||||
- React-runtimeexecutor (= 0.70.5)
|
||||
- React-hermes (0.70.5):
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- hermes-engine
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCT-Folly/Futures (= 2021.06.28.00-v2)
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-jsiexecutor (= 0.69.6)
|
||||
- React-jsinspector (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- React-jsi (0.69.6):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- RCT-Folly/Futures (= 2021.07.22.00)
|
||||
- React-cxxreact (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-jsiexecutor (= 0.70.5)
|
||||
- React-jsinspector (= 0.70.5)
|
||||
- React-perflogger (= 0.70.5)
|
||||
- React-jsi (0.70.5):
|
||||
- boost (= 1.76.0)
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-jsi/Default (= 0.69.6)
|
||||
- React-jsi/Default (0.69.6):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-jsi/Default (= 0.70.5)
|
||||
- React-jsi/Default (0.70.5):
|
||||
- boost (= 1.76.0)
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-jsiexecutor (0.69.6):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-jsiexecutor (0.70.5):
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- React-jsinspector (0.69.6)
|
||||
- React-logger (0.69.6):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-cxxreact (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-perflogger (= 0.70.5)
|
||||
- React-jsinspector (0.70.5)
|
||||
- React-logger (0.70.5):
|
||||
- glog
|
||||
- react-native-blur (4.2.0):
|
||||
- react-native-blur (4.3.0):
|
||||
- React-Core
|
||||
- react-native-blurhash (1.1.10):
|
||||
- React-Core
|
||||
- react-native-cameraroll (5.0.4):
|
||||
- react-native-cameraroll (5.1.0):
|
||||
- React-Core
|
||||
- react-native-context-menu-view (1.5.4):
|
||||
- React
|
||||
|
@ -420,7 +419,7 @@ PODS:
|
|||
- React-Core
|
||||
- react-native-netinfo (9.3.6):
|
||||
- React-Core
|
||||
- react-native-pager-view (6.0.2):
|
||||
- react-native-pager-view (6.1.0):
|
||||
- React-Core
|
||||
- react-native-paste-input (0.5.1):
|
||||
- React-Core
|
||||
|
@ -433,110 +432,79 @@ PODS:
|
|||
- ReactCommon/turbomodule/core
|
||||
- react-native-segmented-control (2.2.2):
|
||||
- React-Core
|
||||
- React-perflogger (0.69.6)
|
||||
- React-RCTActionSheet (0.69.6):
|
||||
- React-Core/RCTActionSheetHeaders (= 0.69.6)
|
||||
- React-RCTAnimation (0.69.6):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTTypeSafety (= 0.69.6)
|
||||
- React-Codegen (= 0.69.6)
|
||||
- React-Core/RCTAnimationHeaders (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- ReactCommon/turbomodule/core (= 0.69.6)
|
||||
- React-RCTBlob (0.69.6):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Codegen (= 0.69.6)
|
||||
- React-Core/RCTBlobHeaders (= 0.69.6)
|
||||
- React-Core/RCTWebSocket (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-RCTNetwork (= 0.69.6)
|
||||
- ReactCommon/turbomodule/core (= 0.69.6)
|
||||
- React-RCTImage (0.69.6):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTTypeSafety (= 0.69.6)
|
||||
- React-Codegen (= 0.69.6)
|
||||
- React-Core/RCTImageHeaders (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-RCTNetwork (= 0.69.6)
|
||||
- ReactCommon/turbomodule/core (= 0.69.6)
|
||||
- React-RCTLinking (0.69.6):
|
||||
- React-Codegen (= 0.69.6)
|
||||
- React-Core/RCTLinkingHeaders (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- ReactCommon/turbomodule/core (= 0.69.6)
|
||||
- React-RCTNetwork (0.69.6):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTTypeSafety (= 0.69.6)
|
||||
- React-Codegen (= 0.69.6)
|
||||
- React-Core/RCTNetworkHeaders (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- ReactCommon/turbomodule/core (= 0.69.6)
|
||||
- React-RCTSettings (0.69.6):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTTypeSafety (= 0.69.6)
|
||||
- React-Codegen (= 0.69.6)
|
||||
- React-Core/RCTSettingsHeaders (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- ReactCommon/turbomodule/core (= 0.69.6)
|
||||
- React-RCTText (0.69.6):
|
||||
- React-Core/RCTTextHeaders (= 0.69.6)
|
||||
- React-RCTVibration (0.69.6):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Codegen (= 0.69.6)
|
||||
- React-Core/RCTVibrationHeaders (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- ReactCommon/turbomodule/core (= 0.69.6)
|
||||
- React-runtimeexecutor (0.69.6):
|
||||
- React-jsi (= 0.69.6)
|
||||
- ReactCommon (0.69.6):
|
||||
- React-logger (= 0.69.6)
|
||||
- ReactCommon/react_debug_core (= 0.69.6)
|
||||
- ReactCommon/turbomodule (= 0.69.6)
|
||||
- ReactCommon/react_debug_core (0.69.6):
|
||||
- React-logger (= 0.69.6)
|
||||
- ReactCommon/turbomodule (0.69.6):
|
||||
- React-perflogger (0.70.5)
|
||||
- React-RCTActionSheet (0.70.5):
|
||||
- React-Core/RCTActionSheetHeaders (= 0.70.5)
|
||||
- React-RCTAnimation (0.70.5):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- RCTTypeSafety (= 0.70.5)
|
||||
- React-Codegen (= 0.70.5)
|
||||
- React-Core/RCTAnimationHeaders (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- ReactCommon/turbomodule/core (= 0.70.5)
|
||||
- React-RCTBlob (0.70.5):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Codegen (= 0.70.5)
|
||||
- React-Core/RCTBlobHeaders (= 0.70.5)
|
||||
- React-Core/RCTWebSocket (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-RCTNetwork (= 0.70.5)
|
||||
- ReactCommon/turbomodule/core (= 0.70.5)
|
||||
- React-RCTImage (0.70.5):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- RCTTypeSafety (= 0.70.5)
|
||||
- React-Codegen (= 0.70.5)
|
||||
- React-Core/RCTImageHeaders (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-RCTNetwork (= 0.70.5)
|
||||
- ReactCommon/turbomodule/core (= 0.70.5)
|
||||
- React-RCTLinking (0.70.5):
|
||||
- React-Codegen (= 0.70.5)
|
||||
- React-Core/RCTLinkingHeaders (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- ReactCommon/turbomodule/core (= 0.70.5)
|
||||
- React-RCTNetwork (0.70.5):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- RCTTypeSafety (= 0.70.5)
|
||||
- React-Codegen (= 0.70.5)
|
||||
- React-Core/RCTNetworkHeaders (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- ReactCommon/turbomodule/core (= 0.70.5)
|
||||
- React-RCTSettings (0.70.5):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- RCTTypeSafety (= 0.70.5)
|
||||
- React-Codegen (= 0.70.5)
|
||||
- React-Core/RCTSettingsHeaders (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- ReactCommon/turbomodule/core (= 0.70.5)
|
||||
- React-RCTText (0.70.5):
|
||||
- React-Core/RCTTextHeaders (= 0.70.5)
|
||||
- React-RCTVibration (0.70.5):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Codegen (= 0.70.5)
|
||||
- React-Core/RCTVibrationHeaders (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- ReactCommon/turbomodule/core (= 0.70.5)
|
||||
- React-runtimeexecutor (0.70.5):
|
||||
- React-jsi (= 0.70.5)
|
||||
- ReactCommon/turbomodule/core (0.70.5):
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-bridging (= 0.69.6)
|
||||
- React-callinvoker (= 0.69.6)
|
||||
- React-Core (= 0.69.6)
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-logger (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- ReactCommon/turbomodule/core (= 0.69.6)
|
||||
- ReactCommon/turbomodule/samples (= 0.69.6)
|
||||
- ReactCommon/turbomodule/core (0.69.6):
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-bridging (= 0.69.6)
|
||||
- React-callinvoker (= 0.69.6)
|
||||
- React-Core (= 0.69.6)
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-logger (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- ReactCommon/turbomodule/samples (0.69.6):
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-bridging (= 0.69.6)
|
||||
- React-callinvoker (= 0.69.6)
|
||||
- React-Core (= 0.69.6)
|
||||
- React-cxxreact (= 0.69.6)
|
||||
- React-jsi (= 0.69.6)
|
||||
- React-logger (= 0.69.6)
|
||||
- React-perflogger (= 0.69.6)
|
||||
- ReactCommon/turbomodule/core (= 0.69.6)
|
||||
- RNCAsyncStorage (1.17.10):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-bridging (= 0.70.5)
|
||||
- React-callinvoker (= 0.70.5)
|
||||
- React-Core (= 0.70.5)
|
||||
- React-cxxreact (= 0.70.5)
|
||||
- React-jsi (= 0.70.5)
|
||||
- React-logger (= 0.70.5)
|
||||
- React-perflogger (= 0.70.5)
|
||||
- RNCAsyncStorage (1.17.11):
|
||||
- React-Core
|
||||
- RNCClipboard (1.11.1):
|
||||
- React-Core
|
||||
- RNFastImage (8.6.3):
|
||||
- React-Core
|
||||
- SDWebImage (~> 5.13.5)
|
||||
- SDWebImage (~> 5.14.2)
|
||||
- SDWebImageWebPCoder (~> 0.9.1)
|
||||
- RNGestureHandler (2.8.0):
|
||||
- React-Core
|
||||
|
@ -570,22 +538,22 @@ PODS:
|
|||
- RNScreens (3.18.2):
|
||||
- React-Core
|
||||
- React-RCTImage
|
||||
- RNSentry (4.7.1):
|
||||
- RNSentry (4.8.0):
|
||||
- React-Core
|
||||
- Sentry (= 7.28.0)
|
||||
- Sentry (= 7.29.0)
|
||||
- RNShareMenu (6.0.0):
|
||||
- React
|
||||
- RNSVG (13.0.0):
|
||||
- RNSVG (13.5.0):
|
||||
- React-Core
|
||||
- SDWebImage (5.13.5):
|
||||
- SDWebImage/Core (= 5.13.5)
|
||||
- SDWebImage/Core (5.13.5)
|
||||
- SDWebImage (5.14.2):
|
||||
- SDWebImage/Core (= 5.14.2)
|
||||
- SDWebImage/Core (5.14.2)
|
||||
- SDWebImageWebPCoder (0.9.1):
|
||||
- libwebp (~> 1.0)
|
||||
- SDWebImage/Core (~> 5.13)
|
||||
- Sentry (7.28.0):
|
||||
- Sentry/Core (= 7.28.0)
|
||||
- Sentry/Core (7.28.0)
|
||||
- Sentry (7.29.0):
|
||||
- Sentry/Core (= 7.29.0)
|
||||
- Sentry/Core (7.29.0)
|
||||
- Swime (3.0.6)
|
||||
- Yoga (1.14.0)
|
||||
|
||||
|
@ -606,13 +574,13 @@ DEPENDENCIES:
|
|||
- ExpoHaptics (from `../node_modules/expo-haptics/ios`)
|
||||
- ExpoKeepAwake (from `../node_modules/expo-keep-awake/ios`)
|
||||
- ExpoLocalization (from `../node_modules/expo-localization/ios`)
|
||||
- ExpoModulesCore (from `../node_modules/expo-modules-core/ios`)
|
||||
- ExpoModulesCore (from `../node_modules/expo-modules-core`)
|
||||
- ExpoRandom (from `../node_modules/expo-random/ios`)
|
||||
- ExpoStoreReview (from `../node_modules/expo-store-review/ios`)
|
||||
- ExpoWebBrowser (from `../node_modules/expo-web-browser/ios`)
|
||||
- EXScreenCapture (from `../node_modules/expo-screen-capture/ios`)
|
||||
- EXSecureStore (from `../node_modules/expo-secure-store/ios`)
|
||||
- EXSplashScreen (from `../node_modules/expo-splash-screen/ios`)
|
||||
- EXStoreReview (from `../node_modules/expo-store-review/ios`)
|
||||
- EXVideoThumbnails (from `../node_modules/expo-video-thumbnails/ios`)
|
||||
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
|
||||
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
|
||||
|
@ -728,9 +696,11 @@ EXTERNAL SOURCES:
|
|||
ExpoLocalization:
|
||||
:path: "../node_modules/expo-localization/ios"
|
||||
ExpoModulesCore:
|
||||
:path: "../node_modules/expo-modules-core/ios"
|
||||
:path: "../node_modules/expo-modules-core"
|
||||
ExpoRandom:
|
||||
:path: "../node_modules/expo-random/ios"
|
||||
ExpoStoreReview:
|
||||
:path: "../node_modules/expo-store-review/ios"
|
||||
ExpoWebBrowser:
|
||||
:path: "../node_modules/expo-web-browser/ios"
|
||||
EXScreenCapture:
|
||||
|
@ -739,8 +709,6 @@ EXTERNAL SOURCES:
|
|||
:path: "../node_modules/expo-secure-store/ios"
|
||||
EXSplashScreen:
|
||||
:path: "../node_modules/expo-splash-screen/ios"
|
||||
EXStoreReview:
|
||||
:path: "../node_modules/expo-store-review/ios"
|
||||
EXVideoThumbnails:
|
||||
:path: "../node_modules/expo-video-thumbnails/ios"
|
||||
FBLazyVector:
|
||||
|
@ -853,30 +821,30 @@ EXTERNAL SOURCES:
|
|||
SPEC CHECKSUMS:
|
||||
boost: a7c83b31436843459a1961bfd74b96033dc77234
|
||||
DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
|
||||
EXApplication: e418d737a036e788510f2c4ad6c10a7d54d18586
|
||||
EXAV: 596506c9bee54ad52f2f3b625cdaeb9d9f2dd6b7
|
||||
EXConstants: 7c44785d41d8e959d527d23d29444277a4d1ee73
|
||||
EXErrorRecovery: 74d71ee59f6814315457b09d68e86aa95cc7d05d
|
||||
EXFileSystem: 927e0a8885aa9c49e50fc38eaba2c2389f2f1019
|
||||
EXFirebaseAnalytics: 2e478758e153b908b67477dff7adf99ffbf37a1b
|
||||
EXFirebaseCore: cb1e6afad20c4c32a4966432c78ebfff29d8db6b
|
||||
EXFont: 06df627203afcb8a3b3152ec06eb2f11f46f0cff
|
||||
EXNotifications: 9a2aa201deb19dfe1dbe0e370eeb2922de0d2422
|
||||
Expo: 7ac824960a6059d6c68e73f432c8e6bf6d92a0ef
|
||||
ExpoCrypto: e534314db0e1a17ae12b5140d529bd0c5efcbc6a
|
||||
ExpoHaptics: efe9e68e9dfe0d15c183c0c70a25f3874124ab9e
|
||||
ExpoKeepAwake: 0e8f18142e71bbf2c7f6aa66ebed249ba1420320
|
||||
ExpoLocalization: 63204f4b9d4f653469d266332ceaa6c6ac8a305d
|
||||
ExpoModulesCore: 39ec590ce622289c060183aba57f77b1e73b4e11
|
||||
ExpoRandom: f9f1faa299a40733867f344d6b7bfa2d1f4ab04d
|
||||
ExpoWebBrowser: 5804ac42a8269d0e534bc4461993005f72535649
|
||||
EXScreenCapture: 23de056fdb02edd1fb8f147b0fd198c6d5cada3d
|
||||
EXSecureStore: ac4b3c89dd5810528074d9422d5fed5a9e684467
|
||||
EXSplashScreen: 799bece80089219b2c989c1082d70f3b00995cda
|
||||
EXStoreReview: cbb6b2202bb6f831cd3234d9d8b995cec0eb32f2
|
||||
EXVideoThumbnails: 486533e1a66c9859f9b9e3b2e1f9f0b275515b48
|
||||
FBLazyVector: 739d2f9719faecb463c7aa191591af31c8c94182
|
||||
FBReactNativeSpec: 957de82f66e31f2f14bbec34e37242282fdd26de
|
||||
EXApplication: 034b1c40a8e9fe1bff76a1e511ee90dff64ad834
|
||||
EXAV: 766516466675fc5fdd7c500acced5934e8b00de2
|
||||
EXConstants: 3c86653c422dd77e40d10cbbabb3025003977415
|
||||
EXErrorRecovery: ae43433feb0608a64dc5b1c8363b3e7769a9ea24
|
||||
EXFileSystem: 60602b6eefa6873f97172c684b7537c9760b50d6
|
||||
EXFirebaseAnalytics: 58d70e698859b070b2450ad8664d7b5bc6c6e3e1
|
||||
EXFirebaseCore: d0d88cb904e893af07f809ab08c0892489bc6956
|
||||
EXFont: 319606bfe48c33b5b5063fb0994afdc496befe80
|
||||
EXNotifications: babce2a87b7922051354fcfe7a74dd279b7e272a
|
||||
Expo: 8e4f1d149b58d5df10d302e0b5c489f9fc6623fc
|
||||
ExpoCrypto: 51e7662c7f5bfeab25b7909b8a5d545ec15d4877
|
||||
ExpoHaptics: 5a56d30a87ea213dd00b09566dc4b441a4dff97f
|
||||
ExpoKeepAwake: 69b59d0a8d2b24de9f82759c39b3821fec030318
|
||||
ExpoLocalization: e202d1e2a4950df17ac8d0889d65a1ffd7532d7e
|
||||
ExpoModulesCore: 20decc110ca3987e1728dee2ce4b3f79e147edda
|
||||
ExpoRandom: 58b7e0a5fe1adf1cb6dc1cbe503a6fe9524f36ce
|
||||
ExpoStoreReview: ff6d631f2949eb7e4b2d14146ef6af25a16d770d
|
||||
ExpoWebBrowser: 073e50f16669d498fb49063b9b7fe780b24f7fda
|
||||
EXScreenCapture: d9f1ec31042dfef109290d06c2b4789b7444d16d
|
||||
EXSecureStore: daec0117c922a67c658cb229152a9e252e5c1750
|
||||
EXSplashScreen: 4b57f8416a057411cb3c97db9fc9a615f8c1d5d9
|
||||
EXVideoThumbnails: 8b3e48f3716679dd0cbf949217a31eab5c555799
|
||||
FBLazyVector: affa4ba1bfdaac110a789192f4d452b053a86624
|
||||
FBReactNativeSpec: fe8b5f1429cfe83a8d72dc8ed61dc7704cac8745
|
||||
Firebase: 800f16f07af493d98d017446a315c27af0552f41
|
||||
FirebaseAnalytics: 1b60984a408320dda637306f3f733699ef8473d7
|
||||
FirebaseCore: 25c0400b670fd1e2f2104349cd3b5dcce8d9418f
|
||||
|
@ -884,69 +852,69 @@ SPEC CHECKSUMS:
|
|||
FirebaseCoreInternal: bca76517fe1ed381e989f5e7d8abb0da8d85bed3
|
||||
FirebaseInstallations: 0a115432c4e223c5ab20b0dbbe4cbefa793a0e8e
|
||||
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
|
||||
glog: 3d02b25ca00c2d456734d0bcff864cbc62f6ae1a
|
||||
glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b
|
||||
GoogleAppMeasurement: 6ee231473fbd75c11221dfce489894334024eead
|
||||
GoogleDataTransport: 1c8145da7117bd68bbbed00cf304edb6a24de00f
|
||||
GoogleUtilities: 1d20a6ad97ef46f67bbdec158ce00563a671ebb7
|
||||
hermes-engine: c2c873a670bc435451449f918c2b3ab3c39255fc
|
||||
GoogleUtilities: bad72cb363809015b1f7f19beb1f1cd23c589f95
|
||||
hermes-engine: 7fe5fc6ef707b7fdcb161b63898ec500e285653d
|
||||
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
|
||||
libwebp: 60305b2e989864154bd9be3d772730f08fc6a59c
|
||||
libwebp: f62cb61d0a484ba548448a4bd52aabf150ff6eef
|
||||
nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431
|
||||
PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb
|
||||
RCT-Folly: b9d9fe1fc70114b751c076104e52f3b1b5e5a95a
|
||||
RCTRequired: c8c080849a3670601d5c7056023a2176067a69d8
|
||||
RCTTypeSafety: 710aef40f5ae246bc5fff7e873855b17ed11c180
|
||||
React: b6bb382534be4de9d367ef3d04f92108c1768160
|
||||
React-bridging: 0fca0337cef9305026814907dd29254a833a2db7
|
||||
React-callinvoker: 700e6eb96b5f7f2fdd96d7263cd4627d2fa080ed
|
||||
React-Codegen: fd21633c4b9f47d0681bbb54b173a203963a5e4d
|
||||
React-Core: 8ec15c9727c8c01b1e4f14cad5bd21f7c1d56d49
|
||||
React-CoreModules: 79486447bf901292a83df52d4f7acbecda296723
|
||||
React-cxxreact: 9022135650dd9960a60a1361e9add424c6c37ab9
|
||||
React-hermes: b5ce7fb460ff6d39e7bb9bbe1f523272c4b85c0b
|
||||
React-jsi: 4ccb3599c422ad071e3895c5feab9b0afc40505d
|
||||
React-jsiexecutor: c61b60de03b3474e5749b8a8fd8e6507630d62c4
|
||||
React-jsinspector: eaacb698c5af7a99131bc1933806372c20222dfd
|
||||
React-logger: ebb4d31bbbe4f1a8a1a9b658d7429210b8f68160
|
||||
react-native-blur: 3e9c8e8e9f7d17fa1b94e1a0ae9fd816675f5382
|
||||
RCT-Folly: 0080d0a6ebf2577475bda044aa59e2ca1f909cda
|
||||
RCTRequired: 21229f84411088e5d8538f21212de49e46cc83e2
|
||||
RCTTypeSafety: 62eed57a32924b09edaaf170a548d1fc96223086
|
||||
React: f0254ccddeeef1defe66c6b1bb9133a4f040792b
|
||||
React-bridging: e46911666b7ec19538a620a221d6396cd293d687
|
||||
React-callinvoker: 66b62e2c34546546b2f21ab0b7670346410a2b53
|
||||
React-Codegen: b6999435966df3bdf82afa3f319ba0d6f9a8532a
|
||||
React-Core: dabbc9d1fe0a11d884e6ee1599789cf8eb1058a5
|
||||
React-CoreModules: 5b6b7668f156f73a56420df9ec68ca2ec8f2e818
|
||||
React-cxxreact: c7ca2baee46db22a30fce9e639277add3c3f6ad1
|
||||
React-hermes: c93e1d759ad5560dfea54d233013d7d2c725c286
|
||||
React-jsi: a565dcb49130ed20877a9bb1105ffeecbb93d02d
|
||||
React-jsiexecutor: 31564fa6912459921568e8b0e49024285a4d584b
|
||||
React-jsinspector: badd81696361249893a80477983e697aab3c1a34
|
||||
React-logger: fdda34dd285bdb0232e059b19d9606fa0ec3bb9c
|
||||
react-native-blur: 50c9feabacbc5f49b61337ebc32192c6be7ec3c3
|
||||
react-native-blurhash: add4df9a937b4e021a24bc67a0714f13e0bd40b7
|
||||
react-native-cameraroll: 38b40d9033e4077b6c603f92f95c6d05fa7907df
|
||||
react-native-cameraroll: a40b082318eb1ecd0336a2f29d9f74b7f2c8cae8
|
||||
react-native-context-menu-view: b0beca02aad4bd9f9d7d932bf437e0a03baa69ef
|
||||
react-native-image-picker: 4bc9ed38c8be255b515d8c88babbaf74973f91a8
|
||||
react-native-language-detection: 0e43195ad014974f1b7a31b64820eff34a243f2d
|
||||
react-native-live-text-image-view: 483bacfdba464162b8cf176bba555364f18b584c
|
||||
react-native-netinfo: f80db8cac2151405633324cb645c60af098ee461
|
||||
react-native-pager-view: 592421df0259bf7a7a4fe85b74c24f3f39905605
|
||||
react-native-pager-view: 7abf89f9834d9a4021b2fb6a5ef2abff570b46fb
|
||||
react-native-paste-input: 183ad7dc224e192719616f4258dde5b548627d08
|
||||
react-native-safe-area-context: 99b24a0c5acd0d5dcac2b1a7f18c49ea317be99a
|
||||
react-native-segmented-control: 65df6cd0619b780b3843d574a72d4c7cec396097
|
||||
React-perflogger: 1fb1ad5333b43a5137afd7608695f7a42c5efd27
|
||||
React-RCTActionSheet: a435bd67689433575a1e5d7614b021d2c17f0726
|
||||
React-RCTAnimation: d097c5ed2d00735958508617555abd85183b94e2
|
||||
React-RCTBlob: f43a0fceb328e1a40aa52701a4eba955635444ab
|
||||
React-RCTImage: 08f4428e931efe0eefb94443c8ca08cfb250a556
|
||||
React-RCTLinking: 3a8851e818652582f87e5a7577302e6ad7e1de3e
|
||||
React-RCTNetwork: 19f7c66b612e2336eefdfbc7ab3a9bd8ca4e21cf
|
||||
React-RCTSettings: 9324e718a865ff01e4a96be4c65923581b2d5170
|
||||
React-RCTText: 9cadcd5d982c1d25f7439f47354b1c1b75e60105
|
||||
React-RCTVibration: 285f8538386c660e6b9497e204636acd93bf7fcc
|
||||
React-runtimeexecutor: 0af71c94f968fa10015bf0119951bccd2e4d8865
|
||||
ReactCommon: fe7580b9d10f00249facf25659e0ec051320cc8a
|
||||
RNCAsyncStorage: 0c357f3156fcb16c8589ede67cc036330b6698ca
|
||||
React-perflogger: e68d3795cf5d247a0379735cbac7309adf2fb931
|
||||
React-RCTActionSheet: 05452c3b281edb27850253db13ecd4c5a65bc247
|
||||
React-RCTAnimation: 578eebac706428e68466118e84aeacf3a282b4da
|
||||
React-RCTBlob: f47a0aa61e7d1fb1a0e13da832b0da934939d71a
|
||||
React-RCTImage: 60f54b66eed65d86b6dffaf4733d09161d44929d
|
||||
React-RCTLinking: 91073205aeec4b29450ca79b709277319368ac9e
|
||||
React-RCTNetwork: ca91f2c9465a7e335c8a5fae731fd7f10572213b
|
||||
React-RCTSettings: 1a9a5d01337d55c18168c1abe0f4a589167d134a
|
||||
React-RCTText: c591e8bd9347a294d8416357ca12d779afec01d5
|
||||
React-RCTVibration: 8e5c8c5d17af641f306d7380d8d0fe9b3c142c48
|
||||
React-runtimeexecutor: 7401c4a40f8728fd89df4a56104541b760876117
|
||||
ReactCommon: c9246996e73bf75a2c6c3ff15f1e16707cdc2da9
|
||||
RNCAsyncStorage: 8616bd5a58af409453ea4e1b246521bb76578d60
|
||||
RNCClipboard: 2834e1c4af68697089cdd455ee4a4cdd198fa7dd
|
||||
RNFastImage: c74e098cb862b4870c3de0b1096b65c63e492938
|
||||
RNFastImage: c5dd1b551779c5826fe43b7d36788385da2021e2
|
||||
RNGestureHandler: 62232ba8f562f7dea5ba1b3383494eb5bf97a4d3
|
||||
RNReanimated: c3e58924b9418883b0bde9e78c4c957302f02435
|
||||
RNReanimated: 2a91e85fcd343f8af3c58d3425b99fdd285590a5
|
||||
RNScreens: 34cc502acf1b916c582c60003dc3089fa01dc66d
|
||||
RNSentry: 694aecc3d8240e4935374974a6636e360ae06394
|
||||
RNSentry: db7fd7b66efda28885e4e904a8b5e7349aec61c1
|
||||
RNShareMenu: cb9dac548c8bf147d06f0bf07296ad51ea9f5fc3
|
||||
RNSVG: 42a0c731b11179ebbd27a3eeeafa7201ebb476ff
|
||||
SDWebImage: 23d714cd599354ee7906dbae26dff89b421c4370
|
||||
RNSVG: 38ca962c970dbce1ca38991a5aebf26d163f9efb
|
||||
SDWebImage: b9a731e1d6307f44ca703b3976d18c24ca561e84
|
||||
SDWebImageWebPCoder: 18503de6621dd2c420d680e33d46bf8e1d5169b0
|
||||
Sentry: 2c6053e4cfe6dea6608135dea1928ffbb4ecfba5
|
||||
Sentry: 4272663eb0eda312024d795ca3f5a562a8ce5e18
|
||||
Swime: d7b2c277503b6cea317774aedc2dce05613f8b0b
|
||||
Yoga: 75bf4b0131cfb46a659cd0c13309b79a6fcff66d
|
||||
Yoga: eca980a5771bf114c41a754098cd85e6e0d90ed7
|
||||
|
||||
PODFILE CHECKSUM: 244b6793e4be83f0909a91b2fe15c8f89a5e8151
|
||||
PODFILE CHECKSUM: e4191b63c8f15031b2365226730770e7978dca41
|
||||
|
||||
COCOAPODS: 1.11.3
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
"NSPhotoLibraryAddUsageDescription" = "Autoriser tooot à enregistrer des images sur votre pellicule";
|
||||
"NSPhotoLibraryUsageDescription" = "Autoriser tooot à enregistrer des images sur votre pellicule";
|
|
@ -76,6 +76,7 @@
|
|||
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>"; };
|
||||
E66C0842291F095800DFFF60 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
E671BDF8290EAFB800287BD0 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/InfoPlist.strings"; 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>"; };
|
||||
|
@ -291,6 +292,7 @@
|
|||
vi,
|
||||
ja,
|
||||
"zh-Hant",
|
||||
fr,
|
||||
);
|
||||
mainGroup = 83CBB9F61A601CBA00E9B192;
|
||||
productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
|
||||
|
@ -519,6 +521,7 @@
|
|||
E69EBACE28DF28560057EDEC /* vi */,
|
||||
E6C8B26628F5F9FC0062CF2E /* ja */,
|
||||
E671BDF8290EAFB800287BD0 /* zh-Hant */,
|
||||
E66C0842291F095800DFFF60 /* fr */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
|
@ -544,7 +547,8 @@
|
|||
"FB_SONARKIT_ENABLED=1",
|
||||
);
|
||||
INFOPLIST_FILE = tooot/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.4;
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
@ -581,7 +585,8 @@
|
|||
DEVELOPMENT_TEAM = 8EGBLQ2MA6;
|
||||
"ENABLE_HARDENED_RUNTIME[sdk=macosx*]" = YES;
|
||||
INFOPLIST_FILE = tooot/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.4;
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
@ -609,7 +614,7 @@
|
|||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
|
@ -654,12 +659,12 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.4;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
/usr/lib/swift,
|
||||
"$(inherited)",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = "\"\"";
|
||||
LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"\"";
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
|
||||
|
@ -672,7 +677,7 @@
|
|||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
|
@ -710,12 +715,12 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.4;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
/usr/lib/swift,
|
||||
"$(inherited)",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = "\"\"";
|
||||
LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"\"";
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
|
||||
|
@ -747,7 +752,7 @@
|
|||
INFOPLIST_FILE = ShareExtension/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = ShareExtension;
|
||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.4;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
"IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
@ -796,7 +801,7 @@
|
|||
INFOPLIST_FILE = ShareExtension/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = ShareExtension;
|
||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.4;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
"IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
|
89
package.json
89
package.json
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "tooot",
|
||||
"version": "4.5.1",
|
||||
"version": "4.6.0",
|
||||
"description": "tooot for Mastodon",
|
||||
"author": "xmflsct <me@xmflsct.com>",
|
||||
"license": "GPL-3.0-or-later",
|
||||
|
@ -18,7 +18,7 @@
|
|||
"postinstall": "patch-package"
|
||||
},
|
||||
"dependencies": {
|
||||
"@expo/react-native-action-sheet": "^4.0.0",
|
||||
"@expo/react-native-action-sheet": "^4.0.1",
|
||||
"@formatjs/intl-datetimeformat": "^6.3.1",
|
||||
"@formatjs/intl-getcanonicallocales": "^2.0.4",
|
||||
"@formatjs/intl-locale": "^3.0.7",
|
||||
|
@ -27,47 +27,47 @@
|
|||
"@formatjs/intl-relativetimeformat": "^11.1.4",
|
||||
"@mattermost/react-native-paste-input": "^0.5.1",
|
||||
"@neverdull-agency/expo-unlimited-secure-store": "^1.0.10",
|
||||
"@react-native-async-storage/async-storage": "^1.17.10",
|
||||
"@react-native-camera-roll/camera-roll": "^5.0.4",
|
||||
"@react-native-async-storage/async-storage": "~1.17.11",
|
||||
"@react-native-camera-roll/camera-roll": "^5.1.0",
|
||||
"@react-native-clipboard/clipboard": "^1.11.1",
|
||||
"@react-native-community/blur": "^4.2.0",
|
||||
"@react-native-community/netinfo": "^9.3.6",
|
||||
"@react-native-community/blur": "^4.3.0",
|
||||
"@react-native-community/netinfo": "9.3.6",
|
||||
"@react-native-community/segmented-control": "^2.2.2",
|
||||
"@react-navigation/bottom-tabs": "^6.4.0",
|
||||
"@react-navigation/native": "^6.0.13",
|
||||
"@react-navigation/native-stack": "^6.9.1",
|
||||
"@react-navigation/stack": "^6.3.3",
|
||||
"@reduxjs/toolkit": "^1.8.6",
|
||||
"@sentry/react-native": "^4.7.1",
|
||||
"@react-navigation/stack": "^6.3.4",
|
||||
"@reduxjs/toolkit": "^1.9.0",
|
||||
"@sentry/react-native": "4.8.0",
|
||||
"@sharcoux/slider": "^6.0.3",
|
||||
"axios": "^0.27.2",
|
||||
"expo": "^46.0.16",
|
||||
"expo-auth-session": "^3.7.1",
|
||||
"expo-av": "^12.0.4",
|
||||
"expo-constants": "^13.2.4",
|
||||
"expo-crypto": "^11.0.0",
|
||||
"expo-file-system": "^14.1.0",
|
||||
"expo-firebase-analytics": "^7.2.0",
|
||||
"expo-haptics": "^11.3.0",
|
||||
"expo-linking": "^3.2.2",
|
||||
"expo-localization": "^13.1.0",
|
||||
"expo-notifications": "^0.16.1",
|
||||
"expo-random": "^12.3.0",
|
||||
"expo-screen-capture": "^4.3.0",
|
||||
"expo-secure-store": "^11.3.0",
|
||||
"expo-splash-screen": "^0.16.2",
|
||||
"expo-store-review": "^5.3.0",
|
||||
"expo-video-thumbnails": "^6.4.0",
|
||||
"expo-web-browser": "^11.0.0",
|
||||
"expo": "^47.0.3",
|
||||
"expo-auth-session": "~3.7.2",
|
||||
"expo-av": "~13.0.1",
|
||||
"expo-constants": "~14.0.2",
|
||||
"expo-crypto": "~12.0.0",
|
||||
"expo-file-system": "~15.1.1",
|
||||
"expo-firebase-analytics": "~8.0.0",
|
||||
"expo-haptics": "~12.0.1",
|
||||
"expo-linking": "~3.2.3",
|
||||
"expo-localization": "~14.0.0",
|
||||
"expo-notifications": "~0.17.0",
|
||||
"expo-random": "~13.0.0",
|
||||
"expo-screen-capture": "~5.0.0",
|
||||
"expo-secure-store": "~12.0.0",
|
||||
"expo-splash-screen": "~0.17.4",
|
||||
"expo-store-review": "~6.0.0",
|
||||
"expo-video-thumbnails": "~7.0.0",
|
||||
"expo-web-browser": "~12.0.0",
|
||||
"i18next": "^22.0.4",
|
||||
"li": "^1.3.0",
|
||||
"linkify-it": "^4.0.1",
|
||||
"lodash": "^4.17.21",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
"react-i18next": "^12.0.0",
|
||||
"react-intl": "^6.2.1",
|
||||
"react-native": "^0.69.6",
|
||||
"react-native": "0.70.5",
|
||||
"react-native-animated-spinkit": "^1.5.2",
|
||||
"react-native-base64": "^0.2.1",
|
||||
"react-native-blurhash": "^1.1.10",
|
||||
|
@ -75,37 +75,37 @@
|
|||
"react-native-fast-image": "^8.6.3",
|
||||
"react-native-feather": "^1.1.2",
|
||||
"react-native-flash-message": "^0.3.1",
|
||||
"react-native-gesture-handler": "^2.8.0",
|
||||
"react-native-gesture-handler": "~2.8.0",
|
||||
"react-native-htmlview": "^0.16.0",
|
||||
"react-native-image-picker": "^4.10.0",
|
||||
"react-native-language-detection": "^0.1.0",
|
||||
"react-native-live-text-image-view": "^0.4.0",
|
||||
"react-native-pager-view": "^6.0.2",
|
||||
"react-native-reanimated": "^2.12.0",
|
||||
"react-native-reanimated-zoom": "^0.3.2",
|
||||
"react-native-safe-area-context": "^4.4.1",
|
||||
"react-native-screens": "^3.18.2",
|
||||
"react-native-pager-view": "6.1.0",
|
||||
"react-native-reanimated": "~2.12.0",
|
||||
"react-native-reanimated-zoom": "^0.3.3",
|
||||
"react-native-safe-area-context": "4.4.1",
|
||||
"react-native-screens": "~3.18.2",
|
||||
"react-native-share-menu": "^6.0.0",
|
||||
"react-native-svg": "13.0.0",
|
||||
"react-native-svg": "13.5.0",
|
||||
"react-native-swipe-list-view": "^3.2.9",
|
||||
"react-native-tab-view": "^3.3.0",
|
||||
"react-query": "^3.39.2",
|
||||
"react-redux": "^8.0.4",
|
||||
"react-redux": "^8.0.5",
|
||||
"redux-persist": "^6.0.0",
|
||||
"rn-placeholder": "^3.0.3",
|
||||
"valid-url": "^1.0.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.19.6",
|
||||
"@babel/core": "^7.20.2",
|
||||
"@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",
|
||||
"@expo/config": "^7.0.3",
|
||||
"@types/linkify-it": "^3.0.2",
|
||||
"@types/lodash": "^4.14.186",
|
||||
"@types/react": "^18.0.24",
|
||||
"@types/react-dom": "^18.0.8",
|
||||
"@types/react-native": "^0.69.5",
|
||||
"@types/lodash": "^4.14.188",
|
||||
"@types/react": "~18.0.25",
|
||||
"@types/react-dom": "~18.0.8",
|
||||
"@types/react-native": "~0.70.6",
|
||||
"@types/react-native-base64": "^0.2.0",
|
||||
"@types/react-native-share-menu": "^5.0.2",
|
||||
"@types/react-timeago": "^4.1.3",
|
||||
|
@ -115,6 +115,7 @@
|
|||
"babel-plugin-transform-remove-console": "^6.9.4",
|
||||
"chalk": "^4.1.2",
|
||||
"dotenv": "^16.0.3",
|
||||
"expo-cli": "^6.0.8",
|
||||
"patch-package": "^6.5.0",
|
||||
"postinstall-postinstall": "^2.1.0",
|
||||
"react-native-clean-project": "^4.0.1",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/node_modules/react-native-fast-image/RNFastImage.podspec b/node_modules/react-native-fast-image/RNFastImage.podspec
|
||||
index db0fada..23770b6 100644
|
||||
index db0fada..b23cd91 100644
|
||||
--- a/node_modules/react-native-fast-image/RNFastImage.podspec
|
||||
+++ b/node_modules/react-native-fast-image/RNFastImage.podspec
|
||||
@@ -16,6 +16,6 @@ Pod::Spec.new do |s|
|
||||
|
@ -8,7 +8,7 @@ index db0fada..23770b6 100644
|
|||
s.dependency 'React-Core'
|
||||
- s.dependency 'SDWebImage', '~> 5.11.1'
|
||||
- s.dependency 'SDWebImageWebPCoder', '~> 0.8.4'
|
||||
+ s.dependency 'SDWebImage', '~> 5.13.5'
|
||||
+ s.dependency 'SDWebImage', '~> 5.14.2'
|
||||
+ s.dependency 'SDWebImageWebPCoder', '~> 0.9.1'
|
||||
end
|
||||
diff --git a/node_modules/react-native-fast-image/android/build.gradle b/node_modules/react-native-fast-image/android/build.gradle
|
||||
|
|
|
@ -1,41 +0,0 @@
|
|||
diff --git a/node_modules/react-native-reanimated-zoom/lib/typescript/zoom.d.ts b/node_modules/react-native-reanimated-zoom/lib/typescript/zoom.d.ts
|
||||
index 38fb6f1..e93c288 100644
|
||||
--- a/node_modules/react-native-reanimated-zoom/lib/typescript/zoom.d.ts
|
||||
+++ b/node_modules/react-native-reanimated-zoom/lib/typescript/zoom.d.ts
|
||||
@@ -6,6 +6,7 @@ declare type Props = {
|
||||
minimumZoomScale?: number;
|
||||
maximumZoomScale?: number;
|
||||
simultaneousGesture?: GestureType;
|
||||
+ isZoomed?: SharedValue<boolean>;
|
||||
} & ViewProps;
|
||||
export declare function Zoom(props: Props): JSX.Element;
|
||||
export {};
|
||||
diff --git a/node_modules/react-native-reanimated-zoom/src/zoom.tsx b/node_modules/react-native-reanimated-zoom/src/zoom.tsx
|
||||
index e07b415..d57a1eb 100644
|
||||
--- a/node_modules/react-native-reanimated-zoom/src/zoom.tsx
|
||||
+++ b/node_modules/react-native-reanimated-zoom/src/zoom.tsx
|
||||
@@ -7,6 +7,7 @@ import Animated, {
|
||||
withTiming,
|
||||
cancelAnimation,
|
||||
runOnJS,
|
||||
+ SharedValue,
|
||||
} from 'react-native-reanimated';
|
||||
import {
|
||||
Gesture,
|
||||
@@ -20,6 +21,7 @@ type Props = {
|
||||
minimumZoomScale?: number;
|
||||
maximumZoomScale?: number;
|
||||
simultaneousGesture?: GestureType;
|
||||
+ isZoomed?: SharedValue<boolean>;
|
||||
} & ViewProps;
|
||||
|
||||
export function Zoom(props: Props) {
|
||||
@@ -39,7 +41,7 @@ export function Zoom(props: Props) {
|
||||
const originY = useSharedValue(0);
|
||||
const scale = useSharedValue(1);
|
||||
const isPinching = useSharedValue(false);
|
||||
- const isZoomed = useSharedValue(false);
|
||||
+ const isZoomed = props.isZoomed || useSharedValue(false);
|
||||
const viewHeight = useSharedValue(0);
|
||||
const viewWidth = useSharedValue(0);
|
||||
|
|
@ -29,6 +29,7 @@ declare namespace Mastodon {
|
|||
fields: Field[]
|
||||
bot: boolean
|
||||
source?: Source
|
||||
suspended?: boolean
|
||||
}
|
||||
|
||||
type Announcement = {
|
||||
|
|
|
@ -34,9 +34,11 @@ const ComponentAccount: React.FC<Props> = ({
|
|||
<Pressable
|
||||
accessibilityRole='button'
|
||||
style={{
|
||||
flex: 1,
|
||||
paddingHorizontal: StyleConstants.Spacing.Global.PagePadding,
|
||||
paddingVertical: StyleConstants.Spacing.M,
|
||||
flexDirection: 'row',
|
||||
alignSelf: 'flex-start',
|
||||
alignItems: 'center'
|
||||
}}
|
||||
onPress={customOnPress || onPress}
|
||||
|
|
|
@ -207,6 +207,10 @@ const ParseHTML = React.memo(
|
|||
expandHint = t('HTML.defaultHint')
|
||||
}
|
||||
|
||||
if (disableDetails) {
|
||||
numberOfLines = 4
|
||||
}
|
||||
|
||||
const renderNodeCallback = useCallback(
|
||||
(node: any, index: any) =>
|
||||
renderNode({
|
||||
|
@ -247,7 +251,7 @@ const ParseHTML = React.memo(
|
|||
|
||||
return (
|
||||
<View style={{ overflow: 'hidden' }}>
|
||||
{typeof totalLines === 'number' || numberOfLines === 1 ? (
|
||||
{(!disableDetails && typeof totalLines === 'number') || numberOfLines === 1 ? (
|
||||
<Pressable
|
||||
accessibilityLabel={t('HTML.accessibilityHint')}
|
||||
onPress={() => {
|
||||
|
|
|
@ -16,8 +16,8 @@ import { getInstanceAccount } from '@utils/slices/instancesSlice'
|
|||
import { StyleConstants } from '@utils/styles/constants'
|
||||
import { useTheme } from '@utils/styles/ThemeManager'
|
||||
import { uniqBy } from 'lodash'
|
||||
import React, { useCallback, useRef } from 'react'
|
||||
import { Pressable, View } from 'react-native'
|
||||
import React, { useRef } from 'react'
|
||||
import { Pressable, StyleProp, View, ViewStyle } from 'react-native'
|
||||
import { useSelector } from 'react-redux'
|
||||
import TimelineContextMenu from './Shared/ContextMenu'
|
||||
import TimelineFeedback from './Shared/Feedback'
|
||||
|
@ -45,6 +45,10 @@ const TimelineDefault: React.FC<Props> = ({
|
|||
disableDetails = false,
|
||||
disableOnPress = false
|
||||
}) => {
|
||||
if (highlighted) {
|
||||
disableOnPress = true
|
||||
}
|
||||
|
||||
const { colors } = useTheme()
|
||||
const instanceAccount = useSelector(getInstanceAccount, () => true)
|
||||
const navigation = useNavigation<StackNavigationProp<TabLocalStackParamList>>()
|
||||
|
@ -58,27 +62,105 @@ const TimelineDefault: React.FC<Props> = ({
|
|||
complete: false
|
||||
})
|
||||
|
||||
if (
|
||||
queryKey &&
|
||||
shouldFilter({ copiableContent, status: actualStatus, queryKey }) &&
|
||||
!highlighted
|
||||
) {
|
||||
return <TimelineFiltered />
|
||||
const filtered = queryKey && shouldFilter({ copiableContent, status: actualStatus, queryKey })
|
||||
if (queryKey && filtered && !highlighted) {
|
||||
return <TimelineFiltered phrase={filtered} />
|
||||
}
|
||||
|
||||
const onPress = useCallback(() => {
|
||||
const onPress = () => {
|
||||
analytics('timeline_default_press', {
|
||||
page: queryKey ? queryKey[1].page : origin
|
||||
})
|
||||
!disableOnPress &&
|
||||
!highlighted &&
|
||||
navigation.push('Tab-Shared-Toot', {
|
||||
toot: actualStatus,
|
||||
rootQueryKey: queryKey
|
||||
})
|
||||
}, [])
|
||||
navigation.push('Tab-Shared-Toot', {
|
||||
toot: actualStatus,
|
||||
rootQueryKey: queryKey
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
const mainStyle: StyleProp<ViewStyle> = {
|
||||
padding: StyleConstants.Spacing.Global.PagePadding,
|
||||
backgroundColor: colors.backgroundDefault,
|
||||
paddingBottom: disableDetails ? StyleConstants.Spacing.Global.PagePadding : 0
|
||||
}
|
||||
const main = () => (
|
||||
<>
|
||||
{item.reblog ? (
|
||||
<TimelineActioned action='reblog' account={item.account} />
|
||||
) : item._pinned ? (
|
||||
<TimelineActioned action='pinned' account={item.account} />
|
||||
) : null}
|
||||
|
||||
<View style={{ flex: 1, width: '100%', flexDirection: 'row' }}>
|
||||
<TimelineAvatar
|
||||
queryKey={disableOnPress ? undefined : queryKey}
|
||||
account={actualStatus.account}
|
||||
highlighted={highlighted}
|
||||
/>
|
||||
<TimelineHeaderDefault
|
||||
queryKey={disableOnPress ? undefined : queryKey}
|
||||
status={actualStatus}
|
||||
highlighted={highlighted}
|
||||
/>
|
||||
</View>
|
||||
|
||||
<View
|
||||
style={{
|
||||
paddingTop: highlighted ? StyleConstants.Spacing.S : 0,
|
||||
paddingLeft: highlighted ? 0 : StyleConstants.Avatar.M + StyleConstants.Spacing.S
|
||||
}}
|
||||
>
|
||||
{typeof actualStatus.content === 'string' && actualStatus.content.length > 0 ? (
|
||||
<TimelineContent
|
||||
status={actualStatus}
|
||||
highlighted={highlighted}
|
||||
disableDetails={disableDetails}
|
||||
/>
|
||||
) : null}
|
||||
{queryKey && actualStatus.poll ? (
|
||||
<TimelinePoll
|
||||
queryKey={queryKey}
|
||||
rootQueryKey={rootQueryKey}
|
||||
statusId={actualStatus.id}
|
||||
poll={actualStatus.poll}
|
||||
reblog={item.reblog ? true : false}
|
||||
sameAccount={ownAccount}
|
||||
/>
|
||||
) : null}
|
||||
{!disableDetails &&
|
||||
Array.isArray(actualStatus.media_attachments) &&
|
||||
actualStatus.media_attachments.length ? (
|
||||
<TimelineAttachment status={actualStatus} />
|
||||
) : null}
|
||||
{!disableDetails && actualStatus.card ? <TimelineCard card={actualStatus.card} /> : null}
|
||||
{!disableDetails ? (
|
||||
<TimelineFullConversation queryKey={queryKey} status={actualStatus} />
|
||||
) : null}
|
||||
<TimelineTranslate status={actualStatus} highlighted={highlighted} />
|
||||
<TimelineFeedback status={actualStatus} highlighted={highlighted} />
|
||||
</View>
|
||||
|
||||
{queryKey && !disableDetails ? (
|
||||
<TimelineActions
|
||||
queryKey={queryKey}
|
||||
rootQueryKey={rootQueryKey}
|
||||
highlighted={highlighted}
|
||||
status={actualStatus}
|
||||
ownAccount={ownAccount}
|
||||
accts={uniqBy(
|
||||
([actualStatus.account] as Mastodon.Account[] & Mastodon.Mention[])
|
||||
.concat(actualStatus.mentions)
|
||||
.filter(d => d?.id !== instanceAccount?.id),
|
||||
d => d?.id
|
||||
).map(d => d?.acct)}
|
||||
reblog={item.reblog ? true : false}
|
||||
/>
|
||||
) : null}
|
||||
</>
|
||||
)
|
||||
|
||||
return disableOnPress ? (
|
||||
<View style={mainStyle}>{main()}</View>
|
||||
) : (
|
||||
<TimelineContextMenu
|
||||
copiableContent={copiableContent}
|
||||
status={actualStatus}
|
||||
|
@ -87,86 +169,11 @@ const TimelineDefault: React.FC<Props> = ({
|
|||
>
|
||||
<Pressable
|
||||
accessible={highlighted ? false : true}
|
||||
style={{
|
||||
padding: StyleConstants.Spacing.Global.PagePadding,
|
||||
backgroundColor: colors.backgroundDefault,
|
||||
paddingBottom:
|
||||
disableDetails && disableOnPress ? StyleConstants.Spacing.Global.PagePadding : 0
|
||||
}}
|
||||
style={mainStyle}
|
||||
onPress={onPress}
|
||||
onLongPress={() => {}}
|
||||
>
|
||||
{item.reblog ? (
|
||||
<TimelineActioned action='reblog' account={item.account} />
|
||||
) : item._pinned ? (
|
||||
<TimelineActioned action='pinned' account={item.account} />
|
||||
) : null}
|
||||
|
||||
<View style={{ flex: 1, width: '100%', flexDirection: 'row' }}>
|
||||
<TimelineAvatar
|
||||
queryKey={disableOnPress ? undefined : queryKey}
|
||||
account={actualStatus.account}
|
||||
highlighted={highlighted}
|
||||
/>
|
||||
<TimelineHeaderDefault
|
||||
queryKey={disableOnPress ? undefined : queryKey}
|
||||
status={actualStatus}
|
||||
highlighted={highlighted}
|
||||
/>
|
||||
</View>
|
||||
|
||||
<View
|
||||
style={{
|
||||
paddingTop: highlighted ? StyleConstants.Spacing.S : 0,
|
||||
paddingLeft: highlighted ? 0 : StyleConstants.Avatar.M + StyleConstants.Spacing.S
|
||||
}}
|
||||
>
|
||||
{typeof actualStatus.content === 'string' && actualStatus.content.length > 0 ? (
|
||||
<TimelineContent
|
||||
status={actualStatus}
|
||||
highlighted={highlighted}
|
||||
disableDetails={disableDetails}
|
||||
/>
|
||||
) : null}
|
||||
{queryKey && actualStatus.poll ? (
|
||||
<TimelinePoll
|
||||
queryKey={queryKey}
|
||||
rootQueryKey={rootQueryKey}
|
||||
statusId={actualStatus.id}
|
||||
poll={actualStatus.poll}
|
||||
reblog={item.reblog ? true : false}
|
||||
sameAccount={ownAccount}
|
||||
/>
|
||||
) : null}
|
||||
{!disableDetails &&
|
||||
Array.isArray(actualStatus.media_attachments) &&
|
||||
actualStatus.media_attachments.length ? (
|
||||
<TimelineAttachment status={actualStatus} />
|
||||
) : null}
|
||||
{!disableDetails && actualStatus.card ? <TimelineCard card={actualStatus.card} /> : null}
|
||||
{!disableDetails ? (
|
||||
<TimelineFullConversation queryKey={queryKey} status={actualStatus} />
|
||||
) : null}
|
||||
<TimelineTranslate status={actualStatus} highlighted={highlighted} />
|
||||
<TimelineFeedback status={actualStatus} highlighted={highlighted} />
|
||||
</View>
|
||||
|
||||
{queryKey && !disableDetails ? (
|
||||
<TimelineActions
|
||||
queryKey={queryKey}
|
||||
rootQueryKey={rootQueryKey}
|
||||
highlighted={highlighted}
|
||||
status={actualStatus}
|
||||
ownAccount={ownAccount}
|
||||
accts={uniqBy(
|
||||
([actualStatus.account] as Mastodon.Account[] & Mastodon.Mention[])
|
||||
.concat(actualStatus.mentions)
|
||||
.filter(d => d?.id !== instanceAccount?.id),
|
||||
d => d?.id
|
||||
).map(d => d?.acct)}
|
||||
reblog={item.reblog ? true : false}
|
||||
/>
|
||||
) : null}
|
||||
{main()}
|
||||
</Pressable>
|
||||
</TimelineContextMenu>
|
||||
)
|
||||
|
|
|
@ -36,24 +36,22 @@ const TimelineNotifications = React.memo(
|
|||
complete: false
|
||||
})
|
||||
|
||||
if (
|
||||
const filtered =
|
||||
notification.status &&
|
||||
shouldFilter({ copiableContent, status: notification.status, queryKey })
|
||||
) {
|
||||
return <TimelineFiltered />
|
||||
shouldFilter({
|
||||
copiableContent,
|
||||
status: notification.status,
|
||||
queryKey
|
||||
})
|
||||
if (notification.status && filtered) {
|
||||
return <TimelineFiltered phrase={filtered} />
|
||||
}
|
||||
|
||||
const { colors } = useTheme()
|
||||
const instanceAccount = useSelector(
|
||||
getInstanceAccount,
|
||||
(prev, next) => prev?.id === next?.id
|
||||
)
|
||||
const navigation =
|
||||
useNavigation<StackNavigationProp<TabLocalStackParamList>>()
|
||||
const instanceAccount = useSelector(getInstanceAccount, (prev, next) => prev?.id === next?.id)
|
||||
const navigation = useNavigation<StackNavigationProp<TabLocalStackParamList>>()
|
||||
|
||||
const actualAccount = notification.status
|
||||
? notification.status.account
|
||||
: notification.account
|
||||
const actualAccount = notification.status ? notification.status.account : notification.account
|
||||
|
||||
const onPress = useCallback(() => {
|
||||
analytics('timeline_notification_press')
|
||||
|
@ -74,9 +72,7 @@ const TimelineNotifications = React.memo(
|
|||
style={{
|
||||
padding: StyleConstants.Spacing.Global.PagePadding,
|
||||
backgroundColor: colors.backgroundDefault,
|
||||
paddingBottom: notification.status
|
||||
? 0
|
||||
: StyleConstants.Spacing.Global.PagePadding
|
||||
paddingBottom: notification.status ? 0 : StyleConstants.Spacing.Global.PagePadding
|
||||
}}
|
||||
onPress={onPress}
|
||||
onLongPress={() => {}}
|
||||
|
@ -106,26 +102,18 @@ const TimelineNotifications = React.memo(
|
|||
account={actualAccount}
|
||||
highlighted={highlighted}
|
||||
/>
|
||||
<TimelineHeaderNotification
|
||||
queryKey={queryKey}
|
||||
notification={notification}
|
||||
/>
|
||||
<TimelineHeaderNotification queryKey={queryKey} notification={notification} />
|
||||
</View>
|
||||
|
||||
{notification.status ? (
|
||||
<View
|
||||
style={{
|
||||
paddingTop: highlighted ? StyleConstants.Spacing.S : 0,
|
||||
paddingLeft: highlighted
|
||||
? 0
|
||||
: StyleConstants.Avatar.M + StyleConstants.Spacing.S
|
||||
paddingLeft: highlighted ? 0 : StyleConstants.Avatar.M + StyleConstants.Spacing.S
|
||||
}}
|
||||
>
|
||||
{notification.status.content.length > 0 ? (
|
||||
<TimelineContent
|
||||
status={notification.status}
|
||||
highlighted={highlighted}
|
||||
/>
|
||||
<TimelineContent status={notification.status} highlighted={highlighted} />
|
||||
) : null}
|
||||
{notification.status.poll ? (
|
||||
<TimelinePoll
|
||||
|
@ -133,21 +121,14 @@ const TimelineNotifications = React.memo(
|
|||
statusId={notification.status.id}
|
||||
poll={notification.status.poll}
|
||||
reblog={false}
|
||||
sameAccount={
|
||||
notification.account.id === instanceAccount?.id
|
||||
}
|
||||
sameAccount={notification.account.id === instanceAccount?.id}
|
||||
/>
|
||||
) : null}
|
||||
{notification.status.media_attachments.length > 0 ? (
|
||||
<TimelineAttachment status={notification.status} />
|
||||
) : null}
|
||||
{notification.status.card ? (
|
||||
<TimelineCard card={notification.status.card} />
|
||||
) : null}
|
||||
<TimelineFullConversation
|
||||
queryKey={queryKey}
|
||||
status={notification.status}
|
||||
/>
|
||||
{notification.status.card ? <TimelineCard card={notification.status.card} /> : null}
|
||||
<TimelineFullConversation queryKey={queryKey} status={notification.status} />
|
||||
</View>
|
||||
) : null}
|
||||
</View>
|
||||
|
@ -158,10 +139,7 @@ const TimelineNotifications = React.memo(
|
|||
status={notification.status}
|
||||
highlighted={highlighted}
|
||||
accts={uniqBy(
|
||||
(
|
||||
[notification.status.account] as Mastodon.Account[] &
|
||||
Mastodon.Mention[]
|
||||
)
|
||||
([notification.status.account] as Mastodon.Account[] & Mastodon.Mention[])
|
||||
.concat(notification.status.mentions)
|
||||
.filter(d => d?.id !== instanceAccount?.id),
|
||||
d => d?.id
|
||||
|
|
|
@ -1,24 +1,184 @@
|
|||
import ComponentAccount from '@components/Account'
|
||||
import analytics from '@components/analytics'
|
||||
import GracefullyImage from '@components/GracefullyImage'
|
||||
import openLink from '@components/openLink'
|
||||
import CustomText from '@components/Text'
|
||||
import { matchAccount, matchStatus } from '@helpers/urlMatcher'
|
||||
import { useNavigation } from '@react-navigation/native'
|
||||
import { useAccountQuery } from '@utils/queryHooks/account'
|
||||
import { useSearchQuery } from '@utils/queryHooks/search'
|
||||
import { useStatusQuery } from '@utils/queryHooks/status'
|
||||
import { StyleConstants } from '@utils/styles/constants'
|
||||
import { useTheme } from '@utils/styles/ThemeManager'
|
||||
import React from 'react'
|
||||
import React, { useEffect, useState } from 'react'
|
||||
import { Pressable, StyleSheet, View } from 'react-native'
|
||||
import { Circle } from 'react-native-animated-spinkit'
|
||||
import TimelineDefault from '../Default'
|
||||
|
||||
export interface Props {
|
||||
card: Pick<
|
||||
Mastodon.Card,
|
||||
'url' | 'image' | 'blurhash' | 'title' | 'description'
|
||||
>
|
||||
card: Pick<Mastodon.Card, 'url' | 'image' | 'blurhash' | 'title' | 'description'>
|
||||
}
|
||||
|
||||
const TimelineCard = React.memo(({ card }: Props) => {
|
||||
const { colors } = useTheme()
|
||||
const navigation = useNavigation()
|
||||
|
||||
const [loading, setLoading] = useState(false)
|
||||
const isStatus = matchStatus(card.url)
|
||||
const [foundStatus, setFoundStatus] = useState<Mastodon.Status>()
|
||||
const isAccount = matchAccount(card.url)
|
||||
const [foundAccount, setFoundAccount] = useState<Mastodon.Account>()
|
||||
|
||||
const searchQuery = useSearchQuery({
|
||||
type: (() => {
|
||||
if (isStatus) return 'statuses'
|
||||
if (isAccount) return 'accounts'
|
||||
})(),
|
||||
term: (() => {
|
||||
if (isStatus) {
|
||||
if (isStatus.sameInstance) {
|
||||
return
|
||||
} else {
|
||||
return card.url
|
||||
}
|
||||
}
|
||||
if (isAccount) {
|
||||
if (isAccount.sameInstance) {
|
||||
if (isAccount.style === 'default') {
|
||||
return
|
||||
} else {
|
||||
return isAccount.username
|
||||
}
|
||||
} else {
|
||||
return card.url
|
||||
}
|
||||
}
|
||||
})(),
|
||||
limit: 1,
|
||||
options: { enabled: false }
|
||||
})
|
||||
|
||||
const statusQuery = useStatusQuery({
|
||||
id: isStatus?.id || '',
|
||||
options: { enabled: false }
|
||||
})
|
||||
useEffect(() => {
|
||||
if (isStatus) {
|
||||
setLoading(true)
|
||||
if (isStatus.sameInstance) {
|
||||
statusQuery
|
||||
.refetch()
|
||||
.then(res => {
|
||||
res.data && setFoundStatus(res.data)
|
||||
setLoading(false)
|
||||
})
|
||||
.catch(() => setLoading(false))
|
||||
} else {
|
||||
searchQuery
|
||||
.refetch()
|
||||
.then(res => {
|
||||
const status = (res.data as any)?.statuses?.[0]
|
||||
status && setFoundStatus(status)
|
||||
setLoading(false)
|
||||
})
|
||||
.catch(() => setLoading(false))
|
||||
}
|
||||
}
|
||||
}, [])
|
||||
|
||||
const accountQuery = useAccountQuery({
|
||||
id: isAccount?.style === 'default' ? isAccount.id : '',
|
||||
options: { enabled: false }
|
||||
})
|
||||
useEffect(() => {
|
||||
if (isAccount) {
|
||||
setLoading(true)
|
||||
if (isAccount.sameInstance && isAccount.style === 'default') {
|
||||
accountQuery
|
||||
.refetch()
|
||||
.then(res => {
|
||||
res.data && setFoundAccount(res.data)
|
||||
setLoading(false)
|
||||
})
|
||||
.catch(() => setLoading(false))
|
||||
} else {
|
||||
searchQuery
|
||||
.refetch()
|
||||
.then(res => {
|
||||
const account = (res.data as any)?.accounts?.[0]
|
||||
account && setFoundAccount(account)
|
||||
setLoading(false)
|
||||
})
|
||||
.catch(() => setLoading(false))
|
||||
}
|
||||
}
|
||||
}, [])
|
||||
|
||||
const cardContent = () => {
|
||||
if (loading) {
|
||||
return (
|
||||
<View
|
||||
style={{
|
||||
flex: 1,
|
||||
justifyContent: 'center',
|
||||
alignItems: 'center',
|
||||
paddingVertical: StyleConstants.Spacing.M
|
||||
}}
|
||||
>
|
||||
<Circle size={StyleConstants.Font.Size.L} color={colors.secondary} />
|
||||
</View>
|
||||
)
|
||||
}
|
||||
if (isStatus && foundStatus) {
|
||||
return <TimelineDefault item={foundStatus} disableDetails disableOnPress origin='card' />
|
||||
}
|
||||
if (isAccount && foundAccount) {
|
||||
return <ComponentAccount account={foundAccount} origin='card' />
|
||||
}
|
||||
return (
|
||||
<>
|
||||
{card.image ? (
|
||||
<GracefullyImage
|
||||
uri={{ original: card.image }}
|
||||
blurhash={card.blurhash}
|
||||
style={{ flexBasis: StyleConstants.Font.LineHeight.M * 5 }}
|
||||
imageStyle={{ borderTopLeftRadius: 6, borderBottomLeftRadius: 6 }}
|
||||
/>
|
||||
) : null}
|
||||
<View style={{ flex: 1, padding: StyleConstants.Spacing.S }}>
|
||||
<CustomText
|
||||
fontStyle='S'
|
||||
numberOfLines={2}
|
||||
style={{
|
||||
marginBottom: StyleConstants.Spacing.XS,
|
||||
color: colors.primaryDefault
|
||||
}}
|
||||
fontWeight='Bold'
|
||||
testID='title'
|
||||
>
|
||||
{card.title}
|
||||
</CustomText>
|
||||
{card.description ? (
|
||||
<CustomText
|
||||
fontStyle='S'
|
||||
numberOfLines={1}
|
||||
style={{
|
||||
marginBottom: StyleConstants.Spacing.XS,
|
||||
color: colors.primaryDefault
|
||||
}}
|
||||
testID='description'
|
||||
>
|
||||
{card.description}
|
||||
</CustomText>
|
||||
) : null}
|
||||
<CustomText fontStyle='S' numberOfLines={1} style={{ color: colors.secondary }}>
|
||||
{card.url}
|
||||
</CustomText>
|
||||
</View>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<Pressable
|
||||
accessible
|
||||
|
@ -26,10 +186,10 @@ const TimelineCard = React.memo(({ card }: Props) => {
|
|||
style={{
|
||||
flex: 1,
|
||||
flexDirection: 'row',
|
||||
height: StyleConstants.Font.LineHeight.M * 5,
|
||||
minHeight: isAccount && foundAccount ? undefined : StyleConstants.Font.LineHeight.M * 5,
|
||||
marginTop: StyleConstants.Spacing.M,
|
||||
borderWidth: StyleSheet.hairlineWidth,
|
||||
borderRadius: 6,
|
||||
borderRadius: StyleConstants.Spacing.S,
|
||||
overflow: 'hidden',
|
||||
borderColor: colors.border
|
||||
}}
|
||||
|
@ -37,51 +197,8 @@ const TimelineCard = React.memo(({ card }: Props) => {
|
|||
analytics('timeline_shared_card_press')
|
||||
await openLink(card.url, navigation)
|
||||
}}
|
||||
testID='base'
|
||||
>
|
||||
{card.image ? (
|
||||
<GracefullyImage
|
||||
uri={{ original: card.image }}
|
||||
blurhash={card.blurhash}
|
||||
style={{ flexBasis: StyleConstants.Font.LineHeight.M * 5 }}
|
||||
imageStyle={{ borderTopLeftRadius: 6, borderBottomLeftRadius: 6 }}
|
||||
/>
|
||||
) : null}
|
||||
<View style={{ flex: 1, padding: StyleConstants.Spacing.S }}>
|
||||
<CustomText
|
||||
fontStyle='S'
|
||||
numberOfLines={2}
|
||||
style={{
|
||||
marginBottom: StyleConstants.Spacing.XS,
|
||||
color: colors.primaryDefault
|
||||
}}
|
||||
fontWeight='Bold'
|
||||
testID='title'
|
||||
>
|
||||
{card.title}
|
||||
</CustomText>
|
||||
{card.description ? (
|
||||
<CustomText
|
||||
fontStyle='S'
|
||||
numberOfLines={1}
|
||||
style={{
|
||||
marginBottom: StyleConstants.Spacing.XS,
|
||||
color: colors.primaryDefault
|
||||
}}
|
||||
testID='description'
|
||||
>
|
||||
{card.description}
|
||||
</CustomText>
|
||||
) : null}
|
||||
<CustomText
|
||||
fontStyle='S'
|
||||
numberOfLines={1}
|
||||
style={{ color: colors.secondary }}
|
||||
>
|
||||
{card.url}
|
||||
</CustomText>
|
||||
</View>
|
||||
</Pressable>
|
||||
children={cardContent}
|
||||
/>
|
||||
)
|
||||
})
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ import { useTranslation } from 'react-i18next'
|
|||
import { View } from 'react-native'
|
||||
|
||||
const TimelineFiltered = React.memo(
|
||||
() => {
|
||||
({ phrase }: { phrase: string }) => {
|
||||
const { colors } = useTheme()
|
||||
const { t } = useTranslation('componentTimeline')
|
||||
|
||||
|
@ -25,7 +25,7 @@ const TimelineFiltered = React.memo(
|
|||
paddingLeft: StyleConstants.Avatar.M + StyleConstants.Spacing.S
|
||||
}}
|
||||
>
|
||||
{t('shared.filtered')}
|
||||
{t('shared.filtered', { phrase })}
|
||||
</CustomText>
|
||||
</View>
|
||||
)
|
||||
|
@ -44,34 +44,29 @@ export const shouldFilter = ({
|
|||
}>
|
||||
status: Mastodon.Status
|
||||
queryKey: QueryKeyTimeline
|
||||
}) => {
|
||||
}): string | null => {
|
||||
const instance = getInstance(store.getState())
|
||||
const ownAccount =
|
||||
getInstanceAccount(store.getState())?.id === status.account?.id
|
||||
const ownAccount = getInstanceAccount(store.getState())?.id === status.account?.id
|
||||
|
||||
let shouldFilter = false
|
||||
let shouldFilter: string | null = null
|
||||
if (!ownAccount) {
|
||||
const parser = new htmlparser2.Parser({
|
||||
ontext: (text: string) => {
|
||||
if (!copiableContent.current.complete) {
|
||||
copiableContent.current.content =
|
||||
copiableContent.current.content + text
|
||||
copiableContent.current.content = copiableContent.current.content + text
|
||||
}
|
||||
|
||||
const checkFilter = (filter: Mastodon.Filter) => {
|
||||
const escapedPhrase = filter.phrase.replace(
|
||||
/[.*+?^${}()|[\]\\]/g,
|
||||
'\\$&'
|
||||
) // $& means the whole matched string
|
||||
const escapedPhrase = filter.phrase.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') // $& means the whole matched string
|
||||
switch (filter.whole_word) {
|
||||
case true:
|
||||
if (new RegExp('\\b' + escapedPhrase + '\\b').test(text)) {
|
||||
shouldFilter = true
|
||||
shouldFilter = filter.phrase
|
||||
}
|
||||
break
|
||||
case false:
|
||||
if (new RegExp(escapedPhrase).test(text)) {
|
||||
shouldFilter = true
|
||||
shouldFilter = filter.phrase
|
||||
}
|
||||
break
|
||||
}
|
||||
|
|
|
@ -81,15 +81,10 @@ const TimelineHeaderDefault = ({ queryKey, status, highlighted }: Props) => {
|
|||
{queryKey ? (
|
||||
<Pressable
|
||||
accessibilityHint={t('accessibilityHint')}
|
||||
style={{
|
||||
flex: 1,
|
||||
flexDirection: 'row',
|
||||
justifyContent: 'center',
|
||||
marginBottom: StyleConstants.Spacing.L
|
||||
}}
|
||||
hitSlop={StyleConstants.Font.Size.M}
|
||||
style={{ flex: 1, flexBasis: StyleConstants.Font.Size.L }}
|
||||
>
|
||||
<ContextMenu
|
||||
style={{ flex: 1, alignItems: 'center' }}
|
||||
dropdownMenuMode
|
||||
actions={actions}
|
||||
onPress={({ nativeEvent: { index } }) => {
|
||||
|
@ -104,7 +99,6 @@ const TimelineHeaderDefault = ({ queryKey, status, highlighted }: Props) => {
|
|||
size={StyleConstants.Font.Size.L}
|
||||
/>
|
||||
}
|
||||
style={{ width: '100%', height: '100%', paddingHorizontal: StyleConstants.Font.Size.M }}
|
||||
/>
|
||||
</Pressable>
|
||||
) : null}
|
||||
|
|
|
@ -51,15 +51,10 @@ const TimelineHeaderDefault = ({ queryKey, status, highlighted }: Props) => {
|
|||
{queryKey ? (
|
||||
<Pressable
|
||||
accessibilityHint={t('accessibilityHint')}
|
||||
style={{
|
||||
flex: 1,
|
||||
flexDirection: 'row',
|
||||
justifyContent: 'center',
|
||||
marginBottom: StyleConstants.Spacing.L
|
||||
}}
|
||||
hitSlop={StyleConstants.Font.Size.M}
|
||||
style={{ flex: 1, flexBasis: StyleConstants.Font.Size.L }}
|
||||
>
|
||||
<ContextMenu
|
||||
style={{ flex: 1, alignItems: 'center' }}
|
||||
dropdownMenuMode
|
||||
actions={contextMenuContext}
|
||||
onPress={() => {}}
|
||||
|
@ -70,7 +65,6 @@ const TimelineHeaderDefault = ({ queryKey, status, highlighted }: Props) => {
|
|||
size={StyleConstants.Font.Size.L}
|
||||
/>
|
||||
}
|
||||
style={{ paddingHorizontal: StyleConstants.Font.Size.M }}
|
||||
/>
|
||||
</Pressable>
|
||||
) : null}
|
||||
|
|
|
@ -3,10 +3,7 @@ import contextMenuInstance from '@components/ContextMenu/instance'
|
|||
import contextMenuShare from '@components/ContextMenu/share'
|
||||
import contextMenuStatus from '@components/ContextMenu/status'
|
||||
import Icon from '@components/Icon'
|
||||
import {
|
||||
RelationshipIncoming,
|
||||
RelationshipOutgoing
|
||||
} from '@components/Relationship'
|
||||
import { RelationshipIncoming, RelationshipOutgoing } from '@components/Relationship'
|
||||
import { QueryKeyTimeline } from '@utils/queryHooks/timeline'
|
||||
import { StyleConstants } from '@utils/styles/constants'
|
||||
import { useTheme } from '@utils/styles/ThemeManager'
|
||||
|
@ -32,27 +29,33 @@ const TimelineHeaderNotification = ({ queryKey, notification }: Props) => {
|
|||
const shareOnPress =
|
||||
status && status?.visibility !== 'direct'
|
||||
? contextMenuShare({
|
||||
actions: contextMenuActions,
|
||||
type: 'status',
|
||||
url: status.url || status.uri
|
||||
})
|
||||
actions: contextMenuActions,
|
||||
type: 'status',
|
||||
url: status.url || status.uri
|
||||
})
|
||||
: null
|
||||
const statusOnPress = status && contextMenuStatus({
|
||||
actions: contextMenuActions,
|
||||
status: status,
|
||||
queryKey
|
||||
})
|
||||
const accountOnPress = status && contextMenuAccount({
|
||||
actions: contextMenuActions,
|
||||
type: 'status',
|
||||
queryKey,
|
||||
id: status.account.id
|
||||
})
|
||||
const instanceOnPress = status && contextMenuInstance({
|
||||
actions: contextMenuActions,
|
||||
status: status,
|
||||
queryKey
|
||||
})
|
||||
const statusOnPress =
|
||||
status &&
|
||||
contextMenuStatus({
|
||||
actions: contextMenuActions,
|
||||
status: status,
|
||||
queryKey
|
||||
})
|
||||
const accountOnPress =
|
||||
status &&
|
||||
contextMenuAccount({
|
||||
actions: contextMenuActions,
|
||||
type: 'status',
|
||||
queryKey,
|
||||
id: status.account.id
|
||||
})
|
||||
const instanceOnPress =
|
||||
status &&
|
||||
contextMenuInstance({
|
||||
actions: contextMenuActions,
|
||||
status: status,
|
||||
queryKey
|
||||
})
|
||||
|
||||
const actions = useMemo(() => {
|
||||
switch (notification.type) {
|
||||
|
@ -64,14 +67,10 @@ const TimelineHeaderNotification = ({ queryKey, notification }: Props) => {
|
|||
if (notification.status) {
|
||||
return (
|
||||
<Pressable
|
||||
style={{
|
||||
flex: 1,
|
||||
flexDirection: 'row',
|
||||
justifyContent: 'center',
|
||||
paddingBottom: StyleConstants.Spacing.S
|
||||
}}
|
||||
style={{ flex: 1, flexBasis: StyleConstants.Font.Size.L }}
|
||||
children={
|
||||
<ContextMenu
|
||||
style={{ flex: 1, alignItems: 'center' }}
|
||||
dropdownMenuMode
|
||||
actions={contextMenuActions}
|
||||
onPress={({ nativeEvent: { index } }) => {
|
||||
|
@ -91,7 +90,6 @@ const TimelineHeaderNotification = ({ queryKey, notification }: Props) => {
|
|||
size={StyleConstants.Font.Size.L}
|
||||
/>
|
||||
}
|
||||
style={{ width: '100%', height: '100%' }}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
|
@ -104,21 +102,14 @@ const TimelineHeaderNotification = ({ queryKey, notification }: Props) => {
|
|||
<View style={{ flex: 1, flexDirection: 'row' }}>
|
||||
<View
|
||||
style={{
|
||||
flex:
|
||||
notification.type === 'follow' ||
|
||||
notification.type === 'follow_request'
|
||||
? 1
|
||||
: 4
|
||||
flex: notification.type === 'follow' || notification.type === 'follow_request' ? 1 : 4
|
||||
}}
|
||||
>
|
||||
<HeaderSharedAccount
|
||||
account={
|
||||
notification.status
|
||||
? notification.status.account
|
||||
: notification.account
|
||||
}
|
||||
{...((notification.type === 'follow' ||
|
||||
notification.type === 'follow_request') && { withoutName: true })}
|
||||
account={notification.status ? notification.status.account : notification.account}
|
||||
{...((notification.type === 'follow' || notification.type === 'follow_request') && {
|
||||
withoutName: true
|
||||
})}
|
||||
/>
|
||||
<View
|
||||
style={{
|
||||
|
@ -129,28 +120,21 @@ const TimelineHeaderNotification = ({ queryKey, notification }: Props) => {
|
|||
}}
|
||||
>
|
||||
<HeaderSharedCreated
|
||||
created_at={
|
||||
notification.status?.created_at || notification.created_at
|
||||
}
|
||||
created_at={notification.status?.created_at || notification.created_at}
|
||||
edited_at={notification.status?.edited_at}
|
||||
/>
|
||||
{notification.status?.visibility ? (
|
||||
<HeaderSharedVisibility
|
||||
visibility={notification.status.visibility}
|
||||
/>
|
||||
<HeaderSharedVisibility visibility={notification.status.visibility} />
|
||||
) : null}
|
||||
<HeaderSharedMuted muted={notification.status?.muted} />
|
||||
<HeaderSharedApplication
|
||||
application={notification.status?.application}
|
||||
/>
|
||||
<HeaderSharedApplication application={notification.status?.application} />
|
||||
</View>
|
||||
</View>
|
||||
|
||||
<View
|
||||
style={[
|
||||
{ marginLeft: StyleConstants.Spacing.M },
|
||||
notification.type === 'follow' ||
|
||||
notification.type === 'follow_request'
|
||||
notification.type === 'follow' || notification.type === 'follow_request'
|
||||
? { flexShrink: 1 }
|
||||
: { flex: 1 }
|
||||
]}
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
import Icon from '@components/Icon'
|
||||
import {
|
||||
RelationshipIncoming,
|
||||
RelationshipOutgoing
|
||||
} from '@components/Relationship'
|
||||
import { RelationshipIncoming, RelationshipOutgoing } from '@components/Relationship'
|
||||
import { QueryKeyTimeline } from '@utils/queryHooks/timeline'
|
||||
import { StyleConstants } from '@utils/styles/constants'
|
||||
import { useTheme } from '@utils/styles/ThemeManager'
|
||||
|
@ -36,14 +33,10 @@ const TimelineHeaderNotification = ({ notification }: Props) => {
|
|||
if (notification.status) {
|
||||
return (
|
||||
<Pressable
|
||||
style={{
|
||||
flex: 1,
|
||||
flexDirection: 'row',
|
||||
justifyContent: 'center',
|
||||
paddingBottom: StyleConstants.Spacing.S
|
||||
}}
|
||||
style={{ flex: 1, flexBasis: StyleConstants.Font.Size.L }}
|
||||
children={
|
||||
<ContextMenu
|
||||
style={{ flex: 1, alignItems: 'center' }}
|
||||
dropdownMenuMode
|
||||
actions={contextMenuContext}
|
||||
onPress={() => {}}
|
||||
|
@ -66,21 +59,14 @@ const TimelineHeaderNotification = ({ notification }: Props) => {
|
|||
<View style={{ flex: 1, flexDirection: 'row' }}>
|
||||
<View
|
||||
style={{
|
||||
flex:
|
||||
notification.type === 'follow' ||
|
||||
notification.type === 'follow_request'
|
||||
? 1
|
||||
: 4
|
||||
flex: notification.type === 'follow' || notification.type === 'follow_request' ? 1 : 4
|
||||
}}
|
||||
>
|
||||
<HeaderSharedAccount
|
||||
account={
|
||||
notification.status
|
||||
? notification.status.account
|
||||
: notification.account
|
||||
}
|
||||
{...((notification.type === 'follow' ||
|
||||
notification.type === 'follow_request') && { withoutName: true })}
|
||||
account={notification.status ? notification.status.account : notification.account}
|
||||
{...((notification.type === 'follow' || notification.type === 'follow_request') && {
|
||||
withoutName: true
|
||||
})}
|
||||
/>
|
||||
<View
|
||||
style={{
|
||||
|
@ -91,28 +77,21 @@ const TimelineHeaderNotification = ({ notification }: Props) => {
|
|||
}}
|
||||
>
|
||||
<HeaderSharedCreated
|
||||
created_at={
|
||||
notification.status?.created_at || notification.created_at
|
||||
}
|
||||
created_at={notification.status?.created_at || notification.created_at}
|
||||
edited_at={notification.status?.edited_at}
|
||||
/>
|
||||
{notification.status?.visibility ? (
|
||||
<HeaderSharedVisibility
|
||||
visibility={notification.status.visibility}
|
||||
/>
|
||||
<HeaderSharedVisibility visibility={notification.status.visibility} />
|
||||
) : null}
|
||||
<HeaderSharedMuted muted={notification.status?.muted} />
|
||||
<HeaderSharedApplication
|
||||
application={notification.status?.application}
|
||||
/>
|
||||
<HeaderSharedApplication application={notification.status?.application} />
|
||||
</View>
|
||||
</View>
|
||||
|
||||
<View
|
||||
style={[
|
||||
{ marginLeft: StyleConstants.Spacing.M },
|
||||
notification.type === 'follow' ||
|
||||
notification.type === 'follow_request'
|
||||
notification.type === 'follow' || notification.type === 'follow_request'
|
||||
? { flexShrink: 1 }
|
||||
: { flex: 1 }
|
||||
]}
|
||||
|
|
|
@ -1,24 +1,12 @@
|
|||
import apiInstance from '@api/instance'
|
||||
import navigationRef from '@helpers/navigationRef'
|
||||
import { matchAccount, matchStatus } from '@helpers/urlMatcher'
|
||||
import { store } from '@root/store'
|
||||
import { SearchResult } from '@utils/queryHooks/search'
|
||||
import { getInstanceUrl } from '@utils/slices/instancesSlice'
|
||||
import { getSettingsBrowser } from '@utils/slices/settingsSlice'
|
||||
import * as Linking from 'expo-linking'
|
||||
import * as WebBrowser from 'expo-web-browser'
|
||||
|
||||
// https://social.xmflsct.com/web/statuses/105590085754428765 <- default
|
||||
// https://social.xmflsct.com/@tooot/105590085754428765 <- pretty
|
||||
const matcherStatus = new RegExp(
|
||||
/http[s]?:\/\/(.*)\/(web\/statuses|@.*)\/([0-9]*)/
|
||||
)
|
||||
|
||||
// https://social.xmflsct.com/web/accounts/14195 <- default
|
||||
// https://social.xmflsct.com/@tooot <- pretty
|
||||
const matcherAccount = new RegExp(
|
||||
/http[s]?:\/\/(.*)\/(web\/accounts\/([0-9]*)|@.*)/
|
||||
)
|
||||
|
||||
export let loadingLink = false
|
||||
|
||||
const openLink = async (url: string, navigation?: any) => {
|
||||
|
@ -26,10 +14,7 @@ const openLink = async (url: string, navigation?: any) => {
|
|||
return
|
||||
}
|
||||
|
||||
const handleNavigation = (
|
||||
page: 'Tab-Shared-Toot' | 'Tab-Shared-Account',
|
||||
options: {}
|
||||
) => {
|
||||
const handleNavigation = (page: 'Tab-Shared-Toot' | 'Tab-Shared-Account', options: {}) => {
|
||||
if (navigation) {
|
||||
// @ts-ignore
|
||||
navigation.push(page, options)
|
||||
|
@ -40,14 +25,10 @@ const openLink = async (url: string, navigation?: any) => {
|
|||
}
|
||||
|
||||
// If a tooot can be found
|
||||
const matchedStatus = url.match(matcherStatus)
|
||||
if (matchedStatus) {
|
||||
// If the link in current instance
|
||||
const instanceUrl = getInstanceUrl(store.getState())
|
||||
if (matchedStatus[1] === instanceUrl) {
|
||||
handleNavigation('Tab-Shared-Toot', {
|
||||
toot: { id: matchedStatus[3] }
|
||||
})
|
||||
const isStatus = matchStatus(url)
|
||||
if (isStatus) {
|
||||
if (isStatus.sameInstance) {
|
||||
handleNavigation('Tab-Shared-Toot', { toot: { id: isStatus.id } })
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -71,15 +52,11 @@ const openLink = async (url: string, navigation?: any) => {
|
|||
}
|
||||
|
||||
// If an account can be found
|
||||
const matchedAccount = url.match(matcherAccount)
|
||||
if (matchedAccount) {
|
||||
// If the link in current instance
|
||||
const instanceUrl = getInstanceUrl(store.getState())
|
||||
if (matchedAccount[1] === instanceUrl) {
|
||||
if (matchedAccount[3] && matchedAccount[3].match(/[0-9]*/)) {
|
||||
handleNavigation('Tab-Shared-Account', {
|
||||
account: { id: matchedAccount[3] }
|
||||
})
|
||||
const isAccount = matchAccount(url)
|
||||
if (isAccount) {
|
||||
if (isAccount.sameInstance) {
|
||||
if (isAccount.style === 'default' && isAccount.id) {
|
||||
handleNavigation('Tab-Shared-Account', { account: isAccount })
|
||||
return
|
||||
}
|
||||
}
|
||||
|
@ -91,7 +68,12 @@ const openLink = async (url: string, navigation?: any) => {
|
|||
version: 'v2',
|
||||
method: 'get',
|
||||
url: 'search',
|
||||
params: { type: 'accounts', q: url, limit: 1, resolve: true }
|
||||
params: {
|
||||
type: 'accounts',
|
||||
q: isAccount.sameInstance && isAccount.style === 'pretty' ? isAccount.username : url,
|
||||
limit: 1,
|
||||
resolve: true
|
||||
}
|
||||
})
|
||||
} catch {}
|
||||
if (response && response.body && response.body.accounts.length) {
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
[
|
||||
{
|
||||
"feature": "account_return_suspended",
|
||||
"version": 3.3,
|
||||
"reference": "https://github.com/mastodon/mastodon/releases/tag/v3.3.0"
|
||||
},
|
||||
{
|
||||
"feature": "edit_post",
|
||||
"version": 3.5,
|
||||
|
@ -9,11 +14,6 @@
|
|||
"version": 3.5,
|
||||
"reference": "https://github.com/mastodon/mastodon/releases/tag/v3.5.0"
|
||||
},
|
||||
{
|
||||
"feature": "notification_type_status",
|
||||
"version": 3.3,
|
||||
"reference": "https://docs.joinmastodon.org/entities/notification/#required-attributes"
|
||||
},
|
||||
{
|
||||
"feature": "notification_type_update",
|
||||
"version": 3.5,
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
import { store } from '@root/store'
|
||||
import { getInstanceUrl } from '@utils/slices/instancesSlice'
|
||||
|
||||
const matchStatus = (
|
||||
url: string
|
||||
): { id: string; style: 'default' | 'pretty'; sameInstance: boolean } | null => {
|
||||
// https://social.xmflsct.com/web/statuses/105590085754428765 <- default
|
||||
// https://social.xmflsct.com/@tooot/105590085754428765 <- pretty
|
||||
const matcherStatus = new RegExp(/(https?:\/\/)?([^\/]+)\/(web\/statuses|@.+)\/([0-9]+)/)
|
||||
|
||||
const matched = url.match(matcherStatus)
|
||||
if (matched) {
|
||||
const hostname = matched[2]
|
||||
const style = matched[3] === 'web/statuses' ? 'default' : 'pretty'
|
||||
const id = matched[4]
|
||||
|
||||
const instanceUrl = getInstanceUrl(store.getState())
|
||||
return { id, style, sameInstance: hostname === instanceUrl }
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
const matchAccount = (
|
||||
url: string
|
||||
):
|
||||
| { id: string; style: 'default'; sameInstance: boolean }
|
||||
| { username: string; style: 'pretty'; sameInstance: boolean }
|
||||
| null => {
|
||||
// https://social.xmflsct.com/web/accounts/14195 <- default
|
||||
// https://social.xmflsct.com/web/@tooot <- pretty ! cannot be searched on the same instance
|
||||
// https://social.xmflsct.com/@tooot <- pretty
|
||||
const matcherAccount = new RegExp(/(https?:\/\/)?([^\/]+)(\/web|\/web\/accounts)?\/([0-9]+|@.+)/)
|
||||
|
||||
const matched = url.match(matcherAccount)
|
||||
if (matched) {
|
||||
const hostname = matched[2]
|
||||
const style = matched[4].startsWith('@') ? 'pretty' : 'default'
|
||||
const account = matched[4]
|
||||
|
||||
const instanceUrl = getInstanceUrl(store.getState())
|
||||
return style === 'default'
|
||||
? { id: account, style, sameInstance: hostname === instanceUrl }
|
||||
: { username: account, style, sameInstance: hostname === instanceUrl }
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
export { matchStatus, matchAccount }
|
|
@ -8,22 +8,22 @@
|
|||
},
|
||||
"block": {
|
||||
"action_false": "Nutzer blockieren",
|
||||
"action_true": ""
|
||||
"action_true": "User entblocken"
|
||||
},
|
||||
"reports": {
|
||||
"action": "Melden und blockieren"
|
||||
}
|
||||
},
|
||||
"copy": {
|
||||
"action": "",
|
||||
"action": "Tröt kopieren",
|
||||
"succeed": "Kopiert"
|
||||
},
|
||||
"instance": {
|
||||
"title": "",
|
||||
"title": "Instanz-Aktionen",
|
||||
"block": {
|
||||
"action": "Instanz {{instance}} blockieren",
|
||||
"alert": {
|
||||
"title": "",
|
||||
"title": "{{instance}} wirklich blockieren?",
|
||||
"message": "Üblicherweise kannst du einen User stummschalten oder blockieren.\nBlockierst du hingegegen eine Instanz, wird deren gesamter Inhalt samt Usern, die dir von dieser Instanz folgen, entfernt!",
|
||||
"buttons": {
|
||||
"confirm": "Bestätigen"
|
||||
|
@ -40,7 +40,7 @@
|
|||
}
|
||||
},
|
||||
"status": {
|
||||
"title": "",
|
||||
"title": "Tröt-Befehle",
|
||||
"edit": {
|
||||
"action": "Tröt bearbeiten"
|
||||
},
|
||||
|
@ -48,17 +48,17 @@
|
|||
"action": "Tröt löschen",
|
||||
"alert": {
|
||||
"title": "Löschen bestätigen?",
|
||||
"message": "",
|
||||
"message": "Alle Boosts, Sterne und Antworten werden entfernt.",
|
||||
"buttons": {
|
||||
"confirm": "Bestätigen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"deleteEdit": {
|
||||
"action": "",
|
||||
"action": "Tröt und Boost entfernen",
|
||||
"alert": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"title": "Löschen und Boost bestätigen?",
|
||||
"message": "Alle Boosts und Favoriten inklusive der Antworten werden gelöscht.",
|
||||
"buttons": {
|
||||
"confirm": "Bestätigen"
|
||||
}
|
||||
|
@ -66,11 +66,11 @@
|
|||
},
|
||||
"mute": {
|
||||
"action_false": "Diesen Tröt sowie die Antworten stummschalten",
|
||||
"action_true": ""
|
||||
"action_true": "Tröt und Antworten nicht mehr stummschalten"
|
||||
},
|
||||
"pin": {
|
||||
"action_false": "",
|
||||
"action_true": ""
|
||||
"action_false": "Tröt anheften",
|
||||
"action_true": "Tröt nicht mehr anheften"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1 +1,3 @@
|
|||
{}
|
||||
{
|
||||
"frequentUsed": "Häufig genutzt"
|
||||
}
|
|
@ -14,7 +14,7 @@
|
|||
"base": "Der Login erfolgt über den Browser, so dass Ihre Kontoinformationen für die Toot-App nicht sichtbar sind."
|
||||
},
|
||||
"terms": {
|
||||
"base": ""
|
||||
"base": "Mit dem Login stimmst du der <0>Datenschutzrichtlinie</0> und den <1>Nutzungsbedingungen</1> zu."
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
{
|
||||
"title": "Datenquelle auswählen",
|
||||
"message": "",
|
||||
"title": "Medienquelle wählen",
|
||||
"message": "EXIF-Metadaten werden nicht hochgeladen",
|
||||
"options": {
|
||||
"image": "",
|
||||
"image_max": "",
|
||||
"video": "",
|
||||
"video_max": ""
|
||||
"image": "Fotos hochladen",
|
||||
"image_max": "Fotos hochladen (max {{max}})",
|
||||
"video": "Video hochladen",
|
||||
"video_max": "Video hochladen (max {{max}})"
|
||||
}
|
||||
}
|
|
@ -1,8 +1,8 @@
|
|||
{
|
||||
"HTML": {
|
||||
"accessibilityHint": "",
|
||||
"accessibilityHint": "Tippen, um Inhalt aus- oder einzuklappen",
|
||||
"expanded": "{{hint}}{{moreLines}}",
|
||||
"moreLines": "",
|
||||
"defaultHint": ""
|
||||
"moreLines": " ({{count}} weitere Zeilen)",
|
||||
"defaultHint": "Langer Tröt"
|
||||
}
|
||||
}
|
|
@ -30,7 +30,7 @@
|
|||
"default": "{{name}} hat geboostet",
|
||||
"notification": "{{name}} hat deinen Tröt geboostet"
|
||||
},
|
||||
"update": ""
|
||||
"update": "Boost wurde bearbeitet"
|
||||
},
|
||||
"actions": {
|
||||
"reply": {
|
||||
|
@ -40,8 +40,8 @@
|
|||
"accessibilityLabel": "Tröt boosten",
|
||||
"function": "Boost",
|
||||
"options": {
|
||||
"title": "",
|
||||
"public": "",
|
||||
"title": "Boost-Sichtbarkeit ändern",
|
||||
"public": "Öffentlicher Boost",
|
||||
"unlisted": ""
|
||||
}
|
||||
},
|
||||
|
@ -68,7 +68,7 @@
|
|||
"history": {
|
||||
"accessibilityLabel": "Dieser Tröt wurde {{count}} mal bearbeitet",
|
||||
"accessibilityHint": "Für den vollständigen Verlauf auswählen",
|
||||
"text_one": "{{count}} bearbeitet",
|
||||
"text_one": "{{count}} Bearbeitung",
|
||||
"text_other": "{{count}} mal bearbeitet"
|
||||
}
|
||||
},
|
||||
|
@ -88,7 +88,7 @@
|
|||
"content": {
|
||||
"expandHint": "Ausgeblendeter Inhalt"
|
||||
},
|
||||
"filtered": "Ausgeblendet",
|
||||
"filtered": "",
|
||||
"fullConversation": "Unterhaltung anzeigen",
|
||||
"translate": {
|
||||
"default": "Übersetzen",
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
"description": "Bitte Benachrichtigungsdienst in den Einstellungen erneut aktivieren"
|
||||
},
|
||||
"shareError": {
|
||||
"imageNotSupported": "",
|
||||
"videoNotSupported": ""
|
||||
"imageNotSupported": "Bildformat {{type}} wird nicht unterstützt",
|
||||
"videoNotSupported": "Videoformat {{type}} wird nicht unterstützt"
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"heading": "",
|
||||
"heading": "Teilen mit...",
|
||||
"content": {
|
||||
"select_account": ""
|
||||
"select_account": "Konto auswählen"
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"content": {
|
||||
"altText": {
|
||||
"heading": ""
|
||||
"heading": "Alternativtext"
|
||||
},
|
||||
"notificationsFilter": {
|
||||
"heading": "Benachrichtigungsart anzeigen",
|
||||
|
@ -13,7 +13,7 @@
|
|||
"mention": "$t(screenTabs:me.push.mention.heading)",
|
||||
"poll": "$t(screenTabs:me.push.poll.heading)",
|
||||
"status": "",
|
||||
"update": ""
|
||||
"update": "Boost wurde bearbeitet"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
"placeholder": "Was geht in dir vor",
|
||||
"keyboardImage": {
|
||||
"exceedMaximum": {
|
||||
"title": "",
|
||||
"title": "Maximale Anzahl von Anhängen erreicht",
|
||||
"OK": "$t(common:buttons.OK)"
|
||||
}
|
||||
}
|
||||
|
@ -82,7 +82,7 @@
|
|||
},
|
||||
"increase": {
|
||||
"accessibilityLabel": "Erhöhe Anzahl der Antwortmöglichkeiten auf {{amount}}",
|
||||
"accessibilityHint": ""
|
||||
"accessibilityHint": "Maximale Anzahl der Auswahlmöglichkeiten erreicht, aktuell {{amount}}"
|
||||
}
|
||||
},
|
||||
"multiple": {
|
||||
|
@ -114,42 +114,42 @@
|
|||
"accessibilityHint": "Umfrage wird entfernt, wenn ein Anhang vorhanden ist",
|
||||
"failed": {
|
||||
"alert": {
|
||||
"title": "",
|
||||
"title": "Upload fehlgeschlagen",
|
||||
"button": "Noch einmal versuchen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"poll": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityHint": ""
|
||||
"accessibilityLabel": "Umfrage hinzufügen",
|
||||
"accessibilityHint": "Anhang ist bei Umfragen nicht möglich"
|
||||
},
|
||||
"visibility": {
|
||||
"accessibilityLabel": "",
|
||||
"title": "",
|
||||
"accessibilityLabel": "Sichtbarkeit des Tröts ist {{visibility}}",
|
||||
"title": "Sichtbarkeit des Tröts",
|
||||
"options": {
|
||||
"public": "Öffentlich",
|
||||
"unlisted": "Ungelistet",
|
||||
"private": "Nur für Folgende",
|
||||
"direct": "",
|
||||
"direct": "Direktnachricht",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
},
|
||||
"spoiler": {
|
||||
"accessibilityLabel": ""
|
||||
"accessibilityLabel": "Spoiler"
|
||||
},
|
||||
"emoji": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityLabel": "Emoji hinzufügen",
|
||||
"accessibilityHint": ""
|
||||
}
|
||||
},
|
||||
"drafts_one": "",
|
||||
"drafts_other": ""
|
||||
"drafts_one": "Entwurf ({{count}})",
|
||||
"drafts_other": "Entwürfe ({{count}})"
|
||||
},
|
||||
"editAttachment": {
|
||||
"header": {
|
||||
"title": "Anhang bearbeiten",
|
||||
"right": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityLabel": "Anhang speichern",
|
||||
"failed": {
|
||||
"title": "Bearbeitung fehlgeschlagen",
|
||||
"button": "Noch einmal versuchen"
|
||||
|
@ -168,12 +168,12 @@
|
|||
"header": {
|
||||
"title": "Entwurf"
|
||||
},
|
||||
"warning": "",
|
||||
"warning": "Entwürfe werden nur lokal gespeichert und können bei Abstürzen verloren gehen. Diese Funktion bitte nicht für dauerhafte Entwürfe nutzen.",
|
||||
"content": {
|
||||
"accessibilityHint": "Gespeicherter Entwurf, tippe, um diesen zu bearbeiten",
|
||||
"textEmpty": "Kein Inhalt"
|
||||
},
|
||||
"checkAttachment": ""
|
||||
"checkAttachment": "Prüfe Anhänge auf dem Server..."
|
||||
}
|
||||
}
|
||||
}
|
|
@ -146,7 +146,7 @@
|
|||
"label": "Kennzeichnung",
|
||||
"content": "Inhalt"
|
||||
},
|
||||
"mediaSelectionFailed": ""
|
||||
"mediaSelectionFailed": "Verarbeitung des Bildes fehlgeschlagen. Bitte erneut versuchen."
|
||||
},
|
||||
"push": {
|
||||
"notAvailable": "Dein Gerät unterstützt keine Push-Benachrichtigung",
|
||||
|
@ -169,7 +169,7 @@
|
|||
"heading": "Neue Follower"
|
||||
},
|
||||
"follow_request": {
|
||||
"heading": ""
|
||||
"heading": "Followeranfrage"
|
||||
},
|
||||
"favourite": {
|
||||
"heading": "Favoriten"
|
||||
|
@ -260,8 +260,8 @@
|
|||
}
|
||||
},
|
||||
"staticEmoji": {
|
||||
"heading": "",
|
||||
"description": ""
|
||||
"heading": "System-Emojis verwenden",
|
||||
"description": "Wenn du beim Betrachten der Emoji-Liste häufige App-Abstürze feststellst, kannst du stattdessen versuchen, statische Emoji zu verwenden."
|
||||
},
|
||||
"feedback": {
|
||||
"heading": "Neue Funktion vorschlagen"
|
||||
|
@ -280,7 +280,7 @@
|
|||
"description": "Es werden ausschließlich Daten gesammelt, welche nicht nutzerbezogen sind"
|
||||
},
|
||||
"version": "Version v{{version}}",
|
||||
"instanceVersion": ""
|
||||
"instanceVersion": "Mastodon Version {{version}}"
|
||||
},
|
||||
"switch": {
|
||||
"existing": "Wähle ein Konto aus",
|
||||
|
@ -293,7 +293,7 @@
|
|||
"accessibilityLabel": "Aktionen für Benutzer {{user}}",
|
||||
"accessibilityHint": "Du kannst diesen Benutzer stummschalten, blockieren, melden oder teilen"
|
||||
},
|
||||
"followed_by": "",
|
||||
"followed_by": " folgt dir",
|
||||
"moved": "Benutzer umgezogen",
|
||||
"created_at": "Registriert am: {{date}}",
|
||||
"summary": {
|
||||
|
@ -304,7 +304,8 @@
|
|||
"toots": {
|
||||
"default": "Tröts",
|
||||
"all": "Tröts und DruTröts"
|
||||
}
|
||||
},
|
||||
"suspended": "Konto wurde von den Instanzmoderation gesperrt"
|
||||
},
|
||||
"attachments": {
|
||||
"name": "<0 /><1>\"s Medien</1>"
|
||||
|
@ -347,7 +348,7 @@
|
|||
}
|
||||
},
|
||||
"history": {
|
||||
"name": ""
|
||||
"name": "Bearbeitungsverlauf"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -88,7 +88,7 @@
|
|||
"content": {
|
||||
"expandHint": "Hidden content"
|
||||
},
|
||||
"filtered": "Filtered",
|
||||
"filtered": "Filtered: {{phrase}}.",
|
||||
"fullConversation": "Read conversations",
|
||||
"translate": {
|
||||
"default": "Translate",
|
||||
|
|
|
@ -304,7 +304,8 @@
|
|||
"toots": {
|
||||
"default": "Toots",
|
||||
"all": "Toots and replies"
|
||||
}
|
||||
},
|
||||
"suspended": "Account suspended by the moderators of your server"
|
||||
},
|
||||
"attachments": {
|
||||
"name": "<0 /><1>\"s media</1>"
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"buttons": {
|
||||
"OK": "",
|
||||
"apply": "",
|
||||
"cancel": ""
|
||||
},
|
||||
"customEmoji": {
|
||||
"accessibilityLabel": ""
|
||||
},
|
||||
"message": {
|
||||
"success": {
|
||||
"message": ""
|
||||
},
|
||||
"warning": {
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"separator": ""
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
{
|
||||
"accessibilityHint": "",
|
||||
"account": {
|
||||
"title": "",
|
||||
"mute": {
|
||||
"action_false": "",
|
||||
"action_true": ""
|
||||
},
|
||||
"block": {
|
||||
"action_false": "",
|
||||
"action_true": ""
|
||||
},
|
||||
"reports": {
|
||||
"action": ""
|
||||
}
|
||||
},
|
||||
"copy": {
|
||||
"action": "",
|
||||
"succeed": ""
|
||||
},
|
||||
"instance": {
|
||||
"title": "",
|
||||
"block": {
|
||||
"action": "",
|
||||
"alert": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"buttons": {
|
||||
"confirm": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"share": {
|
||||
"status": {
|
||||
"action": ""
|
||||
},
|
||||
"account": {
|
||||
"action": ""
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
"title": "",
|
||||
"edit": {
|
||||
"action": ""
|
||||
},
|
||||
"delete": {
|
||||
"action": "",
|
||||
"alert": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"buttons": {
|
||||
"confirm": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"deleteEdit": {
|
||||
"action": "",
|
||||
"alert": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"buttons": {
|
||||
"confirm": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"mute": {
|
||||
"action_false": "",
|
||||
"action_true": ""
|
||||
},
|
||||
"pin": {
|
||||
"action_false": "",
|
||||
"action_true": ""
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
{}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"server": {
|
||||
"textInput": {
|
||||
"placeholder": ""
|
||||
},
|
||||
"button": "",
|
||||
"information": {
|
||||
"name": "",
|
||||
"accounts": "",
|
||||
"statuses": "",
|
||||
"domains": ""
|
||||
},
|
||||
"disclaimer": {
|
||||
"base": ""
|
||||
},
|
||||
"terms": {
|
||||
"base": ""
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"alert": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"buttons": {
|
||||
"cancel": "",
|
||||
"continue": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"title": "",
|
||||
"message": "",
|
||||
"options": {
|
||||
"image": "",
|
||||
"image_max": "",
|
||||
"video": "",
|
||||
"video_max": ""
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"HTML": {
|
||||
"accessibilityHint": "",
|
||||
"expanded": "",
|
||||
"moreLines": "",
|
||||
"defaultHint": ""
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"follow": {
|
||||
"function": ""
|
||||
},
|
||||
"block": {
|
||||
"function": ""
|
||||
},
|
||||
"button": {
|
||||
"error": "",
|
||||
"blocked_by": "",
|
||||
"blocking": "",
|
||||
"following": "",
|
||||
"requested": "",
|
||||
"default": ""
|
||||
}
|
||||
}
|
|
@ -0,0 +1,152 @@
|
|||
{
|
||||
"empty": {
|
||||
"error": {
|
||||
"message": "",
|
||||
"button": ""
|
||||
},
|
||||
"success": {
|
||||
"message": ""
|
||||
}
|
||||
},
|
||||
"end": {
|
||||
"message": ""
|
||||
},
|
||||
"lookback": {
|
||||
"message": ""
|
||||
},
|
||||
"refresh": {
|
||||
"fetchPreviousPage": "",
|
||||
"refetch": ""
|
||||
},
|
||||
"shared": {
|
||||
"actioned": {
|
||||
"pinned": "",
|
||||
"favourite": "",
|
||||
"status": "",
|
||||
"follow": "",
|
||||
"follow_request": "",
|
||||
"poll": "",
|
||||
"reblog": {
|
||||
"default": "",
|
||||
"notification": ""
|
||||
},
|
||||
"update": ""
|
||||
},
|
||||
"actions": {
|
||||
"reply": {
|
||||
"accessibilityLabel": ""
|
||||
},
|
||||
"reblogged": {
|
||||
"accessibilityLabel": "",
|
||||
"function": "",
|
||||
"options": {
|
||||
"title": "",
|
||||
"public": "",
|
||||
"unlisted": ""
|
||||
}
|
||||
},
|
||||
"favourited": {
|
||||
"accessibilityLabel": "",
|
||||
"function": ""
|
||||
},
|
||||
"bookmarked": {
|
||||
"accessibilityLabel": "",
|
||||
"function": ""
|
||||
}
|
||||
},
|
||||
"actionsUsers": {
|
||||
"reblogged_by": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityHint": "",
|
||||
"text": ""
|
||||
},
|
||||
"favourited_by": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityHint": "",
|
||||
"text": ""
|
||||
},
|
||||
"history": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityHint": "",
|
||||
"text_one": "",
|
||||
"text_other": ""
|
||||
}
|
||||
},
|
||||
"attachment": {
|
||||
"sensitive": {
|
||||
"button": ""
|
||||
},
|
||||
"unsupported": {
|
||||
"text": "",
|
||||
"button": ""
|
||||
}
|
||||
},
|
||||
"avatar": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityHint": ""
|
||||
},
|
||||
"content": {
|
||||
"expandHint": ""
|
||||
},
|
||||
"filtered": "",
|
||||
"fullConversation": "",
|
||||
"translate": {
|
||||
"default": "",
|
||||
"succeed": "",
|
||||
"failed": "",
|
||||
"source_not_supported": "",
|
||||
"target_not_supported": ""
|
||||
},
|
||||
"header": {
|
||||
"shared": {
|
||||
"account": {
|
||||
"name": {
|
||||
"accessibilityHint": ""
|
||||
},
|
||||
"account": {
|
||||
"accessibilityHint": ""
|
||||
}
|
||||
},
|
||||
"application": "",
|
||||
"edited": {
|
||||
"accessibilityLabel": ""
|
||||
},
|
||||
"muted": {
|
||||
"accessibilityLabel": ""
|
||||
},
|
||||
"visibility": {
|
||||
"direct": {
|
||||
"accessibilityLabel": ""
|
||||
},
|
||||
"private": {
|
||||
"accessibilityLabel": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"conversation": {
|
||||
"withAccounts": "",
|
||||
"delete": {
|
||||
"function": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"poll": {
|
||||
"meta": {
|
||||
"button": {
|
||||
"vote": "",
|
||||
"refresh": ""
|
||||
},
|
||||
"count": {
|
||||
"voters_one": "",
|
||||
"voters_other": "",
|
||||
"votes_one": "",
|
||||
"votes_other": ""
|
||||
},
|
||||
"expiration": {
|
||||
"expired": "",
|
||||
"until": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"screenshot": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"button": ""
|
||||
},
|
||||
"localCorrupt": {
|
||||
"message": ""
|
||||
},
|
||||
"pushError": {
|
||||
"message": "",
|
||||
"description": ""
|
||||
},
|
||||
"shareError": {
|
||||
"imageNotSupported": "",
|
||||
"videoNotSupported": ""
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"heading": "",
|
||||
"content": {
|
||||
"select_account": ""
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"content": {
|
||||
"altText": {
|
||||
"heading": ""
|
||||
},
|
||||
"notificationsFilter": {
|
||||
"heading": "",
|
||||
"content": {
|
||||
"follow": "",
|
||||
"follow_request": "",
|
||||
"favourite": "",
|
||||
"reblog": "",
|
||||
"mention": "",
|
||||
"poll": "",
|
||||
"status": "",
|
||||
"update": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"heading": "",
|
||||
"content": {
|
||||
"published": "",
|
||||
"button": {
|
||||
"read": "",
|
||||
"unread": ""
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,179 @@
|
|||
{
|
||||
"heading": {
|
||||
"left": {
|
||||
"button": "",
|
||||
"alert": {
|
||||
"title": "",
|
||||
"buttons": {
|
||||
"save": "",
|
||||
"delete": "",
|
||||
"cancel": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"right": {
|
||||
"button": {
|
||||
"default": "",
|
||||
"conversation": "",
|
||||
"reply": "",
|
||||
"deleteEdit": "",
|
||||
"edit": "",
|
||||
"share": ""
|
||||
},
|
||||
"alert": {
|
||||
"default": {
|
||||
"title": "",
|
||||
"button": ""
|
||||
},
|
||||
"removeReply": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"cancel": "",
|
||||
"confirm": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"content": {
|
||||
"root": {
|
||||
"header": {
|
||||
"postingAs": "",
|
||||
"spoilerInput": {
|
||||
"placeholder": ""
|
||||
},
|
||||
"textInput": {
|
||||
"placeholder": "",
|
||||
"keyboardImage": {
|
||||
"exceedMaximum": {
|
||||
"title": "",
|
||||
"OK": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"attachments": {
|
||||
"sensitive": "",
|
||||
"remove": {
|
||||
"accessibilityLabel": ""
|
||||
},
|
||||
"edit": {
|
||||
"accessibilityLabel": ""
|
||||
},
|
||||
"upload": {
|
||||
"accessibilityLabel": ""
|
||||
}
|
||||
},
|
||||
"emojis": {
|
||||
"accessibilityHint": ""
|
||||
},
|
||||
"poll": {
|
||||
"option": {
|
||||
"placeholder": {
|
||||
"accessibilityLabel": "",
|
||||
"single": "",
|
||||
"multiple": ""
|
||||
}
|
||||
},
|
||||
"quantity": {
|
||||
"reduce": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityHint": ""
|
||||
},
|
||||
"increase": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityHint": ""
|
||||
}
|
||||
},
|
||||
"multiple": {
|
||||
"heading": "",
|
||||
"options": {
|
||||
"single": "",
|
||||
"multiple": "",
|
||||
"cancel": ""
|
||||
}
|
||||
},
|
||||
"expiration": {
|
||||
"heading": "",
|
||||
"options": {
|
||||
"300": "",
|
||||
"1800": "",
|
||||
"3600": "",
|
||||
"21600": "",
|
||||
"86400": "",
|
||||
"259200": "",
|
||||
"604800": "",
|
||||
"cancel": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"attachment": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityHint": "",
|
||||
"failed": {
|
||||
"alert": {
|
||||
"title": "",
|
||||
"button": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"poll": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityHint": ""
|
||||
},
|
||||
"visibility": {
|
||||
"accessibilityLabel": "",
|
||||
"title": "",
|
||||
"options": {
|
||||
"public": "",
|
||||
"unlisted": "",
|
||||
"private": "",
|
||||
"direct": "",
|
||||
"cancel": ""
|
||||
}
|
||||
},
|
||||
"spoiler": {
|
||||
"accessibilityLabel": ""
|
||||
},
|
||||
"emoji": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityHint": ""
|
||||
}
|
||||
},
|
||||
"drafts_one": "",
|
||||
"drafts_other": ""
|
||||
},
|
||||
"editAttachment": {
|
||||
"header": {
|
||||
"title": "",
|
||||
"right": {
|
||||
"accessibilityLabel": "",
|
||||
"failed": {
|
||||
"title": "",
|
||||
"button": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"content": {
|
||||
"altText": {
|
||||
"heading": "",
|
||||
"placeholder": ""
|
||||
},
|
||||
"imageFocus": ""
|
||||
}
|
||||
},
|
||||
"draftsList": {
|
||||
"header": {
|
||||
"title": ""
|
||||
},
|
||||
"warning": "",
|
||||
"content": {
|
||||
"accessibilityHint": "",
|
||||
"textEmpty": ""
|
||||
},
|
||||
"checkAttachment": ""
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"content": {
|
||||
"actions": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityHint": ""
|
||||
},
|
||||
"options": {
|
||||
"save": "",
|
||||
"share": "",
|
||||
"cancel": ""
|
||||
},
|
||||
"save": {
|
||||
"succeed": "",
|
||||
"failed": ""
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,354 @@
|
|||
{
|
||||
"tabs": {
|
||||
"local": {
|
||||
"name": ""
|
||||
},
|
||||
"public": {
|
||||
"name": "",
|
||||
"segments": {
|
||||
"left": "",
|
||||
"right": ""
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"name": ""
|
||||
},
|
||||
"me": {
|
||||
"name": ""
|
||||
}
|
||||
},
|
||||
"common": {
|
||||
"search": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityHint": ""
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"filter": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityHint": ""
|
||||
}
|
||||
},
|
||||
"me": {
|
||||
"stacks": {
|
||||
"bookmarks": {
|
||||
"name": ""
|
||||
},
|
||||
"conversations": {
|
||||
"name": ""
|
||||
},
|
||||
"favourites": {
|
||||
"name": ""
|
||||
},
|
||||
"fontSize": {
|
||||
"name": ""
|
||||
},
|
||||
"language": {
|
||||
"name": ""
|
||||
},
|
||||
"lists": {
|
||||
"name": ""
|
||||
},
|
||||
"list": {
|
||||
"name": ""
|
||||
},
|
||||
"push": {
|
||||
"name": ""
|
||||
},
|
||||
"profile": {
|
||||
"name": ""
|
||||
},
|
||||
"profileName": {
|
||||
"name": ""
|
||||
},
|
||||
"profileNote": {
|
||||
"name": ""
|
||||
},
|
||||
"profileFields": {
|
||||
"name": ""
|
||||
},
|
||||
"settings": {
|
||||
"name": ""
|
||||
},
|
||||
"webSettings": {
|
||||
"name": ""
|
||||
},
|
||||
"switch": {
|
||||
"name": ""
|
||||
}
|
||||
},
|
||||
"fontSize": {
|
||||
"demo": "",
|
||||
"sizes": {
|
||||
"S": "",
|
||||
"M": "",
|
||||
"L": "",
|
||||
"XL": "",
|
||||
"XXL": ""
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
"cancellation": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"buttons": {
|
||||
"cancel": "",
|
||||
"discard": ""
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"succeed": "",
|
||||
"failed": ""
|
||||
},
|
||||
"root": {
|
||||
"name": {
|
||||
"title": ""
|
||||
},
|
||||
"avatar": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"header": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"note": {
|
||||
"title": ""
|
||||
},
|
||||
"fields": {
|
||||
"title": "",
|
||||
"total_one": "",
|
||||
"total_other": ""
|
||||
},
|
||||
"visibility": {
|
||||
"title": "",
|
||||
"options": {
|
||||
"public": "",
|
||||
"unlisted": "",
|
||||
"private": "",
|
||||
"cancel": ""
|
||||
}
|
||||
},
|
||||
"sensitive": {
|
||||
"title": ""
|
||||
},
|
||||
"lock": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"bot": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"fields": {
|
||||
"group": "",
|
||||
"label": "",
|
||||
"content": ""
|
||||
},
|
||||
"mediaSelectionFailed": ""
|
||||
},
|
||||
"push": {
|
||||
"notAvailable": "",
|
||||
"enable": {
|
||||
"direct": "",
|
||||
"settings": ""
|
||||
},
|
||||
"global": {
|
||||
"heading": "",
|
||||
"description": ""
|
||||
},
|
||||
"decode": {
|
||||
"heading": "",
|
||||
"description": ""
|
||||
},
|
||||
"default": {
|
||||
"heading": ""
|
||||
},
|
||||
"follow": {
|
||||
"heading": ""
|
||||
},
|
||||
"follow_request": {
|
||||
"heading": ""
|
||||
},
|
||||
"favourite": {
|
||||
"heading": ""
|
||||
},
|
||||
"reblog": {
|
||||
"heading": ""
|
||||
},
|
||||
"mention": {
|
||||
"heading": ""
|
||||
},
|
||||
"poll": {
|
||||
"heading": ""
|
||||
},
|
||||
"status": {
|
||||
"heading": ""
|
||||
},
|
||||
"howitworks": ""
|
||||
},
|
||||
"root": {
|
||||
"announcements": {
|
||||
"content": {
|
||||
"unread": "",
|
||||
"read": "",
|
||||
"empty": ""
|
||||
}
|
||||
},
|
||||
"push": {
|
||||
"content": {
|
||||
"enabled": "",
|
||||
"disabled": ""
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"title": ""
|
||||
},
|
||||
"logout": {
|
||||
"button": "",
|
||||
"alert": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"buttons": {
|
||||
"logout": "",
|
||||
"cancel": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"fontsize": {
|
||||
"heading": "",
|
||||
"content": {
|
||||
"S": "",
|
||||
"M": "",
|
||||
"L": "",
|
||||
"XL": "",
|
||||
"XXL": ""
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"heading": "",
|
||||
"options": {
|
||||
"cancel": ""
|
||||
}
|
||||
},
|
||||
"theme": {
|
||||
"heading": "",
|
||||
"options": {
|
||||
"auto": "",
|
||||
"light": "",
|
||||
"dark": "",
|
||||
"cancel": ""
|
||||
}
|
||||
},
|
||||
"darkTheme": {
|
||||
"heading": "",
|
||||
"options": {
|
||||
"lighter": "",
|
||||
"darker": "",
|
||||
"cancel": ""
|
||||
}
|
||||
},
|
||||
"browser": {
|
||||
"heading": "",
|
||||
"options": {
|
||||
"internal": "",
|
||||
"external": "",
|
||||
"cancel": ""
|
||||
}
|
||||
},
|
||||
"staticEmoji": {
|
||||
"heading": "",
|
||||
"description": ""
|
||||
},
|
||||
"feedback": {
|
||||
"heading": ""
|
||||
},
|
||||
"support": {
|
||||
"heading": ""
|
||||
},
|
||||
"review": {
|
||||
"heading": ""
|
||||
},
|
||||
"contact": {
|
||||
"heading": ""
|
||||
},
|
||||
"analytics": {
|
||||
"heading": "",
|
||||
"description": ""
|
||||
},
|
||||
"version": "",
|
||||
"instanceVersion": ""
|
||||
},
|
||||
"switch": {
|
||||
"existing": "",
|
||||
"new": ""
|
||||
}
|
||||
},
|
||||
"shared": {
|
||||
"account": {
|
||||
"actions": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityHint": ""
|
||||
},
|
||||
"followed_by": "",
|
||||
"moved": "",
|
||||
"created_at": "",
|
||||
"summary": {
|
||||
"statuses_count": "",
|
||||
"following_count": "",
|
||||
"followers_count": ""
|
||||
},
|
||||
"toots": {
|
||||
"default": "",
|
||||
"all": ""
|
||||
},
|
||||
"suspended": ""
|
||||
},
|
||||
"attachments": {
|
||||
"name": ""
|
||||
},
|
||||
"search": {
|
||||
"header": {
|
||||
"prefix": "",
|
||||
"placeholder": ""
|
||||
},
|
||||
"empty": {
|
||||
"general": "",
|
||||
"advanced": {
|
||||
"header": "",
|
||||
"example": {
|
||||
"account": "",
|
||||
"hashtag": "",
|
||||
"statusLink": "",
|
||||
"accountLink": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"sections": {
|
||||
"accounts": "",
|
||||
"hashtags": "",
|
||||
"statuses": ""
|
||||
},
|
||||
"notFound": ""
|
||||
},
|
||||
"toot": {
|
||||
"name": ""
|
||||
},
|
||||
"users": {
|
||||
"accounts": {
|
||||
"following": "",
|
||||
"followers": ""
|
||||
},
|
||||
"statuses": {
|
||||
"reblogged_by": "",
|
||||
"favourited_by": ""
|
||||
}
|
||||
},
|
||||
"history": {
|
||||
"name": ""
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"buttons": {
|
||||
"OK": "Ok",
|
||||
"apply": "Confirmer",
|
||||
"cancel": "Annuler"
|
||||
},
|
||||
"customEmoji": {
|
||||
"accessibilityLabel": "Émoji personnalisé {{emoji}}"
|
||||
},
|
||||
"message": {
|
||||
"success": {
|
||||
"message": "{{function}} succès"
|
||||
},
|
||||
"warning": {
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"message": "Échec de la connexion, veuillez réessayer"
|
||||
}
|
||||
},
|
||||
"separator": ", "
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
{
|
||||
"accessibilityHint": "Actions pour ce Pouet, telles que son utilisateur affiché, le Pouet lui-même",
|
||||
"account": {
|
||||
"title": "Actions de l'utilisateur",
|
||||
"mute": {
|
||||
"action_false": "Rendre muet l'utilisateur",
|
||||
"action_true": "Rendre la parole"
|
||||
},
|
||||
"block": {
|
||||
"action_false": "Bloquer l'utilisateur",
|
||||
"action_true": "Débloquer l'utilisateur"
|
||||
},
|
||||
"reports": {
|
||||
"action": "Signaler et bloquer"
|
||||
}
|
||||
},
|
||||
"copy": {
|
||||
"action": "Copier le Pouet",
|
||||
"succeed": "Copié"
|
||||
},
|
||||
"instance": {
|
||||
"title": "Action de l'instance",
|
||||
"block": {
|
||||
"action": "Bloquer l'instance {{instance}}",
|
||||
"alert": {
|
||||
"title": "Confirmer le blocage de l'instance {{instance}}?",
|
||||
"message": "Vous pouvez masquer ou bloquer certains utilisateurs.\n\nAprès avoir bloqué l'instance, tout son contenu, y compris les followers de cette instance, sera supprimé !",
|
||||
"buttons": {
|
||||
"confirm": "Confirmer"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"share": {
|
||||
"status": {
|
||||
"action": "Partager le pouet"
|
||||
},
|
||||
"account": {
|
||||
"action": "Partage l'utilisateur"
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
"title": "Actions du pouet",
|
||||
"edit": {
|
||||
"action": "Editer le pouet"
|
||||
},
|
||||
"delete": {
|
||||
"action": "Supprimer le pouet",
|
||||
"alert": {
|
||||
"title": "Confirmer la suppression ?",
|
||||
"message": "Tous les boosts et favoris seront effacés, y compris toutes les réponses.",
|
||||
"buttons": {
|
||||
"confirm": "Confirmer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"deleteEdit": {
|
||||
"action": "Supprimer le pouet et le republié",
|
||||
"alert": {
|
||||
"title": "Confirmer la suppression et le repost ?",
|
||||
"message": "Tous les boosts et favoris seront effacés, y compris toutes les réponses.",
|
||||
"buttons": {
|
||||
"confirm": "Confirmer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"mute": {
|
||||
"action_false": "Couper le pouet et les réponses",
|
||||
"action_true": "Couper le pouet et les réponses"
|
||||
},
|
||||
"pin": {
|
||||
"action_false": "Pouet épinglé",
|
||||
"action_true": "Détacher le pouet"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"frequentUsed": "Fréquemment utilisés"
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"server": {
|
||||
"textInput": {
|
||||
"placeholder": "Domaine d'instance"
|
||||
},
|
||||
"button": "Connexion",
|
||||
"information": {
|
||||
"name": "Nom",
|
||||
"accounts": "Utilisateurs",
|
||||
"statuses": "Pouets",
|
||||
"domains": "Univers"
|
||||
},
|
||||
"disclaimer": {
|
||||
"base": "Le processus de connexion utilise le navigateur du système. Les informations de votre compte ne seront pas visibles par l'application tooot."
|
||||
},
|
||||
"terms": {
|
||||
"base": "En vous connectant, vous acceptez la <0>politique de confidentialité</0> et les <1>conditions de service</1>."
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"alert": {
|
||||
"title": "Connecté à cette instance",
|
||||
"message": "Vous pouvez vous connecter à un autre compte, en maintenant un compte connecté existant",
|
||||
"buttons": {
|
||||
"cancel": "$t(common:buttons.cancel)",
|
||||
"continue": "Continuer"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"title": "Sélectionnez la source du média",
|
||||
"message": "Les données Media EXIF ne sont pas téléchargées",
|
||||
"options": {
|
||||
"image": "Télécharger des photos",
|
||||
"image_max": "Télécharger des photos (max {{max}})",
|
||||
"video": "Télécharger une vidéo",
|
||||
"video_max": "Télécharger une vidéo (max {{max}})"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"HTML": {
|
||||
"accessibilityHint": "Appuyez pour agrandir ou réduire le contenu",
|
||||
"expanded": "{{hint}}{{moreLines}}",
|
||||
"moreLines": " ({{count}} lignes en plus)",
|
||||
"defaultHint": "Pouet long"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"follow": {
|
||||
"function": "Suivre l'utilisateur"
|
||||
},
|
||||
"block": {
|
||||
"function": "Bloquer l'utilisateur"
|
||||
},
|
||||
"button": {
|
||||
"error": "Erreur de chargement",
|
||||
"blocked_by": "Bloqué par l'utilisateur",
|
||||
"blocking": "Débloquer",
|
||||
"following": "Ne plus suivre",
|
||||
"requested": "Retirer la demande",
|
||||
"default": "Suivre"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,152 @@
|
|||
{
|
||||
"empty": {
|
||||
"error": {
|
||||
"message": "Erreur de chargement",
|
||||
"button": "Réessayer"
|
||||
},
|
||||
"success": {
|
||||
"message": "La chronologie est vide"
|
||||
}
|
||||
},
|
||||
"end": {
|
||||
"message": "Fin, qu'en est-il d'une tasse de <0 />"
|
||||
},
|
||||
"lookback": {
|
||||
"message": "Dernière lecture à"
|
||||
},
|
||||
"refresh": {
|
||||
"fetchPreviousPage": "Plus récent à partir d'ici",
|
||||
"refetch": "À la dernière"
|
||||
},
|
||||
"shared": {
|
||||
"actioned": {
|
||||
"pinned": "Épinglé",
|
||||
"favourite": "{{name}} a mis votre pouet en favoris",
|
||||
"status": "{{name}} vient d'être posté",
|
||||
"follow": "{{name}} vous suit",
|
||||
"follow_request": "{{name}} a demandé à vous suivre",
|
||||
"poll": "Un sondage auquel vous avez participé est maintenant terminé",
|
||||
"reblog": {
|
||||
"default": "{{name}} a partagé",
|
||||
"notification": "{{name}} a partagé votre message"
|
||||
},
|
||||
"update": "Le reblog a été modifié"
|
||||
},
|
||||
"actions": {
|
||||
"reply": {
|
||||
"accessibilityLabel": "Répondre à ce pouet"
|
||||
},
|
||||
"reblogged": {
|
||||
"accessibilityLabel": "Partager ce pouet",
|
||||
"function": "Pouet de Boost",
|
||||
"options": {
|
||||
"title": "Choisir la visibilité du boost",
|
||||
"public": "Boost public",
|
||||
"unlisted": "Retirer le boost"
|
||||
}
|
||||
},
|
||||
"favourited": {
|
||||
"accessibilityLabel": "Ajouter ce pouet aux favoris",
|
||||
"function": "Mettre le pouet en favori"
|
||||
},
|
||||
"bookmarked": {
|
||||
"accessibilityLabel": "Ajouter ce pouet aux signets",
|
||||
"function": "Pouet de signet"
|
||||
}
|
||||
},
|
||||
"actionsUsers": {
|
||||
"reblogged_by": {
|
||||
"accessibilityLabel": "{{count}} utilisateurs ont boosté ce pouet",
|
||||
"accessibilityHint": "Touchez pour connaître les utilisateurs",
|
||||
"text": "$t(screenTabs:shared.users.statuses.reblogged_by)"
|
||||
},
|
||||
"favourited_by": {
|
||||
"accessibilityLabel": "{{count}} utilisateurs ont boosté ce pouet",
|
||||
"accessibilityHint": "Touchez pour connaître les utilisateurs",
|
||||
"text": "$t(screenTabs:shared.users.statuses.favourited_by)"
|
||||
},
|
||||
"history": {
|
||||
"accessibilityLabel": "Ce pouet a été modifié {{count}} fois",
|
||||
"accessibilityHint": "Appuyer pour afficher l'historique d'édition complet",
|
||||
"text_one": "{{count}} modification",
|
||||
"text_other": "{{count}} modifications"
|
||||
}
|
||||
},
|
||||
"attachment": {
|
||||
"sensitive": {
|
||||
"button": "Afficher les médias sensibles"
|
||||
},
|
||||
"unsupported": {
|
||||
"text": "Erreur de chargement",
|
||||
"button": "Essayer le lien distant"
|
||||
}
|
||||
},
|
||||
"avatar": {
|
||||
"accessibilityLabel": "Avatar de {{name}}",
|
||||
"accessibilityHint": "Appuyez pour accéder à la page de {{name}}"
|
||||
},
|
||||
"content": {
|
||||
"expandHint": "Contenu masqué"
|
||||
},
|
||||
"filtered": "Filtré: {{phrase}}.",
|
||||
"fullConversation": "Conversations lues",
|
||||
"translate": {
|
||||
"default": "Traduire",
|
||||
"succeed": "Traduit par {{provider}} de {{source}}",
|
||||
"failed": "La traduction a échoué",
|
||||
"source_not_supported": "cette langue n'est pas prise en charge",
|
||||
"target_not_supported": "Cette langue n'est pas prise en charge"
|
||||
},
|
||||
"header": {
|
||||
"shared": {
|
||||
"account": {
|
||||
"name": {
|
||||
"accessibilityHint": "Nom de l'utilisateur"
|
||||
},
|
||||
"account": {
|
||||
"accessibilityHint": "Compte de l'utilisateur"
|
||||
}
|
||||
},
|
||||
"application": "Poussée avec {{application}}",
|
||||
"edited": {
|
||||
"accessibilityLabel": "Pouet édité"
|
||||
},
|
||||
"muted": {
|
||||
"accessibilityLabel": "Pouet rendu muet"
|
||||
},
|
||||
"visibility": {
|
||||
"direct": {
|
||||
"accessibilityLabel": "Envoyer un message direct"
|
||||
},
|
||||
"private": {
|
||||
"accessibilityLabel": "Visible uniquement pour les abonné·e·s"
|
||||
}
|
||||
}
|
||||
},
|
||||
"conversation": {
|
||||
"withAccounts": "Avec",
|
||||
"delete": {
|
||||
"function": "Supprimer le message direct"
|
||||
}
|
||||
}
|
||||
},
|
||||
"poll": {
|
||||
"meta": {
|
||||
"button": {
|
||||
"vote": "Voter",
|
||||
"refresh": "Actualiser"
|
||||
},
|
||||
"count": {
|
||||
"voters_one": "{{count}} utilisateur a voté",
|
||||
"voters_other": "{{count}} utilisateurs ont voté",
|
||||
"votes_one": "{{count}} votes",
|
||||
"votes_other": "{{count}} votes"
|
||||
},
|
||||
"expiration": {
|
||||
"expired": "Le vote a expiré",
|
||||
"until": "Expire <0 />"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"screenshot": {
|
||||
"title": "Protection de la confidentialité",
|
||||
"message": "Veuillez ne pas divulguer l'identité d'un autre utilisateur, tel que le nom d'utilisateur, l'avatar, etc. Merci!",
|
||||
"button": "Confirmer"
|
||||
},
|
||||
"localCorrupt": {
|
||||
"message": "Session expirée, veuillez ré-essayer"
|
||||
},
|
||||
"pushError": {
|
||||
"message": "Erreur des services push",
|
||||
"description": "Veuillez réactiver la notification push dans les paramètres"
|
||||
},
|
||||
"shareError": {
|
||||
"imageNotSupported": "Type d'image {{type}} non pris en charge",
|
||||
"videoNotSupported": "Type de vidéo {{type}} non supporté"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"heading": "Partager avec...",
|
||||
"content": {
|
||||
"select_account": "Sélectionnez un compte"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"content": {
|
||||
"altText": {
|
||||
"heading": "Texte de remplacement"
|
||||
},
|
||||
"notificationsFilter": {
|
||||
"heading": "Afficher les notifications",
|
||||
"content": {
|
||||
"follow": "$t(screenTabs:me.push.follow.heading)",
|
||||
"follow_request": "Demande d'abonnement",
|
||||
"favourite": "$t(screenTabs:me.push.favourite.heading)",
|
||||
"reblog": "$t(screenTabs:me.push.reblog.heading)",
|
||||
"mention": "$t(screenTabs:me.push.mention.heading)",
|
||||
"poll": "$t(screenTabs:me.push.poll.heading)",
|
||||
"status": "Pouet des utilisateurs abonnés",
|
||||
"update": "Le reblog a été modifié"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"heading": "Annonces",
|
||||
"content": {
|
||||
"published": "Publié <0 />",
|
||||
"button": {
|
||||
"read": "Lire",
|
||||
"unread": "Marqué comme lu"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,179 @@
|
|||
{
|
||||
"heading": {
|
||||
"left": {
|
||||
"button": "Abandonner",
|
||||
"alert": {
|
||||
"title": "Annuler l’édition?",
|
||||
"buttons": {
|
||||
"save": "Enregistrer comme brouillon",
|
||||
"delete": "Supprimer le brouillon",
|
||||
"cancel": "Abandonner"
|
||||
}
|
||||
}
|
||||
},
|
||||
"right": {
|
||||
"button": {
|
||||
"default": "Pouet",
|
||||
"conversation": "Pouet DM",
|
||||
"reply": "Réponse de pouet",
|
||||
"deleteEdit": "Pouet",
|
||||
"edit": "Pouet",
|
||||
"share": "Pouet"
|
||||
},
|
||||
"alert": {
|
||||
"default": {
|
||||
"title": "Échec du pouet",
|
||||
"button": "Réessayer"
|
||||
},
|
||||
"removeReply": {
|
||||
"title": "Le pouet répondu est introuvable",
|
||||
"description": "Le pouet répondu a peut-être été supprimé. Voulez-vous le supprimer de votre référence ?",
|
||||
"cancel": "$t(common:buttons.cancel)",
|
||||
"confirm": "Supprimer la référence"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"content": {
|
||||
"root": {
|
||||
"header": {
|
||||
"postingAs": "Pouet en tant que @{{acct}}@{{domain}}",
|
||||
"spoilerInput": {
|
||||
"placeholder": "Voir tous les messages d'avertissement"
|
||||
},
|
||||
"textInput": {
|
||||
"placeholder": "Qu’avez-vous en tête",
|
||||
"keyboardImage": {
|
||||
"exceedMaximum": {
|
||||
"title": "Nombre maximum de pièces jointes atteint",
|
||||
"OK": "$t(common:buttons.OK)"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"attachments": {
|
||||
"sensitive": "Marquer les pièces jointes comme étant sensibles",
|
||||
"remove": {
|
||||
"accessibilityLabel": "Retirer la pièce jointe téléchargée, numéro {{attachment}}"
|
||||
},
|
||||
"edit": {
|
||||
"accessibilityLabel": "Editer la pièce jointe téléchargée, numéro {{attachment}}"
|
||||
},
|
||||
"upload": {
|
||||
"accessibilityLabel": "Télécharger plus de pièces jointes"
|
||||
}
|
||||
},
|
||||
"emojis": {
|
||||
"accessibilityHint": "Tapotez pour ajouter des émojis au pouet"
|
||||
},
|
||||
"poll": {
|
||||
"option": {
|
||||
"placeholder": {
|
||||
"accessibilityLabel": "Option du sondage {{index}}",
|
||||
"single": "Choix unique",
|
||||
"multiple": "Choix multiple"
|
||||
}
|
||||
},
|
||||
"quantity": {
|
||||
"reduce": {
|
||||
"accessibilityLabel": "Réduire les options du sondage à {{amount}}",
|
||||
"accessibilityHint": "Quantité minimale d'options de sondage atteinte, actuellement {{amount}}"
|
||||
},
|
||||
"increase": {
|
||||
"accessibilityLabel": "Augmentez les options du sondage à {{amount}}",
|
||||
"accessibilityHint": "Quantité maximum d'options de sondage atteinte, actuellement {{amount}}"
|
||||
}
|
||||
},
|
||||
"multiple": {
|
||||
"heading": "Type de choix",
|
||||
"options": {
|
||||
"single": "Choix unique",
|
||||
"multiple": "Choix multiple",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
},
|
||||
"expiration": {
|
||||
"heading": "Validité",
|
||||
"options": {
|
||||
"300": "5 minutes",
|
||||
"1800": "30 minutes",
|
||||
"3600": "1 heure",
|
||||
"21600": "6 heures",
|
||||
"86400": "1 jour",
|
||||
"259200": "3 jours",
|
||||
"604800": "7 jours",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"attachment": {
|
||||
"accessibilityLabel": "Téléchargez une pièce-jointe",
|
||||
"accessibilityHint": "La fonction de sondage sera désactivée lorsqu'il y a une pièce jointe",
|
||||
"failed": {
|
||||
"alert": {
|
||||
"title": "Le téléchargement a échoué",
|
||||
"button": "Réessayer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"poll": {
|
||||
"accessibilityLabel": "Ajouter un sondage",
|
||||
"accessibilityHint": "La fonction d'attachement sera désactivée lorsque le sondage est actif"
|
||||
},
|
||||
"visibility": {
|
||||
"accessibilityLabel": "La visibilité de pouet est {{visibility}}",
|
||||
"title": "Visibilité de pouet",
|
||||
"options": {
|
||||
"public": "Public",
|
||||
"unlisted": "Non listé",
|
||||
"private": "Abonné·e·s uniquement",
|
||||
"direct": "Message direct",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
},
|
||||
"spoiler": {
|
||||
"accessibilityLabel": "Divulgâchage"
|
||||
},
|
||||
"emoji": {
|
||||
"accessibilityLabel": "Ajouter un émoji",
|
||||
"accessibilityHint": "Ouvrir le panneau de sélection des émojis, glisser horizontalement pour changer de page"
|
||||
}
|
||||
},
|
||||
"drafts_one": "Brouillon ({{count}})",
|
||||
"drafts_other": "Brouillons ({{count}})"
|
||||
},
|
||||
"editAttachment": {
|
||||
"header": {
|
||||
"title": "Modifier la pièce jointe",
|
||||
"right": {
|
||||
"accessibilityLabel": "Enregistrement de la pièce jointe",
|
||||
"failed": {
|
||||
"title": "Impossible d'éditer",
|
||||
"button": "Réessayer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"content": {
|
||||
"altText": {
|
||||
"heading": "Décrire cette photo pour les personnes malvoyantes",
|
||||
"placeholder": "Vous pouvez ajouter une description, parfois appelée alt-text, à vos médias afin qu'ils soient accessibles à un plus grand nombre de personnes, y compris celles qui sont aveugles ou malvoyantes.\n\nLes bonnes descriptions sont concises, ou présentent ce qui est dans vos médias avec suffisamment de précision pour comprendre leur contexte."
|
||||
},
|
||||
"imageFocus": "Faites glisser le cercle de focus pour mettre à jour le point de focus"
|
||||
}
|
||||
},
|
||||
"draftsList": {
|
||||
"header": {
|
||||
"title": "Brouillon"
|
||||
},
|
||||
"warning": "Les brouillons ne sont stockés que localement, et peuvent être perdus dans des événements malheureux. Veuillez ne pas utiliser de brouillons pour un stockage à long terme.",
|
||||
"content": {
|
||||
"accessibilityHint": "Brouillon enregistré, appuyez pour modifier ce brouillon",
|
||||
"textEmpty": "Le contenu est vide"
|
||||
},
|
||||
"checkAttachment": "Vérification des pièces jointes sur le serveur..."
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"content": {
|
||||
"actions": {
|
||||
"accessibilityLabel": "Plus d'actions pour cette image",
|
||||
"accessibilityHint": "Vous pouvez enregistrer ou partager cette image"
|
||||
},
|
||||
"options": {
|
||||
"save": "Enregistrer l'image",
|
||||
"share": "Partager l'image",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
},
|
||||
"save": {
|
||||
"succeed": "Image enregistrée",
|
||||
"failed": "L'enregistrement de l'image a échoué"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,354 @@
|
|||
{
|
||||
"tabs": {
|
||||
"local": {
|
||||
"name": "Suit"
|
||||
},
|
||||
"public": {
|
||||
"name": "",
|
||||
"segments": {
|
||||
"left": "Fédéré",
|
||||
"right": "Local"
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"name": "Notifications"
|
||||
},
|
||||
"me": {
|
||||
"name": "À propos de moi"
|
||||
}
|
||||
},
|
||||
"common": {
|
||||
"search": {
|
||||
"accessibilityLabel": "Rechercher",
|
||||
"accessibilityHint": "Rechercher des hashtags, des utilisateurs ou des pouets"
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"filter": {
|
||||
"accessibilityLabel": "Filtrer",
|
||||
"accessibilityHint": "Filtrer les types de notifications affichés"
|
||||
}
|
||||
},
|
||||
"me": {
|
||||
"stacks": {
|
||||
"bookmarks": {
|
||||
"name": "Signets"
|
||||
},
|
||||
"conversations": {
|
||||
"name": "Messages directs"
|
||||
},
|
||||
"favourites": {
|
||||
"name": "Favoris"
|
||||
},
|
||||
"fontSize": {
|
||||
"name": "Taille de la police de Pouet"
|
||||
},
|
||||
"language": {
|
||||
"name": "Langue"
|
||||
},
|
||||
"lists": {
|
||||
"name": "Listes"
|
||||
},
|
||||
"list": {
|
||||
"name": "Liste : {{list}}"
|
||||
},
|
||||
"push": {
|
||||
"name": "Push de Notification"
|
||||
},
|
||||
"profile": {
|
||||
"name": "Modifier le profil"
|
||||
},
|
||||
"profileName": {
|
||||
"name": "Editer le nom d'affichage"
|
||||
},
|
||||
"profileNote": {
|
||||
"name": "Éditer la description"
|
||||
},
|
||||
"profileFields": {
|
||||
"name": "Éditer les métadonnées"
|
||||
},
|
||||
"settings": {
|
||||
"name": "Paramètres de l'application"
|
||||
},
|
||||
"webSettings": {
|
||||
"name": "Plus de paramètres de compte"
|
||||
},
|
||||
"switch": {
|
||||
"name": "Passer sur un autre compte"
|
||||
}
|
||||
},
|
||||
"fontSize": {
|
||||
"demo": "<p>Ceci est un pouet de démo😊. Vous pouvez choisir parmi plusieurs options ci-dessous.<br /><br />Ce paramètre n'affecte que le contenu principal des pouets, mais pas les autres tailles de police.</p>",
|
||||
"sizes": {
|
||||
"S": "S",
|
||||
"M": "M - Par Défaut",
|
||||
"L": "L",
|
||||
"XL": "XL",
|
||||
"XXL": "XXL"
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
"cancellation": {
|
||||
"title": "Modifications non sauvegardées",
|
||||
"message": "Votre modification n'a pas été enregistrée. Voulez-vous annuler l'enregistrement des modifications ?",
|
||||
"buttons": {
|
||||
"cancel": "$t(common:buttons.cancel)",
|
||||
"discard": "Ne pas tenir compte"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"succeed": "{{type}} mis à jour",
|
||||
"failed": "{{type}} Échec de la mise à jour, veuillez ré-essayer"
|
||||
},
|
||||
"root": {
|
||||
"name": {
|
||||
"title": "Nom Affiché"
|
||||
},
|
||||
"avatar": {
|
||||
"title": "Avatar",
|
||||
"description": "Sera réduit à 400x400px"
|
||||
},
|
||||
"header": {
|
||||
"title": "Bandeau",
|
||||
"description": "Sera réduit à 1500x500px"
|
||||
},
|
||||
"note": {
|
||||
"title": "Description"
|
||||
},
|
||||
"fields": {
|
||||
"title": "Metadonnés",
|
||||
"total_one": "Champ {{count}}",
|
||||
"total_other": "Champ {{count}}"
|
||||
},
|
||||
"visibility": {
|
||||
"title": "Visibilité de la publication",
|
||||
"options": {
|
||||
"public": "Public",
|
||||
"unlisted": "Non listé",
|
||||
"private": "Abonné·e·s uniquement",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
},
|
||||
"sensitive": {
|
||||
"title": "Publication de médias sensibles"
|
||||
},
|
||||
"lock": {
|
||||
"title": "Verrouiller le compte",
|
||||
"description": "Nécessite que vous approuviez manuellement chaque abonné·e"
|
||||
},
|
||||
"bot": {
|
||||
"title": "Compte Bot",
|
||||
"description": "Ce compte effectue principalement des actions automatisées et peut ne pas être surveillé"
|
||||
}
|
||||
},
|
||||
"fields": {
|
||||
"group": "Groupe {{index}}",
|
||||
"label": "Étiquette",
|
||||
"content": "Contenu"
|
||||
},
|
||||
"mediaSelectionFailed": "Le traitement de l'image a échoué. Veuillez réessayer."
|
||||
},
|
||||
"push": {
|
||||
"notAvailable": "Votre téléphone ne prend pas en charge la notification push de tooot",
|
||||
"enable": {
|
||||
"direct": "Activer les notifications push",
|
||||
"settings": "Activer dans les paramètres"
|
||||
},
|
||||
"global": {
|
||||
"heading": "Activer pour {{acct}}",
|
||||
"description": "Les messages sont acheminés via le serveur de tooot"
|
||||
},
|
||||
"decode": {
|
||||
"heading": "Détails du message",
|
||||
"description": "Les messages acheminés par le serveur de tooot sont chiffrés, mais vous pouvez choisir de décoder le message sur le serveur. Le code source de notre serveur est open source et aucune politique de log."
|
||||
},
|
||||
"default": {
|
||||
"heading": "Par défaut"
|
||||
},
|
||||
"follow": {
|
||||
"heading": "Nouvel abonné"
|
||||
},
|
||||
"follow_request": {
|
||||
"heading": "Demande d'abonnement"
|
||||
},
|
||||
"favourite": {
|
||||
"heading": "Dans les favoris"
|
||||
},
|
||||
"reblog": {
|
||||
"heading": "Boosté"
|
||||
},
|
||||
"mention": {
|
||||
"heading": "Vous a mentionné(e)"
|
||||
},
|
||||
"poll": {
|
||||
"heading": "Mise à jour du sondage"
|
||||
},
|
||||
"status": {
|
||||
"heading": "Pouet des utilisateurs inscrits"
|
||||
},
|
||||
"howitworks": "Apprenez comment cela fonctionne"
|
||||
},
|
||||
"root": {
|
||||
"announcements": {
|
||||
"content": {
|
||||
"unread": "{{amount}} non lus",
|
||||
"read": "Tout lu",
|
||||
"empty": "Aucun"
|
||||
}
|
||||
},
|
||||
"push": {
|
||||
"content": {
|
||||
"enabled": "Activé",
|
||||
"disabled": "Désactivé"
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"title": "Mettre à jour vers la dernière version"
|
||||
},
|
||||
"logout": {
|
||||
"button": "Se déconnecter",
|
||||
"alert": {
|
||||
"title": "Déconnexion?",
|
||||
"message": "Après vous être déconnecté, vous devez vous reconnecter",
|
||||
"buttons": {
|
||||
"logout": "Déconnexion",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"fontsize": {
|
||||
"heading": "$t(me.stacks.fontSize.name)",
|
||||
"content": {
|
||||
"S": "$t(me.fontSize.sizes.S)",
|
||||
"M": "$t(me.fontSize.sizes.M)",
|
||||
"L": "$t(me.fontSize.sizes.L)",
|
||||
"XL": "$t(me.fontSize.sizes.XL)",
|
||||
"XXL": "$t(me.fontSize.sizes.XXL)"
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"heading": "$t(me.stacks.language.name)",
|
||||
"options": {
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
},
|
||||
"theme": {
|
||||
"heading": "Apparence",
|
||||
"options": {
|
||||
"auto": "Comme le système",
|
||||
"light": "Mode Clair",
|
||||
"dark": "Mode sombre",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
},
|
||||
"darkTheme": {
|
||||
"heading": "Thème sombre",
|
||||
"options": {
|
||||
"lighter": "Plus claire",
|
||||
"darker": "Plus sombre",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
},
|
||||
"browser": {
|
||||
"heading": "Ouverture du lien",
|
||||
"options": {
|
||||
"internal": "Dans l'application",
|
||||
"external": "Ouvrir dans le navigateur système",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
},
|
||||
"staticEmoji": {
|
||||
"heading": "Utiliser des émojis statiques",
|
||||
"description": "Si vous rencontrez des plantages fréquents de l'application lors de l'affichage de la liste d'émojis, vous pouvez essayer d'utiliser des émojis statiques."
|
||||
},
|
||||
"feedback": {
|
||||
"heading": "Demande de fonctionnalités"
|
||||
},
|
||||
"support": {
|
||||
"heading": "Support de tooot"
|
||||
},
|
||||
"review": {
|
||||
"heading": "Examiner le tooot"
|
||||
},
|
||||
"contact": {
|
||||
"heading": "Contacter tooot"
|
||||
},
|
||||
"analytics": {
|
||||
"heading": "Aidez-nous à nous améliorer",
|
||||
"description": "Collecte uniquement de l'usage relatif des non-utilisateurs"
|
||||
},
|
||||
"version": "Version {{version}}",
|
||||
"instanceVersion": "Version de Mastodon v{{version}}"
|
||||
},
|
||||
"switch": {
|
||||
"existing": "Choisir parmi les utilisateurs connectés",
|
||||
"new": "Connectez-vous à une instance"
|
||||
}
|
||||
},
|
||||
"shared": {
|
||||
"account": {
|
||||
"actions": {
|
||||
"accessibilityLabel": "Actions pour l'utilisateur {{user}}",
|
||||
"accessibilityHint": "Vous pouvez masquer, bloquer, signaler ou partager cet utilisateur"
|
||||
},
|
||||
"followed_by": " vous suit",
|
||||
"moved": "Utilisateur déplacé",
|
||||
"created_at": "Inscrit le : {{date}}",
|
||||
"summary": {
|
||||
"statuses_count": "{{count}} pouets",
|
||||
"following_count": "$t(shared.users.accounts.following)",
|
||||
"followers_count": "$t(shared.users.accounts.followers)"
|
||||
},
|
||||
"toots": {
|
||||
"default": "Pouets",
|
||||
"all": "Pouets et réponses"
|
||||
},
|
||||
"suspended": "Compte suspendu par les modérateurs de votre serveur"
|
||||
},
|
||||
"attachments": {
|
||||
"name": "<0 /><1>\"s media</1>"
|
||||
},
|
||||
"search": {
|
||||
"header": {
|
||||
"prefix": "Recherche en cours",
|
||||
"placeholder": "pour..."
|
||||
},
|
||||
"empty": {
|
||||
"general": "Entrez le mot clé pour rechercher <bold>$t(screenTabs:shared.search.sections.accounts)</bold><unk><bold>$t(screenTabs:shared.search.sections.hashtags)</bold> ou <bold>$t(screenTabs:shared.search.sections.statuses)</bold>",
|
||||
"advanced": {
|
||||
"header": "Recherche avancée",
|
||||
"example": {
|
||||
"account": "$t(shared.search.header.prefix) $t(shared.search.sections.accounts)",
|
||||
"hashtag": "$t(shared.search.header.prefix) $t(shared.search.sections.hashtags)",
|
||||
"statusLink": "$t(shared.search.header.prefix) $t(shared.search.sections.statuses)",
|
||||
"accountLink": "$t(shared.search.header.prefix) $t(shared.search.sections.accounts)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sections": {
|
||||
"accounts": "Utilisateur",
|
||||
"hashtags": "Hashtag",
|
||||
"statuses": "Pouet"
|
||||
},
|
||||
"notFound": "Impossible de trouver <bold>{{searchTerm}}</bold> lié à {{type}}"
|
||||
},
|
||||
"toot": {
|
||||
"name": "Discussions"
|
||||
},
|
||||
"users": {
|
||||
"accounts": {
|
||||
"following": "Abonnements {{count}}",
|
||||
"followers": "{{count}} abonnés"
|
||||
},
|
||||
"statuses": {
|
||||
"reblogged_by": "{{count}} boosté",
|
||||
"favourited_by": "{{count}} mis en favori"
|
||||
}
|
||||
},
|
||||
"history": {
|
||||
"name": "Modifier l'historique"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,15 +1,16 @@
|
|||
import i18n from 'i18next'
|
||||
import { initReactI18next } from 'react-i18next'
|
||||
|
||||
import de from '@root/i18n/de/_all'
|
||||
import en from '@root/i18n/en/_all'
|
||||
import it from '@root/i18n/it/_all'
|
||||
import ja from '@root/i18n/ja/_all'
|
||||
import ko from '@root/i18n/ko/_all'
|
||||
import pt_BR from '@root/i18n/pt_BR/_all'
|
||||
import vi from '@root/i18n/vi/_all'
|
||||
import zh_Hans from '@root/i18n/zh-Hans/_all'
|
||||
import zh_Hant from '@root/i18n/zh-Hant/_all'
|
||||
import de from '@root/i18n/de'
|
||||
import en from '@root/i18n/en'
|
||||
import fr from '@root/i18n/fr'
|
||||
import it from '@root/i18n/it'
|
||||
import ja from '@root/i18n/ja'
|
||||
import ko from '@root/i18n/ko'
|
||||
import pt_BR from '@root/i18n/pt_BR'
|
||||
import vi from '@root/i18n/vi'
|
||||
import zh_Hans from '@root/i18n/zh-Hans'
|
||||
import zh_Hant from '@root/i18n/zh-Hant'
|
||||
|
||||
import '@formatjs/intl-getcanonicallocales/polyfill'
|
||||
import '@formatjs/intl-locale/polyfill'
|
||||
|
@ -17,6 +18,7 @@ import '@formatjs/intl-locale/polyfill'
|
|||
import '@formatjs/intl-pluralrules/polyfill'
|
||||
import '@formatjs/intl-pluralrules/locale-data/de'
|
||||
import '@formatjs/intl-pluralrules/locale-data/en'
|
||||
import '@formatjs/intl-pluralrules/locale-data/fr'
|
||||
import '@formatjs/intl-pluralrules/locale-data/it'
|
||||
import '@formatjs/intl-pluralrules/locale-data/ja'
|
||||
import '@formatjs/intl-pluralrules/locale-data/ko'
|
||||
|
@ -27,6 +29,7 @@ import '@formatjs/intl-pluralrules/locale-data/zh'
|
|||
import '@formatjs/intl-numberformat/polyfill'
|
||||
import '@formatjs/intl-numberformat/locale-data/de'
|
||||
import '@formatjs/intl-numberformat/locale-data/en'
|
||||
import '@formatjs/intl-numberformat/locale-data/fr'
|
||||
import '@formatjs/intl-numberformat/locale-data/it'
|
||||
import '@formatjs/intl-numberformat/locale-data/ja'
|
||||
import '@formatjs/intl-numberformat/locale-data/ko'
|
||||
|
@ -38,6 +41,7 @@ import '@formatjs/intl-numberformat/locale-data/zh-Hant'
|
|||
import '@formatjs/intl-datetimeformat/polyfill'
|
||||
import '@formatjs/intl-datetimeformat/locale-data/de'
|
||||
import '@formatjs/intl-datetimeformat/locale-data/en'
|
||||
import '@formatjs/intl-datetimeformat/locale-data/fr'
|
||||
import '@formatjs/intl-datetimeformat/locale-data/it'
|
||||
import '@formatjs/intl-datetimeformat/locale-data/ja'
|
||||
import '@formatjs/intl-datetimeformat/locale-data/ko'
|
||||
|
@ -50,6 +54,7 @@ import '@formatjs/intl-datetimeformat/add-all-tz'
|
|||
import '@formatjs/intl-relativetimeformat/polyfill'
|
||||
import '@formatjs/intl-relativetimeformat/locale-data/de'
|
||||
import '@formatjs/intl-relativetimeformat/locale-data/en'
|
||||
import '@formatjs/intl-relativetimeformat/locale-data/fr'
|
||||
import '@formatjs/intl-relativetimeformat/locale-data/it'
|
||||
import '@formatjs/intl-relativetimeformat/locale-data/ja'
|
||||
import '@formatjs/intl-relativetimeformat/locale-data/ko'
|
||||
|
@ -65,7 +70,7 @@ i18n.use(initReactI18next).init({
|
|||
ns: ['common'],
|
||||
defaultNS: 'common',
|
||||
|
||||
resources: { de, en, it, ja, ko, 'pt-BR': pt_BR, vi, 'zh-Hans': zh_Hans, 'zh-Hant': zh_Hant },
|
||||
resources: { de, en, fr, it, ja, ko, 'pt-BR': pt_BR, vi, 'zh-Hans': zh_Hans, 'zh-Hant': zh_Hant },
|
||||
returnEmptyString: false,
|
||||
|
||||
saveMissing: true,
|
||||
|
|
|
@ -88,7 +88,7 @@
|
|||
"content": {
|
||||
"expandHint": "Contenuto nascosto"
|
||||
},
|
||||
"filtered": "Filtrato",
|
||||
"filtered": "",
|
||||
"fullConversation": "Leggi la conversazione",
|
||||
"translate": {
|
||||
"default": "Traduci",
|
||||
|
|
|
@ -304,7 +304,8 @@
|
|||
"toots": {
|
||||
"default": "Toot",
|
||||
"all": "Toot e risposte"
|
||||
}
|
||||
},
|
||||
"suspended": ""
|
||||
},
|
||||
"attachments": {
|
||||
"name": "Media di <0 /><1>\"</1>"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"title": "メディアソースを選択",
|
||||
"message": "",
|
||||
"message": "メディアの EXIF データはアップロードされません",
|
||||
"options": {
|
||||
"image": "写真をアップロード",
|
||||
"image_max": "写真をアップロード (最大{{max}}枚)",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"HTML": {
|
||||
"accessibilityHint": "タップして内容を展開または折りたたむ",
|
||||
"expanded": "{{hint}}{{moreLines}}",
|
||||
"moreLines": "",
|
||||
"moreLines": " ({{count}} 行以上)",
|
||||
"defaultHint": "長いトゥート"
|
||||
}
|
||||
}
|
|
@ -40,9 +40,9 @@
|
|||
"accessibilityLabel": "このトゥートをブーストしますか?",
|
||||
"function": "トゥートをブースト",
|
||||
"options": {
|
||||
"title": "",
|
||||
"public": "",
|
||||
"unlisted": ""
|
||||
"title": "ブーストの可視性を選択",
|
||||
"public": "公開ブースト",
|
||||
"unlisted": "未収載ブースト"
|
||||
}
|
||||
},
|
||||
"favourited": {
|
||||
|
@ -88,7 +88,7 @@
|
|||
"content": {
|
||||
"expandHint": "内容を非表示にする"
|
||||
},
|
||||
"filtered": "フィルター済み",
|
||||
"filtered": "フィルター: {{phrase}}.",
|
||||
"fullConversation": "スレッドを読む",
|
||||
"translate": {
|
||||
"default": "翻訳",
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
"screenshot": {
|
||||
"title": "プライバシー保護",
|
||||
"message": "ユーザー名やアバターなど、他のユーザーを特定する情報は公開しないでください。",
|
||||
"button": "確定"
|
||||
"button": "確認"
|
||||
},
|
||||
"localCorrupt": {
|
||||
"message": "ログイン期限が切れました。もう一度ログインしてください。"
|
||||
"message": "ログインの有効期限が切れました。もう一度ログインしてください。"
|
||||
},
|
||||
"pushError": {
|
||||
"message": "プッシュサービスのエラー",
|
||||
|
|
|
@ -304,7 +304,8 @@
|
|||
"toots": {
|
||||
"default": "投稿",
|
||||
"all": "投稿と返信"
|
||||
}
|
||||
},
|
||||
"suspended": "あなたのサーバーのモデレーターによって、アカウントは停止されました"
|
||||
},
|
||||
"attachments": {
|
||||
"name": "<0 /><1>\" のメディア</1>"
|
||||
|
|
|
@ -88,7 +88,7 @@
|
|||
"content": {
|
||||
"expandHint": "숨겨진 콘텐츠"
|
||||
},
|
||||
"filtered": "필터됨",
|
||||
"filtered": "",
|
||||
"fullConversation": "대화 보기",
|
||||
"translate": {
|
||||
"default": "번역",
|
||||
|
|
|
@ -304,7 +304,8 @@
|
|||
"toots": {
|
||||
"default": "툿",
|
||||
"all": "툿과 답장"
|
||||
}
|
||||
},
|
||||
"suspended": ""
|
||||
},
|
||||
"attachments": {
|
||||
"name": "<0 /><1>\"의 미디어</1>"
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
const LOCALES = {
|
||||
de: 'Deutsch',
|
||||
en: 'English',
|
||||
fr: 'Français',
|
||||
it: 'Italiano',
|
||||
ja: '日本語',
|
||||
ko: '한국어',
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"buttons": {
|
||||
"OK": "Ok",
|
||||
"apply": "Zastosuj",
|
||||
"cancel": "Anuluj"
|
||||
},
|
||||
"customEmoji": {
|
||||
"accessibilityLabel": "Własne emoji {{emoji}}"
|
||||
},
|
||||
"message": {
|
||||
"success": {
|
||||
"message": "{{function}} pomyślnie"
|
||||
},
|
||||
"warning": {
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"message": "{{function}} nie powiodło się, spróbuj ponownie"
|
||||
}
|
||||
},
|
||||
"separator": ", "
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
{
|
||||
"accessibilityHint": "",
|
||||
"account": {
|
||||
"title": "",
|
||||
"mute": {
|
||||
"action_false": "",
|
||||
"action_true": ""
|
||||
},
|
||||
"block": {
|
||||
"action_false": "",
|
||||
"action_true": ""
|
||||
},
|
||||
"reports": {
|
||||
"action": ""
|
||||
}
|
||||
},
|
||||
"copy": {
|
||||
"action": "",
|
||||
"succeed": ""
|
||||
},
|
||||
"instance": {
|
||||
"title": "",
|
||||
"block": {
|
||||
"action": "",
|
||||
"alert": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"buttons": {
|
||||
"confirm": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"share": {
|
||||
"status": {
|
||||
"action": ""
|
||||
},
|
||||
"account": {
|
||||
"action": ""
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
"title": "",
|
||||
"edit": {
|
||||
"action": ""
|
||||
},
|
||||
"delete": {
|
||||
"action": "",
|
||||
"alert": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"buttons": {
|
||||
"confirm": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"deleteEdit": {
|
||||
"action": "",
|
||||
"alert": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"buttons": {
|
||||
"confirm": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"mute": {
|
||||
"action_false": "",
|
||||
"action_true": ""
|
||||
},
|
||||
"pin": {
|
||||
"action_false": "",
|
||||
"action_true": ""
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
{}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"server": {
|
||||
"textInput": {
|
||||
"placeholder": ""
|
||||
},
|
||||
"button": "",
|
||||
"information": {
|
||||
"name": "",
|
||||
"accounts": "",
|
||||
"statuses": "",
|
||||
"domains": ""
|
||||
},
|
||||
"disclaimer": {
|
||||
"base": ""
|
||||
},
|
||||
"terms": {
|
||||
"base": ""
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"alert": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"buttons": {
|
||||
"cancel": "",
|
||||
"continue": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"title": "",
|
||||
"message": "",
|
||||
"options": {
|
||||
"image": "",
|
||||
"image_max": "",
|
||||
"video": "",
|
||||
"video_max": ""
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"HTML": {
|
||||
"accessibilityHint": "",
|
||||
"expanded": "",
|
||||
"moreLines": "",
|
||||
"defaultHint": ""
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"follow": {
|
||||
"function": ""
|
||||
},
|
||||
"block": {
|
||||
"function": ""
|
||||
},
|
||||
"button": {
|
||||
"error": "",
|
||||
"blocked_by": "",
|
||||
"blocking": "",
|
||||
"following": "",
|
||||
"requested": "",
|
||||
"default": ""
|
||||
}
|
||||
}
|
|
@ -0,0 +1,152 @@
|
|||
{
|
||||
"empty": {
|
||||
"error": {
|
||||
"message": "Błąd wczytania",
|
||||
"button": "Spróbuj ponownie"
|
||||
},
|
||||
"success": {
|
||||
"message": "Oś czasu pusta"
|
||||
}
|
||||
},
|
||||
"end": {
|
||||
"message": ""
|
||||
},
|
||||
"lookback": {
|
||||
"message": ""
|
||||
},
|
||||
"refresh": {
|
||||
"fetchPreviousPage": "",
|
||||
"refetch": ""
|
||||
},
|
||||
"shared": {
|
||||
"actioned": {
|
||||
"pinned": "",
|
||||
"favourite": "",
|
||||
"status": "",
|
||||
"follow": "",
|
||||
"follow_request": "",
|
||||
"poll": "",
|
||||
"reblog": {
|
||||
"default": "",
|
||||
"notification": ""
|
||||
},
|
||||
"update": ""
|
||||
},
|
||||
"actions": {
|
||||
"reply": {
|
||||
"accessibilityLabel": ""
|
||||
},
|
||||
"reblogged": {
|
||||
"accessibilityLabel": "",
|
||||
"function": "",
|
||||
"options": {
|
||||
"title": "",
|
||||
"public": "",
|
||||
"unlisted": ""
|
||||
}
|
||||
},
|
||||
"favourited": {
|
||||
"accessibilityLabel": "",
|
||||
"function": ""
|
||||
},
|
||||
"bookmarked": {
|
||||
"accessibilityLabel": "",
|
||||
"function": ""
|
||||
}
|
||||
},
|
||||
"actionsUsers": {
|
||||
"reblogged_by": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityHint": "",
|
||||
"text": ""
|
||||
},
|
||||
"favourited_by": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityHint": "",
|
||||
"text": ""
|
||||
},
|
||||
"history": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityHint": "",
|
||||
"text_one": "",
|
||||
"text_other": ""
|
||||
}
|
||||
},
|
||||
"attachment": {
|
||||
"sensitive": {
|
||||
"button": ""
|
||||
},
|
||||
"unsupported": {
|
||||
"text": "",
|
||||
"button": ""
|
||||
}
|
||||
},
|
||||
"avatar": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityHint": ""
|
||||
},
|
||||
"content": {
|
||||
"expandHint": ""
|
||||
},
|
||||
"filtered": "",
|
||||
"fullConversation": "",
|
||||
"translate": {
|
||||
"default": "",
|
||||
"succeed": "",
|
||||
"failed": "",
|
||||
"source_not_supported": "",
|
||||
"target_not_supported": ""
|
||||
},
|
||||
"header": {
|
||||
"shared": {
|
||||
"account": {
|
||||
"name": {
|
||||
"accessibilityHint": ""
|
||||
},
|
||||
"account": {
|
||||
"accessibilityHint": ""
|
||||
}
|
||||
},
|
||||
"application": "",
|
||||
"edited": {
|
||||
"accessibilityLabel": ""
|
||||
},
|
||||
"muted": {
|
||||
"accessibilityLabel": ""
|
||||
},
|
||||
"visibility": {
|
||||
"direct": {
|
||||
"accessibilityLabel": ""
|
||||
},
|
||||
"private": {
|
||||
"accessibilityLabel": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"conversation": {
|
||||
"withAccounts": "",
|
||||
"delete": {
|
||||
"function": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"poll": {
|
||||
"meta": {
|
||||
"button": {
|
||||
"vote": "",
|
||||
"refresh": ""
|
||||
},
|
||||
"count": {
|
||||
"voters_one": "",
|
||||
"voters_other": "",
|
||||
"votes_one": "",
|
||||
"votes_other": ""
|
||||
},
|
||||
"expiration": {
|
||||
"expired": "",
|
||||
"until": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"screenshot": {
|
||||
"title": "",
|
||||
"message": "",
|
||||
"button": ""
|
||||
},
|
||||
"localCorrupt": {
|
||||
"message": ""
|
||||
},
|
||||
"pushError": {
|
||||
"message": "",
|
||||
"description": ""
|
||||
},
|
||||
"shareError": {
|
||||
"imageNotSupported": "",
|
||||
"videoNotSupported": ""
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"heading": "",
|
||||
"content": {
|
||||
"select_account": ""
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"content": {
|
||||
"altText": {
|
||||
"heading": ""
|
||||
},
|
||||
"notificationsFilter": {
|
||||
"heading": "",
|
||||
"content": {
|
||||
"follow": "",
|
||||
"follow_request": "",
|
||||
"favourite": "",
|
||||
"reblog": "",
|
||||
"mention": "",
|
||||
"poll": "",
|
||||
"status": "",
|
||||
"update": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue