init project

This commit is contained in:
Timi
2026-04-03 12:02:34 +08:00
parent d4bef26c96
commit 2665acc885
36 changed files with 5725 additions and 218 deletions

73
src/store/settingStore.ts Normal file
View File

@@ -0,0 +1,73 @@
import { defineStore } from "pinia";
import Storage from "@/utils/Storage";
const SETTING_STORAGE_KEY = "timi-server.setting";
export type ConnectProtocol = "http" | "https";
export interface ConnectSetting {
protocol: ConnectProtocol;
host: string;
port: string;
token: string;
}
interface SettingState {
connect: ConnectSetting;
}
const defaultConnectSetting = (): ConnectSetting => ({
protocol: "http",
host: "",
port: "",
token: ""
});
const defaultSettingState = (): SettingState => ({
connect: defaultConnectSetting()
});
function normalizeConnectSetting(connect?: Partial<ConnectSetting>): ConnectSetting {
const protocol = connect?.protocol === "https" ? "https" : "http";
return {
protocol,
host: connect?.host?.trim() || "",
port: connect?.port?.trim() || "",
token: connect?.token?.trim() || ""
};
}
export const useSettingStore = defineStore("setting", () => {
const state = ref<SettingState>(Storage.getDefault<SettingState>(SETTING_STORAGE_KEY, defaultSettingState()));
const connect = computed(() => state.value.connect);
const hasConnectConfig = computed(() => {
const currentConnect = state.value.connect;
return !!currentConnect.host && !!currentConnect.port && !!currentConnect.token;
});
function persist(): void {
Storage.setObject(SETTING_STORAGE_KEY, state.value);
}
function setConnect(connectSetting: Partial<ConnectSetting>): void {
state.value.connect = normalizeConnectSetting({
...state.value.connect,
...connectSetting
});
persist();
}
function resetConnect(): void {
state.value.connect = defaultConnectSetting();
persist();
}
return {
connect,
hasConnectConfig,
setConnect,
resetConnect
};
});