init project
This commit is contained in:
73
src/store/settingStore.ts
Normal file
73
src/store/settingStore.ts
Normal 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
|
||||
};
|
||||
});
|
||||
Reference in New Issue
Block a user