code refactor

This commit is contained in:
MaysWind
2020-10-20 22:46:24 +08:00
parent 32d3972ce9
commit be8bd6b17b
20 changed files with 123 additions and 115 deletions
+80
View File
@@ -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;
}
+27
View File
@@ -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);
}
};
+43
View File
@@ -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)
};
+24
View File
@@ -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
};