1
0
mirror of https://github.com/mgerb/classic-wow-forums synced 2026-01-10 09:02:50 +00:00

client - refactor services

This commit is contained in:
2018-01-10 01:35:26 +00:00
parent e63514ff45
commit 8a39f687a8
2 changed files with 33 additions and 29 deletions

View File

@@ -2,17 +2,18 @@ import { cloneDeep } from 'lodash';
import axios from '../axios/axios';
import { CategoryModel } from '../model';
export class CategoryService {
private static categoryCache: CategoryModel[];
public static async getCategories(): Promise<CategoryModel[]> {
let categoryCache: CategoryModel[];
const getCategories = async () => {
// return cache if it exists
if (CategoryService.categoryCache) {
return Promise.resolve(cloneDeep(CategoryService.categoryCache));
if (categoryCache) {
return Promise.resolve(cloneDeep(categoryCache));
}
const res = await axios.get('/api/category');
CategoryService.categoryCache = cloneDeep(res.data.data);
categoryCache = cloneDeep(res.data.data);
return res.data.data;
}
}
export const CategoryService = {
getCategories,
};

View File

@@ -1,19 +1,17 @@
import axios from '../axios/axios';
import { UserModel } from '../model';
export class UserService {
public static storeUser(user: UserModel): void {
const storeUser = (user: UserModel): void => {
localStorage.setItem('user', JSON.stringify(user));
}
public static getUser(): UserModel {
const getUser = (): UserModel => {
const u = localStorage.getItem('user');
return u ? JSON.parse(u) : null;
}
// fetch user and store in local storage
public static async authorize(code: string): Promise<void> {
const authorize = async (code: string): Promise<void> => {
try {
const res = await axios.post('/api/battlenet/authorize', { code });
UserService.storeUser(res.data.data);
@@ -21,4 +19,9 @@ export class UserService {
console.error(e);
}
}
export const UserService = {
storeUser,
getUser,
authorize,
}