big dependency update
This commit is contained in:
+1
-6
@@ -55,7 +55,6 @@ module.exports = function (_config) {
|
|||||||
icon: './assets/app-icons/ios_icon_default_next.png',
|
icon: './assets/app-icons/ios_icon_default_next.png',
|
||||||
userInterfaceStyle: 'automatic',
|
userInterfaceStyle: 'automatic',
|
||||||
primaryColor: '#006AFF',
|
primaryColor: '#006AFF',
|
||||||
newArchEnabled: false,
|
|
||||||
ios: {
|
ios: {
|
||||||
supportsTablet: false,
|
supportsTablet: false,
|
||||||
bundleIdentifier: 'xyz.blueskyweb.app',
|
bundleIdentifier: 'xyz.blueskyweb.app',
|
||||||
@@ -182,10 +181,6 @@ module.exports = function (_config) {
|
|||||||
androidStatusBar: {
|
androidStatusBar: {
|
||||||
barStyle: 'light-content',
|
barStyle: 'light-content',
|
||||||
},
|
},
|
||||||
// Dark nav bar in light mode is better than light nav bar in dark mode
|
|
||||||
androidNavigationBar: {
|
|
||||||
barStyle: 'light-content',
|
|
||||||
},
|
|
||||||
android: {
|
android: {
|
||||||
icon: './assets/app-icons/android_icon_default_next.png',
|
icon: './assets/app-icons/android_icon_default_next.png',
|
||||||
adaptiveIcon: {
|
adaptiveIcon: {
|
||||||
@@ -259,7 +254,7 @@ module.exports = function (_config) {
|
|||||||
'expo-build-properties',
|
'expo-build-properties',
|
||||||
{
|
{
|
||||||
ios: {
|
ios: {
|
||||||
deploymentTarget: '15.1',
|
deploymentTarget: '16.4',
|
||||||
buildReactNativeFromSource: true,
|
buildReactNativeFromSource: true,
|
||||||
ccacheEnabled: IS_DEV,
|
ccacheEnabled: IS_DEV,
|
||||||
cxxLanguageStandard: 'c++23',
|
cxxLanguageStandard: 'c++23',
|
||||||
|
|||||||
+52
-51
@@ -101,7 +101,6 @@
|
|||||||
"@bsky.app/expo-image-crop-tool": "^0.5.1",
|
"@bsky.app/expo-image-crop-tool": "^0.5.1",
|
||||||
"@bsky.app/expo-scroll-edge-effect": "^0.1.4",
|
"@bsky.app/expo-scroll-edge-effect": "^0.1.4",
|
||||||
"@bsky.app/expo-translate-text": "^0.2.9",
|
"@bsky.app/expo-translate-text": "^0.2.9",
|
||||||
"@bsky.app/react-native-mmkv": "2.12.5",
|
|
||||||
"@bsky.app/sift": "^0.3.8",
|
"@bsky.app/sift": "^0.3.8",
|
||||||
"@bsky.app/tapper": "^0.5.7",
|
"@bsky.app/tapper": "^0.5.7",
|
||||||
"@bsky.app/video": "0.3.6",
|
"@bsky.app/video": "0.3.6",
|
||||||
@@ -109,6 +108,7 @@
|
|||||||
"@emoji-mart/data": "^1.2.1",
|
"@emoji-mart/data": "^1.2.1",
|
||||||
"@emoji-mart/react": "^1.1.1",
|
"@emoji-mart/react": "^1.1.1",
|
||||||
"@expo/html-elements": "^0.12.5",
|
"@expo/html-elements": "^0.12.5",
|
||||||
|
"@expo/ui": "^56.0.14",
|
||||||
"@expo/webpack-config": "^19.0.1",
|
"@expo/webpack-config": "^19.0.1",
|
||||||
"@floating-ui/dom": "^1.6.3",
|
"@floating-ui/dom": "^1.6.3",
|
||||||
"@floating-ui/react-dom": "^2.0.8",
|
"@floating-ui/react-dom": "^2.0.8",
|
||||||
@@ -155,41 +155,41 @@
|
|||||||
"emoji-mart": "^5.6.0",
|
"emoji-mart": "^5.6.0",
|
||||||
"emoji-regex": "^10.4.0",
|
"emoji-regex": "^10.4.0",
|
||||||
"eventemitter3": "^5.0.1",
|
"eventemitter3": "^5.0.1",
|
||||||
"expo": "54.0.34",
|
"expo": "56.0.5",
|
||||||
"expo-application": "~7.0.8",
|
"expo-application": "~56.0.3",
|
||||||
"expo-blur": "~15.0.8",
|
"expo-blur": "~56.0.3",
|
||||||
"expo-build-properties": "~1.0.10",
|
"expo-build-properties": "~56.0.15",
|
||||||
"expo-camera": "~17.0.10",
|
"expo-camera": "~56.0.7",
|
||||||
"expo-clipboard": "~8.0.8",
|
"expo-clipboard": "~56.0.3",
|
||||||
"expo-contacts": "^15.0.10",
|
"expo-contacts": "^56.0.7",
|
||||||
"expo-dev-client": "~6.0.20",
|
"expo-dev-client": "~56.0.16",
|
||||||
"expo-device": "~8.0.10",
|
"expo-device": "~56.0.4",
|
||||||
"expo-file-system": "~19.0.21",
|
"expo-file-system": "~56.0.7",
|
||||||
"expo-font": "~14.0.11",
|
"expo-font": "~56.0.5",
|
||||||
"expo-glass-effect": "55.0.8",
|
"expo-glass-effect": "56.0.4",
|
||||||
"expo-haptics": "~15.0.8",
|
"expo-haptics": "~56.0.3",
|
||||||
"expo-image": "~3.0.11",
|
"expo-image": "~56.0.9",
|
||||||
"expo-image-manipulator": "~14.0.8",
|
"expo-image-manipulator": "~56.0.15",
|
||||||
"expo-image-picker": "~17.0.10",
|
"expo-image-picker": "~56.0.14",
|
||||||
"expo-intent-launcher": "~13.0.8",
|
"expo-intent-launcher": "~56.0.4",
|
||||||
"expo-keep-awake": "~15.0.8",
|
"expo-keep-awake": "~56.0.3",
|
||||||
"expo-linear-gradient": "~15.0.8",
|
"expo-linear-gradient": "~56.0.4",
|
||||||
"expo-linking": "~8.0.11",
|
"expo-linking": "~56.0.12",
|
||||||
"expo-localization": "~17.0.8",
|
"expo-localization": "~56.0.6",
|
||||||
"expo-location": "~19.0.8",
|
"expo-location": "~56.0.14",
|
||||||
"expo-media-library": "~18.2.1",
|
"expo-media-library": "~56.0.6",
|
||||||
"expo-notifications": "~0.32.17",
|
"expo-notifications": "~56.0.14",
|
||||||
"expo-paste-input": "^0.2.1",
|
"expo-paste-input": "^0.2.1",
|
||||||
"expo-privacy-sensitive": "^0.1.0",
|
"expo-privacy-sensitive": "^0.1.0",
|
||||||
"expo-screen-orientation": "~9.0.8",
|
"expo-screen-orientation": "~56.0.5",
|
||||||
"expo-sharing": "~14.0.8",
|
"expo-sharing": "~56.0.14",
|
||||||
"expo-sms": "^14.0.7",
|
"expo-sms": "^56.0.3",
|
||||||
"expo-splash-screen": "~31.0.13",
|
"expo-splash-screen": "~56.0.10",
|
||||||
"expo-system-ui": "~6.0.9",
|
"expo-system-ui": "~56.0.5",
|
||||||
"expo-updates": "~29.0.17",
|
"expo-updates": "~56.0.17",
|
||||||
"expo-video": "~3.0.16",
|
"expo-video": "~56.1.2",
|
||||||
"expo-video-thumbnails": "^10.0.8",
|
"expo-video-thumbnails": "^56.0.3",
|
||||||
"expo-web-browser": "~15.0.10",
|
"expo-web-browser": "~56.0.5",
|
||||||
"fast-deep-equal": "^3.1.3",
|
"fast-deep-equal": "^3.1.3",
|
||||||
"fast-text-encoding": "^1.0.6",
|
"fast-text-encoding": "^1.0.6",
|
||||||
"fuse.js": "^7.1.0",
|
"fuse.js": "^7.1.0",
|
||||||
@@ -208,34 +208,35 @@
|
|||||||
"normalize-url": "^8.0.0",
|
"normalize-url": "^8.0.0",
|
||||||
"psl": "1.9.0",
|
"psl": "1.9.0",
|
||||||
"radix-ui": "^1.4.3",
|
"radix-ui": "^1.4.3",
|
||||||
"react": "19.1.0",
|
"react": "19.2.3",
|
||||||
"react-compiler-runtime": "19.1.0-rc.3",
|
"react-compiler-runtime": "19.1.0-rc.3",
|
||||||
"react-dom": "19.1.0",
|
"react-dom": "19.2.3",
|
||||||
"react-hotkeys-hook": "5.2.4",
|
"react-hotkeys-hook": "5.2.4",
|
||||||
"react-image-crop": "^11.0.7",
|
"react-image-crop": "^11.0.7",
|
||||||
"react-is": "19",
|
"react-is": "19",
|
||||||
"react-keyed-flatten-children": "^5.0.0",
|
"react-keyed-flatten-children": "^5.0.0",
|
||||||
"react-native": "0.81.5",
|
"react-native": "0.85.3",
|
||||||
"react-native-compressor": "1.13.0",
|
"react-native-compressor": "1.13.0",
|
||||||
"react-native-date-picker": "^5.0.13",
|
|
||||||
"react-native-device-attest": "^0.1.6",
|
"react-native-device-attest": "^0.1.6",
|
||||||
"react-native-drawer-layout": "^4.2.3",
|
"react-native-drawer-layout": "^4.2.3",
|
||||||
"react-native-edge-to-edge": "^1.8.1",
|
"react-native-edge-to-edge": "^1.8.1",
|
||||||
"react-native-gesture-handler": "~2.28.0",
|
"react-native-gesture-handler": "~2.31.2",
|
||||||
"react-native-keyboard-controller": "^1.21.8",
|
"react-native-keyboard-controller": "^1.21.6",
|
||||||
|
"react-native-mmkv": "^3.3.3",
|
||||||
"react-native-pager-view": "6.8.0",
|
"react-native-pager-view": "6.8.0",
|
||||||
"react-native-progress": "bluesky-social/react-native-progress",
|
"react-native-progress": "bluesky-social/react-native-progress",
|
||||||
"react-native-qrcode-styled": "^0.3.3",
|
"react-native-qrcode-styled": "^0.3.3",
|
||||||
"react-native-reanimated": "3.19.1",
|
"react-native-reanimated": "4.4.0",
|
||||||
"react-native-safe-area-context": "~5.6.0",
|
"react-native-safe-area-context": "~5.7.0",
|
||||||
"react-native-screens": "4.24.0",
|
"react-native-screens": "4.25.2",
|
||||||
"react-native-svg": "15.12.1",
|
"react-native-svg": "15.15.4",
|
||||||
"react-native-uitextview": "^1.4.0",
|
"react-native-uitextview": "^2.2.0",
|
||||||
"react-native-uuid": "^2.0.3",
|
"react-native-uuid": "^2.0.3",
|
||||||
"react-native-view-shot": "^4.0.3",
|
"react-native-view-shot": "^5.1.0",
|
||||||
"react-native-web": "^0.21.0",
|
"react-native-web": "^0.21.0",
|
||||||
"react-native-web-webview": "^1.0.2",
|
"react-native-web-webview": "^1.0.2",
|
||||||
"react-native-webview": "^13.15.0",
|
"react-native-webview": "^13.16.1",
|
||||||
|
"react-native-worklets": "^0.9.1",
|
||||||
"react-remove-scroll-bar": "^2.3.8",
|
"react-remove-scroll-bar": "^2.3.8",
|
||||||
"react-responsive": "^10.0.1",
|
"react-responsive": "^10.0.1",
|
||||||
"react-textarea-autosize": "^8.5.3",
|
"react-textarea-autosize": "^8.5.3",
|
||||||
@@ -267,13 +268,13 @@
|
|||||||
"@types/lodash.debounce": "^4.0.7",
|
"@types/lodash.debounce": "^4.0.7",
|
||||||
"@types/lodash.shuffle": "^4.2.7",
|
"@types/lodash.shuffle": "^4.2.7",
|
||||||
"@types/psl": "1.1.1",
|
"@types/psl": "1.1.1",
|
||||||
"@types/react": "^19.1.17",
|
"@types/react": "^19.2.15",
|
||||||
"@types/react-dom": "^19.1.11",
|
"@types/react-dom": "^19.2.3",
|
||||||
"@typescript/native-preview": "^7.0.0-dev.20260428.1",
|
"@typescript/native-preview": "^7.0.0-dev.20260428.1",
|
||||||
"babel-jest": "^29.7.0",
|
"babel-jest": "^29.7.0",
|
||||||
"babel-plugin-module-resolver": "^5.0.2",
|
"babel-plugin-module-resolver": "^5.0.2",
|
||||||
"babel-plugin-react-compiler": "19.1.0-rc.3",
|
"babel-plugin-react-compiler": "19.1.0-rc.3",
|
||||||
"babel-preset-expo": "~54.0.10",
|
"babel-preset-expo": "~56.0.13",
|
||||||
"eslint": "^9.39.2",
|
"eslint": "^9.39.2",
|
||||||
"eslint-import-resolver-typescript": "^4.4.4",
|
"eslint-import-resolver-typescript": "^4.4.4",
|
||||||
"eslint-plugin-bsky-internal": "link:eslint",
|
"eslint-plugin-bsky-internal": "link:eslint",
|
||||||
@@ -290,7 +291,7 @@
|
|||||||
"husky": "^9.1.7",
|
"husky": "^9.1.7",
|
||||||
"is-ci": "^3.0.1",
|
"is-ci": "^3.0.1",
|
||||||
"jest": "^29.7.0",
|
"jest": "^29.7.0",
|
||||||
"jest-expo": "~54.0.17",
|
"jest-expo": "~56.0.4",
|
||||||
"jest-junit": "^16.0.0",
|
"jest-junit": "^16.0.0",
|
||||||
"lint-staged": "^13.2.3",
|
"lint-staged": "^13.2.3",
|
||||||
"prettier": "^3.8.3",
|
"prettier": "^3.8.3",
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
diff --git a/ios/RNDatePicker.h b/ios/RNDatePicker.h
|
|
||||||
index 480746eb7acfbe86f67547d9e1de7a5be4d5faf2..13d30cb547195993dfcb4005cc0d248de9ac391a 100644
|
|
||||||
--- a/ios/RNDatePicker.h
|
|
||||||
+++ b/ios/RNDatePicker.h
|
|
||||||
@@ -15,6 +15,7 @@ NS_ASSUME_NONNULL_END
|
|
||||||
#else
|
|
||||||
#import "DatePicker.h"
|
|
||||||
#import <UIKit/UIKit.h>
|
|
||||||
+#include <string>
|
|
||||||
|
|
||||||
@interface RNDatePicker : DatePicker
|
|
||||||
|
|
||||||
@@ -22,4 +23,3 @@ NS_ASSUME_NONNULL_END
|
|
||||||
@end
|
|
||||||
|
|
||||||
#endif
|
|
||||||
-
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
diff --git a/src/components/KeyboardChatScrollView/useExtraContentPadding/index.ts b/src/components/KeyboardChatScrollView/useExtraContentPadding/index.ts
|
|
||||||
index 0f6d7c67a307885310ab184fdf9e7a5c7b296825..1e0bdd5b1d3b1eceb47bfb0050da84061fd7f77c 100644
|
|
||||||
--- a/src/components/KeyboardChatScrollView/useExtraContentPadding/index.ts
|
|
||||||
+++ b/src/components/KeyboardChatScrollView/useExtraContentPadding/index.ts
|
|
||||||
@@ -1,8 +1,6 @@
|
|
||||||
import { useCallback } from "react";
|
|
||||||
-import { Platform } from "react-native";
|
|
||||||
import { scrollTo, useAnimatedReaction } from "react-native-reanimated";
|
|
||||||
|
|
||||||
-import { IS_FABRIC } from "../../../architecture";
|
|
||||||
import { isScrollAtEnd, shouldShiftContent } from "../useChatKeyboard/helpers";
|
|
||||||
|
|
||||||
import type { KeyboardLiftBehavior } from "../useChatKeyboard/types";
|
|
||||||
@@ -52,7 +50,6 @@ function useExtraContentPadding(options: UseExtraContentPaddingOptions): void {
|
|
||||||
scroll,
|
|
||||||
layout,
|
|
||||||
size,
|
|
||||||
- contentOffsetY,
|
|
||||||
inverted,
|
|
||||||
keyboardLiftBehavior,
|
|
||||||
freeze,
|
|
||||||
@@ -62,20 +59,14 @@ function useExtraContentPadding(options: UseExtraContentPaddingOptions): void {
|
|
||||||
(target: number) => {
|
|
||||||
"worklet";
|
|
||||||
|
|
||||||
- if (contentOffsetY && IS_FABRIC) {
|
|
||||||
- // eslint-disable-next-line react-compiler/react-compiler
|
|
||||||
- contentOffsetY.value = target;
|
|
||||||
- } else if (Platform.OS === "android") {
|
|
||||||
- // Defer scrollTo so the animatedProps inset commit lands first;
|
|
||||||
- // otherwise the native ScrollView clamps to the old range.
|
|
||||||
- requestAnimationFrame(() => {
|
|
||||||
- scrollTo(scrollViewRef, 0, target, false);
|
|
||||||
- });
|
|
||||||
- } else {
|
|
||||||
+ // Always defer scrollTo so the animatedProps inset commit lands first;
|
|
||||||
+ // otherwise the native ScrollView clamps contentOffset to the old
|
|
||||||
+ // contentInset range (iOS Fabric) or the old contentInsetBottom (Android).
|
|
||||||
+ requestAnimationFrame(() => {
|
|
||||||
scrollTo(scrollViewRef, 0, target, false);
|
|
||||||
- }
|
|
||||||
+ });
|
|
||||||
},
|
|
||||||
- [scrollViewRef, contentOffsetY],
|
|
||||||
+ [scrollViewRef],
|
|
||||||
);
|
|
||||||
|
|
||||||
useAnimatedReaction(
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
diff --git a/src/index.js b/src/index.js
|
|
||||||
index fa76d7e1272e7fbe4bbd153104db127f1f6eecad..018b6860b7fa02d498d73b5fd06028bae99abedb 100644
|
|
||||||
--- a/src/index.js
|
|
||||||
+++ b/src/index.js
|
|
||||||
@@ -125,13 +125,17 @@ export function captureRef<T: React$ElementType>(
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (typeof view !== "number") {
|
|
||||||
- const node = findNodeHandle(view);
|
|
||||||
- if (!node) {
|
|
||||||
- return Promise.reject(
|
|
||||||
- new Error("findNodeHandle failed to resolve view=" + String(view))
|
|
||||||
- );
|
|
||||||
+ if (Platform.OS == 'web') {
|
|
||||||
+ view = view;
|
|
||||||
+ } else {
|
|
||||||
+ const node = findNodeHandle(view);
|
|
||||||
+ if (!node) {
|
|
||||||
+ return Promise.reject(
|
|
||||||
+ new Error("findNodeHandle failed to resolve view=" + String(view))
|
|
||||||
+ );
|
|
||||||
+ }
|
|
||||||
+ view = node;
|
|
||||||
}
|
|
||||||
- view = node;
|
|
||||||
}
|
|
||||||
const { options, errors } = validateOptions(optionsObject);
|
|
||||||
if (__DEV__ && errors.length > 0) {
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
## react-native-view-shot patch
|
|
||||||
|
|
||||||
Temporary patch for web, where `view`'s type has changed.
|
|
||||||
Generated
+2296
-2113
File diff suppressed because it is too large
Load Diff
+10
-19
@@ -4,41 +4,32 @@ strictPeerDependencies: false # default: false
|
|||||||
trustPolicy: 'no-downgrade' # default: off
|
trustPolicy: 'no-downgrade' # default: off
|
||||||
trustPolicyIgnoreAfter: 10080 # 7 days, default: undefined
|
trustPolicyIgnoreAfter: 10080 # 7 days, default: undefined
|
||||||
overrides:
|
overrides:
|
||||||
'@react-native/babel-preset': '0.81.5'
|
'@react-native/babel-preset': '0.85.3'
|
||||||
'@react-native/normalize-colors': '0.81.5'
|
'@react-native/normalize-colors': '0.85.3'
|
||||||
'@expo/image-utils': '0.8.12'
|
'@expo/image-utils': '0.8.12'
|
||||||
'@types/estree': '1.0.6'
|
'@types/estree': '1.0.6'
|
||||||
'react-native-compressor': '1.13.0'
|
'react-native-compressor': '1.13.0'
|
||||||
'react-native-reanimated': '3.19.1'
|
|
||||||
'psl': '1.9.0'
|
'psl': '1.9.0'
|
||||||
'@types/psl': '1.1.1'
|
'@types/psl': '1.1.1'
|
||||||
'react-native-screens': '4.24.0'
|
|
||||||
allowBuilds:
|
allowBuilds:
|
||||||
'@sentry/cli': true
|
'@sentry/cli': true
|
||||||
'core-js-pure': true
|
'core-js-pure': true
|
||||||
'esbuild': true
|
'esbuild': true
|
||||||
|
'msgpackr-extract': true
|
||||||
'unrs-resolver': true
|
'unrs-resolver': true
|
||||||
patchedDependencies:
|
patchedDependencies:
|
||||||
'@discord/bottom-sheet@4.6.1': patches/@discord__bottom-sheet@4.6.1.patch
|
'@discord/bottom-sheet@4.6.1': patches/@discord__bottom-sheet@4.6.1.patch
|
||||||
'@sentry/react-native@6.20.0': patches/@sentry__react-native@6.20.0.patch
|
'@sentry/react-native@6.20.0': patches/@sentry__react-native@6.20.0.patch
|
||||||
'expo-glass-effect@55.0.8': patches/expo-glass-effect@55.0.8.patch
|
# 'expo-haptics@15.0.8': patches/expo-haptics@15.0.8.patch
|
||||||
'expo-haptics@15.0.8': patches/expo-haptics@15.0.8.patch
|
# 'expo-image-picker@17.0.11': patches/expo-image-picker@17.0.11.patch
|
||||||
'expo-image-picker@17.0.11': patches/expo-image-picker@17.0.11.patch
|
# 'expo-media-library@18.2.1': patches/expo-media-library@18.2.1.patch
|
||||||
'expo-image@3.0.11': patches/expo-image@3.0.11.patch
|
# 'expo-modules-core@3.0.30': patches/expo-modules-core@3.0.30.patch
|
||||||
'expo-media-library@18.2.1': patches/expo-media-library@18.2.1.patch
|
# 'expo-notifications@0.32.17': patches/expo-notifications@0.32.17.patch
|
||||||
'expo-modules-core@3.0.30': patches/expo-modules-core@3.0.30.patch
|
# 'expo-updates@29.0.17': patches/expo-updates@29.0.17.patch
|
||||||
'expo-notifications@0.32.17': patches/expo-notifications@0.32.17.patch
|
|
||||||
'expo-updates@29.0.17': patches/expo-updates@29.0.17.patch
|
|
||||||
'react-native-compressor@1.13.0': patches/react-native-compressor@1.13.0.patch
|
'react-native-compressor@1.13.0': patches/react-native-compressor@1.13.0.patch
|
||||||
'react-native-date-picker@5.0.13': patches/react-native-date-picker@5.0.13.patch
|
|
||||||
'react-native-drawer-layout@4.2.3': patches/react-native-drawer-layout@4.2.3.patch
|
'react-native-drawer-layout@4.2.3': patches/react-native-drawer-layout@4.2.3.patch
|
||||||
'react-native-keyboard-controller@1.21.8': patches/react-native-keyboard-controller@1.21.8.patch
|
|
||||||
'react-native-pager-view@6.8.0': patches/react-native-pager-view@6.8.0.patch
|
'react-native-pager-view@6.8.0': patches/react-native-pager-view@6.8.0.patch
|
||||||
'react-native-reanimated@3.19.1': patches/react-native-reanimated@3.19.1.patch
|
'react-native-svg@15.15.4': patches/react-native-svg@15.15.4.patch
|
||||||
'react-native-svg@15.12.1': patches/react-native-svg@15.12.1.patch
|
|
||||||
'react-native-uitextview@1.4.0': patches/react-native-uitextview@1.4.0.patch
|
|
||||||
'react-native-view-shot@4.0.3': patches/react-native-view-shot@4.0.3.patch
|
|
||||||
'react-native@0.81.5': patches/react-native@0.81.5.patch
|
|
||||||
'sonner-native@0.21.0': patches/sonner-native@0.21.0.patch
|
'sonner-native@0.21.0': patches/sonner-native@0.21.0.patch
|
||||||
minimumReleaseAgeExclude:
|
minimumReleaseAgeExclude:
|
||||||
- '@atproto/*'
|
- '@atproto/*'
|
||||||
|
|||||||
+3
-1
@@ -20,6 +20,7 @@ import {Image} from 'expo-image'
|
|||||||
import * as SplashScreen from 'expo-splash-screen'
|
import * as SplashScreen from 'expo-splash-screen'
|
||||||
|
|
||||||
import {Logotype} from '#/view/icons/Logotype'
|
import {Logotype} from '#/view/icons/Logotype'
|
||||||
|
import {atoms as a} from '#/alf'
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import splashImagePointer from '../assets/splash/splash.png'
|
import splashImagePointer from '../assets/splash/splash.png'
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
@@ -223,7 +224,8 @@ export function Splash(props: React.PropsWithChildren<Props>) {
|
|||||||
{!isAnimationComplete && (
|
{!isAnimationComplete && (
|
||||||
<Animated.View
|
<Animated.View
|
||||||
style={[
|
style={[
|
||||||
StyleSheet.absoluteFillObject,
|
a.absolute,
|
||||||
|
a.inset_0,
|
||||||
logoWrapperAnimation,
|
logoWrapperAnimation,
|
||||||
{
|
{
|
||||||
flex: 1,
|
flex: 1,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import {MMKV} from '@bsky.app/react-native-mmkv'
|
import {MMKV} from 'react-native-mmkv'
|
||||||
import {setPolyfills} from '@growthbook/growthbook'
|
import {setPolyfills} from '@growthbook/growthbook'
|
||||||
import {GrowthBook} from '@growthbook/growthbook-react'
|
import {GrowthBook} from '@growthbook/growthbook-react'
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
import {useCallback, useImperativeHandle, useState} from 'react'
|
import {useCallback, useImperativeHandle, useState} from 'react'
|
||||||
import {Keyboard} from 'react-native'
|
import {Keyboard} from 'react-native'
|
||||||
import DatePicker from 'react-native-date-picker'
|
|
||||||
import {useLingui} from '@lingui/react'
|
|
||||||
|
|
||||||
import {useTheme} from '#/alf'
|
// import {useLingui} from '@lingui/react'
|
||||||
|
// import {useTheme} from '#/alf'
|
||||||
import {type DateFieldProps} from '#/components/forms/DateField/types'
|
import {type DateFieldProps} from '#/components/forms/DateField/types'
|
||||||
import {toSimpleDateString} from '#/components/forms/DateField/utils'
|
// import {toSimpleDateString} from '#/components/forms/DateField/utils'
|
||||||
import * as TextField from '#/components/forms/TextField'
|
import * as TextField from '#/components/forms/TextField'
|
||||||
import {DateFieldButton} from './index.shared'
|
import {DateFieldButton} from './index.shared'
|
||||||
|
|
||||||
@@ -15,26 +14,26 @@ export const LabelText = TextField.LabelText
|
|||||||
export function DateField({
|
export function DateField({
|
||||||
value,
|
value,
|
||||||
inputRef,
|
inputRef,
|
||||||
onChangeDate,
|
// onChangeDate,
|
||||||
label,
|
label,
|
||||||
isInvalid,
|
isInvalid,
|
||||||
testID,
|
// testID,
|
||||||
accessibilityHint,
|
accessibilityHint,
|
||||||
maximumDate,
|
// maximumDate,
|
||||||
}: DateFieldProps) {
|
}: DateFieldProps) {
|
||||||
const {i18n} = useLingui()
|
// const {i18n} = useLingui()
|
||||||
const t = useTheme()
|
// const t = useTheme()
|
||||||
const [open, setOpen] = useState(false)
|
const [open, setOpen] = useState(false)
|
||||||
|
|
||||||
const onChangeInternal = useCallback(
|
// const onChangeInternal = useCallback(
|
||||||
(date: Date) => {
|
// (date: Date) => {
|
||||||
setOpen(false)
|
// setOpen(false)
|
||||||
|
|
||||||
const formatted = toSimpleDateString(date)
|
// const formatted = toSimpleDateString(date)
|
||||||
onChangeDate(formatted)
|
// onChangeDate(formatted)
|
||||||
},
|
// },
|
||||||
[onChangeDate, setOpen],
|
// [onChangeDate, setOpen],
|
||||||
)
|
// )
|
||||||
|
|
||||||
useImperativeHandle(
|
useImperativeHandle(
|
||||||
inputRef,
|
inputRef,
|
||||||
@@ -54,9 +53,9 @@ export function DateField({
|
|||||||
setOpen(true)
|
setOpen(true)
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
const onCancel = useCallback(() => {
|
// const onCancel = useCallback(() => {
|
||||||
setOpen(false)
|
// setOpen(false)
|
||||||
}, [])
|
// }, [])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@@ -68,31 +67,36 @@ export function DateField({
|
|||||||
accessibilityHint={accessibilityHint}
|
accessibilityHint={accessibilityHint}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{open && (
|
{
|
||||||
// Android implementation of DatePicker currently does not change default button colors according to theme and only takes hex values for buttonColor
|
open &&
|
||||||
// Can remove the buttonColor setting if/when this PR is merged: https://github.com/henninghall/react-native-date-picker/pull/871
|
// Android implementation of DatePicker currently does not change default button colors according to theme and only takes hex values for buttonColor
|
||||||
<DatePicker
|
// Can remove the buttonColor setting if/when this PR is merged: https://github.com/henninghall/react-native-date-picker/pull/871
|
||||||
modal
|
|
||||||
open
|
{
|
||||||
timeZoneOffsetInMinutes={0}
|
/* TODO: replace with expo ui date picker */
|
||||||
theme={t.scheme}
|
|
||||||
// @ts-ignore TODO
|
|
||||||
buttonColor={t.name === 'light' ? '#000000' : '#ffffff'}
|
|
||||||
date={new Date(value)}
|
|
||||||
onConfirm={onChangeInternal}
|
|
||||||
onCancel={onCancel}
|
|
||||||
mode="date"
|
|
||||||
locale={i18n.locale}
|
|
||||||
is24hourSource="locale"
|
|
||||||
testID={`${testID}-datepicker`}
|
|
||||||
aria-label={label}
|
|
||||||
accessibilityLabel={label}
|
|
||||||
accessibilityHint={accessibilityHint}
|
|
||||||
maximumDate={
|
|
||||||
maximumDate ? new Date(toSimpleDateString(maximumDate)) : undefined
|
|
||||||
}
|
}
|
||||||
/>
|
// <DatePicker
|
||||||
)}
|
// modal
|
||||||
|
// open
|
||||||
|
// timeZoneOffsetInMinutes={0}
|
||||||
|
// theme={t.scheme}
|
||||||
|
// // @ts-ignore TODO
|
||||||
|
// buttonColor={t.name === 'light' ? '#000000' : '#ffffff'}
|
||||||
|
// date={new Date(value)}
|
||||||
|
// onConfirm={onChangeInternal}
|
||||||
|
// onCancel={onCancel}
|
||||||
|
// mode="date"
|
||||||
|
// locale={i18n.locale}
|
||||||
|
// is24hourSource="locale"
|
||||||
|
// testID={`${testID}-datepicker`}
|
||||||
|
// aria-label={label}
|
||||||
|
// accessibilityLabel={label}
|
||||||
|
// accessibilityHint={accessibilityHint}
|
||||||
|
// maximumDate={
|
||||||
|
// maximumDate ? new Date(toSimpleDateString(maximumDate)) : undefined
|
||||||
|
// }
|
||||||
|
// />
|
||||||
|
}
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,14 @@
|
|||||||
import {useCallback, useImperativeHandle} from 'react'
|
import {useImperativeHandle} from 'react'
|
||||||
import {Keyboard, View} from 'react-native'
|
import {Keyboard, View} from 'react-native'
|
||||||
import DatePicker from 'react-native-date-picker'
|
|
||||||
import {msg} from '@lingui/core/macro'
|
import {msg} from '@lingui/core/macro'
|
||||||
import {useLingui} from '@lingui/react'
|
import {useLingui} from '@lingui/react'
|
||||||
import {Trans} from '@lingui/react/macro'
|
import {Trans} from '@lingui/react/macro'
|
||||||
|
|
||||||
import {atoms as a, useTheme} from '#/alf'
|
import {atoms as a} from '#/alf'
|
||||||
import {Button, ButtonText} from '#/components/Button'
|
import {Button, ButtonText} from '#/components/Button'
|
||||||
import * as Dialog from '#/components/Dialog'
|
import * as Dialog from '#/components/Dialog'
|
||||||
import {type DateFieldProps} from '#/components/forms/DateField/types'
|
import {type DateFieldProps} from '#/components/forms/DateField/types'
|
||||||
import {toSimpleDateString} from '#/components/forms/DateField/utils'
|
// import {toSimpleDateString} from '#/components/forms/DateField/utils'
|
||||||
import * as TextField from '#/components/forms/TextField'
|
import * as TextField from '#/components/forms/TextField'
|
||||||
import {DateFieldButton} from './index.shared'
|
import {DateFieldButton} from './index.shared'
|
||||||
|
|
||||||
@@ -27,26 +26,26 @@ export const LabelText = TextField.LabelText
|
|||||||
export function DateField({
|
export function DateField({
|
||||||
value,
|
value,
|
||||||
inputRef,
|
inputRef,
|
||||||
onChangeDate,
|
// onChangeDate,
|
||||||
testID,
|
testID,
|
||||||
label,
|
label,
|
||||||
isInvalid,
|
isInvalid,
|
||||||
accessibilityHint,
|
accessibilityHint,
|
||||||
maximumDate,
|
// maximumDate,
|
||||||
}: DateFieldProps) {
|
}: DateFieldProps) {
|
||||||
const {_, i18n} = useLingui()
|
const {_} = useLingui()
|
||||||
const t = useTheme()
|
// const t = useTheme()
|
||||||
const control = Dialog.useDialogControl()
|
const control = Dialog.useDialogControl()
|
||||||
|
|
||||||
const onChangeInternal = useCallback(
|
// const onChangeInternal = useCallback(
|
||||||
(date: Date | undefined) => {
|
// (date: Date | undefined) => {
|
||||||
if (date) {
|
// if (date) {
|
||||||
const formatted = toSimpleDateString(date)
|
// const formatted = toSimpleDateString(date)
|
||||||
onChangeDate(formatted)
|
// onChangeDate(formatted)
|
||||||
}
|
// }
|
||||||
},
|
// },
|
||||||
[onChangeDate],
|
// [onChangeDate],
|
||||||
)
|
// )
|
||||||
|
|
||||||
useImperativeHandle(
|
useImperativeHandle(
|
||||||
inputRef,
|
inputRef,
|
||||||
@@ -82,7 +81,8 @@ export function DateField({
|
|||||||
<Dialog.ScrollableInner label={label}>
|
<Dialog.ScrollableInner label={label}>
|
||||||
<View style={a.gap_lg}>
|
<View style={a.gap_lg}>
|
||||||
<View style={[a.relative, a.w_full, a.align_center]}>
|
<View style={[a.relative, a.w_full, a.align_center]}>
|
||||||
<DatePicker
|
{/* TODO: replace with expo ui date picker */}
|
||||||
|
{/*<DatePicker
|
||||||
timeZoneOffsetInMinutes={0}
|
timeZoneOffsetInMinutes={0}
|
||||||
theme={t.scheme}
|
theme={t.scheme}
|
||||||
date={new Date(toSimpleDateString(value))}
|
date={new Date(toSimpleDateString(value))}
|
||||||
@@ -98,7 +98,7 @@ export function DateField({
|
|||||||
? new Date(toSimpleDateString(maximumDate))
|
? new Date(toSimpleDateString(maximumDate))
|
||||||
: undefined
|
: undefined
|
||||||
}
|
}
|
||||||
/>
|
/>*/}
|
||||||
</View>
|
</View>
|
||||||
<Button
|
<Button
|
||||||
label={_(msg`Done`)}
|
label={_(msg`Done`)}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import {beforeEach, describe, expect, it, jest} from '@jest/globals'
|
import {beforeEach, describe, expect, it, jest} from '@jest/globals'
|
||||||
|
|
||||||
jest.mock('@bsky.app/react-native-mmkv', () => ({
|
jest.mock('react-native-mmkv', () => ({
|
||||||
MMKV: class MMKVMock {
|
MMKV: class MMKVMock {
|
||||||
_store = new Map<string, string>()
|
_store = new Map<string, string>()
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import {beforeEach, expect, jest, test} from '@jest/globals'
|
|||||||
|
|
||||||
import {Storage} from '#/storage'
|
import {Storage} from '#/storage'
|
||||||
|
|
||||||
jest.mock('@bsky.app/react-native-mmkv', () => ({
|
jest.mock('react-native-mmkv', () => ({
|
||||||
MMKV: class MMKVMock {
|
MMKV: class MMKVMock {
|
||||||
_store = new Map()
|
_store = new Map()
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import {MMKV} from '@bsky.app/react-native-mmkv'
|
import {MMKV} from 'react-native-mmkv'
|
||||||
|
|
||||||
import {type DB} from '#/storage/archive/db/types'
|
import {type DB} from '#/storage/archive/db/types'
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import {useCallback, useEffect, useState} from 'react'
|
import {useCallback, useEffect, useState} from 'react'
|
||||||
import {MMKV} from '@bsky.app/react-native-mmkv'
|
import {MMKV} from 'react-native-mmkv'
|
||||||
|
|
||||||
import {type Account, type Device} from '#/storage/schema'
|
import {type Account, type Device} from '#/storage/schema'
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user