refactor:优化settings代码结构

This commit is contained in:
Baobhan Sith
2025-05-11 21:12:43 +08:00
parent 7ee8ffb90a
commit 0b08a221b1
14 changed files with 1706 additions and 1062 deletions
@@ -0,0 +1,44 @@
import { ref, watch } from 'vue';
import { useI18n } from 'vue-i18n';
import { storeToRefs } from 'pinia';
import { useSettingsStore } from '../../stores/settings.store';
export function useIpWhitelist() {
const settingsStore = useSettingsStore();
const { t } = useI18n();
const { settings } = storeToRefs(settingsStore);
const ipWhitelistInput = ref('');
const ipWhitelistLoading = ref(false);
const ipWhitelistMessage = ref('');
const ipWhitelistSuccess = ref(false);
watch(() => settings.value.ipWhitelist, (newVal) => {
ipWhitelistInput.value = newVal || '';
}, { immediate: true });
const handleUpdateIpWhitelist = async () => {
ipWhitelistLoading.value = true;
ipWhitelistMessage.value = '';
ipWhitelistSuccess.value = false;
try {
await settingsStore.updateSetting('ipWhitelist', ipWhitelistInput.value.trim());
ipWhitelistMessage.value = t('settings.ipWhitelist.success.saved');
ipWhitelistSuccess.value = true;
} catch (error: any) {
console.error('更新 IP 白名单失败:', error);
ipWhitelistMessage.value = error.message || t('settings.ipWhitelist.error.saveFailed');
ipWhitelistSuccess.value = false;
} finally {
ipWhitelistLoading.value = false;
}
};
return {
ipWhitelistInput,
ipWhitelistLoading,
ipWhitelistMessage,
ipWhitelistSuccess,
handleUpdateIpWhitelist,
};
}