refactor(navigation): consolidate navigation with href helpers and extract push device hook
- Migrate all navigation calls from magic strings to centralized href helpers - Extract inline device registration logic into useRegisterPushDevice hook - Remove unused terms and privacy policy routes from profile stack - Add hrefTradeDetail helper for trade detail navigation - Restore routePayloadCache.stashSystemMessage for group request/invite handling - Change desktop shell tab navigation from replace to push
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { useMemo, useCallback } from 'react';
|
||||
import { Platform, Pressable, useWindowDimensions } from 'react-native';
|
||||
import { Tabs, usePathname } from 'expo-router';
|
||||
import { Tabs, usePathname, useRouter } from 'expo-router';
|
||||
import { MaterialCommunityIcons } from '@expo/vector-icons';
|
||||
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
||||
import type { PressableProps } from 'react-native';
|
||||
@@ -8,6 +8,7 @@ import type { PressableProps } from 'react-native';
|
||||
import { useAppColors, shadows } from '../../../src/theme';
|
||||
import { BREAKPOINTS } from '../../../src/hooks';
|
||||
import { useHomeTabBarVisibilityStore, useTotalUnreadCount, useHomeTabPressStore } from '../../../src/stores';
|
||||
import { hrefHome } from '../../../src/navigation/hrefs';
|
||||
|
||||
const TAB_BAR_HEIGHT = 56;
|
||||
const TAB_BAR_FLOATING_MARGIN = 12;
|
||||
@@ -28,6 +29,7 @@ export default function TabsLayout() {
|
||||
const { width } = useWindowDimensions();
|
||||
const insets = useSafeAreaInsets();
|
||||
const pathname = usePathname();
|
||||
const router = useRouter();
|
||||
const unreadCount = useTotalUnreadCount();
|
||||
const scrollHideTabBar = useHomeTabBarVisibilityStore((s) => s.bottomTabBarHiddenByScroll);
|
||||
const triggerHomeTabPress = useHomeTabPressStore((s) => s.triggerPress);
|
||||
@@ -35,11 +37,18 @@ export default function TabsLayout() {
|
||||
|
||||
const isHomeStackRoute = pathname === '/home' || pathname.startsWith('/home/');
|
||||
|
||||
const handleHomeTabPress = useCallback(() => {
|
||||
if (pathname === '/home') {
|
||||
triggerHomeTabPress();
|
||||
}
|
||||
}, [pathname, triggerHomeTabPress]);
|
||||
const handleHomeTabPress = useCallback(
|
||||
(e: { preventDefault: () => void }) => {
|
||||
if (!isHomeStackRoute) return;
|
||||
e.preventDefault();
|
||||
if (pathname === '/home') {
|
||||
triggerHomeTabPress();
|
||||
} else {
|
||||
router.navigate(hrefHome());
|
||||
}
|
||||
},
|
||||
[isHomeStackRoute, pathname, triggerHomeTabPress, router]
|
||||
);
|
||||
|
||||
const tabBarStyle = useMemo(() => {
|
||||
if (hideTabBar) {
|
||||
|
||||
@@ -17,8 +17,6 @@ export default function ProfileStackLayout() {
|
||||
<Stack.Screen name="blocked-users" />
|
||||
<Stack.Screen name="chat-settings" />
|
||||
<Stack.Screen name="about" />
|
||||
<Stack.Screen name="terms" />
|
||||
<Stack.Screen name="privacy" />
|
||||
<Stack.Screen name="verification" />
|
||||
<Stack.Screen name="data-storage" />
|
||||
<Stack.Screen name="privacy-settings" />
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
import { PrivacyPolicyScreen } from '../../../../src/screens/profile/PrivacyPolicyScreen';
|
||||
|
||||
export default function PrivacyPolicyRoute() {
|
||||
return <PrivacyPolicyScreen />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { TermsOfServiceScreen } from '../../../../src/screens/profile/TermsOfServiceScreen';
|
||||
|
||||
export default function TermsOfServiceRoute() {
|
||||
return <TermsOfServiceScreen />;
|
||||
}
|
||||
@@ -1,82 +1,23 @@
|
||||
import { useEffect, useRef } from 'react';
|
||||
import { Platform } from 'react-native';
|
||||
import { useEffect } from 'react';
|
||||
import { Redirect } from 'expo-router';
|
||||
|
||||
import { AppRouteStack } from '../../src/app-navigation/AppRouteStack';
|
||||
import { messageManager, useAuthStore } from '../../src/stores';
|
||||
import { jpushService } from '../../src/services/notification/jpushService';
|
||||
|
||||
function getDeviceType(): 'ios' | 'android' | 'web' {
|
||||
switch (Platform.OS) {
|
||||
case 'ios': return 'ios';
|
||||
case 'android': return 'android';
|
||||
default: return 'web';
|
||||
}
|
||||
}
|
||||
|
||||
async function getOrCreateDeviceID(): Promise<string> {
|
||||
try {
|
||||
const AsyncStorage = require('@react-native-async-storage/async-storage').default;
|
||||
const DEVICE_ID_KEY = 'withyou_device_id';
|
||||
let deviceId = await AsyncStorage.getItem(DEVICE_ID_KEY);
|
||||
if (deviceId) return deviceId;
|
||||
const timestamp = Date.now().toString(36);
|
||||
const random = Math.random().toString(36).substring(2, 8);
|
||||
deviceId = `${Platform.OS}_${timestamp}_${random}`;
|
||||
await AsyncStorage.setItem(DEVICE_ID_KEY, deviceId);
|
||||
return deviceId;
|
||||
} catch {
|
||||
return `${Platform.OS}_${Date.now()}`;
|
||||
}
|
||||
}
|
||||
import { useRegisterPushDevice } from '../../src/hooks';
|
||||
import { hrefAuthLogin } from '../../src/navigation/hrefs';
|
||||
|
||||
export default function AppLayout() {
|
||||
const isAuthenticated = useAuthStore((s) => s.isAuthenticated);
|
||||
const userID = useAuthStore((s) => s.currentUser?.id);
|
||||
const deviceRegistered = useRef(false);
|
||||
|
||||
useEffect(() => {
|
||||
messageManager.initialize();
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
if (!isAuthenticated || !userID) return;
|
||||
|
||||
if (!deviceRegistered.current) {
|
||||
deviceRegistered.current = true;
|
||||
|
||||
if (Platform.OS === 'web') {
|
||||
// Web: register device without push_token (JPush not available on web)
|
||||
getOrCreateDeviceID().then((deviceId) => {
|
||||
const { pushService } = require('../../src/services/notification/pushService');
|
||||
pushService.registerDevice({
|
||||
device_id: deviceId,
|
||||
device_type: 'web',
|
||||
device_name: 'Web Browser',
|
||||
}).catch((err: any) => {
|
||||
console.warn('[Push] web device register failed:', err?.message);
|
||||
});
|
||||
});
|
||||
} else {
|
||||
// Mobile: JPush handles registration internally in initialize()
|
||||
jpushService.initialize().then((ok) => {
|
||||
if (ok && userID) {
|
||||
jpushService.setAliasForUser(userID);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return () => {
|
||||
if (!isAuthenticated) {
|
||||
deviceRegistered.current = false;
|
||||
jpushService.cleanup();
|
||||
}
|
||||
};
|
||||
}, [isAuthenticated, userID]);
|
||||
useRegisterPushDevice(isAuthenticated, userID);
|
||||
|
||||
if (!isAuthenticated) {
|
||||
return <Redirect href="/login" />;
|
||||
return <Redirect href={hrefAuthLogin()} />;
|
||||
}
|
||||
|
||||
return <AppRouteStack />;
|
||||
|
||||
@@ -6,6 +6,7 @@ import { AppDesktopShell } from '../../src/app-navigation/AppDesktopShell';
|
||||
import { AppRouteStack } from '../../src/app-navigation/AppRouteStack';
|
||||
import { BREAKPOINTS } from '../../src/hooks';
|
||||
import { messageManager, useAuthStore } from '../../src/stores';
|
||||
import { hrefAuthLogin } from '../../src/navigation/hrefs';
|
||||
|
||||
export default function AppLayoutWeb() {
|
||||
const { width } = useWindowDimensions();
|
||||
@@ -17,7 +18,7 @@ export default function AppLayoutWeb() {
|
||||
}, []);
|
||||
|
||||
if (!isAuthenticated) {
|
||||
return <Redirect href="/login" />;
|
||||
return <Redirect href={hrefAuthLogin()} />;
|
||||
}
|
||||
|
||||
if (useDesktopShell) {
|
||||
|
||||
@@ -30,6 +30,7 @@ import { CallScreen, IncomingCallModal, FloatingCallWindow } from '../src/compon
|
||||
import { jpushService } from '@/services/notification/jpushService';
|
||||
import { callKeepService } from '@/services/callkeep';
|
||||
import { callStore } from '@/stores/call';
|
||||
import * as hrefs from '../src/navigation/hrefs';
|
||||
|
||||
registerNotificationPresentationHandler();
|
||||
|
||||
@@ -172,22 +173,21 @@ function NotificationBootstrap() {
|
||||
|
||||
if (conversationId) {
|
||||
const isGroup = conversationType === 'group';
|
||||
const q = new URLSearchParams();
|
||||
if (isGroup) {
|
||||
q.set('isGroupChat', '1');
|
||||
if (groupId) q.set('groupId', groupId);
|
||||
if (groupName) q.set('groupName', groupName);
|
||||
if (groupAvatar) q.set('groupAvatar', groupAvatar);
|
||||
} else if (senderId) {
|
||||
q.set('userId', senderId);
|
||||
}
|
||||
const qs = q.toString();
|
||||
router.push(`/chat/${encodeURIComponent(conversationId)}${qs ? `?${qs}` : ''}`);
|
||||
router.push(
|
||||
hrefs.hrefChat({
|
||||
conversationId,
|
||||
userId: isGroup ? undefined : senderId,
|
||||
isGroupChat: isGroup,
|
||||
groupId: isGroup ? groupId : undefined,
|
||||
groupName: isGroup ? groupName : undefined,
|
||||
groupAvatar: isGroup ? groupAvatar : undefined,
|
||||
})
|
||||
);
|
||||
} else {
|
||||
router.push('/messages/notifications');
|
||||
router.push(hrefs.hrefNotifications());
|
||||
}
|
||||
} else {
|
||||
router.push('/messages/notifications');
|
||||
router.push(hrefs.hrefNotifications());
|
||||
}
|
||||
});
|
||||
|
||||
@@ -287,30 +287,6 @@ function ThemedStack() {
|
||||
<Stack.Screen name="index" options={{ headerShown: false }} />
|
||||
<Stack.Screen name="(auth)" options={{ headerShown: false }} />
|
||||
<Stack.Screen name="(app)" options={{ headerShown: false }} />
|
||||
<Stack.Screen
|
||||
name="terms"
|
||||
options={{
|
||||
headerShown: false,
|
||||
}}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="privacy"
|
||||
options={{
|
||||
headerShown: false,
|
||||
}}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="post/[postId]"
|
||||
options={{
|
||||
headerShown: false,
|
||||
}}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="user/[userId]"
|
||||
options={{
|
||||
headerShown: false,
|
||||
}}
|
||||
/>
|
||||
</Stack>
|
||||
</SessionGate>
|
||||
</>
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
import { Redirect } from 'expo-router';
|
||||
|
||||
import { useAuthStore } from '../src/stores';
|
||||
import { hrefAuthWelcome, hrefHome } from '../src/navigation/hrefs';
|
||||
|
||||
export default function Index() {
|
||||
const isAuthenticated = useAuthStore((s) => s.isAuthenticated);
|
||||
if (isAuthenticated) {
|
||||
return <Redirect href="/home" />;
|
||||
return <Redirect href={hrefHome()} />;
|
||||
}
|
||||
return <Redirect href="/welcome" />;
|
||||
return <Redirect href={hrefAuthWelcome()} />;
|
||||
}
|
||||
|
||||
527
package-lock.json
generated
527
package-lock.json
generated
@@ -7,45 +7,45 @@
|
||||
"": {
|
||||
"name": "with_you",
|
||||
"version": "0.0.2",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@expo/ui": "^56.0.15",
|
||||
"@expo/ui": "~56.0.17",
|
||||
"@expo/vector-icons": "^15.1.1",
|
||||
"@livekit/react-native": "^2.11.0",
|
||||
"@livekit/react-native-webrtc": "^144.1.0",
|
||||
"@react-native-async-storage/async-storage": "^3.1.1",
|
||||
"@shopify/flash-list": "^2.3.1",
|
||||
"@tanstack/react-query": "^5.100.14",
|
||||
"@types/react": "~19.2.14",
|
||||
"axios": "^1.16.1",
|
||||
"date-fns": "^4.4.0",
|
||||
"expo": "^56.0.8",
|
||||
"expo-background-task": "~56.0.16",
|
||||
"expo-callkit-telecom": "^0.3.8",
|
||||
"expo-camera": "~56.0.7",
|
||||
"expo-constants": "~56.0.16",
|
||||
"expo-dev-client": "~56.0.18",
|
||||
"expo-file-system": "~56.0.7",
|
||||
"expo-font": "~56.0.5",
|
||||
"expo": "~56.0.11",
|
||||
"expo-background-task": "~56.0.18",
|
||||
"expo-callkit-telecom": "^0.3.9",
|
||||
"expo-camera": "~56.0.8",
|
||||
"expo-constants": "~56.0.18",
|
||||
"expo-dev-client": "~56.0.20",
|
||||
"expo-file-system": "~56.0.8",
|
||||
"expo-font": "~56.0.6",
|
||||
"expo-haptics": "~56.0.3",
|
||||
"expo-image": "~56.0.6",
|
||||
"expo-image-picker": "~56.0.15",
|
||||
"expo-image-picker": "~56.0.17",
|
||||
"expo-intent-launcher": "~56.0.4",
|
||||
"expo-linear-gradient": "~56.0.4",
|
||||
"expo-linking": "~56.0.13",
|
||||
"expo-media-library": "~56.0.6",
|
||||
"expo-notifications": "~56.0.15",
|
||||
"expo-router": "~56.2.8",
|
||||
"expo-linking": "~56.0.14",
|
||||
"expo-media-library": "~56.0.7",
|
||||
"expo-notifications": "~56.0.17",
|
||||
"expo-router": "~56.2.10",
|
||||
"expo-splash-screen": "~56.0.10",
|
||||
"expo-sqlite": "~56.0.4",
|
||||
"expo-sqlite": "~56.0.5",
|
||||
"expo-status-bar": "~56.0.4",
|
||||
"expo-system-ui": "~56.0.5",
|
||||
"expo-task-manager": "~56.0.16",
|
||||
"expo-updates": "~56.0.17",
|
||||
"expo-video": "~56.1.2",
|
||||
"expo-task-manager": "~56.0.18",
|
||||
"expo-updates": "~56.0.19",
|
||||
"expo-video": "~56.1.3",
|
||||
"jcore-react-native": "^2.3.6",
|
||||
"jpush-react-native": "^3.2.7",
|
||||
"katex": "^0.17.0",
|
||||
"livekit-client": "^2.19.0",
|
||||
"livekit-client": "^2.19.2",
|
||||
"markdown-it": "^14.2.0",
|
||||
"pako": "^2.1.0",
|
||||
"prismjs": "^1.30.0",
|
||||
@@ -1351,15 +1351,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@expo/expo-modules-macros-plugin": {
|
||||
"version": "0.0.9",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/expo-modules-macros-plugin/-/expo-modules-macros-plugin-0.0.9.tgz",
|
||||
"integrity": "sha512-odai6D7ng/gA7At8ukFcWcauNEeDdyVqzVPbQxDkyU2NTJ4kgphA4I5iigS5C4LXFicSIzEt2nzdlLM8sjsTdA==",
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/expo-modules-macros-plugin/-/expo-modules-macros-plugin-0.2.2.tgz",
|
||||
"integrity": "sha512-4IMzPDIo/VOXREQjsJtliSfqYVZvfzU2SLFS/9sKMWF848S8CHx+e/E+Vf0TcMvpWCCKX5umyqxb13KJJ+YUzg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@expo/fingerprint": {
|
||||
"version": "0.19.3",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/fingerprint/-/fingerprint-0.19.3.tgz",
|
||||
"integrity": "sha512-w9Au2IVrtc0Ct+WRa05DVHGNHXYq6VyPZWuFP+5x055OeZ5q6k5Yg+aJ1gfShmjdOhDftRcsvmWmTdTZlWaTZw==",
|
||||
"version": "0.19.4",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/fingerprint/-/fingerprint-0.19.4.tgz",
|
||||
"integrity": "sha512-PsowRlO8+S7JlO8go7yhNEXp7sqlsWDE2AlCwoss7zH0dcajXFo74Fy0KdXEc4UXK7kKoHD37oDgsZ8aHSLr7A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@expo/env": "^2.3.0",
|
||||
@@ -1379,9 +1379,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@expo/fingerprint/node_modules/semver": {
|
||||
"version": "7.8.1",
|
||||
"resolved": "https://registry.npmmirror.com/semver/-/semver-7.8.1.tgz",
|
||||
"integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==",
|
||||
"version": "7.8.4",
|
||||
"resolved": "https://registry.npmmirror.com/semver/-/semver-7.8.4.tgz",
|
||||
"integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==",
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
@@ -1418,9 +1418,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@expo/inline-modules": {
|
||||
"version": "0.0.10",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/inline-modules/-/inline-modules-0.0.10.tgz",
|
||||
"integrity": "sha512-DKEfq877UTAmL/gOT5aFhlLNDg/EVmTSca7JQMKDGR6mjFSAcrmQf4GJNsi6ztiaqj6cTnIfoSz0hAYdnr6RJQ==",
|
||||
"version": "0.0.11",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/inline-modules/-/inline-modules-0.0.11.tgz",
|
||||
"integrity": "sha512-ZlIfKL61DPnW8YUTdMEjMA31xrDDV6p7Xi8rWYyhd5qXBV8MwGwjuJ7vKeaVaMjRqxJk1N9lv7zlfyvQpRCNNw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@expo/config-plugins": "~56.0.8"
|
||||
@@ -1447,9 +1447,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@expo/log-box": {
|
||||
"version": "56.0.12",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/log-box/-/log-box-56.0.12.tgz",
|
||||
"integrity": "sha512-budE6AGmJbpOJfGSOz+JVP3+FevElT82IEIg+ukQ4gZpW/dGO7QX1unFjanKdSaYgudBwJ4FCFGMwWhW/1tXVQ==",
|
||||
"version": "56.0.13",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/log-box/-/log-box-56.0.13.tgz",
|
||||
"integrity": "sha512-QWRZSpWPyjkDLVQio4R7oAzg/Av2MOt/DciFkfjr8qQ3qxGVn1Rt1oHP/80hvcWDcHFV7N6PqpyxRXw6nbxzKQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@expo/dom-webview": "^56.0.5",
|
||||
@@ -1486,9 +1486,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@expo/metro-config": {
|
||||
"version": "56.0.13",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/metro-config/-/metro-config-56.0.13.tgz",
|
||||
"integrity": "sha512-OPyNYiex/6Ms8zT2POdIZsLhcAZYk7O+yJvpz5uG/4QRA7aiESfCy1I+0YHewMlR4P1YQeyxIrfTurs6m9xfZA==",
|
||||
"version": "56.0.14",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/metro-config/-/metro-config-56.0.14.tgz",
|
||||
"integrity": "sha512-O3CIHruaTJhswPAf/nf3i8QQ3f2jl+mEwSea1eb3khuplabdy/wTQz+JvHN8VGUFyg7JKwUGU1QfO6T3JiSQqA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.20.0",
|
||||
@@ -1511,7 +1511,6 @@
|
||||
"hermes-parser": "^0.33.3",
|
||||
"jsc-safe-url": "^0.2.4",
|
||||
"lightningcss": "^1.30.1",
|
||||
"msgpackr": "^2.0.1",
|
||||
"picomatch": "^4.0.4",
|
||||
"postcss": "^8.5.14",
|
||||
"resolve-from": "^5.0.0"
|
||||
@@ -1540,19 +1539,19 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@expo/metro-runtime": {
|
||||
"version": "56.0.13",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/metro-runtime/-/metro-runtime-56.0.13.tgz",
|
||||
"integrity": "sha512-aMaFa/RPYm2iQoyYOB5q8AxDmWvf4E2yFbZ6rmBIQWaIPDdixGVUlLQeV8DlDAfZ/j+pNYO7l5M+774WbgkTgg==",
|
||||
"version": "56.0.15",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/metro-runtime/-/metro-runtime-56.0.15.tgz",
|
||||
"integrity": "sha512-WIWeVsL6kCSB57oYZdUA4MTkH7c67UFMIjdNoQzKXwxZYwBFE/xL2cGPDC3z8RWt0femzJTVxAVZUOW/hiqRzA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@expo/log-box": "^56.0.12",
|
||||
"@expo/log-box": "^56.0.13",
|
||||
"anser": "^1.4.9",
|
||||
"pretty-format": "^29.7.0",
|
||||
"stacktrace-parser": "^0.1.10",
|
||||
"whatwg-fetch": "^3.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@expo/log-box": "^56.0.12",
|
||||
"@expo/log-box": "^56.0.13",
|
||||
"expo": "*",
|
||||
"react": "*",
|
||||
"react-dom": "*",
|
||||
@@ -1762,9 +1761,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@expo/prebuild-config": {
|
||||
"version": "56.0.14",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/prebuild-config/-/prebuild-config-56.0.14.tgz",
|
||||
"integrity": "sha512-JHdMqR7Mf5ApLC50ZwTL0Z86ezrHOMYwoSHcWT6Pha/+1TcC+/J+i7vjhP06wGXQ2Kvjt74p/3mKg2Pd12KjhQ==",
|
||||
"version": "56.0.15",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/prebuild-config/-/prebuild-config-56.0.15.tgz",
|
||||
"integrity": "sha512-6GC+QjdCkzp/5wjsqgfu/B2+2yf5MyZMtzf9szIPrLt9uKhzV2PdyM0vU0kvbj1YT8weHCtO7bsrzimman0sjA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@expo/config": "~56.0.9",
|
||||
@@ -1774,15 +1773,15 @@
|
||||
"@expo/json-file": "^10.2.0",
|
||||
"@react-native/normalize-colors": "0.85.3",
|
||||
"debug": "^4.3.1",
|
||||
"expo-modules-autolinking": "~56.0.14",
|
||||
"expo-modules-autolinking": "~56.0.15",
|
||||
"resolve-from": "^5.0.0",
|
||||
"semver": "^7.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@expo/prebuild-config/node_modules/semver": {
|
||||
"version": "7.8.1",
|
||||
"resolved": "https://registry.npmmirror.com/semver/-/semver-7.8.1.tgz",
|
||||
"integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==",
|
||||
"version": "7.8.4",
|
||||
"resolved": "https://registry.npmmirror.com/semver/-/semver-7.8.4.tgz",
|
||||
"integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==",
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
@@ -1841,9 +1840,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@expo/ui": {
|
||||
"version": "56.0.15",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/ui/-/ui-56.0.15.tgz",
|
||||
"integrity": "sha512-PFZBzztQGCp2bRFP8wIOb5ntP2ORH2GdQkJMSJcDOd4NldoWMe1pFqv7PdthjNlaaTHHTTHK+RsQrz+M6z6isw==",
|
||||
"version": "56.0.17",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/ui/-/ui-56.0.17.tgz",
|
||||
"integrity": "sha512-Jos9oGzurMDngrSWJesX3LSykPRvkUdANxtq2sPKBc6bAjadtZJCkthAYMaE3P9L5xrzbNRFo+2O76cRP0iYPw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"sf-symbols-typescript": "^2.1.0",
|
||||
@@ -1884,12 +1883,6 @@
|
||||
"react-native": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@expo/ws-tunnel": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/ws-tunnel/-/ws-tunnel-1.0.6.tgz",
|
||||
"integrity": "sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@expo/xcpretty": {
|
||||
"version": "4.4.4",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/xcpretty/-/xcpretty-4.4.4.tgz",
|
||||
@@ -2181,84 +2174,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.4.tgz",
|
||||
"integrity": "sha512-LCkGo6JDfaBhgST7UpPWgNgLINpcpabaHfyz5OBx75nUYxBsaEPxjnyNjWpeb/xBup/682QnBfRBy2/LvPutZQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
]
|
||||
},
|
||||
"node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.4.tgz",
|
||||
"integrity": "sha512-zExlW9zUJKZH/tOtVMttwjKa4Xm/3KcNjnE3dPN92uCktwavMxpgCA3MoJK/DOnTWsQgo224OaST27/mPNAf+w==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
]
|
||||
},
|
||||
"node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.4.tgz",
|
||||
"integrity": "sha512-Tg3yX65f5GbtXLkrYEHE5oibZG9epyYWas7FogTTEJeDEF9JlXJzKgXaNhT3UXlTOeA+AfZpYZYZ0uPj7Cfquw==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
]
|
||||
},
|
||||
"node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.4.tgz",
|
||||
"integrity": "sha512-dgX0P/9wGPJeHFBG+ZmhgE6bmtMt7NP5CRBGyyktpopdk/mW4POnrpQsSLtKI1dwpc+pPLuXHDh6vvskyQE/sw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
]
|
||||
},
|
||||
"node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.4.tgz",
|
||||
"integrity": "sha512-8TNXMEjJc3QEy7R/x1INhgiU+XakDAFUzBhaz7+Rbrs8NH5UQeHQxxmzsSBJGyV6I1jW79undiQm8tOI+D+8FQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
]
|
||||
},
|
||||
"node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.4.tgz",
|
||||
"integrity": "sha512-CmCXPQrkbwExx3j946/PtHWHbYJiCRBRDl4BlkRQcJB/YOwQxJRTpoo7aTsortjgoJ1x7opzTSxn7C+ASSLVjQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
]
|
||||
},
|
||||
"node_modules/@nodable/entities": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/@nodable/entities/-/entities-2.1.1.tgz",
|
||||
@@ -4048,9 +3963,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/babel-preset-expo": {
|
||||
"version": "56.0.14",
|
||||
"resolved": "https://registry.npmmirror.com/babel-preset-expo/-/babel-preset-expo-56.0.14.tgz",
|
||||
"integrity": "sha512-+JKVMYf3HajO3tPRA9DlKd/VhZOPTHyTzUo2yZajfMAoQ3l5VEdGVxm2MzX4DXMNKXwsC8GOeTRx7CrO/5dBDA==",
|
||||
"version": "56.0.15",
|
||||
"resolved": "https://registry.npmmirror.com/babel-preset-expo/-/babel-preset-expo-56.0.15.tgz",
|
||||
"integrity": "sha512-0MqbQoM6nBUbKvgu2xJ4VixZnUTGTq3HB2WwvOikdO4CiPxbQ+wGA25fOoHHSni5iEFW39wy6y1ookTWlq3wVw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/generator": "^7.20.5",
|
||||
@@ -4099,7 +4014,7 @@
|
||||
"peerDependencies": {
|
||||
"@babel/runtime": "^7.20.0",
|
||||
"expo": "*",
|
||||
"expo-widgets": "^56.0.16",
|
||||
"expo-widgets": "^56.0.18",
|
||||
"react-refresh": ">=0.14.0 <1.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
@@ -5047,9 +4962,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/dnssd-advertise": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmmirror.com/dnssd-advertise/-/dnssd-advertise-1.1.4.tgz",
|
||||
"integrity": "sha512-AmGyK9WpNf06WeP5TjHZq/wNzP76OuEeaiTlKr9E/EEelYLczywUKoqRz+DPRq/ErssjT4lU+/W7wzJW+7K/ZA==",
|
||||
"version": "1.1.6",
|
||||
"resolved": "https://registry.npmmirror.com/dnssd-advertise/-/dnssd-advertise-1.1.6.tgz",
|
||||
"integrity": "sha512-Ndrrf6BMPalkQPd/zubL+4YghH2J9NspapQ09uDXwYbvOPkP0oaqf5CkcwJ0b50kS2O3ul6yVu+jz+RY62Cejg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/dom-accessibility-api": {
|
||||
@@ -5419,31 +5334,31 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo": {
|
||||
"version": "56.0.8",
|
||||
"resolved": "https://registry.npmmirror.com/expo/-/expo-56.0.8.tgz",
|
||||
"integrity": "sha512-GzQi5450yrCk5JRSlm0epsmtURBErh0wS77uWLZImFdnPICuX912MaRWooR+Q1Sw/7aQjp9F+KXH+dvrqGxpeQ==",
|
||||
"version": "56.0.11",
|
||||
"resolved": "https://registry.npmmirror.com/expo/-/expo-56.0.11.tgz",
|
||||
"integrity": "sha512-YqF+q+JqfobDU5yFym3h1vQqzbl7rFiDB4wAJEyK6NK+KLeyf4pfzydQcNTyqLXQKcQBG1reBJExfDShoAYTzw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.20.0",
|
||||
"@expo/cli": "^56.1.13",
|
||||
"@expo/cli": "^56.1.15",
|
||||
"@expo/config": "~56.0.9",
|
||||
"@expo/config-plugins": "~56.0.8",
|
||||
"@expo/devtools": "~56.0.2",
|
||||
"@expo/dom-webview": "~56.0.5",
|
||||
"@expo/fingerprint": "^0.19.3",
|
||||
"@expo/fingerprint": "^0.19.4",
|
||||
"@expo/local-build-cache-provider": "^56.0.8",
|
||||
"@expo/log-box": "^56.0.12",
|
||||
"@expo/log-box": "^56.0.13",
|
||||
"@expo/metro": "~56.0.0",
|
||||
"@expo/metro-config": "~56.0.13",
|
||||
"@expo/metro-config": "~56.0.14",
|
||||
"@ungap/structured-clone": "^1.3.0",
|
||||
"babel-preset-expo": "~56.0.14",
|
||||
"expo-asset": "~56.0.15",
|
||||
"expo-constants": "~56.0.16",
|
||||
"expo-file-system": "~56.0.7",
|
||||
"expo-font": "~56.0.5",
|
||||
"babel-preset-expo": "~56.0.15",
|
||||
"expo-asset": "~56.0.17",
|
||||
"expo-constants": "~56.0.18",
|
||||
"expo-file-system": "~56.0.8",
|
||||
"expo-font": "~56.0.6",
|
||||
"expo-keep-awake": "~56.0.3",
|
||||
"expo-modules-autolinking": "~56.0.14",
|
||||
"expo-modules-core": "~56.0.14",
|
||||
"expo-modules-autolinking": "~56.0.15",
|
||||
"expo-modules-core": "~56.0.16",
|
||||
"pretty-format": "^29.7.0",
|
||||
"react-refresh": "^0.14.2",
|
||||
"whatwg-url-minimum": "^0.1.2"
|
||||
@@ -5490,13 +5405,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-asset": {
|
||||
"version": "56.0.15",
|
||||
"resolved": "https://registry.npmmirror.com/expo-asset/-/expo-asset-56.0.15.tgz",
|
||||
"integrity": "sha512-BHGi2IAOPQTcOelkUdcz1WIknfCTRjkcpYHX1azjMwgYenrVC+J5qcqJGaC8eUOWLCRtkRJWGnmFQRYtLU1nUQ==",
|
||||
"version": "56.0.17",
|
||||
"resolved": "https://registry.npmmirror.com/expo-asset/-/expo-asset-56.0.17.tgz",
|
||||
"integrity": "sha512-GFN5j+8SPkyv0nfsiFHewmdB/D0tL237TsBE/gSfFOFy/J3a52py7IulcSqkA3sQE/u/UlD5BmvP5ssS4//nUg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@expo/image-utils": "^0.10.1",
|
||||
"expo-constants": "~56.0.16"
|
||||
"expo-constants": "~56.0.18"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"expo": "*",
|
||||
@@ -5505,21 +5420,21 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-background-task": {
|
||||
"version": "56.0.16",
|
||||
"resolved": "https://registry.npmmirror.com/expo-background-task/-/expo-background-task-56.0.16.tgz",
|
||||
"integrity": "sha512-co1RmfOxBLvnkPx5J5d/wzGGjE/UnyEEH/9ZO4yauiYSy33BjD2dAynxtXfNnRwbkTBmvSiciVwDh8RdZIboyw==",
|
||||
"version": "56.0.18",
|
||||
"resolved": "https://registry.npmmirror.com/expo-background-task/-/expo-background-task-56.0.18.tgz",
|
||||
"integrity": "sha512-jfEvLq/hZUWkef+lOt0sbe/Jd8wnK0fMgqsZhD1ulWk1IKB0AWsjmJ0iCTDMD9L9MDztpvKf2g/ygzljmo2eGA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"expo-task-manager": "~56.0.16"
|
||||
"expo-task-manager": "~56.0.18"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"expo": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/expo-callkit-telecom": {
|
||||
"version": "0.3.8",
|
||||
"resolved": "https://registry.npmmirror.com/expo-callkit-telecom/-/expo-callkit-telecom-0.3.8.tgz",
|
||||
"integrity": "sha512-Jh3tOMBD5JHCMF8EumOSqT/bQgWUhmCn9EwMZm9LT1mhWWmNQ7wKwAOYGdF7P4i4dtPDj0HG7u7fuljzt4bmQw==",
|
||||
"version": "0.3.9",
|
||||
"resolved": "https://registry.npmmirror.com/expo-callkit-telecom/-/expo-callkit-telecom-0.3.9.tgz",
|
||||
"integrity": "sha512-dSV6mRp4LEtbseRR4ieVn/zLLJCAQrhbghgZHhe1fnbpwbFsB/iZ5/13ySN10PQKFSQTRU3w6+c/SEKWm7cxOA==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"@livekit/react-native-webrtc": ">=144.0.0",
|
||||
@@ -5530,9 +5445,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-camera": {
|
||||
"version": "56.0.7",
|
||||
"resolved": "https://registry.npmmirror.com/expo-camera/-/expo-camera-56.0.7.tgz",
|
||||
"integrity": "sha512-c8z+UheidFintQyP9XLEDP43aK4PS/o9+TFLW0zEOjdqkYCBgoWq6Mw/Ps62kjBeftFY7xrp5ZLITbenNvbTaw==",
|
||||
"version": "56.0.8",
|
||||
"resolved": "https://registry.npmmirror.com/expo-camera/-/expo-camera-56.0.8.tgz",
|
||||
"integrity": "sha512-UDOpUUMisFRmCv1XQV1MJCKGAH2CsIC1Rs6P9Bbc6JLVmbxEKAd5dK68y6cScOdWURxVfJ0PRcjYnSuc8ayyIQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"barcode-detector": "^3.0.0"
|
||||
@@ -5550,9 +5465,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-constants": {
|
||||
"version": "56.0.16",
|
||||
"resolved": "https://registry.npmmirror.com/expo-constants/-/expo-constants-56.0.16.tgz",
|
||||
"integrity": "sha512-6tsiN+gmTUPp/atyA+uY9Tg8VOdXdmb4s/3TVGolfn6A/oCAraw1pcPZX5XllyD+xUguxB6eBSFAT8494hZVMA==",
|
||||
"version": "56.0.18",
|
||||
"resolved": "https://registry.npmmirror.com/expo-constants/-/expo-constants-56.0.18.tgz",
|
||||
"integrity": "sha512-8AMtbDGl/WVPnWlmbpGmvcdnNCy9E4PFnwdVwj600vljkMDPSxcAcjw8GVXEPk3PpZ+ngTqsrkltWyj0UKYAxw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@expo/env": "~2.3.0"
|
||||
@@ -5563,13 +5478,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-dev-client": {
|
||||
"version": "56.0.18",
|
||||
"resolved": "https://registry.npmmirror.com/expo-dev-client/-/expo-dev-client-56.0.18.tgz",
|
||||
"integrity": "sha512-pTfDcYTOvrs4vCgAaM+vP2OEO93oGkczgGpTAzCY7ZTIvtPhpekJURHBxfOnKvfn97IF3Hk+8J9tMozsNDj0Gw==",
|
||||
"version": "56.0.20",
|
||||
"resolved": "https://registry.npmmirror.com/expo-dev-client/-/expo-dev-client-56.0.20.tgz",
|
||||
"integrity": "sha512-KebW4r8HhIiRrPzs6ZqVhp/so8buyglAO1h4No0Ibr5C2XRnlIoGWCN4zC6rW7IsI3iKUXcofLAQV9OjoxjiwQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"expo-dev-launcher": "~56.0.18",
|
||||
"expo-dev-menu": "~56.0.16",
|
||||
"expo-dev-launcher": "~56.0.20",
|
||||
"expo-dev-menu": "~56.0.17",
|
||||
"expo-dev-menu-interface": "~56.0.0",
|
||||
"expo-manifests": "~56.0.4",
|
||||
"expo-updates-interface": "~56.0.1"
|
||||
@@ -5579,13 +5494,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-dev-launcher": {
|
||||
"version": "56.0.18",
|
||||
"resolved": "https://registry.npmmirror.com/expo-dev-launcher/-/expo-dev-launcher-56.0.18.tgz",
|
||||
"integrity": "sha512-7acFJlkAbp3cMz7Uy787todMR/3A/Row2EOPD21RRoetvzJe4DTm9s7RwJ8PDtyNyued9rooD4+Q6rD8ijpTgw==",
|
||||
"version": "56.0.20",
|
||||
"resolved": "https://registry.npmmirror.com/expo-dev-launcher/-/expo-dev-launcher-56.0.20.tgz",
|
||||
"integrity": "sha512-cTuC3GkPl9CTwO3CKnVmEm9qoQ0WairhwvTh6qMlg+zr/QU/tdiU++uDBX67hf9+FuxQOkWGp5khFNosT+0cIg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@expo/schema-utils": "^56.0.0",
|
||||
"expo-dev-menu": "~56.0.16",
|
||||
"expo-dev-menu": "~56.0.17",
|
||||
"expo-manifests": "~56.0.4"
|
||||
},
|
||||
"peerDependencies": {
|
||||
@@ -5594,9 +5509,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-dev-menu": {
|
||||
"version": "56.0.16",
|
||||
"resolved": "https://registry.npmmirror.com/expo-dev-menu/-/expo-dev-menu-56.0.16.tgz",
|
||||
"integrity": "sha512-aVgoe+YGhrQnpwiB5BRI7G+uQnGHMUij32bBnEVdc6eJrVZCStxQlV9NeFbbXxrDhLJt6OSqbCHbLR+XToWUUA==",
|
||||
"version": "56.0.17",
|
||||
"resolved": "https://registry.npmmirror.com/expo-dev-menu/-/expo-dev-menu-56.0.17.tgz",
|
||||
"integrity": "sha512-OofRkOOZnaDriSav3JDN4NP2lsLt2eOa/Ryptr5nMD62SwnFyK4R6n6PkPVaDU3LSsZqndAJHmN6inS+oziayQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"expo-dev-menu-interface": "~56.0.0"
|
||||
@@ -5622,9 +5537,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/expo-file-system": {
|
||||
"version": "56.0.7",
|
||||
"resolved": "https://registry.npmmirror.com/expo-file-system/-/expo-file-system-56.0.7.tgz",
|
||||
"integrity": "sha512-dcKzo8ShPloM7jgfnMcJStgQebhP8owVjCkNI/aX6NMFV1CYB8bxKGMdnzJ3mXk5nfaiW+F/lSKr2UIJ02WAUA==",
|
||||
"version": "56.0.8",
|
||||
"resolved": "https://registry.npmmirror.com/expo-file-system/-/expo-file-system-56.0.8.tgz",
|
||||
"integrity": "sha512-NrH41/8snGIBSbYicwVLB4txPdgCATd7ZYhMAGS3YJZ9GbnduhlAoV4/YCbGayjrbpE9bJb/6wegPL/zmvRMnQ==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"expo": "*",
|
||||
@@ -5632,9 +5547,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-font": {
|
||||
"version": "56.0.5",
|
||||
"resolved": "https://registry.npmmirror.com/expo-font/-/expo-font-56.0.5.tgz",
|
||||
"integrity": "sha512-WLoDu9hlEgPRKXJRR01HFLJ6Z2tFcORX/WFPRYBndmYc5kjQrFGH/j4BRaF3aBRPyYEAUXiUJybNLXkKCwEXQw==",
|
||||
"version": "56.0.6",
|
||||
"resolved": "https://registry.npmmirror.com/expo-font/-/expo-font-56.0.6.tgz",
|
||||
"integrity": "sha512-D4s72Aei844C2s8Vy61qMr6wLEjv6BMrXA1oyRQ0x8LJBbpm5gyogUohc0lABUURVLCqsnBIDdztegl3hktmmg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fontfaceobserver": "^2.1.0"
|
||||
@@ -5695,9 +5610,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-image-picker": {
|
||||
"version": "56.0.15",
|
||||
"resolved": "https://registry.npmmirror.com/expo-image-picker/-/expo-image-picker-56.0.15.tgz",
|
||||
"integrity": "sha512-7zmrUcqiNKwGGGL114gC+1aaquhmMbaXCNSHjUcoINdBzvIEVMJDm+DNCxkpftEYeb17X3shqInI4lCgJNVO5g==",
|
||||
"version": "56.0.17",
|
||||
"resolved": "https://registry.npmmirror.com/expo-image-picker/-/expo-image-picker-56.0.17.tgz",
|
||||
"integrity": "sha512-/RojW1ptyQNV89hEeDdaoHCkn38+546MqakMyB0acFf0HLh5ZI7wxQCHkxr16qjuQMy11M+96GlX9Z6vgXF7Nw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"expo-image-loader": "~56.0.3"
|
||||
@@ -5743,12 +5658,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-linking": {
|
||||
"version": "56.0.13",
|
||||
"resolved": "https://registry.npmmirror.com/expo-linking/-/expo-linking-56.0.13.tgz",
|
||||
"integrity": "sha512-38YrpTh6xdiDxmYSDIUffDqev1hIcEggw2fZ3IZhNp2DVLF1xvqsbO6hJD1fuBKN8P34B3Ggc9Yy26fkqdfCOA==",
|
||||
"version": "56.0.14",
|
||||
"resolved": "https://registry.npmmirror.com/expo-linking/-/expo-linking-56.0.14.tgz",
|
||||
"integrity": "sha512-IvVQHWC+Cj4fK5qD3iEVYqpU2a4rLW0IpAAlGJ4MH+H1fyZiHh3eN6qg2WmoclOEPfYATSuEa+dQT6wfgVpXlQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"expo-constants": "~56.0.16",
|
||||
"expo-constants": "~56.0.18",
|
||||
"invariant": "^2.2.4"
|
||||
},
|
||||
"peerDependencies": {
|
||||
@@ -5769,9 +5684,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-media-library": {
|
||||
"version": "56.0.6",
|
||||
"resolved": "https://registry.npmmirror.com/expo-media-library/-/expo-media-library-56.0.6.tgz",
|
||||
"integrity": "sha512-UsyVcxP7Op9ErFFLW1xImjoKFgKi7XSw8hrCfzf2yIG+OgVb9dsQth0mVRPgfRxdELagsUslXc1QXTiW8dpbaQ==",
|
||||
"version": "56.0.7",
|
||||
"resolved": "https://registry.npmmirror.com/expo-media-library/-/expo-media-library-56.0.7.tgz",
|
||||
"integrity": "sha512-lVsXsagjDYuySr+WWvc6BfRHTXttnWeVX4qMP2ls7JyAVSECQOAQpqz47uZiJsEohtpCoDTLRL2mcn/XY8fLoQ==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"expo": "*",
|
||||
@@ -5779,9 +5694,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-modules-autolinking": {
|
||||
"version": "56.0.14",
|
||||
"resolved": "https://registry.npmmirror.com/expo-modules-autolinking/-/expo-modules-autolinking-56.0.14.tgz",
|
||||
"integrity": "sha512-9ugtZkheNPYDkW4DZopY1rH2BCbUICaafUEPxRgbLDR5UNRF5K3cdHMIMEt8pxZPq2+eX4wCm+6pbSvdY/DPHg==",
|
||||
"version": "56.0.15",
|
||||
"resolved": "https://registry.npmmirror.com/expo-modules-autolinking/-/expo-modules-autolinking-56.0.15.tgz",
|
||||
"integrity": "sha512-WqpBFwLzn7DsrUkWltIjVmAjwuI1VdQ2jRMlvk1nh2kVadwdJBkSjUBQWRifsEePNhiMT/rFOovBolUU/ARt5w==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@expo/require-utils": "^56.1.3",
|
||||
@@ -5803,13 +5718,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-modules-core": {
|
||||
"version": "56.0.14",
|
||||
"resolved": "https://registry.npmmirror.com/expo-modules-core/-/expo-modules-core-56.0.14.tgz",
|
||||
"integrity": "sha512-dl1TlYRm1k7xk9QeAyDoMfFE2p6rNyzHUcH5ArcGwUzO8YKku+Z2tQ8+kG7zLe3OhfMoJcFR/czrFy7vGSVI6w==",
|
||||
"version": "56.0.16",
|
||||
"resolved": "https://registry.npmmirror.com/expo-modules-core/-/expo-modules-core-56.0.16.tgz",
|
||||
"integrity": "sha512-IVdT0CnqOpQCPdemA5rb50CPbbhWeJePnvuH0yUmOmyMkNky8WVOdRQtVicoIv4CCG5hDrzPIxULD4YOHZ5CHg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@expo/expo-modules-macros-plugin": "~0.0.9",
|
||||
"expo-modules-jsi": "~56.0.7",
|
||||
"@expo/expo-modules-macros-plugin": "0.2.2",
|
||||
"expo-modules-jsi": "~56.0.9",
|
||||
"invariant": "^2.2.4"
|
||||
},
|
||||
"peerDependencies": {
|
||||
@@ -5824,25 +5739,25 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-modules-jsi": {
|
||||
"version": "56.0.7",
|
||||
"resolved": "https://registry.npmmirror.com/expo-modules-jsi/-/expo-modules-jsi-56.0.7.tgz",
|
||||
"integrity": "sha512-iBAj4Xeh/8HT201VVxFlmf+VBfmtQV1ZUoJdLQQENm0+j9gnD2QswZLJyNo3CmNNXl46esJeLR5lpGpYZts/zA==",
|
||||
"version": "56.0.9",
|
||||
"resolved": "https://registry.npmmirror.com/expo-modules-jsi/-/expo-modules-jsi-56.0.9.tgz",
|
||||
"integrity": "sha512-2lfDkRcsP/Qh2upS+nu0MS0tfGsghc6ehTivzbgM5nJz0MGYhAJxCJSeendWM+aOQutQAwzsoxrNT0nW8lRAwA==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"react-native": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/expo-notifications": {
|
||||
"version": "56.0.15",
|
||||
"resolved": "https://registry.npmmirror.com/expo-notifications/-/expo-notifications-56.0.15.tgz",
|
||||
"integrity": "sha512-F+OasAePiVnHaPNKI9JAYV8fg8bdBwo7Mh9R3ydBp8S21fRQyxKOSgJvj8fX/HoPFFIC6V2B+y1LJbG5Ovh/Fg==",
|
||||
"version": "56.0.17",
|
||||
"resolved": "https://registry.npmmirror.com/expo-notifications/-/expo-notifications-56.0.17.tgz",
|
||||
"integrity": "sha512-Yn6JUKmoBDkQeznbuUn4cHF2u44r1ErJTneW65MBFt7NLG8U8/VGQ4bBVwswm5nPH1/V92UoXPgvCssScPFRDg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@expo/image-utils": "^0.10.1",
|
||||
"abort-controller": "^3.0.0",
|
||||
"badgin": "^1.1.5",
|
||||
"expo-application": "~56.0.3",
|
||||
"expo-constants": "~56.0.16"
|
||||
"expo-constants": "~56.0.18"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"expo": "*",
|
||||
@@ -5851,15 +5766,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-router": {
|
||||
"version": "56.2.8",
|
||||
"resolved": "https://registry.npmmirror.com/expo-router/-/expo-router-56.2.8.tgz",
|
||||
"integrity": "sha512-l387I/ddPY/5SS+Rfpp1SrRV9gBKevxtPuZod7igMjR6L674QrxEwGiAILRq6AKCSbrP2I0ufKj7e5xz8JqA4Q==",
|
||||
"version": "56.2.10",
|
||||
"resolved": "https://registry.npmmirror.com/expo-router/-/expo-router-56.2.10.tgz",
|
||||
"integrity": "sha512-u7WcdsFAjSrQS7Bdb1VbNPE3xNcd/BZ6qXSS31UAJKhaYIb+ik3jJSy/W5kY3qKipwbwlo3CSb1WnZ2XYs7F+Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@expo/log-box": "^56.0.12",
|
||||
"@expo/metro-runtime": "^56.0.13",
|
||||
"@expo/log-box": "^56.0.13",
|
||||
"@expo/metro-runtime": "^56.0.15",
|
||||
"@expo/schema-utils": "^56.0.0",
|
||||
"@expo/ui": "^56.0.15",
|
||||
"@expo/ui": "^56.0.17",
|
||||
"@radix-ui/react-slot": "^1.2.0",
|
||||
"@radix-ui/react-tabs": "^1.1.12",
|
||||
"@react-native-masked-view/masked-view": "^0.3.2",
|
||||
@@ -5870,8 +5785,8 @@
|
||||
"debug": "^4.3.4",
|
||||
"escape-string-regexp": "^4.0.0",
|
||||
"expo-glass-effect": "^56.0.4",
|
||||
"expo-server": "^56.0.4",
|
||||
"expo-symbols": "^56.0.5",
|
||||
"expo-server": "^56.0.5",
|
||||
"expo-symbols": "^56.0.6",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"invariant": "^2.2.4",
|
||||
"nanoid": "^3.3.8",
|
||||
@@ -5883,15 +5798,16 @@
|
||||
"server-only": "^0.0.1",
|
||||
"sf-symbols-typescript": "^2.1.0",
|
||||
"shallowequal": "^1.1.0",
|
||||
"standard-navigation": "^0.0.5",
|
||||
"vaul": "^1.1.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@expo/log-box": "^56.0.12",
|
||||
"@expo/metro-runtime": "^56.0.13",
|
||||
"@expo/log-box": "^56.0.13",
|
||||
"@expo/metro-runtime": "^56.0.15",
|
||||
"@testing-library/react-native": ">= 13.2.0",
|
||||
"expo": "*",
|
||||
"expo-constants": "^56.0.16",
|
||||
"expo-linking": "^56.0.13",
|
||||
"expo-constants": "^56.0.18",
|
||||
"expo-linking": "^56.0.14",
|
||||
"react": "*",
|
||||
"react-dom": "*",
|
||||
"react-native": "*",
|
||||
@@ -5924,9 +5840,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-server": {
|
||||
"version": "56.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/expo-server/-/expo-server-56.0.4.tgz",
|
||||
"integrity": "sha512-4dJ57KuAwDl7eQGD6aG9kTzBIftWAfHH1+6Zxy7NcPCBrKYis3/H5enGUz1asH8HHhONXfJ5BdJqfEWAEAgWxA==",
|
||||
"version": "56.0.5",
|
||||
"resolved": "https://registry.npmmirror.com/expo-server/-/expo-server-56.0.5.tgz",
|
||||
"integrity": "sha512-SmM2p2g3Jrktpiazcst+OxhjSzOHXKAY4BPURHYHXvApzzoybMmrNF4IEZ8DKZ145BhSe4ydAmlEFCRTsdtgUQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=20.16.0"
|
||||
@@ -5947,9 +5863,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-sqlite": {
|
||||
"version": "56.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/expo-sqlite/-/expo-sqlite-56.0.4.tgz",
|
||||
"integrity": "sha512-Ak8TUyrvK7C/J4BHBfcb8BacFrH8I+b+zqeSTKg5B02Z13lxljvuqI8UvKbRNa5BKprlxrqabZickGwacRkM9g==",
|
||||
"version": "56.0.5",
|
||||
"resolved": "https://registry.npmmirror.com/expo-sqlite/-/expo-sqlite-56.0.5.tgz",
|
||||
"integrity": "sha512-wHYRVLS5nUFEtli45wHaO+RjlRY8sQXyOSgENVk6I4zq7+FgySqjOk3YOYW6IKIMwhj5XzjMJO+pY8xKUy73Kw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"await-lock": "^2.2.2"
|
||||
@@ -5978,9 +5894,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/expo-symbols": {
|
||||
"version": "56.0.5",
|
||||
"resolved": "https://registry.npmmirror.com/expo-symbols/-/expo-symbols-56.0.5.tgz",
|
||||
"integrity": "sha512-RIukH0Xo80C7RU8qreipL2SPy2Py+Km8JFPbCmbPQpHkM3DW9Znlmg6VfhzbtUOlO5EuNSF0lAJ3l2VJi6qYrw==",
|
||||
"version": "56.0.6",
|
||||
"resolved": "https://registry.npmmirror.com/expo-symbols/-/expo-symbols-56.0.6.tgz",
|
||||
"integrity": "sha512-BrA81DjcNafdj7gXVhdrExb9LtUiSVyOf/NavyMmDAHgHMY1GqeR5cnn1PSAZeYKnSgQhee/H89XUpAxtog5hg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@expo-google-fonts/material-symbols": "^0.4.1",
|
||||
@@ -6014,9 +5930,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-task-manager": {
|
||||
"version": "56.0.16",
|
||||
"resolved": "https://registry.npmmirror.com/expo-task-manager/-/expo-task-manager-56.0.16.tgz",
|
||||
"integrity": "sha512-wh5DOzUkQfpXs2fmm9QYlPoNiJRgnCI926m2hoVDFYD8yENnDYYXQEON8uYgnepYmActr/KAMBxmw6BOmTky/Q==",
|
||||
"version": "56.0.18",
|
||||
"resolved": "https://registry.npmmirror.com/expo-task-manager/-/expo-task-manager-56.0.18.tgz",
|
||||
"integrity": "sha512-abTKDhlZ572wSwNuZ9HkDw6rl+kKLq0TkqheIEbGoRkMQVEGV3D5GYYY0gg84TO/HvAqiipdcBFQH8+9uHj70Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"unimodules-app-loader": "~56.0.0"
|
||||
@@ -6027,9 +5943,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo-updates": {
|
||||
"version": "56.0.17",
|
||||
"resolved": "https://registry.npmmirror.com/expo-updates/-/expo-updates-56.0.17.tgz",
|
||||
"integrity": "sha512-4005IRQQ7Vpwb01X3NSG0SwY61HTJzT2pZ0OrkeZ6guQE1WKiRfUKisekRgYXTI8sPbxSHUc9aOpIx6yC49XZQ==",
|
||||
"version": "56.0.19",
|
||||
"resolved": "https://registry.npmmirror.com/expo-updates/-/expo-updates-56.0.19.tgz",
|
||||
"integrity": "sha512-tTSPYO5h8wDA6a+wQ2v/SRdnOdz29x0npGHCv+4Ev31Fz5r05Ii1Wgfh3BlTXNz8mikMReDsZCf6YN71YeQKpw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@expo/code-signing-certificates": "^0.0.6",
|
||||
@@ -6079,9 +5995,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/expo-video": {
|
||||
"version": "56.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/expo-video/-/expo-video-56.1.2.tgz",
|
||||
"integrity": "sha512-NPdbwcPfPd7lgOcgTFi7m7Dqp1+3OSXJHrUDU4tXA/Ly4vuNpe35eZNA21F/OJtJqk/nw3r6PDZnSqw5XY0p6w==",
|
||||
"version": "56.1.3",
|
||||
"resolved": "https://registry.npmmirror.com/expo-video/-/expo-video-56.1.3.tgz",
|
||||
"integrity": "sha512-Ht2BMdx11RnGKxILL/P4t/hl4kqWXq1vLaoOrLZlDed+IXgf8hdDI9jmtEEgsIHwf3jaHFXblJCRVuS9mIxKAw==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"expo": "*",
|
||||
@@ -6090,9 +6006,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo/node_modules/@expo/cli": {
|
||||
"version": "56.1.13",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/cli/-/cli-56.1.13.tgz",
|
||||
"integrity": "sha512-7n5VzlBr7TKW0BgWgpEopWy+v8buPhMvbSEsuXD+bI1YIJBopkfWAub0qTvlc357E8wWOvV5MJXYyoeRvoOjoQ==",
|
||||
"version": "56.1.15",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/cli/-/cli-56.1.15.tgz",
|
||||
"integrity": "sha512-ik6++YzURB2d/mSEfYwbuNa19uOWZwVHy9THCQ/pPr6mzplKl4w9I4nlYF9lx7oluNC3NvxsSZ8/rgpVKEOJTA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@expo/code-signing-certificates": "^0.0.6",
|
||||
@@ -6101,21 +6017,21 @@
|
||||
"@expo/devcert": "^1.2.1",
|
||||
"@expo/env": "~2.3.0",
|
||||
"@expo/image-utils": "^0.10.1",
|
||||
"@expo/inline-modules": "^0.0.10",
|
||||
"@expo/inline-modules": "^0.0.11",
|
||||
"@expo/json-file": "^10.2.0",
|
||||
"@expo/log-box": "^56.0.12",
|
||||
"@expo/log-box": "^56.0.13",
|
||||
"@expo/metro": "~56.0.0",
|
||||
"@expo/metro-config": "~56.0.13",
|
||||
"@expo/metro-config": "~56.0.14",
|
||||
"@expo/metro-file-map": "^56.0.3",
|
||||
"@expo/osascript": "^2.6.0",
|
||||
"@expo/package-manager": "^1.12.1",
|
||||
"@expo/plist": "^0.7.0",
|
||||
"@expo/prebuild-config": "^56.0.14",
|
||||
"@expo/prebuild-config": "^56.0.15",
|
||||
"@expo/require-utils": "^56.1.3",
|
||||
"@expo/router-server": "^56.0.12",
|
||||
"@expo/router-server": "^56.0.13",
|
||||
"@expo/schema-utils": "^56.0.0",
|
||||
"@expo/spawn-async": "^1.8.0",
|
||||
"@expo/ws-tunnel": "^1.0.1",
|
||||
"@expo/ws-tunnel": "^2.0.0",
|
||||
"@expo/xcpretty": "^4.4.4",
|
||||
"@react-native/dev-middleware": "0.85.3",
|
||||
"accepts": "^1.3.8",
|
||||
@@ -6128,7 +6044,7 @@
|
||||
"connect": "^3.7.0",
|
||||
"debug": "^4.3.4",
|
||||
"dnssd-advertise": "^1.1.4",
|
||||
"expo-server": "^56.0.4",
|
||||
"expo-server": "^56.0.5",
|
||||
"fetch-nodeshim": "^0.4.10",
|
||||
"getenv": "^2.0.0",
|
||||
"glob": "^13.0.0",
|
||||
@@ -6171,20 +6087,20 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo/node_modules/@expo/cli/node_modules/@expo/router-server": {
|
||||
"version": "56.0.12",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/router-server/-/router-server-56.0.12.tgz",
|
||||
"integrity": "sha512-RqKV2/Z8BH/z8l0ngSpG6//5xxJPaF5dTQvSfPQ0nrvCjikGMeIvyj3B9BeLnmZZhxb3gBtXqrj3irAoiIp2aQ==",
|
||||
"version": "56.0.14",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/router-server/-/router-server-56.0.14.tgz",
|
||||
"integrity": "sha512-2UCTtZfcq1ZPgp3wk8/+sq9DvFI9UxrPr1jcEKMAF2DGAJLosnpc8GWNNg2hkjt6SHUOdFHIPxujWPYyho2y3A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"debug": "^4.3.4"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@expo/metro-runtime": "^56.0.13",
|
||||
"@expo/metro-runtime": "^56.0.15",
|
||||
"expo": "*",
|
||||
"expo-constants": "^56.0.16",
|
||||
"expo-font": "^56.0.5",
|
||||
"expo-constants": "^56.0.18",
|
||||
"expo-font": "^56.0.6",
|
||||
"expo-router": "*",
|
||||
"expo-server": "^56.0.4",
|
||||
"expo-server": "^56.0.5",
|
||||
"react": "*",
|
||||
"react-dom": "*",
|
||||
"react-server-dom-webpack": "~19.0.1 || ~19.1.2 || ~19.2.1"
|
||||
@@ -6204,6 +6120,15 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/expo/node_modules/@expo/ws-tunnel": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/@expo/ws-tunnel/-/ws-tunnel-2.0.0.tgz",
|
||||
"integrity": "sha512-j+JfTRdCk820J9dU0sA2SqshQIKFOMo7ED84w9MJFcebfbNQgsLztEY/SABDkGnjatrW4xGqnUhVRxSBVyCkXw==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"ws": "^8.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/expo/node_modules/ansi-styles": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||
@@ -6368,9 +6293,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo/node_modules/semver": {
|
||||
"version": "7.8.1",
|
||||
"resolved": "https://registry.npmmirror.com/semver/-/semver-7.8.1.tgz",
|
||||
"integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==",
|
||||
"version": "7.8.4",
|
||||
"resolved": "https://registry.npmmirror.com/semver/-/semver-7.8.4.tgz",
|
||||
"integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==",
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
@@ -8382,9 +8307,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/livekit-client": {
|
||||
"version": "2.19.1",
|
||||
"resolved": "https://registry.npmmirror.com/livekit-client/-/livekit-client-2.19.1.tgz",
|
||||
"integrity": "sha512-knwEuozt3d7optuUMvw+0PGrV/68GWXrTdAefezOM51Dk8QLb28qOm73UMSSQET58gUqelxqU1afchd2YyPKnQ==",
|
||||
"version": "2.19.2",
|
||||
"resolved": "https://registry.npmmirror.com/livekit-client/-/livekit-client-2.19.2.tgz",
|
||||
"integrity": "sha512-Kvk07QYDWRAbmYNLRll04ZIuxMQobW/oLPYnmR1kCy8GGHpU0gqyHf704Rz+29zfy8IJZRjKqeVbzGSKn9sumw==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@livekit/mutex": "1.1.1",
|
||||
@@ -9252,37 +9177,6 @@
|
||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/msgpackr": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/msgpackr/-/msgpackr-2.0.2.tgz",
|
||||
"integrity": "sha512-c5hYOXFbP79Slh6Dzd2wzk+jnV7mX1UxfMYtilnY1NmalXPqG8DGb5cYCMBrW4AsH3zekBBZd4QrKz9NhtvYLQ==",
|
||||
"license": "MIT",
|
||||
"optionalDependencies": {
|
||||
"msgpackr-extract": "^3.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/msgpackr-extract": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/msgpackr-extract/-/msgpackr-extract-3.0.4.tgz",
|
||||
"integrity": "sha512-4kmO/MdyUIkLIvTPr8VHLil4AtoKIoniWPIEk5+CDy0xnWC84azhSFmuJ7PxZdsYtiP5kEeQsORAVIeMgxT+Hw==",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"node-gyp-build-optional-packages": "5.2.2"
|
||||
},
|
||||
"bin": {
|
||||
"download-msgpackr-prebuilds": "bin/download-prebuilds.js"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.4",
|
||||
"@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.4",
|
||||
"@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.4",
|
||||
"@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.4",
|
||||
"@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.4",
|
||||
"@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/multitars": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/multitars/-/multitars-1.0.0.tgz",
|
||||
@@ -9355,21 +9249,6 @@
|
||||
"node": ">= 6.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/node-gyp-build-optional-packages": {
|
||||
"version": "5.2.2",
|
||||
"resolved": "https://registry.npmmirror.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz",
|
||||
"integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"detect-libc": "^2.0.1"
|
||||
},
|
||||
"bin": {
|
||||
"node-gyp-build-optional-packages": "bin.js",
|
||||
"node-gyp-build-optional-packages-optional": "optional.js",
|
||||
"node-gyp-build-optional-packages-test": "build-test.js"
|
||||
}
|
||||
},
|
||||
"node_modules/node-int64": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmmirror.com/node-int64/-/node-int64-0.4.0.tgz",
|
||||
@@ -9415,9 +9294,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/npm-package-arg/node_modules/semver": {
|
||||
"version": "7.8.1",
|
||||
"resolved": "https://registry.npmmirror.com/semver/-/semver-7.8.1.tgz",
|
||||
"integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==",
|
||||
"version": "7.8.4",
|
||||
"resolved": "https://registry.npmmirror.com/semver/-/semver-7.8.4.tgz",
|
||||
"integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==",
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
@@ -11405,6 +11284,12 @@
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/standard-navigation": {
|
||||
"version": "0.0.5",
|
||||
"resolved": "https://registry.npmmirror.com/standard-navigation/-/standard-navigation-0.0.5.tgz",
|
||||
"integrity": "sha512-YAmzwAiiQVocZxO/VGPFiQHcu5pKiz09QIGC0MK6aRMoa3E0QkoTQgcqJr7ZZ3OMiNhu4DkaGElFI5htjOIDbw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/statuses": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz",
|
||||
|
||||
39
package.json
39
package.json
@@ -14,43 +14,44 @@
|
||||
"ios:submit": "eas submit --platform ios --profile production"
|
||||
},
|
||||
"dependencies": {
|
||||
"@expo/ui": "^56.0.15",
|
||||
"@expo/ui": "~56.0.17",
|
||||
"@expo/vector-icons": "^15.1.1",
|
||||
"@livekit/react-native": "^2.11.0",
|
||||
"@livekit/react-native-webrtc": "^144.1.0",
|
||||
"@react-native-async-storage/async-storage": "^3.1.1",
|
||||
"@shopify/flash-list": "^2.3.1",
|
||||
"@tanstack/react-query": "^5.100.14",
|
||||
"@types/react": "~19.2.14",
|
||||
"axios": "^1.16.1",
|
||||
"date-fns": "^4.4.0",
|
||||
"expo": "^56.0.8",
|
||||
"expo-background-task": "~56.0.16",
|
||||
"expo-callkit-telecom": "^0.3.8",
|
||||
"expo-camera": "~56.0.7",
|
||||
"expo-constants": "~56.0.16",
|
||||
"expo-dev-client": "~56.0.18",
|
||||
"expo-file-system": "~56.0.7",
|
||||
"expo-font": "~56.0.5",
|
||||
"expo": "~56.0.11",
|
||||
"expo-background-task": "~56.0.18",
|
||||
"expo-callkit-telecom": "^0.3.9",
|
||||
"expo-camera": "~56.0.8",
|
||||
"expo-constants": "~56.0.18",
|
||||
"expo-dev-client": "~56.0.20",
|
||||
"expo-file-system": "~56.0.8",
|
||||
"expo-font": "~56.0.6",
|
||||
"expo-haptics": "~56.0.3",
|
||||
"expo-image": "~56.0.6",
|
||||
"expo-image-picker": "~56.0.15",
|
||||
"expo-image-picker": "~56.0.17",
|
||||
"expo-intent-launcher": "~56.0.4",
|
||||
"expo-linear-gradient": "~56.0.4",
|
||||
"expo-linking": "~56.0.13",
|
||||
"expo-media-library": "~56.0.6",
|
||||
"expo-notifications": "~56.0.15",
|
||||
"expo-router": "~56.2.8",
|
||||
"expo-linking": "~56.0.14",
|
||||
"expo-media-library": "~56.0.7",
|
||||
"expo-notifications": "~56.0.17",
|
||||
"expo-router": "~56.2.10",
|
||||
"expo-splash-screen": "~56.0.10",
|
||||
"expo-sqlite": "~56.0.4",
|
||||
"expo-sqlite": "~56.0.5",
|
||||
"expo-status-bar": "~56.0.4",
|
||||
"expo-system-ui": "~56.0.5",
|
||||
"expo-task-manager": "~56.0.16",
|
||||
"expo-updates": "~56.0.17",
|
||||
"expo-video": "~56.1.2",
|
||||
"expo-task-manager": "~56.0.18",
|
||||
"expo-updates": "~56.0.19",
|
||||
"expo-video": "~56.1.3",
|
||||
"jcore-react-native": "^2.3.6",
|
||||
"jpush-react-native": "^3.2.7",
|
||||
"katex": "^0.17.0",
|
||||
"livekit-client": "^2.19.0",
|
||||
"livekit-client": "^2.19.2",
|
||||
"markdown-it": "^14.2.0",
|
||||
"pako": "^2.1.0",
|
||||
"prismjs": "^1.30.0",
|
||||
|
||||
@@ -172,7 +172,7 @@ export function AppDesktopShell() {
|
||||
|
||||
const handleTabChange = useCallback(
|
||||
(href: string) => {
|
||||
router.replace(href);
|
||||
router.push(href);
|
||||
},
|
||||
[router]
|
||||
);
|
||||
|
||||
@@ -6,6 +6,7 @@ import { useRouter } from 'expo-router';
|
||||
import Text from '../common/Text';
|
||||
import { useAppColors, spacing, borderRadius } from '../../theme';
|
||||
import type { PostRefSegmentData } from '../../types';
|
||||
import * as hrefs from '../../navigation/hrefs';
|
||||
|
||||
interface PostRefCardProps {
|
||||
data: PostRefSegmentData;
|
||||
@@ -21,7 +22,7 @@ const PostRefCard: React.FC<PostRefCardProps> = ({ data, compact = false, onPres
|
||||
if (onPress) {
|
||||
onPress(data.post_id);
|
||||
} else {
|
||||
router.push(`/post/${data.post_id}` as any);
|
||||
router.push(hrefs.hrefPostDetail(data.post_id));
|
||||
}
|
||||
}, [data.post_id, onPress, router]);
|
||||
|
||||
|
||||
@@ -70,6 +70,9 @@ export { useMediaCache } from './useMediaCache';
|
||||
|
||||
export type { UseMediaCacheReturn } from './useMediaCache';
|
||||
|
||||
// ==================== 推送设备注册 Hook ====================
|
||||
export { useRegisterPushDevice } from './useRegisterPushDevice';
|
||||
|
||||
// ==================== 差异更新 Hooks ====================
|
||||
export { useDifferentialMessages } from './useDifferentialMessages';
|
||||
|
||||
|
||||
29
src/hooks/useRegisterPushDevice.ts
Normal file
29
src/hooks/useRegisterPushDevice.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import { useEffect, useRef } from 'react';
|
||||
import { Platform } from 'react-native';
|
||||
|
||||
import { jpushService } from '../services/notification/jpushService';
|
||||
|
||||
export function useRegisterPushDevice(isAuthenticated: boolean, userID?: string) {
|
||||
const deviceRegistered = useRef(false);
|
||||
|
||||
useEffect(() => {
|
||||
if (Platform.OS === 'web' || !isAuthenticated || !userID) return;
|
||||
|
||||
if (!deviceRegistered.current) {
|
||||
deviceRegistered.current = true;
|
||||
|
||||
jpushService.initialize().then((ok) => {
|
||||
if (ok && userID) {
|
||||
jpushService.setAliasForUser(userID);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return () => {
|
||||
if (!isAuthenticated) {
|
||||
deviceRegistered.current = false;
|
||||
jpushService.cleanup();
|
||||
}
|
||||
};
|
||||
}, [isAuthenticated, userID]);
|
||||
}
|
||||
@@ -2,13 +2,16 @@
|
||||
* Expo Router 路径构建(单一事实来源,避免魔法字符串散落)
|
||||
*/
|
||||
import type { SystemMessageResponse } from '../types/dto';
|
||||
import { routePayloadCache } from '../stores';
|
||||
|
||||
export function hrefPostDetail(postId: string, scrollToComments?: boolean): string {
|
||||
const q = scrollToComments ? '?scrollToComments=1' : '';
|
||||
return `/post/${encodeURIComponent(postId)}${q}`;
|
||||
}
|
||||
|
||||
export function hrefTradeDetail(tradeId: string): string {
|
||||
return `/trade/${encodeURIComponent(tradeId)}`;
|
||||
}
|
||||
|
||||
export function hrefUserProfile(userId: string): string {
|
||||
return `/user/${encodeURIComponent(userId)}`;
|
||||
}
|
||||
@@ -124,12 +127,10 @@ export function hrefGroupMembers(groupId: string): string {
|
||||
}
|
||||
|
||||
export function hrefGroupRequestDetail(message: SystemMessageResponse): string {
|
||||
routePayloadCache.stashSystemMessage(message);
|
||||
return `/group/request?messageId=${encodeURIComponent(message.id)}`;
|
||||
}
|
||||
|
||||
export function hrefGroupInviteDetail(message: SystemMessageResponse): string {
|
||||
routePayloadCache.stashSystemMessage(message);
|
||||
return `/group/invite?messageId=${encodeURIComponent(message.id)}`;
|
||||
}
|
||||
|
||||
|
||||
@@ -716,7 +716,7 @@ export const HomeScreen: React.FC = () => {
|
||||
// 跳转到发帖页面(使用 Modal 方式)
|
||||
const handleCreatePost = () => {
|
||||
if (!isAuthenticated) {
|
||||
router.push('/login');
|
||||
router.push(hrefs.hrefAuthLogin());
|
||||
return;
|
||||
}
|
||||
if (!isVerified) {
|
||||
@@ -1052,7 +1052,7 @@ export const HomeScreen: React.FC = () => {
|
||||
floatingButtonBottom !== undefined && { bottom: floatingButtonBottom },
|
||||
]}
|
||||
onPress={homeTab === 'market' ? () => {
|
||||
if (!isAuthenticated) { router.push('/login'); return; }
|
||||
if (!isAuthenticated) { router.push(hrefs.hrefAuthLogin()); return; }
|
||||
if (!isVerified) { router.push(hrefs.hrefVerificationGuide()); return; }
|
||||
setShowCreateTrade(true);
|
||||
} : handleCreatePost}
|
||||
|
||||
@@ -14,6 +14,7 @@ import type {
|
||||
} from '../../types/trade';
|
||||
import { useRouter } from 'expo-router';
|
||||
import { useResponsive, useResponsiveSpacing } from '../../hooks';
|
||||
import * as hrefs from '../../navigation/hrefs';
|
||||
|
||||
type TradeFilterType = 'all' | 'sell' | 'buy';
|
||||
|
||||
@@ -137,7 +138,7 @@ export function MarketView({
|
||||
}, [isLoadingMore, hasMore, cursor, filterType, selectedCategory]);
|
||||
|
||||
const handlePressItem = useCallback((id: string) => {
|
||||
router.push(`/trade/${id}` as any);
|
||||
router.push(hrefs.hrefTradeDetail(id));
|
||||
}, [router]);
|
||||
|
||||
const handleFavorite = useCallback(async (id: string) => {
|
||||
|
||||
@@ -472,7 +472,7 @@ export const SearchScreen: React.FC<SearchScreenProps> = ({ onBack, homeTab = 's
|
||||
<TradeCard
|
||||
item={item}
|
||||
variant="list"
|
||||
onPress={(id) => router.push(`/trade/${id}` as any)}
|
||||
onPress={(id) => router.push(hrefs.hrefTradeDetail(id))}
|
||||
/>
|
||||
</View>
|
||||
)}
|
||||
|
||||
@@ -38,7 +38,7 @@ import { SystemMessageItem } from '../../components/business';
|
||||
import { Text, ResponsiveContainer, AppBackButton } from '../../components/common';
|
||||
import { useCursorPagination } from '../../hooks/useCursorPagination';
|
||||
import * as hrefs from '../../navigation/hrefs';
|
||||
import { useMessageManagerSystemUnreadCount } from '../../stores';
|
||||
import { useMessageManagerSystemUnreadCount, routePayloadCache } from '../../stores';
|
||||
import { messageManager } from '../../stores/message';
|
||||
|
||||
const MESSAGE_TYPES = [
|
||||
@@ -331,8 +331,10 @@ export const NotificationsScreen: React.FC<{ onBack?: () => void }> = ({ onBack
|
||||
router.push(hrefs.hrefUserProfile(extra_data.actor_id_str));
|
||||
}
|
||||
} else if (system_type === 'group_join_apply') {
|
||||
routePayloadCache.stashSystemMessage(message);
|
||||
router.push(hrefs.hrefGroupRequestDetail(message));
|
||||
} else if (system_type === 'group_invite') {
|
||||
routePayloadCache.stashSystemMessage(message);
|
||||
router.push(hrefs.hrefGroupInviteDetail(message));
|
||||
}
|
||||
// 其他类型暂不处理跳转
|
||||
|
||||
Reference in New Issue
Block a user