feat: 支持饮水记录卡片
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { api, loadPersistedToken, setAuthToken, STORAGE_KEYS } from '@/services/api';
|
||||
import { api, setAuthToken, STORAGE_KEYS } from '@/services/api';
|
||||
import { updateUser, UpdateUserDto } from '@/services/users';
|
||||
import AsyncStorage from '@react-native-async-storage/async-storage';
|
||||
import { createAsyncThunk, createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit';
|
||||
@@ -133,18 +133,17 @@ export const login = createAsyncThunk(
|
||||
);
|
||||
|
||||
export const rehydrateUser = createAsyncThunk('user/rehydrate', async () => {
|
||||
const [token, profileStr, privacyAgreedStr] = await Promise.all([
|
||||
loadPersistedToken(),
|
||||
const [profileStr, privacyAgreedStr] = await Promise.all([
|
||||
AsyncStorage.getItem(STORAGE_KEYS.userProfile),
|
||||
AsyncStorage.getItem(STORAGE_KEYS.privacyAgreed),
|
||||
]);
|
||||
await setAuthToken(token);
|
||||
|
||||
let profile: UserProfile = {};
|
||||
if (profileStr) {
|
||||
try { profile = JSON.parse(profileStr) as UserProfile; } catch { profile = {}; }
|
||||
}
|
||||
const privacyAgreed = privacyAgreedStr === 'true';
|
||||
return { token, profile, privacyAgreed } as { token: string | null; profile: UserProfile; privacyAgreed: boolean };
|
||||
return { profile, privacyAgreed } as { profile: UserProfile; privacyAgreed: boolean };
|
||||
});
|
||||
|
||||
export const setPrivacyAgreed = createAsyncThunk('user/setPrivacyAgreed', async () => {
|
||||
@@ -181,7 +180,6 @@ export const fetchMyProfile = createAsyncThunk('user/fetchMyProfile', async (_,
|
||||
export const fetchWeightHistory = createAsyncThunk('user/fetchWeightHistory', async (_, { rejectWithValue }) => {
|
||||
try {
|
||||
const data: WeightHistoryItem[] = await api.get('/api/users/weight-history');
|
||||
console.log('fetchWeightHistory', data);
|
||||
return data;
|
||||
} catch (err: any) {
|
||||
return rejectWithValue(err?.message ?? '获取用户体重历史记录失败');
|
||||
@@ -272,7 +270,6 @@ const userSlice = createSlice({
|
||||
state.error = (action.payload as string) ?? '登录失败';
|
||||
})
|
||||
.addCase(rehydrateUser.fulfilled, (state, action) => {
|
||||
state.token = action.payload.token;
|
||||
state.profile = action.payload.profile;
|
||||
state.privacyAgreed = action.payload.privacyAgreed;
|
||||
if (!state.profile?.name || !state.profile.name.trim()) {
|
||||
|
||||
Reference in New Issue
Block a user