mirror of
https://github.com/unraid/api.git
synced 2026-01-04 23:50:37 -06:00
refactor: add more data to server store
This commit is contained in:
161
store/server.ts
161
store/server.ts
@@ -1,5 +1,5 @@
|
||||
import { defineStore, createPinia, setActivePinia } from "pinia";
|
||||
import type { Server, ServerState } from '~/types/server';
|
||||
import type { Server, ServerState, ServerStateData } from '~/types/server';
|
||||
/**
|
||||
* @see https://stackoverflow.com/questions/73476371/using-pinia-with-vue-js-web-components
|
||||
* @see https://github.com/vuejs/pinia/discussions/1085
|
||||
@@ -7,39 +7,170 @@ import type { Server, ServerState } from '~/types/server';
|
||||
setActivePinia(createPinia());
|
||||
|
||||
export const useServerStore = defineStore('server', () => {
|
||||
/**
|
||||
* State
|
||||
*/
|
||||
const description = ref<string | undefined>();
|
||||
const deviceCount = ref<number | undefined>();
|
||||
const guid = ref<string | undefined>();
|
||||
const keyTypeForPurchase = ref<string | undefined>();
|
||||
const locale = ref<string | undefined>();
|
||||
const name = ref<string | undefined>();
|
||||
const site = ref<string | undefined>();
|
||||
const state = ref<string | undefined>(); // @todo implement ServerState ENUM
|
||||
const uptime = ref<number | undefined>();
|
||||
const expireTime = ref<number | undefined>();
|
||||
|
||||
const server = computed<Server>(() => {
|
||||
/**
|
||||
* Getters
|
||||
*/
|
||||
const server = computed<Server>(():Server => {
|
||||
return {
|
||||
description: description.value,
|
||||
deviceCount: deviceCount.value,
|
||||
guid: guid.value,
|
||||
keyTypeForPurchase: keyTypeForPurchase.value,
|
||||
locale: locale.value,
|
||||
name: name.value,
|
||||
site: site.value,
|
||||
state: state.value,
|
||||
uptime: uptime.value,
|
||||
expireTime: expireTime.value,
|
||||
}
|
||||
});
|
||||
|
||||
const setServer = (server: Server) => {
|
||||
console.debug('[setServer]', server);
|
||||
description.value = server?.description;
|
||||
deviceCount.value = server?.deviceCount;
|
||||
guid.value = server?.guid;
|
||||
keyTypeForPurchase.value = server?.keyTypeForPurchase;
|
||||
locale.value = server?.locale;
|
||||
name.value = server?.name;
|
||||
site.value = server?.site;
|
||||
state.value = server?.state;
|
||||
const stateDataDefault: ServerStateData = {
|
||||
actions: ['purchase', 'signIn', 'signOut'],
|
||||
humanReadable: 'Trial',
|
||||
heading: 'Thank you for choosing Unraid OS!',
|
||||
message: '[Temp] Your Trial Key includes all the features of a Pro Key',
|
||||
};
|
||||
const stateData = computed(():ServerStateData => {
|
||||
switch (state.value) {
|
||||
case 'TRIAL':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'EEXPIRED':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'BASIC':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'PLUS':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'PRO':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'EGUID':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'EGUID1':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'ENOKEYFILE2':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'ETRIAL':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'ENOKEYFILE1':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'ENOFLASH':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'ENOFLASH1':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'ENOFLASH2':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'ENOFLASH3':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'ENOFLASH4':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'ENOFLASH5':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'ENOFLASH6':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'ENOFLASH7':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'EBLACKLISTED':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'EBLACKLISTED1':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'EBLACKLISTED2':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
case 'ENOCONN':
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
default:
|
||||
return {
|
||||
...stateDataDefault,
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Actions
|
||||
*/
|
||||
const setServer = (data: Server) => {
|
||||
console.debug('[setServer]', data);
|
||||
description.value = data?.description;
|
||||
deviceCount.value = data?.deviceCount;
|
||||
guid.value = data?.guid;
|
||||
locale.value = data?.locale;
|
||||
name.value = data?.name;
|
||||
site.value = data?.site;
|
||||
state.value = data?.state;
|
||||
uptime.value = data?.uptime;
|
||||
expireTime.value = data?.expireTime;
|
||||
};
|
||||
|
||||
return { name, description, guid, keyTypeForPurchase, locale, deviceCount, site, server, setServer };
|
||||
return {
|
||||
// state
|
||||
name,
|
||||
description,
|
||||
guid,
|
||||
locale,
|
||||
deviceCount,
|
||||
site,
|
||||
uptime,
|
||||
expireTime,
|
||||
state,
|
||||
// getters
|
||||
server,
|
||||
stateData,
|
||||
// actions
|
||||
setServer,
|
||||
};
|
||||
});
|
||||
|
||||
@@ -16,7 +16,6 @@ export enum ServerState {
|
||||
EBLACKLISTED2 = 'EBLACKLISTED2',
|
||||
ENOCONN = 'ENOCONN',
|
||||
}
|
||||
|
||||
export interface Server {
|
||||
// state?: ServerState;
|
||||
state?: string;
|
||||
@@ -30,9 +29,26 @@ export interface Server {
|
||||
site?: string;
|
||||
wanFQDN?: string;
|
||||
regGen?: number;
|
||||
expireTime?: number;
|
||||
license?: string;
|
||||
keyfile?: string;
|
||||
keyTypeForPurchase?: string;
|
||||
locale?: string;
|
||||
uptime?: number;
|
||||
expireTime?: number;
|
||||
}
|
||||
|
||||
export type ServerStateDataActions = 'redeem'|'purchase'|'upgrade'|'signOut'|'signIn'|'trialExtend'|'trialStart'|'replace'|'recover';
|
||||
|
||||
export interface ServerStateDataError {
|
||||
heading: string;
|
||||
message: string;
|
||||
reAuthFix: boolean; // @todo potentially remove
|
||||
}
|
||||
|
||||
export interface ServerStateData {
|
||||
actions: ServerStateDataActions[];
|
||||
humanReadable: string; // @todo create interface of ENUM to string mapping
|
||||
heading: string;
|
||||
message: string;
|
||||
error?: ServerStateDataError;
|
||||
withKey?: boolean; // @todo potentially remove
|
||||
}
|
||||
Reference in New Issue
Block a user