mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-15 23:47:33 +08:00
code refactor
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
import { defaultLanguage, allLanguages } from '../locales/index.js'
|
||||
|
||||
export function getAllLanguages() {
|
||||
return allLanguages;
|
||||
}
|
||||
|
||||
export function getLanguage(locale) {
|
||||
return allLanguages[locale];
|
||||
}
|
||||
|
||||
export function getDefaultLanguage() {
|
||||
if (!window || !window.navigator) {
|
||||
return defaultLanguage;
|
||||
}
|
||||
|
||||
let browserLocale = window.navigator.browserLanguage || window.navigator.language;
|
||||
|
||||
if (!browserLocale) {
|
||||
return defaultLanguage;
|
||||
}
|
||||
|
||||
if (!allLanguages[browserLocale]) {
|
||||
const locale = getLocaleFromLanguageAlias(browserLocale);
|
||||
|
||||
if (locale) {
|
||||
browserLocale = locale;
|
||||
}
|
||||
}
|
||||
|
||||
if (!allLanguages[browserLocale]) {
|
||||
return defaultLanguage;
|
||||
}
|
||||
|
||||
return browserLocale;
|
||||
}
|
||||
|
||||
export function getI18nOptions() {
|
||||
return {
|
||||
locale: defaultLanguage,
|
||||
fallbackLocale: defaultLanguage,
|
||||
formatFallbackMessages: true,
|
||||
messages: (function () {
|
||||
const messages = {};
|
||||
|
||||
for (let locale in allLanguages) {
|
||||
if (!Object.prototype.hasOwnProperty.call(allLanguages, locale)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const lang = allLanguages[locale];
|
||||
messages[locale] = lang.content;
|
||||
}
|
||||
|
||||
return messages;
|
||||
})()
|
||||
};
|
||||
}
|
||||
|
||||
function getLocaleFromLanguageAlias(alias) {
|
||||
for (let locale in allLanguages) {
|
||||
if (!Object.prototype.hasOwnProperty.call(allLanguages, locale)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const lang = allLanguages[locale];
|
||||
const aliases = lang.aliases;
|
||||
|
||||
if (!aliases || aliases.length < 1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (let i = 0; i < aliases.length; i++) {
|
||||
if (aliases[i] === alias) {
|
||||
return locale;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
import axios from 'axios';
|
||||
import userState from "./userstate.js";
|
||||
|
||||
axios.defaults.baseURL = '/api';
|
||||
axios.interceptors.request.use(config => {
|
||||
const token = userState.getToken();
|
||||
|
||||
if (token) {
|
||||
config.headers.Authorization = `Bearer ${token}`;
|
||||
}
|
||||
|
||||
return config;
|
||||
}, error => {
|
||||
return Promise.reject(error);
|
||||
});
|
||||
|
||||
axios.interceptors.response.use(response => {
|
||||
return response;
|
||||
}, error => {
|
||||
return Promise.reject(error);
|
||||
});
|
||||
|
||||
export default {
|
||||
authorize: (params) => {
|
||||
return axios.post('authorize.json', params);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,43 @@
|
||||
const settingsLocalStorageKey = 'lab_user_settings';
|
||||
const defaultSettings = {
|
||||
lang: 'en'
|
||||
};
|
||||
|
||||
function getOriginalSettings() {
|
||||
try {
|
||||
const storageData = localStorage.getItem(settingsLocalStorageKey) || '{}';
|
||||
return JSON.parse(storageData);
|
||||
} catch (ex) {
|
||||
console.warn('settings in local storage is invalid', ex);
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
function getFinalSettings() {
|
||||
return Object.assign({}, defaultSettings, getOriginalSettings());
|
||||
}
|
||||
|
||||
function setSettings(settings) {
|
||||
const storageData = JSON.stringify(settings);
|
||||
return localStorage.setItem(settingsLocalStorageKey, storageData);
|
||||
}
|
||||
|
||||
function getOriginalOption(key) {
|
||||
return getOriginalSettings()[key];
|
||||
}
|
||||
|
||||
function setOption(key, value) {
|
||||
if (!Object.prototype.hasOwnProperty.call(defaultSettings, key)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const settings = getFinalSettings();
|
||||
settings[key] = value;
|
||||
|
||||
return setSettings(settings);
|
||||
}
|
||||
|
||||
export default {
|
||||
getLanguage: () => getOriginalOption('lang'),
|
||||
setLanguage: value => setOption('lang', value)
|
||||
};
|
||||
@@ -0,0 +1,24 @@
|
||||
const tokenLocalStorageKey = 'lab_user_token';
|
||||
|
||||
function getToken() {
|
||||
return localStorage.getItem(tokenLocalStorageKey);
|
||||
}
|
||||
|
||||
function isUserLogined() {
|
||||
return !!getToken();
|
||||
}
|
||||
|
||||
function updateToken(token) {
|
||||
return localStorage.setItem(tokenLocalStorageKey, token);
|
||||
}
|
||||
|
||||
function clearToken() {
|
||||
return localStorage.removeItem(tokenLocalStorageKey);
|
||||
}
|
||||
|
||||
export default {
|
||||
getToken,
|
||||
isUserLogined,
|
||||
updateToken,
|
||||
clearToken
|
||||
};
|
||||
Reference in New Issue
Block a user