sync application settings

This commit is contained in:
MaysWind
2025-06-29 20:25:21 +08:00
parent 1eb997d2c0
commit 90e862fbb1
42 changed files with 1773 additions and 81 deletions
+86
View File
@@ -5,6 +5,7 @@ import { useSettingsStore } from './setting.ts';
import { type WeekDayValue, WeekDay } from '@/core/datetime.ts';
import { FiscalYearStart } from '@/core/fiscalyear.ts';
import type { ApplicationCloudSetting } from '@/core/setting.ts';
import {
type UserBasicInfo,
@@ -252,6 +253,88 @@ export const useUserStore = defineStore('user', () => {
});
}
function getUserApplicationCloudSettings(): Promise<ApplicationCloudSetting[] | false> {
return new Promise((resolve, reject) => {
services.getUserApplicationCloudSettings().then(response => {
const data = response.data;
if (!data || !data.success || !data.result) {
resolve(data.result);
return;
}
resolve(data.result);
}).catch(error => {
logger.error('failed to load user synchronized application settings', error);
if (error.response && error.response.data && error.response.data.errorMessage) {
reject({ error: error.response.data });
} else if (!error.processed) {
reject({ message: 'Unable to retrieve user synchronized application settings' });
} else {
reject(error);
}
});
});
}
function fullUpdateUserApplicationCloudSettings(enabledSettingKeys: string[]): Promise<boolean> {
const settings = settingsStore.createApplicationCloudSettings(enabledSettingKeys);
return new Promise((resolve, reject) => {
services.updateUserApplicationCloudSettings({
settings: settings,
fullUpdate: true
}).then(response => {
const data = response.data;
if (!data || !data.success || !data.result) {
reject({ message: 'Unable to update user synchronized application settings' });
return;
}
settingsStore.updateApplicationSyncSettingKeys(enabledSettingKeys);
resolve(data.result);
}).catch(error => {
logger.error('failed to update user synchronized application settings', error);
if (error.response && error.response.data && error.response.data.errorMessage) {
reject({ error: error.response.data });
} else if (!error.processed) {
reject({ message: 'Unable to update user synchronized application settings' });
} else {
reject(error);
}
});
});
}
function disableUserApplicationCloudSettings(): Promise<boolean> {
return new Promise((resolve, reject) => {
services.disableUserApplicationCloudSettings().then(response => {
const data = response.data;
if (!data || !data.success || !data.result) {
reject({ message: 'Unable to disable user synchronized application settings' });
return;
}
settingsStore.updateApplicationSyncSettingKeys(undefined);
resolve(data.result);
}).catch(error => {
logger.error('failed to disable user synchronized application settings', error);
if (error.response && error.response.data && error.response.data.errorMessage) {
reject({ error: error.response.data });
} else if (!error.processed) {
reject({ message: 'Unable to disable user synchronized application settings' });
} else {
reject(error);
}
});
});
}
function getUserDataStatistics(): Promise<DataStatisticsResponse> {
return new Promise((resolve, reject) => {
services.getUserDataStatistics().then(response => {
@@ -353,6 +436,9 @@ export const useUserStore = defineStore('user', () => {
updateUserTransactionEditScope,
updateUserAvatar,
removeUserAvatar,
getUserApplicationCloudSettings,
fullUpdateUserApplicationCloudSettings,
disableUserApplicationCloudSettings,
getUserDataStatistics,
getExportedUserData,
getUserAvatarUrl