diff --git a/.gitignore b/.gitignore index ad494c38..012205e8 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,7 @@ DerivedData *.xcuserstate project.xcworkspace ios/.xcode.env.local +ios/containers # Android/IntelliJ # diff --git a/.yarn/patches/react-native-fast-image-npm-8.6.3-03ee2d23c0.patch b/.yarn/patches/react-native-fast-image-npm-8.6.3-03ee2d23c0.patch index aa50ba1b..3d890062 100644 --- a/.yarn/patches/react-native-fast-image-npm-8.6.3-03ee2d23c0.patch +++ b/.yarn/patches/react-native-fast-image-npm-8.6.3-03ee2d23c0.patch @@ -21,3 +21,343 @@ index 5b21cd59c40a5754f5d19c77e2a0eb0229925911..19d82f826e88125c5e6d87ee7c348fac annotationProcessor "com.github.bumptech.glide:compiler:${glideVersion}" + implementation 'com.github.penfeizhou.android.animation:glide-plugin:2.12.0' } +diff --git a/android/src/main/java/com/dylanvann/fastimage/FastImageEnterTransition.java b/android/src/main/java/com/dylanvann/fastimage/FastImageEnterTransition.java +new file mode 100644 +index 0000000000000000000000000000000000000000..55e3b4e0d463654f62d942ba05c2a5e51ae9d6d7 +--- /dev/null ++++ b/android/src/main/java/com/dylanvann/fastimage/FastImageEnterTransition.java +@@ -0,0 +1,6 @@ ++package com.dylanvann.fastimage; ++ ++public enum FastImageEnterTransition { ++ TRANSITION_NONE, ++ FADE_IN ++} +diff --git a/android/src/main/java/com/dylanvann/fastimage/FastImageTransitions.java b/android/src/main/java/com/dylanvann/fastimage/FastImageTransitions.java +new file mode 100644 +index 0000000000000000000000000000000000000000..d764cc4b8d110f087120a4f0dc5d986754806dec +--- /dev/null ++++ b/android/src/main/java/com/dylanvann/fastimage/FastImageTransitions.java +@@ -0,0 +1,20 @@ ++package com.dylanvann.fastimage; ++ ++import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions; ++import com.bumptech.glide.TransitionOptions; ++import com.facebook.react.bridge.JSApplicationIllegalArgumentException; ++import android.view.animation.DecelerateInterpolator; ++ ++public class FastImageTransitions { ++ static final DecelerateInterpolator mInterpolator = new DecelerateInterpolator(); ++ ++ public static TransitionOptions getEnterTransition(FastImageEnterTransition transition, int duration) { ++ switch (transition) { ++ case FADE_IN: ++ return DrawableTransitionOptions.withCrossFade(duration); ++ ++ default: ++ throw new JSApplicationIllegalArgumentException("FastImage, invalid enterTransition argument"); ++ } ++ } ++} +\ No newline at end of file +diff --git a/android/src/main/java/com/dylanvann/fastimage/FastImageViewConverter.java b/android/src/main/java/com/dylanvann/fastimage/FastImageViewConverter.java +index 86ca00d018d7ded0edff733373d80976c8dbb961..e6220f57b38a3fe3ae9d5a75228f791e0ec978bb 100644 +--- a/android/src/main/java/com/dylanvann/fastimage/FastImageViewConverter.java ++++ b/android/src/main/java/com/dylanvann/fastimage/FastImageViewConverter.java +@@ -50,6 +50,12 @@ class FastImageViewConverter { + put("center", ScaleType.CENTER_INSIDE); + }}; + ++ private static final Map FAST_IMAGE_ENTER_TRANSITION_MAP = ++ new HashMap() {{ ++ put("none", FastImageEnterTransition.TRANSITION_NONE); ++ put("fadeIn", FastImageEnterTransition.FADE_IN); ++ }}; ++ + // Resolve the source uri to a file path that android understands. + static @Nullable + FastImageSource getImageSource(Context context, @Nullable ReadableMap source) { +@@ -125,6 +131,10 @@ class FastImageViewConverter { + return getValueFromSource("cache", "immutable", FAST_IMAGE_CACHE_CONTROL_MAP, source); + } + ++ static FastImageEnterTransition getEnterTransition(String propValue) { ++ return getValue("enterTransition", "none", FAST_IMAGE_ENTER_TRANSITION_MAP, propValue); ++ } ++ + private static Priority getPriority(ReadableMap source) { + return getValueFromSource("priority", "normal", FAST_IMAGE_PRIORITY_MAP, source); + } +diff --git a/android/src/main/java/com/dylanvann/fastimage/FastImageViewManager.java b/android/src/main/java/com/dylanvann/fastimage/FastImageViewManager.java +index c7a795471c8f8b48163c778836406bc5ead75dab..53b481547b44224e7791a8d3f39815c9c9a4be59 100644 +--- a/android/src/main/java/com/dylanvann/fastimage/FastImageViewManager.java ++++ b/android/src/main/java/com/dylanvann/fastimage/FastImageViewManager.java +@@ -83,6 +83,17 @@ class FastImageViewManager extends SimpleViewManager imple + view.setScaleType(scaleType); + } + ++ @ReactProp(name = "enterTransition") ++ public void setEnterTransition(FastImageViewWithUrl view, String enterTransition) { ++ final FastImageEnterTransition transition = FastImageViewConverter.getEnterTransition(enterTransition); ++ view.setEnterTransition(transition); ++ } ++ ++ @ReactProp(name = "transitionDuration") ++ public void setTransitionDuration(FastImageViewWithUrl view, int transitionDuration) { ++ view.setTransitionDuration(transitionDuration); ++ } ++ + @Override + public void onDropViewInstance(@NonNull FastImageViewWithUrl view) { + // This will cancel existing requests. +diff --git a/android/src/main/java/com/dylanvann/fastimage/FastImageViewWithUrl.java b/android/src/main/java/com/dylanvann/fastimage/FastImageViewWithUrl.java +index 34fcf898d17d82fd52375e9028b71ad815b9b15b..fd57ac68de093d2a8ee53aeede45328c8d52aa39 100644 +--- a/android/src/main/java/com/dylanvann/fastimage/FastImageViewWithUrl.java ++++ b/android/src/main/java/com/dylanvann/fastimage/FastImageViewWithUrl.java +@@ -30,6 +30,8 @@ class FastImageViewWithUrl extends AppCompatImageView { + private boolean mNeedsReload = false; + private ReadableMap mSource = null; + private Drawable mDefaultSource = null; ++ private FastImageEnterTransition mEnterTransition = FastImageEnterTransition.TRANSITION_NONE; ++ private int mTransitionDuration = 350; + + public GlideUrl glideUrl; + +@@ -47,6 +49,14 @@ class FastImageViewWithUrl extends AppCompatImageView { + mDefaultSource = source; + } + ++ public void setEnterTransition(@Nullable FastImageEnterTransition transition) { ++ mEnterTransition = transition; ++ } ++ ++ public void setTransitionDuration(int duration) { ++ mTransitionDuration = duration == 0 ? 350 : duration; ++ } ++ + private boolean isNullOrEmpty(final String url) { + return url == null || url.trim().isEmpty(); + } +@@ -147,6 +157,10 @@ class FastImageViewWithUrl extends AppCompatImageView { + if (key != null) + builder.listener(new FastImageRequestListener(key)); + ++ if (mEnterTransition != FastImageEnterTransition.TRANSITION_NONE) { ++ builder.transition(FastImageTransitions.getEnterTransition(mEnterTransition, mTransitionDuration)); ++ } ++ + builder.into(this); + } + } +diff --git a/dist/index.cjs.js b/dist/index.cjs.js +index 2df6a29769978d8d947dfb50b422e1f56bd97fb6..f3904e20edac5f19cc26f41a4ff02eecd73ac627 100644 +--- a/dist/index.cjs.js ++++ b/dist/index.cjs.js +@@ -9,6 +9,10 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau + var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends); + var React__default = /*#__PURE__*/_interopDefaultLegacy(React); + ++const enterTransition = { ++ none: 'none', ++ fadeIn: 'fadeIn' ++} + const resizeMode = { + contain: 'contain', + cover: 'cover', +@@ -115,6 +119,7 @@ const FastImageComponent = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PU + }, props))); + FastImageComponent.displayName = 'FastImage'; + const FastImage = FastImageComponent; ++FastImage.enterTransition = enterTransition + FastImage.resizeMode = resizeMode; + FastImage.cacheControl = cacheControl; + FastImage.priority = priority; +diff --git a/dist/index.d.ts b/dist/index.d.ts +index 5abb7c98b767cd0709b53f5ab2dd50c752a9377b..2da22817e3136673d40a177ae8c9fc2209f143d8 100644 +--- a/dist/index.d.ts ++++ b/dist/index.d.ts +@@ -1,5 +1,10 @@ + import React from 'react'; + import { FlexStyle, LayoutChangeEvent, ShadowStyleIOS, StyleProp, TransformsStyle, ImageRequireSource, AccessibilityProps, ViewProps, ColorValue } from 'react-native'; ++export declare type EnterTransition = 'none' | 'fadeIn'; ++declare const enterTransition: { ++ readonly none: "none"; ++ readonly fadeIn: "fadeIn"; ++}; + export declare type ResizeMode = 'contain' | 'cover' | 'stretch' | 'center'; + declare const resizeMode: { + readonly contain: "contain"; +@@ -57,6 +62,16 @@ export interface FastImageProps extends AccessibilityProps, ViewProps { + defaultSource?: ImageRequireSource; + resizeMode?: ResizeMode; + fallback?: boolean; ++ /** ++ * Transition durations. ++ * @default none ++ */ ++ enterTransition?: EnterTransition ++ /** ++ * Enter transition duration in ms. ++ * @default 500ms ++ */ ++ transitionDuration?: number + onLoadStart?(): void; + onProgress?(event: OnProgressEvent): void; + onLoad?(event: OnLoadEvent): void; +@@ -91,6 +106,7 @@ export interface FastImageProps extends AccessibilityProps, ViewProps { + children?: React.ReactNode; + } + export interface FastImageStaticProperties { ++ enterTransition: typeof enterTransition; + resizeMode: typeof resizeMode; + priority: typeof priority; + cacheControl: typeof cacheControl; +diff --git a/dist/index.js b/dist/index.js +index 58e0308bd44836aad3e4979b5c1151083956c295..5853b3b2fd05c91be8c70819fe6fc45606f26f8d 100644 +--- a/dist/index.js ++++ b/dist/index.js +@@ -2,6 +2,10 @@ import _extends from '@babel/runtime/helpers/extends'; + import React, { forwardRef, memo } from 'react'; + import { NativeModules, StyleSheet, requireNativeComponent, Image, View, Platform } from 'react-native'; + ++const enterTransition = { ++ none: 'none', ++ fadeIn: 'fadeIn' ++} + const resizeMode = { + contain: 'contain', + cover: 'cover', +@@ -57,6 +61,8 @@ function FastImageBase({ + children, + // eslint-disable-next-line no-shadow + resizeMode = 'cover', ++ enterTransition = 'none', ++ transitionDuration = 350, + forwardedRef, + ...props + }) { +@@ -79,7 +85,9 @@ function FastImageBase({ + onLoad: onLoad, + onError: onError, + onLoadEnd: onLoadEnd, +- resizeMode: resizeMode ++ resizeMode: resizeMode, ++ enterTransition: enterTransition, ++ transitionDuration: transitionDuration + })), children); + } + +@@ -98,7 +106,9 @@ function FastImageBase({ + onFastImageLoad: onLoad, + onFastImageError: onError, + onFastImageLoadEnd: onLoadEnd, +- resizeMode: resizeMode ++ resizeMode: resizeMode, ++ enterTransition: enterTransition, ++ transitionDuration: transitionDuration + })), children); + } + +@@ -108,6 +118,7 @@ const FastImageComponent = /*#__PURE__*/forwardRef((props, ref) => /*#__PURE__*/ + }, props))); + FastImageComponent.displayName = 'FastImage'; + const FastImage = FastImageComponent; ++FastImage.enterTransition = enterTransition + FastImage.resizeMode = resizeMode; + FastImage.cacheControl = cacheControl; + FastImage.priority = priority; +diff --git a/ios/FastImage/FFFastImageView.h b/ios/FastImage/FFFastImageView.h +index e52fca79882ad2a678487a46b2fe158427e06f3a..6c9c41b0b1a3c967a3715a24bb692447b76ef365 100644 +--- a/ios/FastImage/FFFastImageView.h ++++ b/ios/FastImage/FFFastImageView.h +@@ -7,6 +7,7 @@ + #import + + #import "FFFastImageSource.h" ++#import "FFFastImageViewManager.h" + + @interface FFFastImageView : SDAnimatedImageView + +@@ -16,6 +17,8 @@ + @property (nonatomic, copy) RCTDirectEventBlock onFastImageLoad; + @property (nonatomic, copy) RCTDirectEventBlock onFastImageLoadEnd; + @property (nonatomic, assign) RCTResizeMode resizeMode; ++@property (nonatomic, assign) FFFEnterTransition enterTransition; ++@property (nonatomic, assign) NSTimeInterval transitionDuration; + @property (nonatomic, strong) FFFastImageSource *source; + @property (nonatomic, strong) UIImage *defaultSource; + @property (nonatomic, strong) UIColor *imageColor; +diff --git a/ios/FastImage/FFFastImageView.m b/ios/FastImage/FFFastImageView.m +index f7100815e652539b29b1fa70ff1477c5f5db08dc..ecb79eafe566fe52090adada3cdf16eb10a67513 100644 +--- a/ios/FastImage/FFFastImageView.m ++++ b/ios/FastImage/FFFastImageView.m +@@ -71,6 +71,18 @@ - (void) setImageColor: (UIColor*)imageColor { + } + } + ++- (void) setTransitionDuration: (NSTimeInterval)transitionDuration { ++ self.sd_imageTransition.duration = transitionDuration; ++} ++ ++- (void) setEnterTransition: (FFFEnterTransition)enterTransition { ++ switch (enterTransition) { ++ case FFFFadeIn: ++ self.sd_imageTransition = SDWebImageTransition.fadeTransition; ++ break; ++ } ++} ++ + - (UIImage*) makeImage: (UIImage*)image withTint: (UIColor*)color { + UIImage* newImage = [image imageWithRenderingMode: UIImageRenderingModeAlwaysTemplate]; + UIGraphicsBeginImageContextWithOptions(image.size, NO, newImage.scale); +diff --git a/ios/FastImage/FFFastImageViewManager.h b/ios/FastImage/FFFastImageViewManager.h +index 8ba6020e2c6e5757ed778d00e3f43a6ff4c1d50a..a269669301ea00ef3c2714123d17e822094635d6 100644 +--- a/ios/FastImage/FFFastImageViewManager.h ++++ b/ios/FastImage/FFFastImageViewManager.h +@@ -1,5 +1,10 @@ + #import + ++typedef NS_ENUM(NSInteger, FFFEnterTransition) { ++ FFFTransitionNone, ++ FFFFadeIn, ++}; ++ + @interface FFFastImageViewManager : RCTViewManager + + @end +diff --git a/ios/FastImage/FFFastImageViewManager.m b/ios/FastImage/FFFastImageViewManager.m +index 84ca94e26e546d4d139dabca6c3efd0a890eda63..2184bac31f0d547e6119356bb4fc7931be87446d 100644 +--- a/ios/FastImage/FFFastImageViewManager.m ++++ b/ios/FastImage/FFFastImageViewManager.m +@@ -13,6 +13,8 @@ - (FFFastImageView*)view { + } + + RCT_EXPORT_VIEW_PROPERTY(source, FFFastImageSource) ++RCT_EXPORT_VIEW_PROPERTY(enterTransition, FFFEnterTransition) ++RCT_EXPORT_VIEW_PROPERTY(transitionDuration, NSTimeInterval) + RCT_EXPORT_VIEW_PROPERTY(defaultSource, UIImage) + RCT_EXPORT_VIEW_PROPERTY(resizeMode, RCTResizeMode) + RCT_EXPORT_VIEW_PROPERTY(onFastImageLoadStart, RCTDirectEventBlock) +diff --git a/ios/FastImage/RCTConvert+FFFastImage.m b/ios/FastImage/RCTConvert+FFFastImage.m +index 43f8922157655a7497f56a3909ef6b2a886f07d8..0705f8e05f44f3053e7239fcc9a30d986e7aaab7 100644 +--- a/ios/FastImage/RCTConvert+FFFastImage.m ++++ b/ios/FastImage/RCTConvert+FFFastImage.m +@@ -1,5 +1,6 @@ + #import "RCTConvert+FFFastImage.h" + #import "FFFastImageSource.h" ++#import "FFFastImageViewManager.h" + + @implementation RCTConvert (FFFastImage) + +@@ -15,6 +16,11 @@ @implementation RCTConvert (FFFastImage) + @"cacheOnly": @(FFFCacheControlCacheOnly), + }), FFFCacheControlImmutable, integerValue); + ++RCT_ENUM_CONVERTER(FFFEnterTransition, (@{ ++ @"none": @(FFFTransitionNone), ++ @"fadeIn": @(FFFFadeIn), ++ }), FFFTransitionNone, integerValue); ++ + + (FFFastImageSource *)FFFastImageSource:(id)json { + if (!json) { + return nil; diff --git a/ios/Podfile.lock b/ios/Podfile.lock index c86a286f..d82e3a1d 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -47,17 +47,17 @@ PODS: - EXSplashScreen (0.17.5): - ExpoModulesCore - React-Core - - FBLazyVector (0.70.6) - - FBReactNativeSpec (0.70.6): + - FBLazyVector (0.70.7) + - FBReactNativeSpec (0.70.7): - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.70.6) - - RCTTypeSafety (= 0.70.6) - - React-Core (= 0.70.6) - - React-jsi (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) + - RCTRequired (= 0.70.7) + - RCTTypeSafety (= 0.70.7) + - React-Core (= 0.70.7) + - React-jsi (= 0.70.7) + - ReactCommon/turbomodule/core (= 0.70.7) - fmt (6.2.1) - glog (0.3.5) - - hermes-engine (0.70.6) + - hermes-engine (0.70.7) - libevent (2.1.12) - libwebp (1.2.4): - libwebp/demux (= 1.2.4) @@ -88,214 +88,214 @@ PODS: - fmt (~> 6.2.1) - glog - libevent - - RCTRequired (0.70.6) - - RCTTypeSafety (0.70.6): - - FBLazyVector (= 0.70.6) - - RCTRequired (= 0.70.6) - - React-Core (= 0.70.6) - - React (0.70.6): - - React-Core (= 0.70.6) - - React-Core/DevSupport (= 0.70.6) - - React-Core/RCTWebSocket (= 0.70.6) - - React-RCTActionSheet (= 0.70.6) - - React-RCTAnimation (= 0.70.6) - - React-RCTBlob (= 0.70.6) - - React-RCTImage (= 0.70.6) - - React-RCTLinking (= 0.70.6) - - React-RCTNetwork (= 0.70.6) - - React-RCTSettings (= 0.70.6) - - React-RCTText (= 0.70.6) - - React-RCTVibration (= 0.70.6) - - React-bridging (0.70.6): + - RCTRequired (0.70.7) + - RCTTypeSafety (0.70.7): + - FBLazyVector (= 0.70.7) + - RCTRequired (= 0.70.7) + - React-Core (= 0.70.7) + - React (0.70.7): + - React-Core (= 0.70.7) + - React-Core/DevSupport (= 0.70.7) + - React-Core/RCTWebSocket (= 0.70.7) + - React-RCTActionSheet (= 0.70.7) + - React-RCTAnimation (= 0.70.7) + - React-RCTBlob (= 0.70.7) + - React-RCTImage (= 0.70.7) + - React-RCTLinking (= 0.70.7) + - React-RCTNetwork (= 0.70.7) + - React-RCTSettings (= 0.70.7) + - React-RCTText (= 0.70.7) + - React-RCTVibration (= 0.70.7) + - React-bridging (0.70.7): - RCT-Folly (= 2021.07.22.00) - - React-jsi (= 0.70.6) - - React-callinvoker (0.70.6) - - React-Codegen (0.70.6): - - FBReactNativeSpec (= 0.70.6) + - React-jsi (= 0.70.7) + - React-callinvoker (0.70.7) + - React-Codegen (0.70.7): + - FBReactNativeSpec (= 0.70.7) - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.70.6) - - RCTTypeSafety (= 0.70.6) - - React-Core (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) - - React-Core (0.70.6): + - RCTRequired (= 0.70.7) + - RCTTypeSafety (= 0.70.7) + - React-Core (= 0.70.7) + - React-jsi (= 0.70.7) + - React-jsiexecutor (= 0.70.7) + - ReactCommon/turbomodule/core (= 0.70.7) + - React-Core (0.70.7): - glog - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.6) - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-Core/Default (= 0.70.7) + - React-cxxreact (= 0.70.7) + - React-jsi (= 0.70.7) + - React-jsiexecutor (= 0.70.7) + - React-perflogger (= 0.70.7) - Yoga - - React-Core/CoreModulesHeaders (0.70.6): + - React-Core/CoreModulesHeaders (0.70.7): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.70.7) + - React-jsi (= 0.70.7) + - React-jsiexecutor (= 0.70.7) + - React-perflogger (= 0.70.7) - Yoga - - React-Core/Default (0.70.6): + - React-Core/Default (0.70.7): - glog - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.70.7) + - React-jsi (= 0.70.7) + - React-jsiexecutor (= 0.70.7) + - React-perflogger (= 0.70.7) - Yoga - - React-Core/DevSupport (0.70.6): + - React-Core/DevSupport (0.70.7): - glog - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.6) - - React-Core/RCTWebSocket (= 0.70.6) - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-jsinspector (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-Core/Default (= 0.70.7) + - React-Core/RCTWebSocket (= 0.70.7) + - React-cxxreact (= 0.70.7) + - React-jsi (= 0.70.7) + - React-jsiexecutor (= 0.70.7) + - React-jsinspector (= 0.70.7) + - React-perflogger (= 0.70.7) - Yoga - - React-Core/RCTActionSheetHeaders (0.70.6): + - React-Core/RCTActionSheetHeaders (0.70.7): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.70.7) + - React-jsi (= 0.70.7) + - React-jsiexecutor (= 0.70.7) + - React-perflogger (= 0.70.7) - Yoga - - React-Core/RCTAnimationHeaders (0.70.6): + - React-Core/RCTAnimationHeaders (0.70.7): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.70.7) + - React-jsi (= 0.70.7) + - React-jsiexecutor (= 0.70.7) + - React-perflogger (= 0.70.7) - Yoga - - React-Core/RCTBlobHeaders (0.70.6): + - React-Core/RCTBlobHeaders (0.70.7): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.70.7) + - React-jsi (= 0.70.7) + - React-jsiexecutor (= 0.70.7) + - React-perflogger (= 0.70.7) - Yoga - - React-Core/RCTImageHeaders (0.70.6): + - React-Core/RCTImageHeaders (0.70.7): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.70.7) + - React-jsi (= 0.70.7) + - React-jsiexecutor (= 0.70.7) + - React-perflogger (= 0.70.7) - Yoga - - React-Core/RCTLinkingHeaders (0.70.6): + - React-Core/RCTLinkingHeaders (0.70.7): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.70.7) + - React-jsi (= 0.70.7) + - React-jsiexecutor (= 0.70.7) + - React-perflogger (= 0.70.7) - Yoga - - React-Core/RCTNetworkHeaders (0.70.6): + - React-Core/RCTNetworkHeaders (0.70.7): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.70.7) + - React-jsi (= 0.70.7) + - React-jsiexecutor (= 0.70.7) + - React-perflogger (= 0.70.7) - Yoga - - React-Core/RCTSettingsHeaders (0.70.6): + - React-Core/RCTSettingsHeaders (0.70.7): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.70.7) + - React-jsi (= 0.70.7) + - React-jsiexecutor (= 0.70.7) + - React-perflogger (= 0.70.7) - Yoga - - React-Core/RCTTextHeaders (0.70.6): + - React-Core/RCTTextHeaders (0.70.7): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.70.7) + - React-jsi (= 0.70.7) + - React-jsiexecutor (= 0.70.7) + - React-perflogger (= 0.70.7) - Yoga - - React-Core/RCTVibrationHeaders (0.70.6): + - React-Core/RCTVibrationHeaders (0.70.7): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.70.7) + - React-jsi (= 0.70.7) + - React-jsiexecutor (= 0.70.7) + - React-perflogger (= 0.70.7) - Yoga - - React-Core/RCTWebSocket (0.70.6): + - React-Core/RCTWebSocket (0.70.7): - glog - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.6) - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-Core/Default (= 0.70.7) + - React-cxxreact (= 0.70.7) + - React-jsi (= 0.70.7) + - React-jsiexecutor (= 0.70.7) + - React-perflogger (= 0.70.7) - Yoga - - React-CoreModules (0.70.6): + - React-CoreModules (0.70.7): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.6) - - React-Codegen (= 0.70.6) - - React-Core/CoreModulesHeaders (= 0.70.6) - - React-jsi (= 0.70.6) - - React-RCTImage (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) - - React-cxxreact (0.70.6): + - RCTTypeSafety (= 0.70.7) + - React-Codegen (= 0.70.7) + - React-Core/CoreModulesHeaders (= 0.70.7) + - React-jsi (= 0.70.7) + - React-RCTImage (= 0.70.7) + - ReactCommon/turbomodule/core (= 0.70.7) + - React-cxxreact (0.70.7): - boost (= 1.76.0) - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsinspector (= 0.70.6) - - React-logger (= 0.70.6) - - React-perflogger (= 0.70.6) - - React-runtimeexecutor (= 0.70.6) - - React-hermes (0.70.6): + - React-callinvoker (= 0.70.7) + - React-jsi (= 0.70.7) + - React-jsinspector (= 0.70.7) + - React-logger (= 0.70.7) + - React-perflogger (= 0.70.7) + - React-runtimeexecutor (= 0.70.7) + - React-hermes (0.70.7): - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - RCT-Folly/Futures (= 2021.07.22.00) - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-jsinspector (= 0.70.6) - - React-perflogger (= 0.70.6) - - React-jsi (0.70.6): + - React-cxxreact (= 0.70.7) + - React-jsi (= 0.70.7) + - React-jsiexecutor (= 0.70.7) + - React-jsinspector (= 0.70.7) + - React-perflogger (= 0.70.7) + - React-jsi (0.70.7): - boost (= 1.76.0) - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - - React-jsi/Default (= 0.70.6) - - React-jsi/Default (0.70.6): + - React-jsi/Default (= 0.70.7) + - React-jsi/Default (0.70.7): - boost (= 1.76.0) - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - - React-jsiexecutor (0.70.6): + - React-jsiexecutor (0.70.7): - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-perflogger (= 0.70.6) - - React-jsinspector (0.70.6) - - React-logger (0.70.6): + - React-cxxreact (= 0.70.7) + - React-jsi (= 0.70.7) + - React-perflogger (= 0.70.7) + - React-jsinspector (0.70.7) + - React-logger (0.70.7): - glog - react-native-blur (4.3.0): - React-Core @@ -318,7 +318,7 @@ PODS: - React-Core - react-native-pager-view (6.1.2): - React-Core - - react-native-paste-input (0.6.0): + - react-native-paste-input (0.6.1): - React-Core - Swime (= 3.0.6) - react-native-quick-base64 (2.0.5): @@ -331,72 +331,72 @@ PODS: - ReactCommon/turbomodule/core - react-native-segmented-control (2.2.2): - React-Core - - React-perflogger (0.70.6) - - React-RCTActionSheet (0.70.6): - - React-Core/RCTActionSheetHeaders (= 0.70.6) - - React-RCTAnimation (0.70.6): + - React-perflogger (0.70.7) + - React-RCTActionSheet (0.70.7): + - React-Core/RCTActionSheetHeaders (= 0.70.7) + - React-RCTAnimation (0.70.7): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.6) - - React-Codegen (= 0.70.6) - - React-Core/RCTAnimationHeaders (= 0.70.6) - - React-jsi (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) - - React-RCTBlob (0.70.6): + - RCTTypeSafety (= 0.70.7) + - React-Codegen (= 0.70.7) + - React-Core/RCTAnimationHeaders (= 0.70.7) + - React-jsi (= 0.70.7) + - ReactCommon/turbomodule/core (= 0.70.7) + - React-RCTBlob (0.70.7): - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.70.6) - - React-Core/RCTBlobHeaders (= 0.70.6) - - React-Core/RCTWebSocket (= 0.70.6) - - React-jsi (= 0.70.6) - - React-RCTNetwork (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) - - React-RCTImage (0.70.6): + - React-Codegen (= 0.70.7) + - React-Core/RCTBlobHeaders (= 0.70.7) + - React-Core/RCTWebSocket (= 0.70.7) + - React-jsi (= 0.70.7) + - React-RCTNetwork (= 0.70.7) + - ReactCommon/turbomodule/core (= 0.70.7) + - React-RCTImage (0.70.7): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.6) - - React-Codegen (= 0.70.6) - - React-Core/RCTImageHeaders (= 0.70.6) - - React-jsi (= 0.70.6) - - React-RCTNetwork (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) - - React-RCTLinking (0.70.6): - - React-Codegen (= 0.70.6) - - React-Core/RCTLinkingHeaders (= 0.70.6) - - React-jsi (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) - - React-RCTNetwork (0.70.6): + - RCTTypeSafety (= 0.70.7) + - React-Codegen (= 0.70.7) + - React-Core/RCTImageHeaders (= 0.70.7) + - React-jsi (= 0.70.7) + - React-RCTNetwork (= 0.70.7) + - ReactCommon/turbomodule/core (= 0.70.7) + - React-RCTLinking (0.70.7): + - React-Codegen (= 0.70.7) + - React-Core/RCTLinkingHeaders (= 0.70.7) + - React-jsi (= 0.70.7) + - ReactCommon/turbomodule/core (= 0.70.7) + - React-RCTNetwork (0.70.7): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.6) - - React-Codegen (= 0.70.6) - - React-Core/RCTNetworkHeaders (= 0.70.6) - - React-jsi (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) - - React-RCTSettings (0.70.6): + - RCTTypeSafety (= 0.70.7) + - React-Codegen (= 0.70.7) + - React-Core/RCTNetworkHeaders (= 0.70.7) + - React-jsi (= 0.70.7) + - ReactCommon/turbomodule/core (= 0.70.7) + - React-RCTSettings (0.70.7): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.6) - - React-Codegen (= 0.70.6) - - React-Core/RCTSettingsHeaders (= 0.70.6) - - React-jsi (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) - - React-RCTText (0.70.6): - - React-Core/RCTTextHeaders (= 0.70.6) - - React-RCTVibration (0.70.6): + - RCTTypeSafety (= 0.70.7) + - React-Codegen (= 0.70.7) + - React-Core/RCTSettingsHeaders (= 0.70.7) + - React-jsi (= 0.70.7) + - ReactCommon/turbomodule/core (= 0.70.7) + - React-RCTText (0.70.7): + - React-Core/RCTTextHeaders (= 0.70.7) + - React-RCTVibration (0.70.7): - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.70.6) - - React-Core/RCTVibrationHeaders (= 0.70.6) - - React-jsi (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) - - React-runtimeexecutor (0.70.6): - - React-jsi (= 0.70.6) - - ReactCommon/turbomodule/core (0.70.6): + - React-Codegen (= 0.70.7) + - React-Core/RCTVibrationHeaders (= 0.70.7) + - React-jsi (= 0.70.7) + - ReactCommon/turbomodule/core (= 0.70.7) + - React-runtimeexecutor (0.70.7): + - React-jsi (= 0.70.7) + - ReactCommon/turbomodule/core (0.70.7): - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - - React-bridging (= 0.70.6) - - React-callinvoker (= 0.70.6) - - React-Core (= 0.70.6) - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-logger (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-bridging (= 0.70.7) + - React-callinvoker (= 0.70.7) + - React-Core (= 0.70.7) + - React-cxxreact (= 0.70.7) + - React-jsi (= 0.70.7) + - React-logger (= 0.70.7) + - React-perflogger (= 0.70.7) - RNCAsyncStorage (1.17.11): - React-Core - RNCClipboard (1.11.1): @@ -437,12 +437,12 @@ PODS: - RNScreens (3.19.0): - React-Core - React-RCTImage - - RNSentry (4.13.0): + - RNSentry (4.14.0): - React-Core - Sentry/HybridSDK (= 7.31.5) - RNShareMenu (6.0.0): - React - - RNSVG (13.7.0): + - RNSVG (13.8.0): - React-Core - SDWebImage (5.15.0): - SDWebImage/Core (= 5.15.0) @@ -730,30 +730,30 @@ SPEC CHECKSUMS: EXScreenOrientation: 07e5aeff07bce09a2b214981e612d87fd7719997 EXSecureStore: daec0117c922a67c658cb229152a9e252e5c1750 EXSplashScreen: 3e989924f61a8dd07ee4ea584c6ba14be9b51949 - FBLazyVector: 48289402952f4f7a4e235de70a9a590aa0b79ef4 - FBReactNativeSpec: dd1186fd05255e3457baa2f4ca65e94c2cd1e3ac + FBLazyVector: a6454570f573a0f6f1d397e5a95c13e8e45d1700 + FBReactNativeSpec: 09e8dfba44487e5dc4882a9f5318cde67549549c fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b - hermes-engine: 2af7b7a59128f250adfd86f15aa1d5a2ecd39995 + hermes-engine: 566e656aa95456a3f3f739fd76ea9a9656f2633f libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 libwebp: f62cb61d0a484ba548448a4bd52aabf150ff6eef MMKV: 7f34558bbb5a33b0eaefae2de4b6a20a2ffdad6f MMKVCore: ddf41b9d9262f058419f9ba7598719af56c02cd3 RCT-Folly: 0080d0a6ebf2577475bda044aa59e2ca1f909cda - RCTRequired: e1866f61af7049eb3d8e08e8b133abd38bc1ca7a - RCTTypeSafety: 27c2ac1b00609a432ced1ae701247593f07f901e - React: bb3e06418d2cc48a84f9666a576c7b38e89cd7db - React-bridging: 572502ec59c9de30309afdc4932e278214288913 - React-callinvoker: 6b708b79c69f3359d42f1abb4663f620dbd4dadf - React-Codegen: 74e1cd7cee692a8b983c18df3274b5e749de07c8 - React-Core: b587d0a624f9611b0e032505f3d6f25e8daa2bee - React-CoreModules: c6ff48b985e7aa622e82ca51c2c353c7803eb04e - React-cxxreact: ade3d9e63c599afdead3c35f8a8bd12b3da6730b - React-hermes: ed09ae33512bbb8d31b2411778f3af1a2eb681a1 - React-jsi: 5a3952e0c6d57460ad9ee2c905025b4c28f71087 - React-jsiexecutor: b4a65947391c658450151275aa406f2b8263178f - React-jsinspector: 60769e5a0a6d4b32294a2456077f59d0266f9a8b - React-logger: 1623c216abaa88974afce404dc8f479406bbc3a0 + RCTRequired: 837880d26ec119e105317dc28a456f3016bf16d1 + RCTTypeSafety: 5c854c04c3383cab04f404e25d408ed52124b300 + React: ec6efc54c0fbb7c2e7147624c78065be80753082 + React-bridging: 7dd96a58f896a1a7422a491d17ec644e87277953 + React-callinvoker: f348d204f7bbe6020d4fd0dd57303f5b48a28003 + React-Codegen: 73350192a09163a640c23baf795464474be0d793 + React-Core: c57b11fd672421049038ef36881372da2605a0cd + React-CoreModules: 2d91acffc3924adac6b508e3fc44121aa719ec40 + React-cxxreact: ee2ab13a1db086dc152421aa42dc94cc68f412a1 + React-hermes: be9d64f5019238ce22ae4e7d242c4f2e96d60595 + React-jsi: 04031a830f9714e95d517153817ba7bfc15bfdf8 + React-jsiexecutor: e95cdd036e7947ddf87f3049319ac3064deb76b5 + React-jsinspector: 1c34fea1868136ecde647bc11fae9266d4143693 + React-logger: e9f407f9fdf3f3ce7749ae6f88affe63e8446019 react-native-blur: 50c9feabacbc5f49b61337ebc32192c6be7ec3c3 react-native-blurhash: add4df9a937b4e021a24bc67a0714f13e0bd40b7 react-native-cameraroll: 5b25d0be40185d02e522bf2abf8a1ba4e8faa107 @@ -764,36 +764,36 @@ SPEC CHECKSUMS: react-native-mmkv: 69b9c003f10afdd01addf7c6ee784ce42ee2eff3 react-native-netinfo: 2517ad504b3d303e90d7a431b0fcaef76d207983 react-native-pager-view: 54bed894cecebe28cede54c01038d9d1e122de43 - react-native-paste-input: 5182843692fd2ec72be50f241a38a49796e225d7 + react-native-paste-input: fb7156dc75960c9895ddd9b9d68eeb874c9f323a react-native-quick-base64: e657e9197e61b60a9dec49807843052b830da254 react-native-safe-area-context: 39c2d8be3328df5d437ac1700f4f3a4f75716acc react-native-segmented-control: 65df6cd0619b780b3843d574a72d4c7cec396097 - React-perflogger: 8c79399b0500a30ee8152d0f9f11beae7fc36595 - React-RCTActionSheet: 7316773acabb374642b926c19aef1c115df5c466 - React-RCTAnimation: 5341e288375451297057391227f691d9b2326c3d - React-RCTBlob: b0615fc2daf2b5684ade8fadcab659f16f6f0efa - React-RCTImage: 6487b9600f268ecedcaa86114d97954d31ad4750 - React-RCTLinking: c8018ae9ebfefcec3839d690d4725f8d15e4e4b3 - React-RCTNetwork: 8aa63578741e0fe1205c28d7d4b40dbfdabce8a8 - React-RCTSettings: d00c15ad369cd62242a4dfcc6f277912b4a84ed3 - React-RCTText: f532e5ca52681ecaecea452b3ad7a5b630f50d75 - React-RCTVibration: c75ceef7aa60a33b2d5731ebe5800ddde40cefc4 - React-runtimeexecutor: 15437b576139df27635400de0599d9844f1ab817 - ReactCommon: 349be31adeecffc7986a0de875d7fb0dcf4e251c + React-perflogger: 52a94f38c19a518d05726624b49bfc192639374d + React-RCTActionSheet: 7b89fe64a852bc3ae39b91dbd142ef09931ef3f7 + React-RCTAnimation: ad84bfbf8c5f6f77e65092d0c2b0506b80b5cf99 + React-RCTBlob: e4ee3ab649459329f5aa59d903762bfbd6164220 + React-RCTImage: aeb508f6ac80a94904a646dde61b0f67ea757ea7 + React-RCTLinking: 1171b3fdc265c479b7039069ce7e8fef68ca70aa + React-RCTNetwork: 5d87cc4afd1fcef86fb2f804f26366f0314769fe + React-RCTSettings: 644545854880b7d03c49f620664a307fd4613a1d + React-RCTText: f8e4a283be2290a76b89f4a83ba2277faf90930d + React-RCTVibration: eb7837d55b87c7a4ead3ab7632ad70dca87c65dc + React-runtimeexecutor: 7cec9ed92ebde8309902530bb566819645c84ee5 + ReactCommon: 0253d197eaa7f6689dcd3e7d5360449ab93e10df RNCAsyncStorage: 8616bd5a58af409453ea4e1b246521bb76578d60 RNCClipboard: 2834e1c4af68697089cdd455ee4a4cdd198fa7dd RNFastImage: bd611b5635f1e0f43c8ccf597b1ef6ee0d0f966d RNGestureHandler: 071d7a9ad81e8b83fe7663b303d132406a7d8f39 RNReanimated: 6668b0587bebd4b15dd849b99e5a9c70fc12ed95 RNScreens: ea4cd3a853063cda19a4e3c28d2e52180c80f4eb - RNSentry: acebe4104a6f5915ae871eb59dc73f13dcc92ef7 + RNSentry: 7e90aec2633d2fdad8aeb839c9915e4376fd27d1 RNShareMenu: cb9dac548c8bf147d06f0bf07296ad51ea9f5fc3 - RNSVG: d787d64ca06b9158e763ad2638a8c4edce00782a + RNSVG: c1e76b81c76cdcd34b4e1188852892dc280eb902 SDWebImage: 9bec4c5cdd9579e1f57104735ee0c37df274d593 SDWebImageWebPCoder: 18503de6621dd2c420d680e33d46bf8e1d5169b0 Sentry: 4c9babff9034785067c896fd580b1f7de44da020 Swime: d7b2c277503b6cea317774aedc2dce05613f8b0b - Yoga: 99caf8d5ab45e9d637ee6e0174ec16fbbb01bcfc + Yoga: 92d086bb705a41cc588599b51db726ba7b1d341c PODFILE CHECKSUM: 08742f25aa1cdb93d6d5d5efeafd8803ba02b689 diff --git a/package.json b/package.json index 291e8772..d602f225 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tooot", - "version": "4.8.6", + "version": "4.8.7", "description": "tooot for Mastodon", "author": "xmflsct ", "license": "GPL-3.0-or-later", @@ -24,7 +24,7 @@ "@formatjs/intl-numberformat": "^8.3.3", "@formatjs/intl-pluralrules": "^5.1.8", "@formatjs/intl-relativetimeformat": "^11.1.8", - "@mattermost/react-native-paste-input": "^0.6.0", + "@mattermost/react-native-paste-input": "^0.6.1", "@neverdull-agency/expo-unlimited-secure-store": "^1.0.10", "@react-native-async-storage/async-storage": "~1.17.11", "@react-native-camera-roll/camera-roll": "^5.2.3", @@ -32,15 +32,15 @@ "@react-native-community/blur": "^4.3.0", "@react-native-community/netinfo": "9.3.7", "@react-native-community/segmented-control": "^2.2.2", - "@react-native-firebase/app": "^16.5.2", + "@react-native-firebase/app": "^16.7.0", "@react-native-menu/menu": "^0.7.3", - "@react-navigation/bottom-tabs": "^6.5.3", - "@react-navigation/native": "^6.1.2", - "@react-navigation/native-stack": "^6.9.8", - "@react-navigation/stack": "^6.3.11", - "@sentry/react-native": "4.13.0", + "@react-navigation/bottom-tabs": "^6.5.4", + "@react-navigation/native": "^6.1.3", + "@react-navigation/native-stack": "^6.9.9", + "@react-navigation/stack": "^6.3.12", + "@sentry/react-native": "4.14.0", "@sharcoux/slider": "^6.1.1", - "@tanstack/react-query": "^4.23.0", + "@tanstack/react-query": "^4.24.4", "axios": "^1.2.4", "diff": "^5.1.0", "expo": "^47.0.13", @@ -68,8 +68,8 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-i18next": "^12.1.4", - "react-intl": "^6.2.5", - "react-native": "^0.70.6", + "react-intl": "^6.2.7", + "react-native": "^0.70.7", "react-native-blurhash": "^1.1.10", "react-native-fast-image": "^8.6.3", "react-native-flash-message": "^0.4.0", @@ -85,7 +85,7 @@ "react-native-safe-area-context": "^4.5.0", "react-native-screens": "^3.19.0", "react-native-share-menu": "^6.0.0", - "react-native-svg": "^13.7.0", + "react-native-svg": "^13.8.0", "react-native-swipe-list-view": "^3.2.9", "react-native-tab-view": "^3.3.4", "react-redux": "^8.0.5", @@ -103,7 +103,7 @@ "@types/lodash": "^4.14.191", "@types/react": "^18.0.27", "@types/react-dom": "^18.0.10", - "@types/react-native": "^0.70.9", + "@types/react-native": "^0.70.10", "@types/react-native-share-menu": "^5.0.2", "@types/url-parse": "^1.4.8", "babel-plugin-module-resolver": "^5.0.0", @@ -112,7 +112,7 @@ "deprecated-react-native-prop-types": "^4.0.0", "dotenv": "^16.0.3", "react-native-clean-project": "^4.0.1", - "typescript": "^4.9.4" + "typescript": "^4.9.5" }, "packageManager": "yarn@3.3.1", "resolutions": { diff --git a/src/components/Emojis/List.tsx b/src/components/Emojis/List.tsx index 6d72be23..56418778 100644 --- a/src/components/Emojis/List.tsx +++ b/src/components/Emojis/List.tsx @@ -2,7 +2,7 @@ import { emojis } from '@components/Emojis' import Icon from '@components/Icon' import CustomText from '@components/Text' import { useAccessibility } from '@utils/accessibility/AccessibilityManager' -import { connectImage } from '@utils/api/helpers/connect' +import { connectMedia } from '@utils/api/helpers/connect' import { StorageAccount } from '@utils/storage/account' import { getAccountStorage, setAccountStorage } from '@utils/storage/actions' import { StyleConstants } from '@utils/styles/constants' @@ -130,11 +130,13 @@ const EmojisList = () => { style={{ padding: StyleConstants.Spacing.S }} > diff --git a/src/components/GracefullyImage.tsx b/src/components/GracefullyImage.tsx index 30aec804..66c3445a 100644 --- a/src/components/GracefullyImage.tsx +++ b/src/components/GracefullyImage.tsx @@ -1,5 +1,5 @@ import { useAccessibility } from '@utils/accessibility/AccessibilityManager' -import { connectImage } from '@utils/api/helpers/connect' +import { connectMedia } from '@utils/api/helpers/connect' import { useTheme } from '@utils/styles/ThemeManager' import React, { useEffect, useState } from 'react' import { @@ -88,17 +88,21 @@ const GracefullyImage = ({ {...(onPress ? { accessibilityRole: 'imagebutton' } : { accessibilityRole: 'image' })} accessibilityLabel={accessibilityLabel} accessibilityHint={accessibilityHint} - style={[style, dimension, { backgroundColor: colors.shimmerDefault }]} + style={[style, dimension]} {...(onPress ? (hidden ? { disabled: true } : { onPress }) : { disabled: true })} > {uri.preview && !imageLoaded ? ( ) : null} { setImageLoaded(true) diff --git a/src/components/Instance/index.tsx b/src/components/Instance/index.tsx index 5aad3b7b..efe90d19 100644 --- a/src/components/Instance/index.tsx +++ b/src/components/Instance/index.tsx @@ -186,7 +186,7 @@ const ComponentInstance: React.FC = ({ if (!account) { setGlobalStorage('accounts', (accounts || []).concat([accountKey])) } - setAccount(accountKey) + await setAccount(accountKey) goBack && navigation.goBack() } diff --git a/src/components/Parse/Emojis.tsx b/src/components/Parse/Emojis.tsx index 54077298..ec5362ff 100644 --- a/src/components/Parse/Emojis.tsx +++ b/src/components/Parse/Emojis.tsx @@ -1,6 +1,6 @@ import CustomText from '@components/Text' import { useAccessibility } from '@utils/accessibility/AccessibilityManager' -import { connectImage } from '@utils/api/helpers/connect' +import { connectMedia } from '@utils/api/helpers/connect' import { useGlobalStorage } from '@utils/storage/actions' import { StyleConstants } from '@utils/styles/constants' import { adaptiveScale } from '@utils/styles/scaling' @@ -78,7 +78,7 @@ const ParseEmojis: React.FC = ({ {i === 0 ? ' ' : undefined} = ({ { - if (numberOfLines === 1 || nativeEvent.lines.length >= numberOfLines + 5) { + if (numberOfLines === 1 || nativeEvent.lines.length >= numberOfLines + 8) { setTotalLines(nativeEvent.lines.length) } }} diff --git a/src/components/Timeline/Refresh.tsx b/src/components/Timeline/Refresh.tsx index 1a183df4..d401d8d4 100644 --- a/src/components/Timeline/Refresh.tsx +++ b/src/components/Timeline/Refresh.tsx @@ -61,7 +61,7 @@ const TimelineRefresh: React.FC = ({ const prevStatusId = useRef() const queryClient = useQueryClient() - const { refetch } = useTimelineQuery({ ...queryKey[1] }) + const { refetch, isFetched } = useTimelineQuery({ ...queryKey[1] }) const { t } = useTranslation('componentTimeline') const { colors } = useTheme() @@ -118,10 +118,11 @@ const TimelineRefresh: React.FC = ({ } }, data => { - if (data) { + if (data && isFetched) { runOnJS(haptics)('Light') } - } + }, + [isFetched] ) const fetchAndScrolled = useSharedValue(false) @@ -246,6 +247,8 @@ const TimelineRefresh: React.FC = ({ [] ) + if (!isFetched) return null + return ( = ({ action, isNotification, ...rest }) /> ) - const onPress = () => - navigation.push('Tab-Shared-Account', { account }) + const onPress = () => navigation.push('Tab-Shared-Account', { account }) const children = () => { switch (action) { @@ -109,6 +109,7 @@ const TimelineActioned: React.FC = ({ action, isNotification, ...rest }) ) case 'reblog': + const myself = rest.rootStatus?.account.id === getAccountStorage.string('auth.account.id') return ( <> = ({ action, isNotification, ...rest }) {content( isNotification ? t('shared.actioned.reblog.notification', { name }) + : myself + ? t('shared.actioned.reblog.myself') : t('shared.actioned.reblog.default', { name }) )} diff --git a/src/components/Timeline/Shared/Attachment/Audio.tsx b/src/components/Timeline/Shared/Attachment/Audio.tsx index 94cbdde0..18970ede 100644 --- a/src/components/Timeline/Shared/Attachment/Audio.tsx +++ b/src/components/Timeline/Shared/Attachment/Audio.tsx @@ -1,6 +1,7 @@ import Button from '@components/Button' import GracefullyImage from '@components/GracefullyImage' import { Slider } from '@sharcoux/slider' +import { connectMedia } from '@utils/api/helpers/connect' import { StyleConstants } from '@utils/styles/constants' import { useTheme } from '@utils/styles/ThemeManager' import { Audio } from 'expo-av' @@ -26,7 +27,7 @@ const AttachmentAudio: React.FC = ({ total, index, sensitiveShown, audio const playAudio = useCallback(async () => { if (!audioPlayer) { const { sound } = await Audio.Sound.createAsync( - { uri: audio.url }, + connectMedia({ uri: audio.url }) as { uri: string }, {}, // @ts-ignore props => setAudioPosition(props.positionMillis) diff --git a/src/components/Timeline/Shared/Attachment/Video.tsx b/src/components/Timeline/Shared/Attachment/Video.tsx index 69189fd5..e186d5da 100644 --- a/src/components/Timeline/Shared/Attachment/Video.tsx +++ b/src/components/Timeline/Shared/Attachment/Video.tsx @@ -1,5 +1,6 @@ import Button from '@components/Button' import { useAccessibility } from '@utils/accessibility/AccessibilityManager' +import { connectMedia } from '@utils/api/helpers/connect' import { useAccountStorage, useGlobalStorage } from '@utils/storage/actions' import { StyleConstants } from '@utils/styles/constants' import { ResizeMode, Video, VideoFullscreenUpdate } from 'expo-av' @@ -41,7 +42,7 @@ const AttachmentVideo: React.FC = ({ const playOnPress = async () => { setVideoLoading(true) if (!videoLoaded) { - await videoPlayer.current?.loadAsync({ uri: video.url }) + await videoPlayer.current?.loadAsync(connectMedia({ uri: video.url }) as { uri: string }) } setVideoLoading(false) @@ -71,10 +72,10 @@ const AttachmentVideo: React.FC = ({ shouldPlay: reduceMotionEnabled || !shouldAutoplayGifv ? false : true, isMuted: true, isLooping: true, - source: { uri: video.url } + source: connectMedia({ uri: video.url }) as { uri: string } } : { - posterSource: { uri: video.preview_url }, + posterSource: connectMedia({ uri: video.preview_url }), posterStyle: { resizeMode: ResizeMode.COVER } })} useNativeControls={false} diff --git a/src/components/Timeline/Shared/Poll.tsx b/src/components/Timeline/Shared/Poll.tsx index 775cff83..2229e505 100644 --- a/src/components/Timeline/Shared/Poll.tsx +++ b/src/components/Timeline/Shared/Poll.tsx @@ -50,21 +50,22 @@ const TimelinePoll: React.FC = () => { }, onError: (err: any, params) => { const theParams = params as MutationVarsTimelineUpdateStatusProperty - displayMessage({ - theme, - type: 'error', - message: t('common:message.error.message', { - // @ts-ignore - function: t(`componentTimeline:shared.poll.meta.button.${theParams.payload.type}` as any) - }), - ...(err.status && - typeof err.status === 'number' && - err.data && - err.data.error && - typeof err.data.error === 'string' && { - description: err.data.error - }) - }) + if (theParams.payload.type === 'poll') { + displayMessage({ + theme, + type: 'error', + message: t('common:message.error.message', { + function: t(`componentTimeline:shared.poll.meta.button.${theParams.payload.action}`) + }), + ...(err.status && + typeof err.status === 'number' && + err.data && + err.data.error && + typeof err.data.error === 'string' && { + description: err.data.error + }) + }) + } queryClient.invalidateQueries(queryKey) } }) diff --git a/src/components/Timeline/index.tsx b/src/components/Timeline/index.tsx index c307a131..b896e57f 100644 --- a/src/components/Timeline/index.tsx +++ b/src/components/Timeline/index.tsx @@ -1,7 +1,7 @@ import ComponentSeparator from '@components/Separator' import CustomText from '@components/Text' import TimelineDefault from '@components/Timeline/Default' -import { useScrollToTop } from '@react-navigation/native' +import { useNavigation, useScrollToTop } from '@react-navigation/native' import { UseInfiniteQueryOptions } from '@tanstack/react-query' import { QueryKeyTimeline, useTimelineQuery } from '@utils/queryHooks/timeline' import { flattenPages } from '@utils/queryHooks/utils' @@ -12,7 +12,8 @@ import { } from '@utils/storage/actions' import { StyleConstants } from '@utils/styles/constants' import { useTheme } from '@utils/styles/ThemeManager' -import React, { RefObject, useRef, useState } from 'react' +import { throttle } from 'lodash' +import React, { RefObject, useCallback, useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { FlatList, FlatListProps, Platform, RefreshControl } from 'react-native' import Animated, { @@ -55,6 +56,7 @@ const Timeline: React.FC = ({ readMarker = undefined, customProps }) => { + const navigation = useNavigation() const { colors, theme } = useTheme() const { t } = useTranslation('componentTimeline') @@ -134,6 +136,21 @@ const Timeline: React.FC = ({ [isFetching] ) + const latestMarker = useRef() + const updateMarkers = useCallback( + throttle( + () => readMarker && setAccountStorage([{ key: readMarker, value: latestMarker.current }]), + 1000 * 15 + ), + [] + ) + readMarker && + useEffect(() => { + const unsubscribe = navigation.addListener('blur', () => + setAccountStorage([{ key: readMarker, value: latestMarker.current }]) + ) + return unsubscribe + }, []) const viewabilityConfigCallbackPairs = useRef< Pick, 'viewabilityConfigCallbackPairs'>['viewabilityConfigCallbackPairs'] >( @@ -155,9 +172,11 @@ const Timeline: React.FC = ({ firstItemId && firstItemId > (marker || '0') ) { - setAccountStorage([{ key: readMarker, value: firstItemId }]) + latestMarker.current = firstItemId + updateMarkers() } else { - // setAccountStorage([{ key: readMarker, value: '109519141378761752' }]) + // latestMarker.current = '105250709762254246' + // updateMarkers() } } } @@ -218,21 +237,18 @@ const Timeline: React.FC = ({ } ListEmptyComponent={} - ItemSeparatorComponent={({ leadingItem }) => - queryKey[1].page === 'Toot' && queryKey[1].toot === leadingItem.id ? ( - - ) : ( - - ) - } + ItemSeparatorComponent={() => ( + + )} viewabilityConfigCallbackPairs={viewabilityConfigCallbackPairs.current} - {...(!isLoading && { - maintainVisibleContentPosition: { - minIndexForVisible: 0 - } - })} + {...(!isLoading && + !isFetching && { + maintainVisibleContentPosition: { + minIndexForVisible: 0 + } + })} {...androidRefreshControl} {...customProps} /> diff --git a/src/i18n/ca/components/timeline.json b/src/i18n/ca/components/timeline.json index 6b46c4d8..e545e6ef 100644 --- a/src/i18n/ca/components/timeline.json +++ b/src/i18n/ca/components/timeline.json @@ -33,6 +33,7 @@ "poll": "S'ha acabat una enquesta en què havies participat", "reblog": { "default": "{{name}} ha impulsat", + "myself": "", "notification": "{{name}} ha impulsat la teva publicació" }, "update": "L'impuls ha sigut editat", diff --git a/src/i18n/cs/components/timeline.json b/src/i18n/cs/components/timeline.json index 49c709dc..4c3d04a8 100644 --- a/src/i18n/cs/components/timeline.json +++ b/src/i18n/cs/components/timeline.json @@ -33,6 +33,7 @@ "poll": "", "reblog": { "default": "", + "myself": "", "notification": "" }, "update": "", diff --git a/src/i18n/de/components/contextMenu.json b/src/i18n/de/components/contextMenu.json index cf71ee5e..69bb4d57 100644 --- a/src/i18n/de/components/contextMenu.json +++ b/src/i18n/de/components/contextMenu.json @@ -6,22 +6,22 @@ "action_false": "Folgen", "action_true": "Nutzer entfolgen" }, - "inLists": "", + "inLists": "Listen mit diesem Nutzer…", "showBoosts": { - "action_false": "", - "action_true": "" + "action_false": "Zeige Boosts des Kontos", + "action_true": "Boosts des Users ausblenden" }, "mute": { "action_false": "Profil stummschalten", "action_true": "Stummschaltung des Nutzers aufheben" }, "followAs": { - "trigger": "", + "trigger": "Folgen als…", "succeed_default": "Folgt nun @{{target}} als @{{source}}", "succeed_locked": "Follower-Anfrage an @{{target}} mit {{source}} gesendet, Bestätigung ausstehend", "failed": "Folgen als…" }, - "blockReport": "", + "blockReport": "Blockieren und melden", "block": { "action_false": "Nutzer blockieren", "action_true": "User entblocken", @@ -56,11 +56,11 @@ }, "hashtag": { "follow": { - "action_false": "", - "action_true": "" + "action_false": "Folgen", + "action_true": "Entfolgen" }, "filter": { - "action": "" + "action": "Hashtag filtern…" } }, "share": { @@ -99,8 +99,8 @@ "action_true": "Tröt nicht mehr anheften" }, "filter": { - "action_false": "", - "action_true": "" + "action_false": "Tröts filtern…", + "action_true": "Filter bearbeiten…" } } } \ No newline at end of file diff --git a/src/i18n/de/components/instance.json b/src/i18n/de/components/instance.json index e5c3627b..c23c28a4 100644 --- a/src/i18n/de/components/instance.json +++ b/src/i18n/de/components/instance.json @@ -3,7 +3,7 @@ "textInput": { "placeholder": "Domain der Instanz" }, - "whitelisted": "", + "whitelisted": "Von dieser Instanz können Tröts möglicherweise nicht ohne Login abgerufen werden.", "button": "Login", "information": { "name": "Name", diff --git a/src/i18n/de/components/timeline.json b/src/i18n/de/components/timeline.json index 90996075..46bd5aa8 100644 --- a/src/i18n/de/components/timeline.json +++ b/src/i18n/de/components/timeline.json @@ -17,10 +17,10 @@ "refresh": { "fetchPreviousPage": "Neuere Einträge", "refetch": "Zum letzten", - "fetching": "", + "fetching": "Neue Tröts werden abgerufen…", "fetched": { - "none": "", - "found": "" + "none": "Kein neuerer Tröt", + "found": "{{count}} Tröts abgerufen" } }, "shared": { @@ -33,6 +33,7 @@ "poll": "Eine Umfrage, an der du teilgenommen hast, ist beendet", "reblog": { "default": "{{name}} hat geboostet", + "myself": "", "notification": "{{name}} hat deinen Tröt geboostet" }, "update": "Boost wurde bearbeitet", @@ -128,7 +129,7 @@ "muted": { "accessibilityLabel": "Tröt stummgeschaltet" }, - "replies": "", + "replies": "Antworten <0 />", "visibility": { "direct": { "accessibilityLabel": "Tröt ist eine Direktnachricht" diff --git a/src/i18n/de/screens/tabs.json b/src/i18n/de/screens/tabs.json index 759a0ba2..f57cb7b2 100644 --- a/src/i18n/de/screens/tabs.json +++ b/src/i18n/de/screens/tabs.json @@ -171,8 +171,8 @@ }, "preferencesFilters": { "expired": "Abgelaufen", - "keywords_one": "", - "keywords_other": "", + "keywords_one": "{{count}} Stichwort", + "keywords_other": "{{count}} Stichwort", "statuses_one": "{{count}} Tröt", "statuses_other": "{{count}} Tröts", "context": "Läuft in <0 /> ab", @@ -196,7 +196,7 @@ "604800": "Nach einer Woche", "18144000": "Nach einem Monat" }, - "context": "", + "context": "Gilt für", "contexts": { "home": "Gefolgte und Listen", "notifications": "Benachrichtigung", @@ -209,9 +209,9 @@ "warn": "Verdeckt, kann aber aufgedeckt werden", "hide": "Vollständig verdeckt" }, - "keywords": "", + "keywords": "Treffer für diese Schlüsselwörter", "keyword": "Stichwörter", - "statuses": "" + "statuses": "Passende Tröts" }, "profile": { "feedback": { @@ -400,29 +400,29 @@ "name": "<0 /><1>'s Medien" }, "filter": { - "name": "", - "existed": "" + "name": "Zum Filter hinzufügen", + "existed": "In diesen Filtern vorhanden" }, "history": { "name": "Bearbeitungsverlauf" }, "report": { - "name": "", - "report": "", + "name": "{{acct}} melden", + "report": "Melden", "forward": { - "heading": "" + "heading": "Anonym an die Instanz {{instance}} weiterleiten" }, "reasons": { - "heading": "", - "spam": "", - "other": "", - "violation": "" + "heading": "Was stimmt mit diesem Konto nicht?", + "spam": "Das ist Spam", + "other": "Etwas anderes", + "violation": "Verstoß gegen die Instanzregeln" }, "comment": { - "heading": "" + "heading": "Möchtest du sonst noch etwas hinzufügen?" }, "violatedRules": { - "heading": "" + "heading": "Verstoß gegen die Instanzregeln" } }, "search": { diff --git a/src/i18n/el/components/timeline.json b/src/i18n/el/components/timeline.json index 38c666fd..409fde4c 100644 --- a/src/i18n/el/components/timeline.json +++ b/src/i18n/el/components/timeline.json @@ -33,6 +33,7 @@ "poll": "Μια δημοσκόπηση στην οποία ψηφίσατε ολοκληρώθηκε", "reblog": { "default": "{{name}} προώθησε τη δημοσίευση", + "myself": "", "notification": "{{name}} προώθησε τη δημοσίευσή σας" }, "update": "Η προώθηση έχει υποστεί επεξεργασία", diff --git a/src/i18n/en/components/timeline.json b/src/i18n/en/components/timeline.json index 68b08b49..6560b033 100644 --- a/src/i18n/en/components/timeline.json +++ b/src/i18n/en/components/timeline.json @@ -33,6 +33,7 @@ "poll": "A poll you have voted in has ended", "reblog": { "default": "{{name}} boosted", + "myself": "I boosted", "notification": "{{name}} boosted your toot" }, "update": "Reblog has been edited", diff --git a/src/i18n/es/components/timeline.json b/src/i18n/es/components/timeline.json index 0730a858..867f724d 100644 --- a/src/i18n/es/components/timeline.json +++ b/src/i18n/es/components/timeline.json @@ -33,6 +33,7 @@ "poll": "Una encuesta en la que has votado ha terminado", "reblog": { "default": "{{name}} ha impulsado", + "myself": "", "notification": "{{name}} ha impulsado tu toot" }, "update": "El impulso ha sido editado", diff --git a/src/i18n/eu/components/timeline.json b/src/i18n/eu/components/timeline.json index 82037232..82b68e3e 100644 --- a/src/i18n/eu/components/timeline.json +++ b/src/i18n/eu/components/timeline.json @@ -17,10 +17,10 @@ "refresh": { "fetchPreviousPage": "Berrienak hemendik hasita", "refetch": "Azkenekora arte", - "fetching": "", + "fetching": "Tut berriak eskuratzen...", "fetched": { - "none": "", - "found": "" + "none": "Tut berririk ez", + "found": "{{count}} tut eskuratuak" } }, "shared": { @@ -33,6 +33,7 @@ "poll": "Erantzun zenuen inkesta bat amaitu da", "reblog": { "default": "{{name}}-(e)k bultzatu du", + "myself": "", "notification": "{{name}}-(e)k zure tuta bultzatu du" }, "update": "Bultzada editatua izan da", diff --git a/src/i18n/fr/components/timeline.json b/src/i18n/fr/components/timeline.json index e237b7b7..f1d64811 100644 --- a/src/i18n/fr/components/timeline.json +++ b/src/i18n/fr/components/timeline.json @@ -33,6 +33,7 @@ "poll": "Un sondage auquel vous avez participé est maintenant terminé", "reblog": { "default": "{{name}} a partagé", + "myself": "", "notification": "{{name}} a partagé votre message" }, "update": "Le reblog a été modifié", diff --git a/src/i18n/it/components/timeline.json b/src/i18n/it/components/timeline.json index d48d815b..a859a302 100644 --- a/src/i18n/it/components/timeline.json +++ b/src/i18n/it/components/timeline.json @@ -33,6 +33,7 @@ "poll": "Un sondaggio in cui hai votato è terminato", "reblog": { "default": "{{name}} ha ricondiviso", + "myself": "", "notification": "{{name}} ha ricondiviso il tuo toot" }, "update": "Il link è stato modificato", diff --git a/src/i18n/ja/components/contextMenu.json b/src/i18n/ja/components/contextMenu.json index 9104b410..6223ffb6 100644 --- a/src/i18n/ja/components/contextMenu.json +++ b/src/i18n/ja/components/contextMenu.json @@ -6,7 +6,7 @@ "action_false": "ユーザーをフォロー", "action_true": "ユーザーをフォロー解除" }, - "inLists": "", + "inLists": "ユーザーを含むリスト一覧", "showBoosts": { "action_false": "ブーストを表示する", "action_true": "ブーストを非表示にする" @@ -16,12 +16,12 @@ "action_true": "ユーザーのミュートを解除" }, "followAs": { - "trigger": "", + "trigger": "... としてフォロー", "succeed_default": "{{source}} として @{{target}} をフォローしました", "succeed_locked": "{{source}} として @{{target}} へのフォロー申請を送りました。現在承認待ちです", "failed": "別ユーザーとしてフォロー" }, - "blockReport": "", + "blockReport": "ブロックと通報", "block": { "action_false": "ユーザーをブロック", "action_true": "ユーザーのブロックを解除", @@ -56,11 +56,11 @@ }, "hashtag": { "follow": { - "action_false": "", - "action_true": "" + "action_false": "フォロー", + "action_true": "フォロー解除" }, "filter": { - "action": "" + "action": "ハッシュタグをフィルター" } }, "share": { @@ -99,8 +99,8 @@ "action_true": "トゥートの固定を解除" }, "filter": { - "action_false": "", - "action_true": "" + "action_false": "トゥートのフィルター", + "action_true": "フィルターの管理" } } } \ No newline at end of file diff --git a/src/i18n/ja/components/timeline.json b/src/i18n/ja/components/timeline.json index 4b643feb..cb03b729 100644 --- a/src/i18n/ja/components/timeline.json +++ b/src/i18n/ja/components/timeline.json @@ -17,7 +17,7 @@ "refresh": { "fetchPreviousPage": "前のページを取得", "refetch": "更新", - "fetching": "", + "fetching": "新しいトゥートを取得しています...", "fetched": { "none": "", "found": "" @@ -33,6 +33,7 @@ "poll": "アンケートが終了しました", "reblog": { "default": "{{name}}さんがブースト", + "myself": "", "notification": "{{name}}さんがあなたのトゥートをブーストしました" }, "update": "ブーストしたトゥートが編集されました", diff --git a/src/i18n/ja/screens/tabs.json b/src/i18n/ja/screens/tabs.json index 9b1139ae..86ef8e34 100644 --- a/src/i18n/ja/screens/tabs.json +++ b/src/i18n/ja/screens/tabs.json @@ -70,13 +70,13 @@ "name": "プッシュ通知" }, "preferences": { - "name": "" + "name": "設定" }, "preferencesFilters": { "name": "" }, "preferencesFilterAdd": { - "name": "" + "name": "フィルターを作成" }, "preferencesFilterEdit": { "name": "" @@ -138,9 +138,9 @@ "visibility": { "title": "", "options": { - "public": "", - "unlisted": "", - "private": "" + "public": "公開", + "unlisted": "未収載", + "private": "フォロワー限定" } }, "sensitive": { @@ -170,7 +170,7 @@ } }, "preferencesFilters": { - "expired": "", + "expired": "期限切れ", "keywords_one": "", "keywords_other": "", "statuses_one": "", @@ -178,29 +178,29 @@ "context": "", "contexts": { "home": "", - "notifications": "", - "public": "", - "thread": "", - "account": "" + "notifications": "通知", + "public": "連合", + "thread": "会話", + "account": "プロフィール" } }, "preferencesFilter": { - "name": "", - "expiration": "", + "name": "名前", + "expiration": "有効期限", "expirationOptions": { - "0": "", - "1800": "", - "3600": "", - "43200": "", - "86400": "", - "604800": "", - "18144000": "" + "0": "無期限", + "1800": "30分後", + "3600": "1時間後", + "43200": "12時間後", + "86400": "1日後", + "604800": "1週間後", + "18144000": "1ヶ月後" }, "context": "", "contexts": { "home": "", - "notifications": "", - "public": "", + "notifications": "通知", + "public": "連合タイムライン", "thread": "", "account": "" }, @@ -210,7 +210,7 @@ "hide": "" }, "keywords": "", - "keyword": "", + "keyword": "キーワード", "statuses": "" }, "profile": { @@ -400,7 +400,7 @@ "name": "<0 /><1>のメディア" }, "filter": { - "name": "", + "name": "フィルターに追加", "existed": "" }, "history": { diff --git a/src/i18n/ko/components/timeline.json b/src/i18n/ko/components/timeline.json index 891e68b8..63edae76 100644 --- a/src/i18n/ko/components/timeline.json +++ b/src/i18n/ko/components/timeline.json @@ -33,6 +33,7 @@ "poll": "내가 참여한 투표가 끝났어요", "reblog": { "default": "{{name}} 님이 부스트했어요", + "myself": "", "notification": "{{name}} 님이 내 툿을 부스트했어요" }, "update": "부스트한 툿이 수정됨", diff --git a/src/i18n/nl/components/timeline.json b/src/i18n/nl/components/timeline.json index 131b6577..19941d13 100644 --- a/src/i18n/nl/components/timeline.json +++ b/src/i18n/nl/components/timeline.json @@ -33,6 +33,7 @@ "poll": "Een poll waaraan jij hebt meegedaan is beëindigd", "reblog": { "default": "{{name}} boostte", + "myself": "Ik boostte", "notification": "{{name}} boostte jouw toot" }, "update": "De reblog is bewerkt", diff --git a/src/i18n/pl/components/timeline.json b/src/i18n/pl/components/timeline.json index c1b75dea..470de008 100644 --- a/src/i18n/pl/components/timeline.json +++ b/src/i18n/pl/components/timeline.json @@ -33,6 +33,7 @@ "poll": "Ankieta w której brałeś(-aś) udział zakończyło się", "reblog": { "default": "{{name}} podbił(a)", + "myself": "", "notification": "{{name}} podbił(a) Twojego tootka" }, "update": "Podbity tootek został edytowany", diff --git a/src/i18n/pt_BR/components/timeline.json b/src/i18n/pt_BR/components/timeline.json index dcb57f62..d86f3eb5 100644 --- a/src/i18n/pt_BR/components/timeline.json +++ b/src/i18n/pt_BR/components/timeline.json @@ -33,6 +33,7 @@ "poll": "Uma enquete em que você votou terminou", "reblog": { "default": "{{name}} boostou", + "myself": "", "notification": "{{name}} deu boost no teu toot" }, "update": "Toot foi editado", @@ -60,7 +61,7 @@ "accessibilityLabel": "Adicionar este toot aos favoritos", "function": "Salvos" }, - "openReport": "" + "openReport": "Abrir denúncia" }, "actionsUsers": { "reblogged_by": { diff --git a/src/i18n/pt_BR/screens/tabs.json b/src/i18n/pt_BR/screens/tabs.json index 38cb3ba1..e34180e5 100644 --- a/src/i18n/pt_BR/screens/tabs.json +++ b/src/i18n/pt_BR/screens/tabs.json @@ -73,7 +73,7 @@ "name": "Preferências" }, "preferencesFilters": { - "name": "" + "name": "Todos os filtros de conteúdo" }, "preferencesFilterAdd": { "name": "Criar um Filtro" @@ -150,8 +150,8 @@ "title": "", "options": { "default": "Ocultar mídia marcada como sensível", - "show_all": "", - "hide_all": "" + "show_all": "Sempre mostrar mídias", + "hide_all": "Sempre ocultar mídias" } }, "spoilers": { @@ -300,10 +300,10 @@ "heading": "Toot foi editado" }, "admin.sign_up": { - "heading": "" + "heading": "Admin: cadastros" }, "admin.report": { - "heading": "" + "heading": "Admin: denúncias" }, "howitworks": "Saiba como funciona o roteamento" }, diff --git a/src/i18n/ru/components/timeline.json b/src/i18n/ru/components/timeline.json index e24b0204..84cb6c95 100644 --- a/src/i18n/ru/components/timeline.json +++ b/src/i18n/ru/components/timeline.json @@ -33,6 +33,7 @@ "poll": "", "reblog": { "default": "", + "myself": "", "notification": "" }, "update": "", diff --git a/src/i18n/sv/components/timeline.json b/src/i18n/sv/components/timeline.json index 74339771..0847b0e7 100644 --- a/src/i18n/sv/components/timeline.json +++ b/src/i18n/sv/components/timeline.json @@ -33,6 +33,7 @@ "poll": "En omröstning du röstat i har avslutats", "reblog": { "default": "{{name}} boostade", + "myself": "Jag boostade", "notification": "{{name}} boostade ditt inlägg" }, "update": "Boosten har redigerats", diff --git a/src/i18n/uk/components/timeline.json b/src/i18n/uk/components/timeline.json index 036c5d9f..8d0eab16 100644 --- a/src/i18n/uk/components/timeline.json +++ b/src/i18n/uk/components/timeline.json @@ -33,6 +33,7 @@ "poll": "Опитування, у якому ви голосували, закінчилося", "reblog": { "default": "{{name}} передмухує", + "myself": "", "notification": "{{name}} передмухує ваш дмух" }, "update": "Передмух був відредагований", diff --git a/src/i18n/vi/components/timeline.json b/src/i18n/vi/components/timeline.json index d297afa6..833fe3ef 100644 --- a/src/i18n/vi/components/timeline.json +++ b/src/i18n/vi/components/timeline.json @@ -33,6 +33,7 @@ "poll": "Cuộc bình chọn đã kết thúc", "reblog": { "default": "{{name}} đăng lại", + "myself": "", "notification": "{{name}} đăng lại tút của bạn" }, "update": "Đăng lại đã được sửa", diff --git a/src/i18n/zh-Hans/components/timeline.json b/src/i18n/zh-Hans/components/timeline.json index f96eb987..58c43f8f 100644 --- a/src/i18n/zh-Hans/components/timeline.json +++ b/src/i18n/zh-Hans/components/timeline.json @@ -33,6 +33,7 @@ "poll": "你参与的投票已结束", "reblog": { "default": "{{name}} 转嘟了", + "myself": "我转嘟了", "notification": "{{name}} 转嘟了你的嘟文" }, "update": "转嘟已被编辑", diff --git a/src/i18n/zh-Hant/components/timeline.json b/src/i18n/zh-Hant/components/timeline.json index 80043a6f..02c77022 100644 --- a/src/i18n/zh-Hant/components/timeline.json +++ b/src/i18n/zh-Hant/components/timeline.json @@ -33,6 +33,7 @@ "poll": "您曾投過的投票已經結束", "reblog": { "default": "{{name}} 轉嘟了", + "myself": "我轉嘟了", "notification": "{{name}} 轉嘟了您的嘟文" }, "update": "轉嘟已編輯", diff --git a/src/screens/Announcements.tsx b/src/screens/Announcements.tsx index 9de0806d..70e50c80 100644 --- a/src/screens/Announcements.tsx +++ b/src/screens/Announcements.tsx @@ -6,7 +6,7 @@ import RelativeTime from '@components/RelativeTime' import CustomText from '@components/Text' import { BlurView } from '@react-native-community/blur' import { useAccessibility } from '@utils/accessibility/AccessibilityManager' -import { connectImage } from '@utils/api/helpers/connect' +import { connectMedia } from '@utils/api/helpers/connect' import { RootStackScreenProps } from '@utils/navigation/navigators' import { useAnnouncementMutation, useAnnouncementQuery } from '@utils/queryHooks/announcement' import { StyleConstants } from '@utils/styles/constants' @@ -140,7 +140,7 @@ const ScreenAnnouncements: React.FC > {reaction.url ? ( ))} diff --git a/src/screens/Compose/Root/Footer/Attachments.tsx b/src/screens/Compose/Root/Footer/Attachments.tsx index 4ce53446..b4496616 100644 --- a/src/screens/Compose/Root/Footer/Attachments.tsx +++ b/src/screens/Compose/Root/Footer/Attachments.tsx @@ -6,7 +6,7 @@ import { MAX_MEDIA_ATTACHMENTS } from '@components/mediaSelector' import CustomText from '@components/Text' import { useActionSheet } from '@expo/react-native-action-sheet' import { useNavigation } from '@react-navigation/native' -import { connectImage } from '@utils/api/helpers/connect' +import { connectMedia } from '@utils/api/helpers/connect' import { featureCheck } from '@utils/helpers/featureCheck' import { StyleConstants } from '@utils/styles/constants' import layoutAnimation from '@utils/styles/layoutAnimation' @@ -105,11 +105,13 @@ const ComposeAttachments: React.FC = ({ accessibleRefAttachments }) => { }} > {item.remote?.meta?.original?.duration ? ( diff --git a/src/screens/Tabs/Me/Push.tsx b/src/screens/Tabs/Me/Push.tsx index bdb0d2a3..af2aacc9 100644 --- a/src/screens/Tabs/Me/Push.tsx +++ b/src/screens/Tabs/Me/Push.tsx @@ -37,6 +37,7 @@ const TabMePush: React.FC = () => { const appsQuery = useAppsQuery({ options: { + enabled: false, onSuccess: async data => { if (data.vapid_key) { await checkPush() @@ -49,6 +50,9 @@ const TabMePush: React.FC = () => { } } }) + useEffect(() => { + appsQuery.refetch() + }, []) const checkPush = async () => { const permissions = await Notifications.getPermissionsAsync() @@ -75,22 +79,20 @@ const TabMePush: React.FC = () => { { const alerts = { ...push?.alerts, [alert]: !push?.alerts[alert] } - const body: { data: { alerts: { [key: string]: boolean } } } = { - data: { alerts: {} } - } - for (const [key, value] of Object.entries(alerts)) { - body.data.alerts[key] = value - } - await apiInstance({ - method: 'put', - url: 'push/subscription', - body - }) + if (pushEnabled && push.global) { + const body: { data: { alerts: Mastodon.PushSubscription['alerts'] } } = { + data: { alerts } + } + await apiInstance({ + method: 'put', + url: 'push/subscription', + body + }) + } setAccountStorage([{ key: 'push', value: { ...push, alerts } }]) }} @@ -105,22 +107,22 @@ const TabMePush: React.FC = () => { { const alerts = { ...push?.alerts, [type]: !push?.alerts[type] } - const body: { data: { alerts: { [key: string]: boolean } } } = { - data: { alerts: {} } - } - for (const [key, value] of Object.entries(alerts)) { - body.data.alerts[key] = value - } - await apiInstance({ - method: 'put', - url: 'push/subscription', - body - }) + if (pushEnabled && push.global) { + const body: { + data: { alerts: Mastodon.PushSubscription['alerts'] } + } = { + data: { alerts } + } + await apiInstance({ + method: 'put', + url: 'push/subscription', + body + }) + } setAccountStorage([{ key: 'push', value: { ...push, alerts } }]) }} @@ -194,7 +196,10 @@ const TabMePush: React.FC = () => { const endpoint = `https://${TOOOT_API_DOMAIN}/push/send/${pushPath}/${randomPath}` - const body: { subscription: any; alerts: { [key: string]: boolean } } = { + const body: { + subscription: any + alerts: Mastodon.PushSubscription['alerts'] + } = { subscription: { endpoint, keys: { @@ -203,10 +208,7 @@ const TabMePush: React.FC = () => { auth: authKey } }, - alerts: {} - } - for (const [key, value] of Object.entries(push.alerts)) { - body.alerts[key] = value + alerts: push.alerts } const res = await apiInstance({ @@ -222,6 +224,10 @@ const TabMePush: React.FC = () => { message: t('me.push.missingServerKey.message'), description: t('me.push.missingServerKey.description') }) + await apiInstance({ + method: 'delete', + url: 'push/subscription' + }) Sentry.setContext('Push server key', { instance: domain, resBody: res.body @@ -238,6 +244,11 @@ const TabMePush: React.FC = () => { serverKey: res.body.server_key, auth: push.decode === false ? null : authKey } + }).catch(async () => { + await apiInstance({ + method: 'delete', + url: 'push/subscription' + }) }) setAccountStorage([ diff --git a/src/screens/Tabs/Me/Settings/App.tsx b/src/screens/Tabs/Me/Settings/App.tsx index c4c383ad..82584399 100644 --- a/src/screens/Tabs/Me/Settings/App.tsx +++ b/src/screens/Tabs/Me/Settings/App.tsx @@ -43,6 +43,8 @@ const SettingsApp: React.FC = () => { }) }, []) + const [clearingCache, setClearingCache] = useState(false) + return ( { /> setAutoplayGifv(!autoplayGifv)} /> {showConnect ? ( diff --git a/src/utils/api/helpers/connect.ts b/src/utils/api/helpers/connect.ts index e2475260..22472c74 100644 --- a/src/utils/api/helpers/connect.ts +++ b/src/utils/api/helpers/connect.ts @@ -74,14 +74,14 @@ const list = [ 'vq2rz02ayf' ] -export const CONNECT_DOMAIN = () => +export const CONNECT_DOMAIN = (index?: number) => mapEnvironment({ - release: `${list[Math.floor(Math.random() * 66)]}.tooot.app`, + release: `${list[index || Math.floor(Math.random() * list.length)]}.tooot.app`, candidate: 'connect-candidate.tooot.app', development: 'connect-development.tooot.app' }) -export const connectImage = ({ +export const connectMedia = ({ uri }: { uri?: string @@ -89,7 +89,19 @@ export const connectImage = ({ if (GLOBAL.connect) { if (uri) { const host = parse(uri).host - return { uri: uri.replace(host, CONNECT_DOMAIN()), headers: { 'x-tooot-domain': host } } + return { + uri: uri.replace( + host, + CONNECT_DOMAIN( + uri + .split('') + .map(i => i.charCodeAt(0)) + .reduce((a, b) => a + b, 0) % + (list.length + 1) + ) + ), + headers: { 'x-tooot-domain': host } + } } else { return { uri } } diff --git a/src/utils/queryHooks/timeline.ts b/src/utils/queryHooks/timeline.ts index c4dfb5a4..e36f3e91 100644 --- a/src/utils/queryHooks/timeline.ts +++ b/src/utils/queryHooks/timeline.ts @@ -61,20 +61,9 @@ export const queryFunctionTimeline = async ({ let marker: string | undefined if (page.page === 'Following' && !pageParam?.offset && !pageParam?.min_id && !pageParam?.max_id) { - const storedMarker = getAccountStorage.string('read_marker_following') - if (storedMarker) { - await apiInstance({ - method: 'get', - url: 'timelines/home', - params: { limit: 1, min_id: storedMarker } - }).then(res => { - if (res.body.length) { - marker = storedMarker - } - }) - } + marker = getAccountStorage.string('read_marker_following') } - let params: { [key: string]: string } = marker + const params: { [key: string]: string } = marker ? { limit: 40, max_id: marker } : { limit: 40, ...pageParam } @@ -353,14 +342,23 @@ export type MutationVarsTimeline = const mutationFunction = async (params: MutationVarsTimeline) => { switch (params.type) { case 'updateStatusProperty': + let tootId = params.status.id + let pollId = params.status.poll?.id + if (params.status._remote) { + const fetched = await searchLocalStatus(params.status.uri) + if (fetched) { + tootId = fetched.id + pollId = fetched.poll?.id + } else { + return Promise.reject('Fetching for remote toot failed') + } + } + switch (params.payload.type) { case 'poll': return apiInstance({ method: params.payload.action === 'vote' ? 'post' : 'get', - url: - params.payload.action === 'vote' - ? `polls/${params.status.poll?.id}/votes` - : `polls/${params.status.poll?.id}`, + url: params.payload.action === 'vote' ? `polls/${pollId}/votes` : `polls/${pollId}`, ...(params.payload.action === 'vote' && { body: { choices: params.payload.options @@ -370,15 +368,6 @@ const mutationFunction = async (params: MutationVarsTimeline) => { }) }) default: - let tootId = params.status.id - if (params.status._remote) { - const fetched = await searchLocalStatus(params.status.uri) - if (fetched) { - tootId = fetched.id - } else { - return Promise.reject('Fetching for remote toot failed') - } - } return apiInstance({ method: 'post', url: `statuses/${tootId}/${params.payload.to ? '' : 'un'}${ diff --git a/src/utils/storage/actions.ts b/src/utils/storage/actions.ts index 602d4407..701219e6 100644 --- a/src/utils/storage/actions.ts +++ b/src/utils/storage/actions.ts @@ -33,9 +33,13 @@ export const getGlobalStorage = { object: (key: T) => { const value = storage.global.getString(key) if (value?.length) { - return JSON.parse(value) as NonNullable extends object - ? StorageGlobal[T] - : never + try { + return JSON.parse(value) as NonNullable extends object + ? StorageGlobal[T] + : never + } catch { + return undefined + } } else { return undefined } @@ -108,9 +112,13 @@ export const getAccountStorage = { object: (key: T) => { const value = storage.account?.getString(key) if (value?.length) { - return JSON.parse(value) as NonNullable extends object - ? StorageAccount[T] - : never + try { + return JSON.parse(value) as NonNullable extends object + ? StorageAccount[T] + : never + } catch { + return undefined + } } else { return undefined } diff --git a/src/utils/styles/scaling.ts b/src/utils/styles/scaling.ts index 921ce461..b17db475 100644 --- a/src/utils/styles/scaling.ts +++ b/src/utils/styles/scaling.ts @@ -1,3 +1,4 @@ -const adaptiveScale = (size: number, factor: number = 0) => Math.round(size + size * (factor / 8)) +const adaptiveScale = (size: number, factor: number = 0) => + factor ? Math.round(size + size * (factor / 8)) : size export { adaptiveScale } diff --git a/yarn.lock b/yarn.lock index 166933e2..29d1af40 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2005,23 +2005,23 @@ __metadata: languageName: node linkType: hard -"@formatjs/fast-memoize@npm:1.2.7": - version: 1.2.7 - resolution: "@formatjs/fast-memoize@npm:1.2.7" +"@formatjs/fast-memoize@npm:1.2.8": + version: 1.2.8 + resolution: "@formatjs/fast-memoize@npm:1.2.8" dependencies: tslib: ^2.4.0 - checksum: ba372a3e931bd99729d993f5b95aeb43e7d07b9f71e759722cc20c4e2faa0af11a942f0df9023a029b03230dc4dfad5354755be1e385c465750f63e4b3372b7b + checksum: 19f7f04657363d3ca4854ba3e5ecf4ae5bf0575c12ba8b2b24a7128131b38d91cf2692aeab778d42e9aa2e27cd2ea3b1e23cabf8ce4dff42988dcf65582c3a94 languageName: node linkType: hard -"@formatjs/icu-messageformat-parser@npm:2.1.14": - version: 2.1.14 - resolution: "@formatjs/icu-messageformat-parser@npm:2.1.14" +"@formatjs/icu-messageformat-parser@npm:2.2.0": + version: 2.2.0 + resolution: "@formatjs/icu-messageformat-parser@npm:2.2.0" dependencies: "@formatjs/ecma402-abstract": 1.14.3 "@formatjs/icu-skeleton-parser": 1.3.18 tslib: ^2.4.0 - checksum: 4d13230af075a353eef4725bee67d46bfc40f4873e561c141a2e62b91e377ffa7fffe61ee6df6bb187a00e15ab6fe242014958d51e4c6056032801178eb7e1c8 + checksum: bd457714296a3503d57383ee9ba8c9fb01e0097379c2bcf18c827ff736f64cf83132f2ab539f534b716726d6554beede354c30180d543dd8a1cf8e4c8f842bd7 languageName: node linkType: hard @@ -2046,14 +2046,14 @@ __metadata: languageName: node linkType: hard -"@formatjs/intl-displaynames@npm:6.2.3": - version: 6.2.3 - resolution: "@formatjs/intl-displaynames@npm:6.2.3" +"@formatjs/intl-displaynames@npm:6.2.4": + version: 6.2.4 + resolution: "@formatjs/intl-displaynames@npm:6.2.4" dependencies: "@formatjs/ecma402-abstract": 1.14.3 "@formatjs/intl-localematcher": 0.2.32 tslib: ^2.4.0 - checksum: 2e5fe38231858f66f44eb740a5e0576f98c9039b49ad81a02c4bcb62de6425e3951413c3fa487dd1ad42cd25c0b8d725adac6ceddf841f94b97ca22e753f3d56 + checksum: 17cee1a7f81260a2b6bab1606bc3fa3eea777f454fb7d233a8d50befa9e02a1b3bf5ce5a4a6030a3ad86f60ea65cdce273e1d562dab1fdbe2dd42b254e31320f languageName: node linkType: hard @@ -2130,23 +2130,23 @@ __metadata: languageName: node linkType: hard -"@formatjs/intl@npm:2.6.3": - version: 2.6.3 - resolution: "@formatjs/intl@npm:2.6.3" +"@formatjs/intl@npm:2.6.5": + version: 2.6.5 + resolution: "@formatjs/intl@npm:2.6.5" dependencies: "@formatjs/ecma402-abstract": 1.14.3 - "@formatjs/fast-memoize": 1.2.7 - "@formatjs/icu-messageformat-parser": 2.1.14 - "@formatjs/intl-displaynames": 6.2.3 + "@formatjs/fast-memoize": 1.2.8 + "@formatjs/icu-messageformat-parser": 2.2.0 + "@formatjs/intl-displaynames": 6.2.4 "@formatjs/intl-listformat": 7.1.7 - intl-messageformat: 10.2.5 + intl-messageformat: 10.3.0 tslib: ^2.4.0 peerDependencies: typescript: ^4.7 peerDependenciesMeta: typescript: optional: true - checksum: 1922ec1d63aed8f42bb09967fffbaa4f37f59a351dd34ccddf28b268d04b05a80c9a7790f61292cf97fec4d47e15177b52987a28b5fb10df96aed5f5008dfc5f + checksum: c0c8ccbc8bcffc245a5ec6654271dc99dd48359c6dfa21666824be55a7e2b0be8e6f0a1277d1e539064fa2eb72c5349d9ea7ae6ab207191a3adf00c68b1eab7f languageName: node linkType: hard @@ -2276,15 +2276,15 @@ __metadata: languageName: node linkType: hard -"@mattermost/react-native-paste-input@npm:^0.6.0": - version: 0.6.0 - resolution: "@mattermost/react-native-paste-input@npm:0.6.0" +"@mattermost/react-native-paste-input@npm:^0.6.1": + version: 0.6.1 + resolution: "@mattermost/react-native-paste-input@npm:0.6.1" dependencies: semver: 7.3.8 peerDependencies: react: "*" react-native: "*" - checksum: 95fe8d9652f80793a245ad3a6b3cfebc152ea9a0243982507d3ac83844e6ca21723e62337fa3db7690af33d9f9427ad097c75863793b55321c0a0d55f53f7a11 + checksum: dacab6215171bcec9f150fd1001c547b0ddee26d1718a835dbcc715535c5f1b6d2c98d55284d724b45ed43e449ad146617dcee92b5e2484c7558f9bf378946b4 languageName: node linkType: hard @@ -2979,9 +2979,9 @@ __metadata: languageName: node linkType: hard -"@react-native-firebase/app@npm:^16.5.2": - version: 16.5.2 - resolution: "@react-native-firebase/app@npm:16.5.2" +"@react-native-firebase/app@npm:^16.7.0": + version: 16.7.0 + resolution: "@react-native-firebase/app@npm:16.7.0" dependencies: "@expo/config-plugins": ^5.0.4 opencollective-postinstall: ^2.0.1 @@ -2989,7 +2989,7 @@ __metadata: peerDependencies: react: "*" react-native: "*" - checksum: 8fd7dd614523f53e34e7488c7baf9cb279db1e0db8e0a3ab0aabc71a77c054af7876dc070e4c86ffb0406bae2fb240495954e95891a7047ed1c6e74f4a4de716 + checksum: d3274ac0461e7524849c544bd00bd628b7a305f1798c33c28367dff4a8c3e55ae2d8428f8ae2d2cb3ed99760054a7cf6cceaca43052015497cd7ae162272b3e7 languageName: node linkType: hard @@ -3038,11 +3038,11 @@ __metadata: languageName: node linkType: hard -"@react-navigation/bottom-tabs@npm:^6.5.3": - version: 6.5.3 - resolution: "@react-navigation/bottom-tabs@npm:6.5.3" +"@react-navigation/bottom-tabs@npm:^6.5.4": + version: 6.5.4 + resolution: "@react-navigation/bottom-tabs@npm:6.5.4" dependencies: - "@react-navigation/elements": ^1.3.13 + "@react-navigation/elements": ^1.3.14 color: ^4.2.3 warn-once: ^0.1.0 peerDependencies: @@ -3051,7 +3051,7 @@ __metadata: react-native: "*" react-native-safe-area-context: ">= 3.0.0" react-native-screens: ">= 3.0.0" - checksum: 7e222f39035e84d8bc98ba4937fea0e0ece1307c85b7102a6e3f19ce5b2550cfc83c1c1b68ef6e885b3d325863df442ca524d5ab34c262837cea179366383358 + checksum: c37f25625da14d1b17ea4c4d35c320da917fc4fd5c0191b132474501264cfffe9268c1fb55408d6b9b9f16b511f8f9100b52c7933b7528bf66a28e13793845c1 languageName: node linkType: hard @@ -3071,23 +3071,23 @@ __metadata: languageName: node linkType: hard -"@react-navigation/elements@npm:^1.3.13": - version: 1.3.13 - resolution: "@react-navigation/elements@npm:1.3.13" +"@react-navigation/elements@npm:^1.3.14": + version: 1.3.14 + resolution: "@react-navigation/elements@npm:1.3.14" peerDependencies: "@react-navigation/native": ^6.0.0 react: "*" react-native: "*" react-native-safe-area-context: ">= 3.0.0" - checksum: 341d8d44ecda16bbed990d40f10bedd368d579ffe1fd4568f0293f97299768167a110763170da92ff14ccff3916704dbc133465776ecdc9ac65cc8bf3caa1e31 + checksum: bf0856fb4dda63dcd21f3e6c9136fdf749e35a02e97741915d225f770348eea0ba8aea9875f653c984b12420cfb2a4a55cd5c0e4e033976d9e51be7ae27cf1a7 languageName: node linkType: hard -"@react-navigation/native-stack@npm:^6.9.8": - version: 6.9.8 - resolution: "@react-navigation/native-stack@npm:6.9.8" +"@react-navigation/native-stack@npm:^6.9.9": + version: 6.9.9 + resolution: "@react-navigation/native-stack@npm:6.9.9" dependencies: - "@react-navigation/elements": ^1.3.13 + "@react-navigation/elements": ^1.3.14 warn-once: ^0.1.0 peerDependencies: "@react-navigation/native": ^6.0.0 @@ -3095,13 +3095,13 @@ __metadata: react-native: "*" react-native-safe-area-context: ">= 3.0.0" react-native-screens: ">= 3.0.0" - checksum: 37413ffc79f442860cc1cbd51d4f9c8160e5a01826ca7e1b815e88f2a24b5df53dc6c604a76e099aa6a2ad809c093b253924095e975ad76325fdc443e6457b02 + checksum: 03bdb6e990fbc5146642b2a2007a3ef73793bc9151a89bc64b86ca5ecf16c509eec865d2443eb87a72ada146e7c54441c552c69e7971a13d81c7117e97f8eeb7 languageName: node linkType: hard -"@react-navigation/native@npm:^6.1.2": - version: 6.1.2 - resolution: "@react-navigation/native@npm:6.1.2" +"@react-navigation/native@npm:^6.1.3": + version: 6.1.3 + resolution: "@react-navigation/native@npm:6.1.3" dependencies: "@react-navigation/core": ^6.4.6 escape-string-regexp: ^4.0.0 @@ -3110,7 +3110,7 @@ __metadata: peerDependencies: react: "*" react-native: "*" - checksum: 1bdf5339cccc1c40f780929738790f6d7d80533c80c3db80c598870f124782d83f4842b63a2bced55e040d120fc0de419d780fd906108c5358a83cde540b595e + checksum: 8aa9d60d0c135381691363ec438db90d2584cb48fb99dbf6707a61b81bce709e5407cde3c1d93c4966245069bc5149d8925a4ef512906619cfac057cacdc43d9 languageName: node linkType: hard @@ -3123,11 +3123,11 @@ __metadata: languageName: node linkType: hard -"@react-navigation/stack@npm:^6.3.11": - version: 6.3.11 - resolution: "@react-navigation/stack@npm:6.3.11" +"@react-navigation/stack@npm:^6.3.12": + version: 6.3.12 + resolution: "@react-navigation/stack@npm:6.3.12" dependencies: - "@react-navigation/elements": ^1.3.13 + "@react-navigation/elements": ^1.3.14 color: ^4.2.3 warn-once: ^0.1.0 peerDependencies: @@ -3137,7 +3137,7 @@ __metadata: react-native-gesture-handler: ">= 1.0.0" react-native-safe-area-context: ">= 3.0.0" react-native-screens: ">= 3.0.0" - checksum: a826f3ed56b280e27762c08e822e88c33b395d51cfa5b277dd45f7d7ef1884674222ce316a102c36ea5f96e554f7f45673e87c0715799689f9533ddc272b0d2d + checksum: 09e793edb0bb56edacdb3446a001eeb6f388d125dcbabf76a0e6d0531a48db3f68a0535fafb322a290e8511cc8390ab5e9d2ee4bda8604552368fabffe438793 languageName: node linkType: hard @@ -3151,16 +3151,16 @@ __metadata: languageName: node linkType: hard -"@sentry/browser@npm:7.29.0": - version: 7.29.0 - resolution: "@sentry/browser@npm:7.29.0" +"@sentry/browser@npm:7.32.1": + version: 7.32.1 + resolution: "@sentry/browser@npm:7.32.1" dependencies: - "@sentry/core": 7.29.0 - "@sentry/replay": 7.29.0 - "@sentry/types": 7.29.0 - "@sentry/utils": 7.29.0 + "@sentry/core": 7.32.1 + "@sentry/replay": 7.32.1 + "@sentry/types": 7.32.1 + "@sentry/utils": 7.32.1 tslib: ^1.9.3 - checksum: 136b9d03a9ff38e72f4d8fd335f23469341d0095d1f075a36d85ef2cd6bd0763635a7e1cbc7abe14508291e88cffe549eda6016c858564b55c1d4e81ef67882f + checksum: 279b2bfb32256456cf3bb59a5a2aa6667047455103a8a4fd03e9f765e83c7cda130c1f6881251d5be08f43674ebf66e92d5f2b1351b62c4bac42d4e9e44f00fe languageName: node linkType: hard @@ -3198,116 +3198,114 @@ __metadata: languageName: node linkType: hard -"@sentry/core@npm:7.29.0": - version: 7.29.0 - resolution: "@sentry/core@npm:7.29.0" +"@sentry/core@npm:7.32.1": + version: 7.32.1 + resolution: "@sentry/core@npm:7.32.1" dependencies: - "@sentry/types": 7.29.0 - "@sentry/utils": 7.29.0 + "@sentry/types": 7.32.1 + "@sentry/utils": 7.32.1 tslib: ^1.9.3 - checksum: d9330ed3528f2328b524cb237e400368dcb6c36b8afb791d28141e98ab5c0b56dc306a65cfc7164108cb5616346dabe793a39a140257f723906dc25a03b7ebcd + checksum: 74ce787414d5993efe74ad5e8d47824b57d258cc4374259bbaaaab337ff4981f8c4d40bfb617b33a4733dc6890d12728aa6a75fb8ddab5a844cb82165963f451 languageName: node linkType: hard -"@sentry/hub@npm:7.29.0": - version: 7.29.0 - resolution: "@sentry/hub@npm:7.29.0" +"@sentry/hub@npm:7.32.1": + version: 7.32.1 + resolution: "@sentry/hub@npm:7.32.1" dependencies: - "@sentry/core": 7.29.0 - "@sentry/types": 7.29.0 - "@sentry/utils": 7.29.0 + "@sentry/core": 7.32.1 + "@sentry/types": 7.32.1 + "@sentry/utils": 7.32.1 tslib: ^1.9.3 - checksum: dc6eb1744cb68eabfa5bd1a919b0ae0df721d34b36d1b8c5e9612b9d8ab9329560b89542b9b06157e39330c5cd34a157fa8a3a7509bb4a7f007b2083c5046f80 + checksum: 0b0a2a9640762dc1011071172a853d643076c9e51e958f13a4219b8d4cf799c0b4d996c813a28b2040cc2a50eb4d7cd907d8c6cf9537f6a6860d6dc18f553b60 languageName: node linkType: hard -"@sentry/integrations@npm:7.29.0": - version: 7.29.0 - resolution: "@sentry/integrations@npm:7.29.0" +"@sentry/integrations@npm:7.32.1": + version: 7.32.1 + resolution: "@sentry/integrations@npm:7.32.1" dependencies: - "@sentry/types": 7.29.0 - "@sentry/utils": 7.29.0 + "@sentry/types": 7.32.1 + "@sentry/utils": 7.32.1 localforage: ^1.8.1 tslib: ^1.9.3 - checksum: fec2b9b7902b9b097b5453ae4c797e4efa18ac05a3b539c58d037085e12846f443ebe2e8d916a273ee4df71a29891265db5723b7fd4b5e8287fe5864cb9b2e43 + checksum: 8cd7071f742100d0505029f1e8c34bfbed8fa85d4e0a9b2be13b0023e2dd18396ed3634b73a0528f22067b77208d418dbb71ba3ecffb969a42ccae63859fd8b1 languageName: node linkType: hard -"@sentry/react-native@npm:4.13.0": - version: 4.13.0 - resolution: "@sentry/react-native@npm:4.13.0" +"@sentry/react-native@npm:4.14.0": + version: 4.14.0 + resolution: "@sentry/react-native@npm:4.14.0" dependencies: - "@sentry/browser": 7.29.0 + "@sentry/browser": 7.32.1 "@sentry/cli": 1.74.4 - "@sentry/core": 7.29.0 - "@sentry/hub": 7.29.0 - "@sentry/integrations": 7.29.0 - "@sentry/react": 7.29.0 - "@sentry/tracing": 7.29.0 - "@sentry/types": 7.29.0 - "@sentry/utils": 7.29.0 + "@sentry/core": 7.32.1 + "@sentry/hub": 7.32.1 + "@sentry/integrations": 7.32.1 + "@sentry/react": 7.32.1 + "@sentry/tracing": 7.32.1 + "@sentry/types": 7.32.1 + "@sentry/utils": 7.32.1 "@sentry/wizard": 1.4.0 peerDependencies: react: ">=16.4.1" react-native: ">=0.56.0" - checksum: 8f83147409b31854ae2c1cc485ce20a86f8f70ef83dfa52d5547f3ffa3202e5de5bf14e306dff6c280752677b813e00505d80dfa6b1bf110c4749be9f6215919 + checksum: 583eaac87678ac50e3cfde68ecb418821ac8d3eadd4560dbdb01b026804cd9d46b78f2e565dd9fa6fb208bafe4d85409094a8fb4fb261de44f57fa92338bf5fe languageName: node linkType: hard -"@sentry/react@npm:7.29.0": - version: 7.29.0 - resolution: "@sentry/react@npm:7.29.0" +"@sentry/react@npm:7.32.1": + version: 7.32.1 + resolution: "@sentry/react@npm:7.32.1" dependencies: - "@sentry/browser": 7.29.0 - "@sentry/types": 7.29.0 - "@sentry/utils": 7.29.0 + "@sentry/browser": 7.32.1 + "@sentry/types": 7.32.1 + "@sentry/utils": 7.32.1 hoist-non-react-statics: ^3.3.2 tslib: ^1.9.3 peerDependencies: react: 15.x || 16.x || 17.x || 18.x - checksum: 022bf398f2cf43bf5e1f7340cfc02ccfc4cdc026fb3d6805e760d182bcb2601d413cf412beaa37fecbbf0dc554ce38c4a01d9bf38d1591f80cd059ee5235205d + checksum: 3e67b9b9c959aced9d7dd1779c40b7bba60ea4170e30fb1a3e167286fe6649459401e22ada268c51c836ddbda934777cb867d36577d7294f5c38e51e98c1f5e3 languageName: node linkType: hard -"@sentry/replay@npm:7.29.0": - version: 7.29.0 - resolution: "@sentry/replay@npm:7.29.0" +"@sentry/replay@npm:7.32.1": + version: 7.32.1 + resolution: "@sentry/replay@npm:7.32.1" dependencies: - "@sentry/core": 7.29.0 - "@sentry/types": 7.29.0 - "@sentry/utils": 7.29.0 - peerDependencies: - "@sentry/browser": ">=7.24.0" - checksum: 539e18c128bb7966c9d4ea91ebd9cde6d42f42f96fa648d7ead5bff699e643f3792f57a344376586fab26f659f5e1431176faf0e12e6ea53508fd48ba928dd12 + "@sentry/core": 7.32.1 + "@sentry/types": 7.32.1 + "@sentry/utils": 7.32.1 + checksum: 0df5b054a1542567b66566ef0529bd7a48692711e20212a2ef1aca6deb50f9725adbc8eade33ba4a91980fb17d0409a37ea8013903652f3931e8cdd6fd57bcda languageName: node linkType: hard -"@sentry/tracing@npm:7.29.0": - version: 7.29.0 - resolution: "@sentry/tracing@npm:7.29.0" +"@sentry/tracing@npm:7.32.1": + version: 7.32.1 + resolution: "@sentry/tracing@npm:7.32.1" dependencies: - "@sentry/core": 7.29.0 - "@sentry/types": 7.29.0 - "@sentry/utils": 7.29.0 + "@sentry/core": 7.32.1 + "@sentry/types": 7.32.1 + "@sentry/utils": 7.32.1 tslib: ^1.9.3 - checksum: 7ad9040664a8c65693aba2bdd9cecc8334ce25a296c01727d38649c7141106b78c92142626ce8e44983b4272e0f411010a3df99843a1af6d4f89e4f67ce6f57e + checksum: b62b9cc4d4c1ace95a665046cbc43445f3503c83b18d23bc848546695b6d282138dc9df26116a8b14917ab4285df64e3af6e458e4e63b0f0fe54725a28b0bc29 languageName: node linkType: hard -"@sentry/types@npm:7.29.0": - version: 7.29.0 - resolution: "@sentry/types@npm:7.29.0" - checksum: 53815b66662a193cfd7024b9fb2477afb8178a771aa59f3bef10578cc940a9d7207722f9f04e2ca65a8e118cef012ac42f4936aa921aacdfc00a914bec88b009 +"@sentry/types@npm:7.32.1": + version: 7.32.1 + resolution: "@sentry/types@npm:7.32.1" + checksum: f543a315ad818546fd97c97b0bdb010e101a8757c901b95f46e6e9f122ba1034ddd656c38e2359cb0892c90734d17513fb5f66247d7dda4598e879c36f4023c0 languageName: node linkType: hard -"@sentry/utils@npm:7.29.0": - version: 7.29.0 - resolution: "@sentry/utils@npm:7.29.0" +"@sentry/utils@npm:7.32.1": + version: 7.32.1 + resolution: "@sentry/utils@npm:7.32.1" dependencies: - "@sentry/types": 7.29.0 + "@sentry/types": 7.32.1 tslib: ^1.9.3 - checksum: 9914a2129692a5713453437d75b957a18ad5a4ef8085776e5499208ad329dea8da27ee2e2b74fdc089a3831b4e2929f8e6c0f3bc75528f41023d85de5077f462 + checksum: 1b0d82cbccb9dfd80f5bc8a7deec59db15f5bb5718da4184d5e70f7765fb4ca90d4489387cec7a384872f7a8742fc9ba4e21c41607adbbd68fce1c1935b67bf8 languageName: node linkType: hard @@ -3367,18 +3365,18 @@ __metadata: languageName: node linkType: hard -"@tanstack/query-core@npm:4.22.4": - version: 4.22.4 - resolution: "@tanstack/query-core@npm:4.22.4" - checksum: 01663a36ad7ed5c43cb7cfa8ffcdf7df4de05cf68e9991bbc339be2a656a1c94f69e0b5405dfa972cf877b09dac3cba4cbdf8c91f5dffabc46ac32ec0ce5f4bb +"@tanstack/query-core@npm:4.24.4": + version: 4.24.4 + resolution: "@tanstack/query-core@npm:4.24.4" + checksum: b357e950a41e5769878a3bfe9dd56a66828ccebb2f9396e568e8835bed71eb37926770a461e3aa5bafb7e1121c5141cee86aedf3ced88a2eacf754d545b107cd languageName: node linkType: hard -"@tanstack/react-query@npm:^4.23.0": - version: 4.23.0 - resolution: "@tanstack/react-query@npm:4.23.0" +"@tanstack/react-query@npm:^4.24.4": + version: 4.24.4 + resolution: "@tanstack/react-query@npm:4.24.4" dependencies: - "@tanstack/query-core": 4.22.4 + "@tanstack/query-core": 4.24.4 use-sync-external-store: ^1.2.0 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -3389,7 +3387,7 @@ __metadata: optional: true react-native: optional: true - checksum: 166140855f8806e951e9a4ebccb5ba354eb2abc314e6b6ff696d2a1a8720e9ea868221f62d58004101e44899b61fdf57a40fe286bb13233645e292cd5567545c + checksum: 8cf008d690fc5d336f6471ea2bc0751189f03874dcc7930cf8944fb57fa34e3b5347823775dbd36629d53a7aacb9ce87482b1adb3ad80d277a3a6c73b797f6a2 languageName: node linkType: hard @@ -3507,12 +3505,12 @@ __metadata: languageName: node linkType: hard -"@types/react-native@npm:^0.70.9": - version: 0.70.9 - resolution: "@types/react-native@npm:0.70.9" +"@types/react-native@npm:^0.70.10": + version: 0.70.10 + resolution: "@types/react-native@npm:0.70.10" dependencies: "@types/react": "*" - checksum: 52b362f518c8a912174ae7cda1b20532bee11c2767794efcc0300650b750f72bcd8852435105559155f202504a742fe6e50f4e3cc4c1a9836dea9db132410ce3 + checksum: fbf0cac9413d37023a2acafdca4b03cb8a8826c58ec7c82a8a23019929ef3d9d87a36a6de7edd899a1346b95ab71629cf67fd679dd5407d2c807b2430ea69862 languageName: node linkType: hard @@ -6915,15 +6913,15 @@ __metadata: languageName: node linkType: hard -"intl-messageformat@npm:10.2.5": - version: 10.2.5 - resolution: "intl-messageformat@npm:10.2.5" +"intl-messageformat@npm:10.3.0": + version: 10.3.0 + resolution: "intl-messageformat@npm:10.3.0" dependencies: "@formatjs/ecma402-abstract": 1.14.3 - "@formatjs/fast-memoize": 1.2.7 - "@formatjs/icu-messageformat-parser": 2.1.14 + "@formatjs/fast-memoize": 1.2.8 + "@formatjs/icu-messageformat-parser": 2.2.0 tslib: ^2.4.0 - checksum: 048d6e3e746bff5ea6d745c8cbc2d0049aadb42caf2bad0d47e0bcf9bede285ef48a1fbd3a87711b99587d270d2ab8d9488e51577b24a2227856cdf373dd25df + checksum: a92b2fec9ed0ba992ecfefbe9968c0f80961d6d23d105b16f3437108c61fe57d6e91e04392c4092335136399e047572996bc45d197ec0899473a3aac3627fed2 languageName: node linkType: hard @@ -9565,19 +9563,19 @@ __metadata: languageName: node linkType: hard -"react-intl@npm:^6.2.5": - version: 6.2.5 - resolution: "react-intl@npm:6.2.5" +"react-intl@npm:^6.2.7": + version: 6.2.7 + resolution: "react-intl@npm:6.2.7" dependencies: "@formatjs/ecma402-abstract": 1.14.3 - "@formatjs/icu-messageformat-parser": 2.1.14 - "@formatjs/intl": 2.6.3 - "@formatjs/intl-displaynames": 6.2.3 + "@formatjs/icu-messageformat-parser": 2.2.0 + "@formatjs/intl": 2.6.5 + "@formatjs/intl-displaynames": 6.2.4 "@formatjs/intl-listformat": 7.1.7 "@types/hoist-non-react-statics": ^3.3.1 "@types/react": 16 || 17 || 18 hoist-non-react-statics: ^3.3.2 - intl-messageformat: 10.2.5 + intl-messageformat: 10.3.0 tslib: ^2.4.0 peerDependencies: react: ^16.6.0 || 17 || 18 @@ -9585,7 +9583,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 826b6ed593b367ad0a375de4e84b3ca3c7334c6583dcf307bb90e9c45c79c7f85cf43f6d15d15b9827e1da1d13f807b802c252a6725d0af4bd5a3fd43cbd9879 + checksum: c842bec10a78b88e53b54170bcd7819ec4f324abf18400f6a66049f4f78af587064fbb156b0f04e0a02d4b60407dcce713c2140b266a41762c6b8a5a54a7627d languageName: node linkType: hard @@ -9653,11 +9651,11 @@ __metadata: "react-native-fast-image@patch:react-native-fast-image@npm%3A8.6.3#./.yarn/patches/react-native-fast-image-npm-8.6.3-03ee2d23c0.patch::locator=tooot%40workspace%3A.": version: 8.6.3 - resolution: "react-native-fast-image@patch:react-native-fast-image@npm%3A8.6.3#./.yarn/patches/react-native-fast-image-npm-8.6.3-03ee2d23c0.patch::version=8.6.3&hash=65bdbb&locator=tooot%40workspace%3A." + resolution: "react-native-fast-image@patch:react-native-fast-image@npm%3A8.6.3#./.yarn/patches/react-native-fast-image-npm-8.6.3-03ee2d23c0.patch::version=8.6.3&hash=1a9a6d&locator=tooot%40workspace%3A." peerDependencies: react: ^17 || ^18 react-native: ">=0.60.0" - checksum: 09d7ccebd6075b85fc06d60093edf2611d97a6571b5bcd7d915df0316866a09d3bf9a74960a64aa75ac8901c9840f78b70aac58ff8b6ac627968259151109328 + checksum: 4b2c6b2d6fc461f26936ff5033acccf7aef15f9d176ea835d09c87bee83accbb6c2b98a2435ad019a305c0751aa43040c153a6d5735664ace31e64aad0b2bc61 languageName: node linkType: hard @@ -9839,16 +9837,16 @@ __metadata: languageName: node linkType: hard -"react-native-svg@npm:^13.7.0": - version: 13.7.0 - resolution: "react-native-svg@npm:13.7.0" +"react-native-svg@npm:^13.8.0": + version: 13.8.0 + resolution: "react-native-svg@npm:13.8.0" dependencies: css-select: ^5.1.0 css-tree: ^1.1.3 peerDependencies: react: "*" react-native: "*" - checksum: f3609dbb9d2614323914a8cc5ae11092aacb3a140e6d5ff57b255ddb6a9d2dc2efd5c28f65c6232e0b7228ec3231359540a7fa11ec92f944e6e98d570b147483 + checksum: dfcad65978bb2e06a81b6f6262fad0699fa48e720ac2e521e983da4f6fb7747435f6a15df08b9d57559299272d0ffa674b4f0a55482f8b37905ee1e96f51b46a languageName: node linkType: hard @@ -9876,9 +9874,9 @@ __metadata: languageName: node linkType: hard -"react-native@npm:^0.70.6": - version: 0.70.6 - resolution: "react-native@npm:0.70.6" +"react-native@npm:^0.70.7": + version: 0.70.7 + resolution: "react-native@npm:0.70.7" dependencies: "@jest/create-cache-key-function": ^27.0.1 "@react-native-community/cli": 9.3.2 @@ -9916,7 +9914,7 @@ __metadata: react: 18.1.0 bin: react-native: cli.js - checksum: ae57e1b86f4e6950913f8b59732ab57d2dd1ee30af6c2ca68f88b03b8448cb01c51967b148550a8b8cb6d42ca9b73cead2e854b9ecc2f4b9d5d75fccff798846 + checksum: ec4af6e06b42ca98f5c404ca554daec758054bdae9be2fc03524fa2af4fb3baf436f7c971784fa82915777abec8fadbf1c86d6073a3fffb4a61322dea89fff78 languageName: node linkType: hard @@ -11395,7 +11393,7 @@ __metadata: "@formatjs/intl-numberformat": ^8.3.3 "@formatjs/intl-pluralrules": ^5.1.8 "@formatjs/intl-relativetimeformat": ^11.1.8 - "@mattermost/react-native-paste-input": ^0.6.0 + "@mattermost/react-native-paste-input": ^0.6.1 "@neverdull-agency/expo-unlimited-secure-store": ^1.0.10 "@react-native-async-storage/async-storage": ~1.17.11 "@react-native-camera-roll/camera-roll": ^5.2.3 @@ -11403,21 +11401,21 @@ __metadata: "@react-native-community/blur": ^4.3.0 "@react-native-community/netinfo": 9.3.7 "@react-native-community/segmented-control": ^2.2.2 - "@react-native-firebase/app": ^16.5.2 + "@react-native-firebase/app": ^16.7.0 "@react-native-menu/menu": ^0.7.3 - "@react-navigation/bottom-tabs": ^6.5.3 - "@react-navigation/native": ^6.1.2 - "@react-navigation/native-stack": ^6.9.8 - "@react-navigation/stack": ^6.3.11 - "@sentry/react-native": 4.13.0 + "@react-navigation/bottom-tabs": ^6.5.4 + "@react-navigation/native": ^6.1.3 + "@react-navigation/native-stack": ^6.9.9 + "@react-navigation/stack": ^6.3.12 + "@sentry/react-native": 4.14.0 "@sharcoux/slider": ^6.1.1 - "@tanstack/react-query": ^4.23.0 + "@tanstack/react-query": ^4.24.4 "@types/diff": ^5.0.2 "@types/linkify-it": ^3.0.2 "@types/lodash": ^4.14.191 "@types/react": ^18.0.27 "@types/react-dom": ^18.0.10 - "@types/react-native": ^0.70.9 + "@types/react-native": ^0.70.10 "@types/react-native-share-menu": ^5.0.2 "@types/url-parse": ^1.4.8 axios: ^1.2.4 @@ -11452,8 +11450,8 @@ __metadata: react: ^18.2.0 react-dom: ^18.2.0 react-i18next: ^12.1.4 - react-intl: ^6.2.5 - react-native: ^0.70.6 + react-intl: ^6.2.7 + react-native: ^0.70.7 react-native-blurhash: ^1.1.10 react-native-clean-project: ^4.0.1 react-native-fast-image: ^8.6.3 @@ -11470,12 +11468,12 @@ __metadata: react-native-safe-area-context: ^4.5.0 react-native-screens: ^3.19.0 react-native-share-menu: ^6.0.0 - react-native-svg: ^13.7.0 + react-native-svg: ^13.8.0 react-native-swipe-list-view: ^3.2.9 react-native-tab-view: ^3.3.4 react-redux: ^8.0.5 rn-placeholder: ^3.0.3 - typescript: ^4.9.4 + typescript: ^4.9.5 url-parse: ^1.5.10 zeego: ^1.0.2 languageName: unknown @@ -11570,23 +11568,23 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^4.9.4": - version: 4.9.4 - resolution: "typescript@npm:4.9.4" +"typescript@npm:^4.9.5": + version: 4.9.5 + resolution: "typescript@npm:4.9.5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: e782fb9e0031cb258a80000f6c13530288c6d63f1177ed43f770533fdc15740d271554cdae86701c1dd2c83b082cea808b07e97fd68b38a172a83dbf9e0d0ef9 + checksum: ee000bc26848147ad423b581bd250075662a354d84f0e06eb76d3b892328d8d4440b7487b5a83e851b12b255f55d71835b008a66cbf8f255a11e4400159237db languageName: node linkType: hard -"typescript@patch:typescript@^4.9.4#~builtin": - version: 4.9.4 - resolution: "typescript@patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=ad5954" +"typescript@patch:typescript@^4.9.5#~builtin": + version: 4.9.5 + resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=ad5954" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 1caaea6cb7f813e64345190fddc4e6c924d0b698ab81189b503763c4a18f7f5501c69362979d36e19c042d89d936443e768a78b0675690b35eb663d19e0eae71 + checksum: 8f6260acc86b56bfdda6004bc53f32ea548f543e8baef7071c8e34d29d292f3e375c8416556c8de10b24deef6933cd1c16a8233dc84a3dd43a13a13265d0faab languageName: node linkType: hard