From 6718c8c7266b1578532e69b4834d963a90a1d209 Mon Sep 17 00:00:00 2001 From: liaoliao666 Date: Tue, 23 May 2023 19:58:39 +0800 Subject: [PATCH] feat: ui & logo optimization --- App.tsx | 4 +- assets/icon.png | Bin 12968 -> 17641 bytes components/StyledImage.tsx | 4 +- navigation/index.tsx | 4 +- navigation/navigationRef.tsx | 6 +- package.json | 10 ++-- screens/HomeScreen.tsx | 13 +++-- screens/MemberDetailScreen.tsx | 8 +-- screens/MyFollowingScreen.tsx | 15 +---- screens/MyTopicsScreen.tsx | 4 +- screens/NodeTopicsScreen.tsx | 6 +- screens/NotificationsScreen.tsx | 4 +- screens/RelatedRepliesScreen.tsx | 1 - screens/SearchScreen.tsx | 4 +- screens/TopicDetailScreen.tsx | 4 +- store.config.json | 2 +- types.tsx | 1 + utils/query.ts | 2 +- utils/request/index.ts | 7 ++- yarn.lock | 97 +++++++++++++++++++------------ 20 files changed, 106 insertions(+), 90 deletions(-) diff --git a/App.tsx b/App.tsx index 9081770..6f5b96f 100644 --- a/App.tsx +++ b/App.tsx @@ -31,7 +31,7 @@ import './utils/dayjsPlugins' import { asyncStoragePersister, queryClient, - resetInfiniteQueriesWithHugeData, + removeUnnecessaryPages, } from './utils/query' import tw from './utils/tw' @@ -62,7 +62,7 @@ function App() { persister: asyncStoragePersister, }} onSuccess={() => { - resetInfiniteQueriesWithHugeData() + removeUnnecessaryPages() isReadyNavigation.then(SplashScreen.hideAsync) }} > diff --git a/assets/icon.png b/assets/icon.png index 0b4d1fb9cc6e08cf8ea05a20c54d151f4b101094..af50744539090de6e97e3be43ce2f2fb4ff481a5 100644 GIT binary patch literal 17641 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 } screenOptions={{ headerShown: false, }} > - + ) } diff --git a/navigation/navigationRef.tsx b/navigation/navigationRef.tsx index 763a542..1cdbe4b 100644 --- a/navigation/navigationRef.tsx +++ b/navigation/navigationRef.tsx @@ -3,7 +3,6 @@ import { createNavigationContainerRef, } from '@react-navigation/native' import { NativeStackNavigationProp } from '@react-navigation/native-stack' -import { isFunction } from 'lodash-es' import { RootStackParamList } from '../types' @@ -33,8 +32,7 @@ export function getNavigation() { return navigation } -export function getCurrentRouteName(): string { +export function getCurrentRouteName(): keyof RootStackParamList { // @ts-ignore - const getCurrentRoute: any = getNavigation()?.getCurrentRoute - return isFunction(getCurrentRoute) ? getCurrentRoute()?.name : undefined + return getNavigation()?.getCurrentRoute?.()?.name } diff --git a/package.json b/package.json index c7a18c2..8243dbf 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "@react-navigation/native": "^6.0.13", "@react-navigation/native-stack": "^6.9.1", "@tanstack/query-async-storage-persister": "^5.0.0-alpha.19", - "@tanstack/react-query": "^5.0.0-alpha.19", + "@tanstack/react-query": "^5.0.0-alpha.35", "@tanstack/react-query-persist-client": "^5.0.0-alpha.19", "@types/spark-md5": "^3.0.2", "axios": "^0.27.2", @@ -30,7 +30,7 @@ "expo-blur": "~12.2.2", "expo-clipboard": "~4.1.2", "expo-constants": "~14.2.1", - "expo-dev-client": "~2.1.6", + "expo-dev-client": "~2.2.1", "expo-device": "~5.2.1", "expo-file-system": "~15.2.2", "expo-font": "~11.1.1", @@ -38,7 +38,7 @@ "expo-linking": "~4.0.1", "expo-media-library": "~15.2.3", "expo-sharing": "~11.2.2", - "expo-splash-screen": "~0.18.1", + "expo-splash-screen": "~0.18.2", "expo-status-bar": "~1.4.4", "expo-updates": "~0.16.4", "highlight.js": "^11.6.0", @@ -50,7 +50,7 @@ "react-dom": "18.2.0", "react-error-boundary": "^3.1.4", "react-hook-form": "^7.39.4", - "react-native": "0.71.7", + "react-native": "0.71.8", "react-native-bouncy-checkbox": "^3.0.6", "react-native-drag-sort": "^2.4.4", "react-native-fast-image": "^8.6.3", @@ -66,7 +66,7 @@ "react-native-toast-message": "^2.1.6", "react-native-webview": "11.26.0", "react-native-youtube-iframe": "^2.2.2", - "react-query-kit": "^1.4.4", + "react-query-kit": "^1.4.5", "rn-placeholder": "^3.0.3", "spark-md5": "^3.0.2", "twrnc": "^3.6.0", diff --git a/screens/HomeScreen.tsx b/screens/HomeScreen.tsx index b03678d..6154b8f 100644 --- a/screens/HomeScreen.tsx +++ b/screens/HomeScreen.tsx @@ -39,11 +39,12 @@ import { fontScaleAtom, getFontSize } from '@/jotai/fontSacleAtom' import { homeTabIndexAtom, homeTabsAtom } from '@/jotai/homeTabsAtom' import { profileAtom } from '@/jotai/profileAtom' import { colorSchemeAtom } from '@/jotai/themeAtom' +import { getCurrentRouteName } from '@/navigation/navigationRef' import { useRecentTopics, useTabTopics } from '@/servicies/topic' import { Topic } from '@/servicies/types' import { RootStackParamList } from '@/types' import { isSignined } from '@/utils/authentication' -import { queryClient, resetInfiniteQueriesWithHugeData } from '@/utils/query' +import { queryClient, removeUnnecessaryPages } from '@/utils/query' import tw from '@/utils/tw' import { useRefreshByUser } from '@/utils/useRefreshByUser' @@ -124,7 +125,7 @@ function HomeScreen() { errorResetMap[tab]?.() } else if (query?.getObserversCount() && query?.isStale()) { if (tab === 'recent') { - resetInfiniteQueriesWithHugeData(useRecentTopics.getKey()) + removeUnnecessaryPages(useRecentTopics.getKey()) } queryClient.refetchQueries({ queryKey: activeKey }) } @@ -203,13 +204,13 @@ function HomeScreen() { onPress={() => { navigation.navigate('SortTabs') }} - style={tw`h-full flex-row items-center justify-center z-50 bg-body-1`} + style={tw`h-full flex-row items-center justify-center z-50`} > @@ -238,7 +239,7 @@ function RecentTopics({ isFetching, } = useRecentTopics({ suspense: true, - refetchOnWindowFocus: isActive, + refetchOnWindowFocus: () => isActive && getCurrentRouteName() === 'Home', }) const { isRefetchingByUser, refetchByUser } = useRefreshByUser(refetch) @@ -303,7 +304,7 @@ function TabTopics({ const { data, refetch, isFetching } = useTabTopics({ variables: { tab }, suspense: true, - refetchOnWindowFocus: isActive, + refetchOnWindowFocus: () => isActive && getCurrentRouteName() === 'Home', }) const { isRefetchingByUser, refetchByUser } = useRefreshByUser(refetch) diff --git a/screens/MemberDetailScreen.tsx b/screens/MemberDetailScreen.tsx index 76356fd..7770f49 100644 --- a/screens/MemberDetailScreen.tsx +++ b/screens/MemberDetailScreen.tsx @@ -63,11 +63,11 @@ import { import { Member, Reply, Topic } from '@/servicies/types' import { RootStackParamList } from '@/types' import { isMe, isSignined } from '@/utils/authentication' -import { queryClient, resetInfiniteQueriesWithHugeData } from '@/utils/query' +import { queryClient, removeUnnecessaryPages } from '@/utils/query' import tw from '@/utils/tw' import { useRefreshByUser } from '@/utils/useRefreshByUser' -const TAB_BAR_HEIGHT = 40 +const TAB_BAR_HEIGHT = 53 const TOP_BAR_BG_CLS = `bg-[rgb(51,51,68)]` const TAB_VIEW_MARGIN_TOP = -2 @@ -88,10 +88,10 @@ function MemberDetailScreen() { const { params } = useRoute>() useMemo(() => { - resetInfiniteQueriesWithHugeData( + removeUnnecessaryPages( useMemberTopics.getKey({ username: params.username }) ) - resetInfiniteQueriesWithHugeData( + removeUnnecessaryPages( useMemberReplies.getKey({ username: params.username }) ) queryClient.prefetchInfiniteQuery({ diff --git a/screens/MyFollowingScreen.tsx b/screens/MyFollowingScreen.tsx index 414b6df..64e8bb4 100644 --- a/screens/MyFollowingScreen.tsx +++ b/screens/MyFollowingScreen.tsx @@ -11,7 +11,6 @@ import { } from 'react-native' import { SafeAreaView } from 'react-native-safe-area-context' import { TabBar, TabView } from 'react-native-tab-view' -import { inferData } from 'react-query-kit' import Empty from '@/components/Empty' import NavBar, { useNavBarHeight } from '@/components/NavBar' @@ -31,7 +30,7 @@ import { getFontSize } from '@/jotai/fontSacleAtom' import { colorSchemeAtom } from '@/jotai/themeAtom' import { useMemberTopics, useMyFollowing } from '@/servicies/member' import { Topic } from '@/servicies/types' -import { queryClient, resetInfiniteQueriesWithHugeData } from '@/utils/query' +import { removeUnnecessaryPages } from '@/utils/query' import tw from '@/utils/tw' import { useRefreshByUser } from '@/utils/useRefreshByUser' @@ -83,16 +82,8 @@ const MemoMemberTopics = withQuerySuspense(memo(MemberTopics), { function MyFollowingScreen() { useMemo(() => { - resetInfiniteQueriesWithHugeData(useMyFollowing.getKey()) - queryClient - .getQueryData>(useMyFollowing.getKey()) - ?.pages?.[0]?.following.forEach(member => { - resetInfiniteQueriesWithHugeData( - useMemberTopics.getKey({ - username: member.username, - }) - ) - }) + removeUnnecessaryPages(useMyFollowing.getKey()) + removeUnnecessaryPages(useMemberTopics.getKey()) }, []) const { data } = useMyFollowing({ diff --git a/screens/MyTopicsScreen.tsx b/screens/MyTopicsScreen.tsx index ce03a78..23d9deb 100644 --- a/screens/MyTopicsScreen.tsx +++ b/screens/MyTopicsScreen.tsx @@ -19,7 +19,7 @@ import TopicItem from '@/components/topic/TopicItem' import { colorSchemeAtom } from '@/jotai/themeAtom' import { useMyTopics } from '@/servicies/topic' import { Topic } from '@/servicies/types' -import { resetInfiniteQueriesWithHugeData } from '@/utils/query' +import { removeUnnecessaryPages } from '@/utils/query' import tw from '@/utils/tw' import { useRefreshByUser } from '@/utils/useRefreshByUser' @@ -40,7 +40,7 @@ export default withQuerySuspense(MyTopicsScreen, { function MyTopicsScreen() { useMemo(() => { - resetInfiniteQueriesWithHugeData(useMyTopics.getKey()) + removeUnnecessaryPages(useMyTopics.getKey()) }, []) const { diff --git a/screens/NodeTopicsScreen.tsx b/screens/NodeTopicsScreen.tsx index b2491e1..f16a200 100644 --- a/screens/NodeTopicsScreen.tsx +++ b/screens/NodeTopicsScreen.tsx @@ -29,7 +29,7 @@ import { useLikeNode, useNodeTopics, useNodes } from '@/servicies/node' import { Topic } from '@/servicies/types' import { RootStackParamList } from '@/types' import { isSignined } from '@/utils/authentication' -import { queryClient, resetInfiniteQueriesWithHugeData } from '@/utils/query' +import { queryClient, removeUnnecessaryPages } from '@/utils/query' import tw from '@/utils/tw' import { useRefreshByUser } from '@/utils/useRefreshByUser' @@ -67,9 +67,7 @@ function NodeTopicsScreen() { const { params } = useRoute>() useMemo(() => { - resetInfiniteQueriesWithHugeData( - useNodeTopics.getKey({ name: params.name }) - ) + removeUnnecessaryPages(useNodeTopics.getKey({ name: params.name })) }, [params.name]) const { data, refetch, hasNextPage, fetchNextPage, isFetchingNextPage } = diff --git a/screens/NotificationsScreen.tsx b/screens/NotificationsScreen.tsx index c211c17..626ebda 100644 --- a/screens/NotificationsScreen.tsx +++ b/screens/NotificationsScreen.tsx @@ -31,7 +31,7 @@ import { Notice } from '@/servicies/types' import { RootStackParamList } from '@/types' import { isSignined } from '@/utils/authentication' import { confirm } from '@/utils/confirm' -import { queryClient, resetInfiniteQueriesWithHugeData } from '@/utils/query' +import { queryClient, removeUnnecessaryPages } from '@/utils/query' import tw from '@/utils/tw' import { useRefreshByUser } from '@/utils/useRefreshByUser' @@ -52,7 +52,7 @@ export default withQuerySuspense(NotificationsScreen, { function NotificationsScreen() { useMemo(() => { - resetInfiniteQueriesWithHugeData(useNotifications.getKey()) + removeUnnecessaryPages(useNotifications.getKey()) }, []) const { diff --git a/screens/RelatedRepliesScreen.tsx b/screens/RelatedRepliesScreen.tsx index f89e859..93f32e8 100644 --- a/screens/RelatedRepliesScreen.tsx +++ b/screens/RelatedRepliesScreen.tsx @@ -196,7 +196,6 @@ export default function RelatedRepliesScreen() { : tw`text-tint-secondary font-medium` )} numberOfLines={1} - ellipsizeMode="clip" > {route.title} diff --git a/screens/SearchScreen.tsx b/screens/SearchScreen.tsx index 6c30e5f..81eb41e 100644 --- a/screens/SearchScreen.tsx +++ b/screens/SearchScreen.tsx @@ -37,7 +37,7 @@ import { useSov2ex } from '@/servicies/sov2ex' import { useTopicDetail } from '@/servicies/topic' import { Member, Node, Sov2exResult } from '@/servicies/types' import { RootStackParamList } from '@/types' -import { resetInfiniteQueriesWithHugeData } from '@/utils/query' +import { removeUnnecessaryPages } from '@/utils/query' import tw from '@/utils/tw' import { useRefreshByUser } from '@/utils/useRefreshByUser' @@ -202,7 +202,7 @@ function SoV2exList({ ) useMemo(() => { - resetInfiniteQueriesWithHugeData(useSov2ex.getKey(variables)) + removeUnnecessaryPages(useSov2ex.getKey(variables)) }, [variables]) const { data, refetch, hasNextPage, fetchNextPage, isFetchingNextPage } = diff --git a/screens/TopicDetailScreen.tsx b/screens/TopicDetailScreen.tsx index 5521075..5107624 100644 --- a/screens/TopicDetailScreen.tsx +++ b/screens/TopicDetailScreen.tsx @@ -32,7 +32,7 @@ import { useTopicDetail } from '@/servicies/topic' import { Reply } from '@/servicies/types' import { RootStackParamList } from '@/types' import { isMe } from '@/utils/authentication' -import { resetInfiniteQueriesWithHugeData } from '@/utils/query' +import { removeUnnecessaryPages } from '@/utils/query' import tw from '@/utils/tw' import { useRefreshByUser } from '@/utils/useRefreshByUser' @@ -61,7 +61,7 @@ function TopicDetailScreen() { const { params } = useRoute>() useMemo(() => { - resetInfiniteQueriesWithHugeData(useTopicDetail.getKey({ id: params.id })) + removeUnnecessaryPages(useTopicDetail.getKey({ id: params.id })) }, [params.id]) const { diff --git a/store.config.json b/store.config.json index 83afdbf..c114bbf 100644 --- a/store.config.json +++ b/store.config.json @@ -7,7 +7,7 @@ }, "info": { "zh-Hans": { - "title": "v2ex-native" + "title": "v2fun" } }, "advisory": { diff --git a/types.tsx b/types.tsx index 481c1d4..05af020 100644 --- a/types.tsx +++ b/types.tsx @@ -20,6 +20,7 @@ declare module 'axios' { export type RootStackParamList = { Root: undefined + Home: undefined SortTabs: undefined NotFound: undefined MyNodes: undefined diff --git a/utils/query.ts b/utils/query.ts index 5436802..f3cecd5 100644 --- a/utils/query.ts +++ b/utils/query.ts @@ -25,7 +25,7 @@ AppState.addEventListener('change', status => { } }) -export function resetInfiniteQueriesWithHugeData(queryKey?: unknown[]) { +export function removeUnnecessaryPages(queryKey?: unknown[]) { queryClient .getQueryCache() .findAll({ queryKey }) diff --git a/utils/request/index.ts b/utils/request/index.ts index 21e1081..f0a664e 100644 --- a/utils/request/index.ts +++ b/utils/request/index.ts @@ -33,6 +33,11 @@ request.interceptors.response.use( }, error => { handle503Error(error) + if (error instanceof Error && error.message.includes(`403`)) { + const err = new Error('请检查你的代理设置') + err.name = '请求失败' + return Promise.reject(err) + } return Promise.reject(error) } ) @@ -72,7 +77,7 @@ function updateStoreWithData(data: any) { store.set(profileAtom, prev => { if ( - getCurrentRouteName() !== 'HomeScreen' && + getCurrentRouteName() !== 'Home' && store.get(enabledMsgPushAtom) && newProfile.my_notification !== prev?.my_notification && isInteger(newProfile.my_notification) && diff --git a/yarn.lock b/yarn.lock index 034edce..b61ce62 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1578,6 +1578,22 @@ semver "7.3.2" xml2js "0.4.23" +"@expo/prebuild-config@6.0.1": + version "6.0.1" + resolved "https://mirrors.cloud.tencent.com/npm/@expo/prebuild-config/-/prebuild-config-6.0.1.tgz#e3a5bbf5892859e71ac6a2408b1cc8ba6ca3f58f" + integrity sha512-WK3FDht1tdXZGCvtG5s7HSwzhsc7Tyu2DdqV9jVUsLtGD42oqUepk13mEWlU9LOTBgLsoEueKjoSK4EXOXFctw== + dependencies: + "@expo/config" "~8.0.0" + "@expo/config-plugins" "~6.0.0" + "@expo/config-types" "^48.0.0" + "@expo/image-utils" "0.3.22" + "@expo/json-file" "^8.2.37" + debug "^4.3.1" + fs-extra "^9.0.0" + resolve-from "^5.0.0" + semver "7.3.2" + xml2js "0.4.23" + "@expo/react-native-action-sheet@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@expo/react-native-action-sheet/-/react-native-action-sheet-4.0.1.tgz#fa78e55a87a741f235be2c4ce0b0ea2b6afd06cf" @@ -2209,6 +2225,11 @@ resolved "https://mirrors.cloud.tencent.com/npm/@tanstack/query-core/-/query-core-5.0.0-alpha.19.tgz#f71a88ae75e37a5c82dfc17b09a854740c12707c" integrity sha512-3W30tOF9TKXdG2Ke2c+DHIVLkTTOK+4Zcynre6qDMjd6/xvK/hLhk0FYyrPAhLoxlqPrMS/4RqHjNGay7g19bQ== +"@tanstack/query-core@5.0.0-alpha.34": + version "5.0.0-alpha.34" + resolved "https://mirrors.cloud.tencent.com/npm/@tanstack/query-core/-/query-core-5.0.0-alpha.34.tgz#d5b5544964ae7532a596edbafadccbdf3b8ba406" + integrity sha512-/59XnJ7LDbEeliPx1xKvwjBNN3tpRUJxbaCn89qr11tjhNq5hRLQ301aQSxSdjvbFCHb8iOsGHzSb/e4m+3LXQ== + "@tanstack/query-persist-client-core@5.0.0-alpha.19": version "5.0.0-alpha.19" resolved "https://mirrors.cloud.tencent.com/npm/@tanstack/query-persist-client-core/-/query-persist-client-core-5.0.0-alpha.19.tgz#b18918f15e7484ad3ec45305acf394f63aeea5e1" @@ -2223,12 +2244,12 @@ dependencies: "@tanstack/query-persist-client-core" "5.0.0-alpha.19" -"@tanstack/react-query@^5.0.0-alpha.19": - version "5.0.0-alpha.19" - resolved "https://mirrors.cloud.tencent.com/npm/@tanstack/react-query/-/react-query-5.0.0-alpha.19.tgz#d5bad1b99de89a3237013189b9764d9649264b5c" - integrity sha512-hXkvGtxLVrzZOYJEra32LcfatNUz1NqEIsQjD//aG8c7fD4/9Bou6DmIZMaQu1CRTSs9yiUWzUFmhSxAhnJN+Q== +"@tanstack/react-query@^5.0.0-alpha.35": + version "5.0.0-alpha.35" + resolved "https://mirrors.cloud.tencent.com/npm/@tanstack/react-query/-/react-query-5.0.0-alpha.35.tgz#8860e18947885baf012da2d3ee2e191018055e22" + integrity sha512-a8Z9LhpTRKxDg3RJCV4Ri6a+0Vi2TwEQGqQpDT8pPklu/Iv0j00eMmyI5dUJAQk/xFRtZqDplm7MV4A0WvDwbw== dependencies: - "@tanstack/query-core" "5.0.0-alpha.19" + "@tanstack/query-core" "5.0.0-alpha.34" "@trivago/prettier-plugin-sort-imports@^3.3.0": version "3.4.0" @@ -4345,23 +4366,23 @@ expo-constants@~14.2.0, expo-constants@~14.2.1: "@expo/config" "~8.0.0" uuid "^3.3.2" -expo-dev-client@~2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/expo-dev-client/-/expo-dev-client-2.1.6.tgz#b5f614dfcdd2793afda3d57e7fcadc7507ab8158" - integrity sha512-6XJS+giOUBA1onRFsT4rtaTkG96cw0tBrnn8LEW5lAM96mN/bl1IZsmyUmLgKfpE40lqvc9ZuYN3Uv2EwTGS/Q== +expo-dev-client@~2.2.1: + version "2.2.1" + resolved "https://mirrors.cloud.tencent.com/npm/expo-dev-client/-/expo-dev-client-2.2.1.tgz#3abdb875e9c9ed30e1f6dadc2f80b392d15b1c1e" + integrity sha512-BDhKyni82LiT6PypgBns1/FLqo3cGDBluaj4/Pojx9P7x9iwOFcesepO8r6BCWb4LuBjdB+z2yQ1fMXxzNC3qQ== dependencies: - expo-dev-launcher "2.1.6" - expo-dev-menu "2.1.4" + expo-dev-launcher "2.2.1" + expo-dev-menu "2.2.0" expo-dev-menu-interface "1.1.1" expo-manifests "~0.5.0" expo-updates-interface "~0.9.0" -expo-dev-launcher@2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/expo-dev-launcher/-/expo-dev-launcher-2.1.6.tgz#4be192cfae397b2024947a437c5b65d154270c1b" - integrity sha512-fk2Vb7sJgk++CFfwxuL5A8yZXUghqTOZy0fXqpYBJlskSq2sQr8LPoOrqxEQhnA06/CEzS2OC6FTFo+aY9UkBQ== +expo-dev-launcher@2.2.1: + version "2.2.1" + resolved "https://mirrors.cloud.tencent.com/npm/expo-dev-launcher/-/expo-dev-launcher-2.2.1.tgz#db9eec550487400cdac9c2aeedd3b6791fd49469" + integrity sha512-TP9SOrNIKF5Whju7uhtBsJeOvf9idUSg7snhHNVRpm2mA5kReckeD3PFv4HsvBHdnrfoslpeq4spOdS6UUx3XA== dependencies: - expo-dev-menu "2.1.4" + expo-dev-menu "2.2.0" resolve-from "^5.0.0" semver "^7.3.5" @@ -4370,10 +4391,10 @@ expo-dev-menu-interface@1.1.1: resolved "https://mirrors.cloud.tencent.com/npm/expo-dev-menu-interface/-/expo-dev-menu-interface-1.1.1.tgz#8a0d979f62d9a192696f66a77f75d8fab79e604b" integrity sha512-doT+7WrSBnxCcTGZw9QIEZoL+43U4RywbG8XZwbhkcsFWGsh9scp0y/bv3ieFHxRtIdImxbxOoYh7fy1O6g28w== -expo-dev-menu@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expo-dev-menu/-/expo-dev-menu-2.1.4.tgz#8bf8ae605d75199a72b603d7ac246e853b8404ca" - integrity sha512-T9YPrfo3M+tf4kH61wp36QI2XU2FxeG7EMYg1bcF4BjYx4fUs6i/QvxJ32o5eB+96fXraG2bhiv0Q2QlYWU8Tg== +expo-dev-menu@2.2.0: + version "2.2.0" + resolved "https://mirrors.cloud.tencent.com/npm/expo-dev-menu/-/expo-dev-menu-2.2.0.tgz#849ec3601f1dc228ad2858e4a25614a72932a61c" + integrity sha512-ImRUD7IVyLme7t3S+pNsOOgCBorkriVNo+ryEmkAjzRTKlpiklhoc1GEdQUU3qvO6e66gUguMbs4wnaP6o4NEw== dependencies: expo-dev-menu-interface "1.1.1" semver "^7.3.5" @@ -4473,13 +4494,13 @@ expo-sharing@~11.2.2: resolved "https://mirrors.cloud.tencent.com/npm/expo-sharing/-/expo-sharing-11.2.2.tgz#7d9e387f1a902e6dd6838c22d9599dae9e7432cf" integrity sha512-4Lhm1eS/CFIzX+JPuxMUTWBt9rv/WdvJvpQ9y+71bL/9w9dhvsdt9tv0SsNZATz4hk0tbrYD8ZEUsgiHiT1KkQ== -expo-splash-screen@~0.18.1: - version "0.18.1" - resolved "https://mirrors.cloud.tencent.com/npm/expo-splash-screen/-/expo-splash-screen-0.18.1.tgz#e090b045a7f8c5d9597b7a96910caa4eae1fcf3b" - integrity sha512-1di1kuh14likGUs3fyVZWAqEMxhmdAjpmf9T8Qk5OzUa5oPEMEDYB2e2VprddWnJNBVVe/ojBDSCY8w56/LS0Q== +expo-splash-screen@~0.18.2: + version "0.18.2" + resolved "https://mirrors.cloud.tencent.com/npm/expo-splash-screen/-/expo-splash-screen-0.18.2.tgz#dde246204da875785ba40c7143a70013cdefdbb6" + integrity sha512-fsiKmyn/lbJtV6Uor6wSvl21fScOidFzmB/HHShQJJOu2TBN/vqMvhPu/r0bF5NVk8Wi64r98hiWY1EEsbW03w== dependencies: "@expo/configure-splash-screen" "^0.6.0" - "@expo/prebuild-config" "6.0.0" + "@expo/prebuild-config" "6.0.1" expo-status-bar@~1.4.4: version "1.4.4" @@ -7482,10 +7503,10 @@ react-native-gesture-handler@~2.9.0: lodash "^4.17.21" prop-types "^15.7.2" -react-native-gradle-plugin@^0.71.17: - version "0.71.17" - resolved "https://registry.yarnpkg.com/react-native-gradle-plugin/-/react-native-gradle-plugin-0.71.17.tgz#cf780a27270f0a32dca8184eff91555d7627dd00" - integrity sha512-OXXYgpISEqERwjSlaCiaQY6cTY5CH6j73gdkWpK0hedxtiWMWgH+i5TOi4hIGYitm9kQBeyDu+wim9fA8ROFJA== +react-native-gradle-plugin@^0.71.18: + version "0.71.18" + resolved "https://mirrors.cloud.tencent.com/npm/react-native-gradle-plugin/-/react-native-gradle-plugin-0.71.18.tgz#20ef199bc85be32e45bb6cc069ec2e7dcb1a74a6" + integrity sha512-7F6bD7B8Xsn3JllxcwHhFcsl9aHIig47+3eN4IHFNqfLhZr++3ElDrcqfMzugM+niWbaMi7bJ0kAkAL8eCpdWg== react-native-image-pan-zoom@^2.1.12: version "2.1.12" @@ -7580,10 +7601,10 @@ react-native-youtube-iframe@^2.2.2: dependencies: events "^3.2.0" -react-native@0.71.7: - version "0.71.7" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.71.7.tgz#d0ae409f6ee4fc7e7a876b4ca9d8d28934133228" - integrity sha512-Id6iRLS581fJMFGbBl1jP5uSmjExtGOvw5Gvh7694zISXjsRAsFMmU+izs0pyCLqDBoHK7y4BT7WGPGw693nYw== +react-native@0.71.8: + version "0.71.8" + resolved "https://mirrors.cloud.tencent.com/npm/react-native/-/react-native-0.71.8.tgz#4314145341c49448cf7465b93ced52a433a5e191" + integrity sha512-ftMAuhpgTkbHU9brrqsEyxcNrpYvXKeATY+if22Nfhhg1zW+6wn95w9otwTnA3xHkljPCbng8mUhmmERjGEl7g== dependencies: "@jest/create-cache-key-function" "^29.2.1" "@react-native-community/cli" "10.2.2" @@ -7610,7 +7631,7 @@ react-native@0.71.7: promise "^8.3.0" react-devtools-core "^4.26.1" react-native-codegen "^0.71.5" - react-native-gradle-plugin "^0.71.17" + react-native-gradle-plugin "^0.71.18" react-refresh "^0.4.0" react-shallow-renderer "^16.15.0" regenerator-runtime "^0.13.2" @@ -7620,10 +7641,10 @@ react-native@0.71.7: whatwg-fetch "^3.0.0" ws "^6.2.2" -react-query-kit@^1.4.4: - version "1.4.4" - resolved "https://mirrors.cloud.tencent.com/npm/react-query-kit/-/react-query-kit-1.4.4.tgz#3e36b51215b6889e13b6d401446b6b299654dddf" - integrity sha512-GSEweuufpjqPSZMPxtetLTPSE4AgQsWoEspX4L0aVVCOzf6D2yoVJydlZLWw25tHAzbjF2BstOya6saYIiEYxA== +react-query-kit@^1.4.5: + version "1.4.5" + resolved "https://mirrors.cloud.tencent.com/npm/react-query-kit/-/react-query-kit-1.4.5.tgz#44596b50fef6e0db2ca563f06b8ee68b837107c9" + integrity sha512-zewXZezv2S0QQ2MTtj9MXs7EoyjgFQGtpiHWzYZEMECMTfZjxGSlsvPxMyqBQLPxGHadg2Q3Glj8UE4IM0If1A== react-refresh@^0.4.0: version "0.4.3"