diff --git a/app/(tabs)/_layout.tsx b/app/(tabs)/_layout.tsx
index fd4ad86..6778759 100644
--- a/app/(tabs)/_layout.tsx
+++ b/app/(tabs)/_layout.tsx
@@ -61,6 +61,7 @@ export default function TabLayout() {
- Sealife
- 欢迎登录Sealife
+ Out Live
+ 欢迎登录Out Live
{/* Apple 登录 */}
diff --git a/app/sleep-detail.tsx b/app/sleep-detail.tsx
index 16effd8..efa73cf 100644
--- a/app/sleep-detail.tsx
+++ b/app/sleep-detail.tsx
@@ -1,3 +1,4 @@
+import { ThemedView } from '@/components/ThemedView';
import {
fetchCompleteSleepData,
formatSleepTime,
@@ -18,7 +19,6 @@ import {
TouchableOpacity,
View
} from 'react-native';
-import { ThemedView } from '@/components/ThemedView';
import { InfoModal, type SleepDetailData } from '@/components/sleep/InfoModal';
import { SleepStagesInfoModal } from '@/components/sleep/SleepStagesInfoModal';
@@ -38,7 +38,7 @@ export default function SleepDetailScreen() {
const colorTokens = Colors[theme];
const [sleepData, setSleepData] = useState(null);
const [loading, setLoading] = useState(true);
-
+
// 从导航参数获取日期,如果没有则使用今天
const { date: dateParam } = useLocalSearchParams<{ date?: string }>();
const [selectedDate] = useState(() => {
@@ -162,11 +162,9 @@ export default function SleepDetailScreen() {
- {displayData.totalSleepTime > 0 ? formatSleepTime(displayData.totalSleepTime) : '7h 23m'}
+ {displayData.totalSleepTime > 0 ? formatSleepTime(displayData.totalSleepTime) : '--'}
-
- ✓ 良好
-
+
@@ -189,11 +187,8 @@ export default function SleepDetailScreen() {
- {displayData.sleepQualityPercentage > 0 ? `${displayData.sleepQualityPercentage}%` : '94%'}
+ {displayData.sleepQualityPercentage > 0 ? `${displayData.sleepQualityPercentage}%` : '--%'}
-
- ★ 优秀
-
@@ -228,10 +223,10 @@ export default function SleepDetailScreen() {
} else {
// 使用默认数据
stagesToDisplay = [
- { stage: SleepStage.Awake, duration: 3, percentage: 1, quality: 'good' as any },
- { stage: SleepStage.REM, duration: 89, percentage: 20, quality: 'good' as any },
- { stage: SleepStage.Core, duration: 295, percentage: 67, quality: 'good' as any },
- { stage: SleepStage.Deep, duration: 51, percentage: 12, quality: 'poor' as any }
+ { stage: SleepStage.Awake, duration: 0, percentage: 0, quality: 'good' as any },
+ { stage: SleepStage.REM, duration: 0, percentage: 0, quality: 'good' as any },
+ { stage: SleepStage.Core, duration: 0, percentage: 0, quality: 'good' as any },
+ { stage: SleepStage.Deep, duration: 0, percentage: 0, quality: 'poor' as any }
];
}
return stagesToDisplay;
@@ -269,11 +264,6 @@ export default function SleepDetailScreen() {
占总体睡眠的 {stageData.percentage}%
-
-
- {qualityInfo.text}
-
-
);
})}
diff --git a/components/PrivacyConsentModal.tsx b/components/PrivacyConsentModal.tsx
index b426178..c4ecfc9 100644
--- a/components/PrivacyConsentModal.tsx
+++ b/components/PrivacyConsentModal.tsx
@@ -40,7 +40,7 @@ export default function PrivacyConsentModal({
>
- 欢迎来到Sealife
+ 欢迎来到Out Live
diff --git a/components/weight/WeightHistoryCard.tsx b/components/weight/WeightHistoryCard.tsx
index 58ada47..726ac5f 100644
--- a/components/weight/WeightHistoryCard.tsx
+++ b/components/weight/WeightHistoryCard.tsx
@@ -67,7 +67,7 @@ export function WeightHistoryCard() {
if (hasWeight) {
loadWeightHistory();
}
- }, [hasWeight]);
+ }, [userProfile?.weight]);
const loadWeightHistory = async () => {
try {
@@ -78,7 +78,7 @@ export function WeightHistoryCard() {
};
const navigateToCoach = () => {
- pushIfAuthedElseLogin(ROUTES.TAB_COACH);
+ pushIfAuthedElseLogin(ROUTES.WEIGHT_RECORDS);
};
const handleShowBMIModal = () => {
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index adcd63c..239b15b 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -3018,9 +3018,9 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - SDWebImage (5.21.1):
- - SDWebImage/Core (= 5.21.1)
- - SDWebImage/Core (5.21.1)
+ - SDWebImage (5.21.2):
+ - SDWebImage/Core (= 5.21.2)
+ - SDWebImage/Core (5.21.2)
- SDWebImageAVIFCoder (0.11.0):
- libavif/core (>= 0.11.0)
- SDWebImage (~> 5.10)
@@ -3539,7 +3539,7 @@ SPEC CHECKSUMS:
RNSentry: f2c39f1113e22413c9bb6e3faa6b27f110d95eaf
RNSVG: 6f39605a4c4d200b11435c35bd077553c6b5963a
RNWorklets: ad0606bee2a8103c14adb412149789c60b72bfb2
- SDWebImage: f29024626962457f3470184232766516dee8dfea
+ SDWebImage: 9f177d83116802728e122410fb25ad88f5c7608a
SDWebImageAVIFCoder: 00310d246aab3232ce77f1d8f0076f8c4b021d90
SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c
SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380
diff --git a/services/backgroundTaskManager.ts b/services/backgroundTaskManager.ts
index 114f305..6818035 100644
--- a/services/backgroundTaskManager.ts
+++ b/services/backgroundTaskManager.ts
@@ -40,7 +40,7 @@ async function executeWaterReminderTask(): Promise {
// 检查时间限制(避免深夜打扰)
const currentHour = new Date().getHours();
- if (currentHour < 9 || currentHour >= 21) {
+ if (currentHour < 8 || currentHour >= 21) {
console.log(`当前时间${currentHour}点,不在提醒时间范围内,跳过喝水提醒`);
return;
}