185 lines
No EOL
5.3 KiB
TypeScript
185 lines
No EOL
5.3 KiB
TypeScript
import { generateRandomString } from "../util/common.ts"
|
||
export const configStoreType = localStorage.getItem('GodoOS-storeType') || 'browser';
|
||
/**
|
||
* 获取系统配置信息。
|
||
* 从本地存储中获取或初始化系统配置对象,并根据条件决定是否更新本地存储中的配置。
|
||
* @param ifset 是否将配置信息更新回本地存储
|
||
* @returns 当前系统配置对象
|
||
*/
|
||
export const getSystemConfig = (ifset = false) => {
|
||
// 从本地存储中尝试获取配置信息,若不存在则使用默认空对象
|
||
const configSetting = localStorage.getItem('GodoOS-config') || '{}';
|
||
// 解析配置信息为JSON对象
|
||
const config = JSON.parse(configSetting);
|
||
|
||
// 初始化配置对象的各项属性,若本地存储中已存在则不进行覆盖
|
||
if (!config.version) {
|
||
config.version = '1.0.0';
|
||
//config.version = '0.0.9';
|
||
}
|
||
if (!config.isFirstRun) {
|
||
config.isFirstRun = false;
|
||
}
|
||
if (!config.lang) {
|
||
config.lang = '';
|
||
}
|
||
// 初始化API相关URL,若本地存储中已存在则不进行覆盖
|
||
if (!config.apiUrl) {
|
||
config.apiUrl = 'http://localhost:56780';
|
||
}
|
||
|
||
// 初始化用户信息,若本地存储中已存在则不进行覆盖
|
||
if (!config.userInfo) {
|
||
config.userInfo = {
|
||
serverUrl:'',
|
||
username: '',
|
||
password: '',
|
||
memberId: 0,
|
||
nickname: '',
|
||
avatar: '',
|
||
email: '',
|
||
mobile: '',
|
||
role: '',
|
||
department: ''
|
||
};
|
||
}
|
||
|
||
config.isApp = (window as any).go ? true : false;
|
||
// 初始化系统相关信息,若本地存储中已存在则不进行覆盖
|
||
//system
|
||
if (!config.systemInfo) {
|
||
config.systemInfo = {};
|
||
}
|
||
if (!config.theme) {
|
||
config.theme = 'light';
|
||
}
|
||
if (!config.storeType) {
|
||
config.storeType = configStoreType;
|
||
}
|
||
if (!config.storePath) {
|
||
config.storePath = "";
|
||
}
|
||
if (!config.userType) {
|
||
config.userType = 'person';
|
||
}
|
||
// 初始化背景设置,若本地存储中已存在则不进行覆盖
|
||
if (!config.background) {
|
||
config.background = {
|
||
url: '/image/bg/bg6.jpg',
|
||
type: 'image',
|
||
color: 'rgba(30, 144, 255, 1)',
|
||
imageList: [
|
||
'/image/bg/bg1.jpg',
|
||
'/image/bg/bg2.jpg',
|
||
'/image/bg/bg3.jpg',
|
||
'/image/bg/bg4.jpg',
|
||
'/image/bg/bg5.jpg',
|
||
'/image/bg/bg6.jpg',
|
||
]
|
||
}
|
||
}
|
||
|
||
// 初始化账户信息,若本地存储中已存在则不进行覆盖
|
||
if (!config.account) {
|
||
config.account = {
|
||
memberId: '',
|
||
username: '',
|
||
password: '',
|
||
};
|
||
}
|
||
if (!config.storenet) {
|
||
config.storenet = {
|
||
url: '',
|
||
username: '',
|
||
password: '',
|
||
};
|
||
}
|
||
if (!config.dbInfo) {
|
||
config.dbInfo = {
|
||
url: '',
|
||
username: '',
|
||
password: '',
|
||
dbname: ''
|
||
};
|
||
}
|
||
// 初始化已安装插件列表,若本地存储中已存在则不进行覆盖
|
||
if (!config.intstalledPlugins) {
|
||
config.intstalledPlugins = [];
|
||
}
|
||
// 初始化桌面快捷方式列表,若本地存储中已存在则不进行覆盖
|
||
if (!config.desktopList) {
|
||
config.desktopList = [];
|
||
}
|
||
// 初始化菜单列表,若本地存储中已存在则不进行覆盖
|
||
if (!config.menuList) {
|
||
config.menuList = [];
|
||
}
|
||
// 生成新的会话ID,若本地存储中不存在
|
||
if (!config.token) {
|
||
config.token = generateRandomString(16);
|
||
}
|
||
// 根据参数决定是否更新本地存储中的配置信息
|
||
if (ifset) {
|
||
setSystemConfig(config)
|
||
}
|
||
// 返回配置对象
|
||
return config;
|
||
};
|
||
|
||
export function getApiUrl() {
|
||
return getSystemKey('apiUrl')
|
||
}
|
||
|
||
|
||
export function isWindowsOS() {
|
||
return /win64|wow64|win32|win16|wow32/i.test(navigator.userAgent);
|
||
}
|
||
export function parseJson(str: string) {
|
||
try {
|
||
return JSON.parse(str);
|
||
} catch (e) {
|
||
return undefined;
|
||
}
|
||
};
|
||
export function getSplit() {
|
||
if (isWindowsOS()) {
|
||
const storeType = getSystemKey('storeType')
|
||
//console.log(storeType)
|
||
if (storeType === 'browser') {
|
||
return "/"
|
||
} else {
|
||
return "\\"
|
||
}
|
||
} else {
|
||
return "/"
|
||
}
|
||
}
|
||
|
||
export const getSystemKey = (key: string, ifset = false) => {
|
||
const config = getSystemConfig(ifset);
|
||
if (key.indexOf('.') > -1) {
|
||
const keys = key.split('.');
|
||
return config[keys[0]][keys[1]];
|
||
} else {
|
||
return config[key];
|
||
}
|
||
}
|
||
|
||
export const setSystemKey = (key: string, val: any) => {
|
||
const config = getSystemConfig();
|
||
config[key] = val;
|
||
localStorage.setItem('GodoOS-config', JSON.stringify(config));
|
||
localStorage.setItem('GodoOS-storeType', config.storeType);
|
||
};
|
||
|
||
export const setSystemConfig = (config: any) => {
|
||
localStorage.setItem('GodoOS-config', JSON.stringify(config));
|
||
localStorage.setItem('GodoOS-storeType', config.storeType);
|
||
};
|
||
|
||
export const clearSystemConfig = () => {
|
||
const storetype = localStorage.getItem('GodoOS-storeType') || 'browser';
|
||
localStorage.clear()
|
||
localStorage.setItem('GodoOS-storeType', storetype)
|
||
//localStorage.removeItem('GodoOS-config');
|
||
}; |