diff --git a/app.json b/app.json index a8aa748..c9a90b6 100644 --- a/app.json +++ b/app.json @@ -4,7 +4,6 @@ "slug": "digital-pilates", "version": "1.0.5", "orientation": "portrait", - "icon": "./assets/images/Sealife.jpeg", "scheme": "digitalpilates", "userInterfaceStyle": "light", "newArchEnabled": true, @@ -25,33 +24,15 @@ "fetch", "remote-notification" ] - } - }, - "android": { - "adaptiveIcon": { - "foregroundImage": "./assets/images/Sealife.jpeg", - "backgroundColor": "#ffffff" }, - "edgeToEdgeEnabled": true, - "package": "com.anonymous.digitalpilates", - "permissions": [ - "android.permission.RECEIVE_BOOT_COMPLETED", - "android.permission.VIBRATE", - "android.permission.WAKE_LOCK", - "android.permission.RECORD_AUDIO" - ] - }, - "web": { - "bundler": "metro", - "output": "static", - "favicon": "./assets/images/Sealife.jpeg" + "icon": "./assets/icon.icon" }, "plugins": [ "expo-router", [ "expo-splash-screen", { - "image": "./assets/images/Sealife.jpeg", + "image": "./assets/icon.icon", "imageWidth": 40, "resizeMode": "contain", "backgroundColor": "#ffffff" @@ -68,7 +49,7 @@ [ "expo-notifications", { - "icon": "./assets/images/Sealife.jpeg", + "icon": "./assets/icon.icon", "color": "#ffffff" } ], diff --git a/app/(tabs)/statistics.tsx b/app/(tabs)/statistics.tsx index 5dc1c51..4c12fac 100644 --- a/app/(tabs)/statistics.tsx +++ b/app/(tabs)/statistics.tsx @@ -470,7 +470,7 @@ export default function ExploreScreen() { {/* 左边logo */} @@ -680,8 +680,8 @@ const styles = StyleSheet.create({ justifyContent: 'space-between', }, logoImage: { - width: 36, - height: 36, + width: 28, + height: 28, borderRadius: 20, }, headerTextContainer: { @@ -690,7 +690,7 @@ const styles = StyleSheet.create({ }, headerTitle: { fontSize: 16, - fontWeight: '500', + fontWeight: '700', color: '#192126', }, debugButtonsContainer: { diff --git a/assets/icon.icon/Assets/icon-1756312748268.png b/assets/icon.icon/Assets/icon-1756312748268.png new file mode 100644 index 0000000..f7799d6 Binary files /dev/null and b/assets/icon.icon/Assets/icon-1756312748268.png differ diff --git a/assets/icon.icon/icon.json b/assets/icon.icon/icon.json new file mode 100644 index 0000000..652df4f --- /dev/null +++ b/assets/icon.icon/icon.json @@ -0,0 +1,31 @@ +{ + "fill": "automatic", + "groups": [ + { + "layers": [ + { + "blend-mode": "normal", + "glass": true, + "hidden": false, + "image-name": "icon-1756312748268.png", + "name": "icon-1756312748268", + "opacity": 1 + } + ], + "shadow": { + "kind": "neutral", + "opacity": 0.5 + }, + "translucency": { + "enabled": true, + "value": 0.5 + } + } + ], + "supported-platforms": { + "circles": [ + "watchOS" + ], + "squares": "shared" + } +} \ No newline at end of file diff --git a/docs/cos.md b/docs/cos.md deleted file mode 100644 index 0ed73a0..0000000 --- a/docs/cos.md +++ /dev/null @@ -1,174 +0,0 @@ -# 腾讯云 COS 上传集成说明 - -本文档记录本项目在前端(Expo/React Native)侧对腾讯云 COS 的接入方式与使用规范,包含配置、接口约定、上传用法、进度/取消/重试、URL 构建、权限与安全、常见问题等。 - -## 概览 -- 依赖:`cos-js-sdk-v5` -- 临时密钥接口:`GET /api/users/cos-token` -- 统一封装: - - 配置:`constants/Cos.ts` - - 上传服务:`services/cos.ts` - - Hook:`hooks/useCosUpload.ts` - -## 安装与依赖 -已在 `package.json` 中添加: - -```json -{ - "dependencies": { - "cos-js-sdk-v5": "^1.6.0" - } -} -``` - -## 配置 -编辑 `constants/Cos.ts`,填入实际 COS 参数: - -```ts -export const COS_BUCKET = 'your-bucket-125xxxxxxx'; -export const COS_REGION = 'ap-shanghai'; -export const COS_PUBLIC_BASE = 'https://your-bucket-125xxxxxxx.cos.ap-shanghai.myqcloud.com'; -export const COS_KEY_PREFIX = 'uploads/'; -``` - -说明: -- COS_PUBLIC_BASE:若桶或 CDN 具有公网访问,使用对应域名(建议 HTTPS)。若为私有桶,可忽略该项(前端不能直接拼公开 URL)。 -- `buildCosKey` 会依据日期和随机串生成不重复 Key,可通过 `prefix`/`userId` 定制目录。 - -## 后端接口约定:/api/users/cos-token -- 方法:`GET` -- 鉴权:建议要求登录态,后端根据用户权限签发最小权限临时凭证。 -- 响应体示例(关键字段): - -```json -{ - "credentials": { - "tmpSecretId": "TMPID...", - "tmpSecretKey": "TMPKEY...", - "sessionToken": "SESSION_TOKEN..." - }, - "startTime": 1730000000, - "expiredTime": 1730001800 -} -``` - -- 最小权限策略建议(示例,后端侧): - -```json -{ - "version": "2.0", - "statement": [ - { - "action": [ - "name/cos:PutObject", - "name/cos:InitiateMultipartUpload", - "name/cos:UploadPart", - "name/cos:CompleteMultipartUpload" - ], - "effect": "allow", - "resource": [ - "qcs::cos:ap-shanghai:uid/125xxxxxxx:your-bucket-125xxxxxxx/*" - ] - } - ] -} -``` - -注意:对上传路径进行前缀限制(如 `uploads/*`)能进一步收敛权限范围。 - -## 前端用法一:Hook(推荐) -在页面/组件内使用 `useCosUpload`,支持进度、取消与重试。 - -```tsx -import { useCosUpload } from '@/hooks/useCosUpload'; -import * as ImagePicker from 'expo-image-picker'; - -export default function Uploader() { - const { upload, progress, uploading, cancel } = useCosUpload({ prefix: 'images/', userId: 'uid-123' }); - - const pickAndUpload = async () => { - const res = await ImagePicker.launchImageLibraryAsync({ mediaTypes: ImagePicker.MediaTypeOptions.Images }); - if (res.canceled || !res.assets?.[0]) return; - const asset = res.assets[0]; - const result = await upload({ uri: asset.uri, name: asset.fileName, type: asset.mimeType }); - console.log('uploaded:', result); // { key, url } - }; - - return null; -} -``` - -说明: -- `progress` 范围 0-1;`uploading` 指示进行中;可随时 `cancel()`。 -- 未开启公网访问时,`url` 可能为空(需服务端签名下载)。 - -## 前端用法二:直接调用服务 -`services/cos.ts` 提供基础方法: - -```ts -import { uploadWithRetry } from '@/services/cos'; - -const { key, etag } = await uploadWithRetry({ - key: 'uploads/demo.png', - body: blob, - contentType: 'image/png' -}); -``` - -- 进度回调:`onProgress: ({ percent }) => { ... }` -- 取消:传入 `signal: AbortSignal` -- 重试:`maxRetries`/`backoffMs` 配置指数退避 - -## URL 构建 -若为公网可访问场景,使用: - -```ts -import { buildPublicUrl } from '@/constants/Cos'; -const url = buildPublicUrl(key); -``` - -若为私有桶,请改走服务端生成临时下载链接或代理下载。 - -## 大文件与分片上传 -当前默认使用 `putObject`。若需大文件/断点续传,建议切换 SDK 的分片接口 `sliceUploadFile`: - -```ts -const taskId = cos.sliceUploadFile({ - Bucket: COS_BUCKET, - Region: COS_REGION, - Key: key, - Body: fileOrBlob, - onProgress(progress) { /* ... */ } -}, (err, data) => { /* ... */ }); -``` - -如需切换,可在 `services/cos.ts` 中将 `putObject` 替换为 `sliceUploadFile`,并保留同样的进度、取消与重试包装。 - -## CORS 与浏览器(如使用 Web) -- COS 控制台需配置 CORS,允许来源域名、方法(PUT/POST/OPTIONS)、请求头(含 `Authorization`、`x-cos-*` 等)、暴露头。 -- 若通过自有域名/网关代理,也需在代理层正确透传 CORS 与签名头。 - -## 安全与最佳实践 -- 永久密钥仅存在服务端,通过 `/api/users/cos-token` 颁发短期凭证。 -- 严控临时凭证权限与有效期,并限制上传前缀。 -- 前端仅持有短期凭证;错误重试次数受限,避免暴力重放。 - -## 常见问题排查 -- 403/签名失败:确认服务端时间同步、`region/bucket`/`resource` 配置正确;临时密钥未过期。 -- CORS 失败:检查 COS 跨域规则;确认需要的请求头(含 `Authorization`)均已放行。 -- URL 访问 403:私有桶下请改用服务端签名下载;或为指定前缀开启公共读(谨慎)。 -- MIME/ContentType:从 ImagePicker 取 `mimeType`,或按扩展名兜底设置。 - -## 测试清单 -- 小图上传成功且进度递增、可取消。 -- 取消后不再继续发片段;重试如期生效。 -- 返回的 `key` 能通过 `buildPublicUrl` 拼出可访问地址(公网桶)。 -- 临时密钥过期后,能够重新获取并继续上传。 - -## 变更点速记 -- 依赖:`cos-js-sdk-v5` -- 新增:`constants/Cos.ts`、`services/cos.ts`、`hooks/useCosUpload.ts` -- 接口:`GET /api/users/cos-token`(返回临时凭证) - ---- -如需我将某页面接入示例按钮或改造为分片上传,请在需求中指明目标文件与交互期望。 diff --git a/hooks/useCosUpload.ts b/hooks/useCosUpload.ts index 07f1078..b92a9a6 100644 --- a/hooks/useCosUpload.ts +++ b/hooks/useCosUpload.ts @@ -34,7 +34,6 @@ export function useCosUpload(defaultOptions?: UseCosUploadOptions) { try { let res: any; if (Platform.OS === 'web') { - // Web:使用 Blob 走 cos-js-sdk-v5 分支 let body: any = null; if (typeof file === 'string') { // 允许直接传 Base64/DataURL 字符串 diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 239b15b..3839b59 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,14 +1,14 @@ PODS: - boost (1.84.0) - DoubleConversion (1.1.6) - - EXApplication (7.0.6): + - EXApplication (7.0.7): - ExpoModulesCore - EXConstants (18.0.8): - ExpoModulesCore - EXImageLoader (6.0.0): - ExpoModulesCore - React-Core - - EXNotifications (0.32.10): + - EXNotifications (0.32.11): - ExpoModulesCore - Expo (54.0.1): - boost @@ -55,13 +55,13 @@ PODS: - ZXingObjC/PDF417 - ExpoFileSystem (19.0.11): - ExpoModulesCore - - ExpoFont (14.0.7): + - ExpoFont (14.0.8): - ExpoModulesCore - - ExpoGlassEffect (0.1.1): + - ExpoGlassEffect (0.1.2): - ExpoModulesCore - ExpoHaptics (15.0.6): - ExpoModulesCore - - ExpoHead (6.0.0): + - ExpoHead (6.0.1): - ExpoModulesCore - RNScreens - ExpoImage (3.0.7): @@ -77,7 +77,7 @@ PODS: - ExpoModulesCore - ExpoLinearGradient (15.0.6): - ExpoModulesCore - - ExpoLinking (8.0.7): + - ExpoLinking (8.0.8): - ExpoModulesCore - ExpoModulesCore (3.0.15): - boost @@ -3419,10 +3419,10 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb - EXApplication: f5219af375d2bcff2596ac5c586d3b62c587c0d8 + EXApplication: 296622817d459f46b6c5fe8691f4aac44d2b79e7 EXConstants: 7e4654405af367ff908c863fe77a8a22d60bd37d EXImageLoader: 189e3476581efe3ad4d1d3fb4735b7179eb26f05 - EXNotifications: bfcda0c49edd979747e1e50340de7bb0e9729ef5 + EXNotifications: 7a2975f4e282b827a0bc78bb1d232650cb569bbd Expo: 449ff2805d3673354f533a360e001f556f0b2009 ExpoAppleAuthentication: 9eb1ec7213ee9c9797951df89975136db89bf8ac ExpoAsset: 84810d6fed8179f04d4a7a4a6b37028bbd726e26 @@ -3430,15 +3430,15 @@ SPEC CHECKSUMS: ExpoBlur: 9bde58a4de1d24a02575d0e24290f2026ce8dc3a ExpoCamera: ae1d6691b05b753261a845536d2b19a9788a8750 ExpoFileSystem: 7b4a4f6c67a738e826fd816139bac9d098b3b084 - ExpoFont: 74a14c605637c2d32337a2f542065408a8ca3454 - ExpoGlassEffect: 9aa58a46e8abe720971f2b588bc1e10d58728ba8 + ExpoFont: 86ceec09ffed1c99cfee36ceb79ba149074901b5 + ExpoGlassEffect: 07bafe3374d7d24299582627d040a6c7e403c3f3 ExpoHaptics: e0912a9cf05ba958eefdc595f1990b8f89aa1f3f - ExpoHead: 275ef6292a9ab92669fd9554f19e1b1bbb5aa986 + ExpoHead: 9539b6c97faa57b2deb0414205e084b0a2bc15f1 ExpoImage: 18d9836939f8e271364a5a2a3566f099ea73b2e4 ExpoImagePicker: 66195293e95879fa5ee3eb1319f10b5de0ffccbb ExpoKeepAwake: eba81dfb5728be8c46e382b9314dfa14f40d8764 ExpoLinearGradient: 74d67832cdb0d2ef91f718d50dd82b273ce2812e - ExpoLinking: dadcc1205351c1108b7c5bab4b7891e744fc8c89 + ExpoLinking: f051f28e50ea9269ff539317c166adec81d9342d ExpoModulesCore: 5d150c790fb491ab10fe431fb794014af841258f ExpoQuickActions: fdbda7f5874aed3dd2b1d891ec00ab3300dc7541 ExpoSplashScreen: 1665809071bd907c6fdbfd9c09583ee4d51b41d4 diff --git a/ios/digitalpilates/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/digitalpilates/Images.xcassets/AppIcon.appiconset/Contents.json index d6620a8..43d35a2 100644 --- a/ios/digitalpilates/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/ios/digitalpilates/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "Sealife.jpeg", + "filename" : "icon-1756312748268.png", "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" diff --git a/ios/digitalpilates/Images.xcassets/AppIcon.appiconset/Sealife.jpeg b/ios/digitalpilates/Images.xcassets/AppIcon.appiconset/Sealife.jpeg deleted file mode 100644 index 2d9574b..0000000 Binary files a/ios/digitalpilates/Images.xcassets/AppIcon.appiconset/Sealife.jpeg and /dev/null differ diff --git a/ios/digitalpilates/Images.xcassets/AppIcon.appiconset/icon-1756312748268.png b/ios/digitalpilates/Images.xcassets/AppIcon.appiconset/icon-1756312748268.png new file mode 100644 index 0000000..f7799d6 Binary files /dev/null and b/ios/digitalpilates/Images.xcassets/AppIcon.appiconset/icon-1756312748268.png differ diff --git a/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/Contents.json b/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/Contents.json index d01f0a3..1dad293 100644 --- a/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/Contents.json +++ b/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "SealifeSplash.jpeg", + "filename" : "icon-1756312748268.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "SealifeSplash 1.jpeg", + "filename" : "icon-1756312748268 1.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "SealifeSplash 2.jpeg", + "filename" : "icon-1756312748268 2.png", "idiom" : "universal", "scale" : "3x" } diff --git a/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/SealifeSplash 1.jpeg b/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/SealifeSplash 1.jpeg deleted file mode 100644 index e495b63..0000000 Binary files a/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/SealifeSplash 1.jpeg and /dev/null differ diff --git a/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/SealifeSplash 2.jpeg b/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/SealifeSplash 2.jpeg deleted file mode 100644 index e495b63..0000000 Binary files a/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/SealifeSplash 2.jpeg and /dev/null differ diff --git a/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/SealifeSplash.jpeg b/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/SealifeSplash.jpeg deleted file mode 100644 index e495b63..0000000 Binary files a/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/SealifeSplash.jpeg and /dev/null differ diff --git a/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/icon-1756312748268 1.png b/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/icon-1756312748268 1.png new file mode 100644 index 0000000..f7799d6 Binary files /dev/null and b/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/icon-1756312748268 1.png differ diff --git a/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/icon-1756312748268 2.png b/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/icon-1756312748268 2.png new file mode 100644 index 0000000..f7799d6 Binary files /dev/null and b/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/icon-1756312748268 2.png differ diff --git a/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/icon-1756312748268.png b/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/icon-1756312748268.png new file mode 100644 index 0000000..f7799d6 Binary files /dev/null and b/ios/digitalpilates/Images.xcassets/SplashScreenLogo.imageset/icon-1756312748268.png differ diff --git a/ios/digitalpilates/Images.xcassets/logo.imageset/Contents.json b/ios/digitalpilates/Images.xcassets/logo.imageset/Contents.json index dd508a4..1dad293 100644 --- a/ios/digitalpilates/Images.xcassets/logo.imageset/Contents.json +++ b/ios/digitalpilates/Images.xcassets/logo.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "Sealife.jpeg", + "filename" : "icon-1756312748268.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "未命名项目 (5).jpeg", + "filename" : "icon-1756312748268 1.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "未命名项目 (5) 1.jpeg", + "filename" : "icon-1756312748268 2.png", "idiom" : "universal", "scale" : "3x" } diff --git a/ios/digitalpilates/Images.xcassets/logo.imageset/Sealife.jpeg b/ios/digitalpilates/Images.xcassets/logo.imageset/Sealife.jpeg deleted file mode 100644 index 2d9574b..0000000 Binary files a/ios/digitalpilates/Images.xcassets/logo.imageset/Sealife.jpeg and /dev/null differ diff --git a/ios/digitalpilates/Images.xcassets/logo.imageset/icon-1756312748268 1.png b/ios/digitalpilates/Images.xcassets/logo.imageset/icon-1756312748268 1.png new file mode 100644 index 0000000..f7799d6 Binary files /dev/null and b/ios/digitalpilates/Images.xcassets/logo.imageset/icon-1756312748268 1.png differ diff --git a/ios/digitalpilates/Images.xcassets/logo.imageset/icon-1756312748268 2.png b/ios/digitalpilates/Images.xcassets/logo.imageset/icon-1756312748268 2.png new file mode 100644 index 0000000..f7799d6 Binary files /dev/null and b/ios/digitalpilates/Images.xcassets/logo.imageset/icon-1756312748268 2.png differ diff --git a/ios/digitalpilates/Images.xcassets/logo.imageset/icon-1756312748268.png b/ios/digitalpilates/Images.xcassets/logo.imageset/icon-1756312748268.png new file mode 100644 index 0000000..f7799d6 Binary files /dev/null and b/ios/digitalpilates/Images.xcassets/logo.imageset/icon-1756312748268.png differ diff --git a/ios/digitalpilates/Images.xcassets/logo.imageset/未命名项目 (5) 1.jpeg b/ios/digitalpilates/Images.xcassets/logo.imageset/未命名项目 (5) 1.jpeg deleted file mode 100644 index 46132b1..0000000 Binary files a/ios/digitalpilates/Images.xcassets/logo.imageset/未命名项目 (5) 1.jpeg and /dev/null differ diff --git a/ios/digitalpilates/Images.xcassets/logo.imageset/未命名项目 (5).jpeg b/ios/digitalpilates/Images.xcassets/logo.imageset/未命名项目 (5).jpeg deleted file mode 100644 index 46132b1..0000000 Binary files a/ios/digitalpilates/Images.xcassets/logo.imageset/未命名项目 (5).jpeg and /dev/null differ diff --git a/ios/digitalpilates/Info.plist b/ios/digitalpilates/Info.plist index 8b361ac..14d1062 100644 --- a/ios/digitalpilates/Info.plist +++ b/ios/digitalpilates/Info.plist @@ -4,7 +4,8 @@ BGTaskSchedulerPermittedIdentifiers - backgroundtask + com.anonymous.digitalpilates.task + com.expo.modules.backgroundtask.processing CADisableMinimumFrameDurationOnPhone diff --git a/ios/digitalpilates/SplashScreen.storyboard b/ios/digitalpilates/SplashScreen.storyboard index db13750..f7339d3 100644 --- a/ios/digitalpilates/SplashScreen.storyboard +++ b/ios/digitalpilates/SplashScreen.storyboard @@ -1,9 +1,9 @@ - + - + @@ -39,7 +39,7 @@ - + diff --git a/package-lock.json b/package-lock.json index 085b497..6626e68 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,10 +15,10 @@ "@react-native-masked-view/masked-view": "^0.3.2", "@react-native-picker/picker": "^2.11.1", "@react-native-voice/voice": "^3.2.4", - "@react-navigation/bottom-tabs": "^7.3.10", - "@react-navigation/elements": "^2.3.8", - "@react-navigation/native": "^7.1.6", - "@reduxjs/toolkit": "^2.8.2", + "@react-navigation/bottom-tabs": "^7.4.7", + "@react-navigation/elements": "^2.6.4", + "@react-navigation/native": "^7.1.17", + "@reduxjs/toolkit": "^2.9.0", "@sentry/react-native": "~6.20.0", "@types/lodash": "^4.17.20", "cos-js-sdk-v5": "^1.6.0", @@ -29,16 +29,16 @@ "expo-blur": "~15.0.6", "expo-camera": "~17.0.7", "expo-constants": "~18.0.8", - "expo-font": "~14.0.7", - "expo-glass-effect": "^0.1.1", + "expo-font": "~14.0.8", + "expo-glass-effect": "^0.1.2", "expo-haptics": "~15.0.6", "expo-image": "~3.0.7", "expo-image-picker": "~17.0.7", "expo-linear-gradient": "~15.0.6", "expo-linking": "~8.0.7", - "expo-notifications": "~0.32.10", + "expo-notifications": "~0.32.11", "expo-quick-actions": "^5.0.0", - "expo-router": "~6.0.0", + "expo-router": "~6.0.1", "expo-splash-screen": "~31.0.8", "expo-status-bar": "~3.0.7", "expo-symbols": "~1.0.6", @@ -2252,9 +2252,9 @@ } }, "node_modules/@expo/schema-utils": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-0.1.6.tgz", - "integrity": "sha512-arKkNlPZYD0uUxGPbSwV/6v4owmZcUNrXk9Vq/o+p2Eqt1DM9jIjbXwrqlmvkTsPkjUtNLDGB0EDiosVJ4OvDg==", + "version": "0.1.7", + "resolved": "https://mirrors.tencent.com/npm/@expo/schema-utils/-/schema-utils-0.1.7.tgz", + "integrity": "sha512-jWHoSuwRb5ZczjahrychMJ3GWZu54jK9ulNdh1d4OzAEq672K9E5yOlnlBsfIHWHGzUAT+0CL7Yt1INiXTz68g==", "license": "MIT" }, "node_modules/@expo/sdk-runtime-versions": { @@ -2264,9 +2264,9 @@ "license": "MIT" }, "node_modules/@expo/server": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/@expo/server/-/server-0.7.3.tgz", - "integrity": "sha512-lmlpJrjC0PLspPIF8ZzAalpbCxqbsqLRzIpolT3gZP48H6039BOlb1hAWTVgZvXmWkpvlYbt0PYG9o9GZxkQuw==", + "version": "0.7.4", + "resolved": "https://mirrors.tencent.com/npm/@expo/server/-/server-0.7.4.tgz", + "integrity": "sha512-8bfRzL7h1Qgrmf3auR71sPAcAuxnmNkRJs+8enL8vZi2+hihevLhrayDu7P0A/XGEq7wySAGvBBFfIB00Et/AA==", "license": "MIT", "dependencies": { "abort-controller": "^3.0.0", @@ -3893,12 +3893,12 @@ } }, "node_modules/@react-navigation/bottom-tabs": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.4.5.tgz", - "integrity": "sha512-Kt2/E9O7G4Kvx/NYrMVCSk+RN5auZcLgfBeCf5/vH6/weCJOxBy15Wav+3HiehZLNcQ40FJ3PeNHF0CR04idSw==", + "version": "7.4.7", + "resolved": "https://mirrors.tencent.com/npm/@react-navigation/bottom-tabs/-/bottom-tabs-7.4.7.tgz", + "integrity": "sha512-SQ4KuYV9yr3SV/thefpLWhAD0CU2CrBMG1l0w/QKl3GYuGWdN5OQmdQdmaPZGtsjjVOb+N9Qo7Tf6210P4TlpA==", "license": "MIT", "dependencies": { - "@react-navigation/elements": "^2.6.2", + "@react-navigation/elements": "^2.6.4", "color": "^4.2.3" }, "peerDependencies": { @@ -3928,9 +3928,9 @@ } }, "node_modules/@react-navigation/elements": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.6.2.tgz", - "integrity": "sha512-F3xySYWSmzIKSRUlisRSvqE6wzafPJwlgP8hZmf5cnctIu+gJUYWX4e2Za4dQZCELg7luFQjj1ohPWPqm/ziUQ==", + "version": "2.6.4", + "resolved": "https://mirrors.tencent.com/npm/@react-navigation/elements/-/elements-2.6.4.tgz", + "integrity": "sha512-O3X9vWXOEhAO56zkQS7KaDzL8BvjlwZ0LGSteKpt1/k6w6HONG+2Wkblrb057iKmehTkEkQMzMLkXiuLmN5x9Q==", "license": "MIT", "dependencies": { "color": "^4.2.3", @@ -3994,9 +3994,9 @@ } }, "node_modules/@reduxjs/toolkit": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.8.2.tgz", - "integrity": "sha512-MYlOhQ0sLdw4ud48FoC5w0dH9VfWQjtCjreKwYTT3l+r427qYC5Y8PihNutepr8XrNaBUDQo9khWUwQxZaqt5A==", + "version": "2.9.0", + "resolved": "https://mirrors.tencent.com/npm/@reduxjs/toolkit/-/toolkit-2.9.0.tgz", + "integrity": "sha512-fSfQlSRu9Z5yBkvsNhYF2rPS8cGXn/TZVrlwN1948QyZ8xMZ0JvP50S2acZNaf+o63u6aEeMjipFyksjIcWrog==", "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.0.0", @@ -7777,9 +7777,9 @@ } }, "node_modules/expo-application": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-7.0.6.tgz", - "integrity": "sha512-OrRQ1vDi1v+nF0bfGe0nWU/cZVN0EFysJ7Sj5ko8GuL8t6GidqhN3j7hw16hINZuWcEEfa0wAUXmNT1LMgLWog==", + "version": "7.0.7", + "resolved": "https://mirrors.tencent.com/npm/expo-application/-/expo-application-7.0.7.tgz", + "integrity": "sha512-Jt1/qqnoDUbZ+bK91+dHaZ1vrPDtRBOltRa681EeedkisqguuEeUx4UHqwVyDK2oHWsK6lO3ojetoA4h8OmNcg==", "license": "MIT", "peerDependencies": { "expo": "*" @@ -7898,9 +7898,9 @@ } }, "node_modules/expo-font": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.7.tgz", - "integrity": "sha512-jW6aEHUwn+SKizE1iJsaC0nLFb7ipy2wqUrceg+k7KyVZW74DRyDVjuJYzyuJE8BJutulsiYBzvx6K0axboULA==", + "version": "14.0.8", + "resolved": "https://mirrors.tencent.com/npm/expo-font/-/expo-font-14.0.8.tgz", + "integrity": "sha512-bTUHaJWRZ7ywP8dg3f+wfOwv6RwMV3mWT2CDUIhsK70GjNGlCtiWOCoHsA5Od/esPaVxqc37cCBvQGQRFStRlA==", "license": "MIT", "dependencies": { "fontfaceobserver": "^2.1.0" @@ -7912,9 +7912,9 @@ } }, "node_modules/expo-glass-effect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/expo-glass-effect/-/expo-glass-effect-0.1.1.tgz", - "integrity": "sha512-81xXB2CVjgyg7gaq/fDVAOu/j43uTP0F6bI0sah81v3/guA+YfSM3QjyfegIVQPUkX/9AP2zkU9ihkHEZQv7pg==", + "version": "0.1.2", + "resolved": "https://mirrors.tencent.com/npm/expo-glass-effect/-/expo-glass-effect-0.1.2.tgz", + "integrity": "sha512-25PZqYhRZ6EfJkhTzxthxvcXM5g32vn+GEzKc4+JJ7Qyk52Csxzw5y68Ge2opGF3y3JJ6VENXM07FnTgpuoK2w==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -7991,12 +7991,12 @@ } }, "node_modules/expo-linking": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-8.0.7.tgz", - "integrity": "sha512-DCPEDg522ryJp752kcajGR8kWgQfKMc/YbjzApb4Uzm2kJNW+0JXrIwsLPTl/mn9XxcOkGrE81B1L5EwQZKHkw==", + "version": "8.0.8", + "resolved": "https://mirrors.tencent.com/npm/expo-linking/-/expo-linking-8.0.8.tgz", + "integrity": "sha512-MyeMcbFDKhXh4sDD1EHwd0uxFQNAc6VCrwBkNvvvufUsTYFq3glTA9Y8a+x78CPpjNqwNAamu74yIaIz7IEJyg==", "license": "MIT", "dependencies": { - "expo-constants": "~18.0.7", + "expo-constants": "~18.0.8", "invariant": "^2.2.4" }, "peerDependencies": { @@ -8035,18 +8035,18 @@ } }, "node_modules/expo-notifications": { - "version": "0.32.10", - "resolved": "https://registry.npmjs.org/expo-notifications/-/expo-notifications-0.32.10.tgz", - "integrity": "sha512-5o0ifzTk6rLp+SMLZZcCrR5e6WseFG9gnF6rsomLegFR549pQQfWYiKz9KNic0Rnm81xYH4csgAxhND3E1aB0g==", + "version": "0.32.11", + "resolved": "https://mirrors.tencent.com/npm/expo-notifications/-/expo-notifications-0.32.11.tgz", + "integrity": "sha512-4rLWC9Q4B7aQywXn9cKAlNY4p00CYKLJ23qZ0Pp/whkX0NxmI4MwJ20YhreV08gjHTTTWHpYU7jqYWpsjtPIxA==", "license": "MIT", "dependencies": { - "@expo/image-utils": "^0.8.6", + "@expo/image-utils": "^0.8.7", "@ide/backoff": "^1.0.0", "abort-controller": "^3.0.0", "assert": "^2.0.0", "badgin": "^1.1.5", - "expo-application": "~7.0.6", - "expo-constants": "~18.0.7" + "expo-application": "~7.0.7", + "expo-constants": "~18.0.8" }, "peerDependencies": { "expo": "*", @@ -8099,14 +8099,14 @@ } }, "node_modules/expo-router": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-6.0.0.tgz", - "integrity": "sha512-4/SI/4f4wOmbxyQ3TH2nvRdbmlggQx2/WO5mWSuSsazUUerjc8h3lo9NkKyEZRrkeq09jYcfQQhbbl8yCnW/Gg==", + "version": "6.0.1", + "resolved": "https://mirrors.tencent.com/npm/expo-router/-/expo-router-6.0.1.tgz", + "integrity": "sha512-5wXkWyNMqUbjCWH0PRkOM0P6UsgLVdgchDkiLz5FY7HfU00ToBcxij965bqtlaATBgoaIo4DuLu6EgxewrKJ8Q==", "license": "MIT", "dependencies": { "@expo/metro-runtime": "6.1.1", - "@expo/schema-utils": "^0.1.6", - "@expo/server": "^0.7.3", + "@expo/schema-utils": "^0.1.7", + "@expo/server": "^0.7.4", "@radix-ui/react-slot": "1.2.0", "@radix-ui/react-tabs": "^1.1.12", "@react-navigation/bottom-tabs": "^7.4.0", @@ -8132,8 +8132,8 @@ "@react-navigation/drawer": "^7.5.0", "@testing-library/react-native": ">= 12.0.0", "expo": "*", - "expo-constants": "^18.0.7", - "expo-linking": "^8.0.7", + "expo-constants": "^18.0.8", + "expo-linking": "^8.0.8", "react": "*", "react-dom": "*", "react-native": "*", diff --git a/package.json b/package.json index c577e33..608c38b 100644 --- a/package.json +++ b/package.json @@ -12,17 +12,17 @@ "lint": "expo lint" }, "dependencies": { - "@expo/ui": "~0.2.0-beta.0", + "@expo/ui": "~0.2.0-beta.1", "@expo/vector-icons": "^15.0.2", "@react-native-async-storage/async-storage": "^2.2.0", "@react-native-community/datetimepicker": "^8.4.4", "@react-native-masked-view/masked-view": "^0.3.2", "@react-native-picker/picker": "^2.11.1", "@react-native-voice/voice": "^3.2.4", - "@react-navigation/bottom-tabs": "^7.3.10", - "@react-navigation/elements": "^2.3.8", - "@react-navigation/native": "^7.1.6", - "@reduxjs/toolkit": "^2.8.2", + "@react-navigation/bottom-tabs": "^7.4.7", + "@react-navigation/elements": "^2.6.4", + "@react-navigation/native": "^7.1.17", + "@reduxjs/toolkit": "^2.9.0", "@sentry/react-native": "~6.20.0", "@types/lodash": "^4.17.20", "cos-js-sdk-v5": "^1.6.0", @@ -33,14 +33,14 @@ "expo-blur": "~15.0.6", "expo-camera": "~17.0.7", "expo-constants": "~18.0.8", - "expo-font": "~14.0.7", - "expo-glass-effect": "^0.1.1", + "expo-font": "~14.0.8", + "expo-glass-effect": "^0.1.2", "expo-haptics": "~15.0.6", "expo-image": "~3.0.7", "expo-image-picker": "~17.0.7", "expo-linear-gradient": "~15.0.6", "expo-linking": "~8.0.7", - "expo-notifications": "~0.32.10", + "expo-notifications": "~0.32.11", "expo-quick-actions": "^5.0.0", "expo-router": "~6.0.1", "expo-splash-screen": "~31.0.8", diff --git a/services/backgroundTaskManager.ts b/services/backgroundTaskManager.ts index 294fc3e..bf236a0 100644 --- a/services/backgroundTaskManager.ts +++ b/services/backgroundTaskManager.ts @@ -6,7 +6,7 @@ import * as BackgroundTask from 'expo-background-task'; import * as TaskManager from 'expo-task-manager'; import { TaskManagerTaskBody } from 'expo-task-manager'; -export const BACKGROUND_TASK_IDENTIFIER = 'backgroundtask'; +export const BACKGROUND_TASK_IDENTIFIER = 'com.anonymous.digitalpilates.task';