mirror of
https://github.com/mgerb/classic-wow-forums
synced 2026-01-11 09:32:51 +00:00
client - refactor services
This commit is contained in:
@@ -2,17 +2,18 @@ import { cloneDeep } from 'lodash';
|
|||||||
import axios from '../axios/axios';
|
import axios from '../axios/axios';
|
||||||
import { CategoryModel } from '../model';
|
import { CategoryModel } from '../model';
|
||||||
|
|
||||||
export class CategoryService {
|
let categoryCache: CategoryModel[];
|
||||||
private static categoryCache: CategoryModel[];
|
const getCategories = async () => {
|
||||||
|
// return cache if it exists
|
||||||
public static async getCategories(): Promise<CategoryModel[]> {
|
if (categoryCache) {
|
||||||
// return cache if it exists
|
return Promise.resolve(cloneDeep(categoryCache));
|
||||||
if (CategoryService.categoryCache) {
|
|
||||||
return Promise.resolve(cloneDeep(CategoryService.categoryCache));
|
|
||||||
}
|
|
||||||
|
|
||||||
const res = await axios.get('/api/category');
|
|
||||||
CategoryService.categoryCache = cloneDeep(res.data.data);
|
|
||||||
return res.data.data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const res = await axios.get('/api/category');
|
||||||
|
categoryCache = cloneDeep(res.data.data);
|
||||||
|
return res.data.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const CategoryService = {
|
||||||
|
getCategories,
|
||||||
|
};
|
||||||
|
|||||||
@@ -1,24 +1,27 @@
|
|||||||
import axios from '../axios/axios';
|
import axios from '../axios/axios';
|
||||||
import { UserModel } from '../model';
|
import { UserModel } from '../model';
|
||||||
|
|
||||||
export class UserService {
|
const storeUser = (user: UserModel): void => {
|
||||||
|
localStorage.setItem('user', JSON.stringify(user));
|
||||||
|
}
|
||||||
|
|
||||||
public static storeUser(user: UserModel): void {
|
const getUser = (): UserModel => {
|
||||||
localStorage.setItem('user', JSON.stringify(user));
|
const u = localStorage.getItem('user');
|
||||||
}
|
return u ? JSON.parse(u) : null;
|
||||||
|
}
|
||||||
|
|
||||||
public static getUser(): UserModel {
|
// fetch user and store in local storage
|
||||||
const u = localStorage.getItem('user');
|
const authorize = async (code: string): Promise<void> => {
|
||||||
return u ? JSON.parse(u) : null;
|
try {
|
||||||
}
|
const res = await axios.post('/api/battlenet/authorize', { code });
|
||||||
|
UserService.storeUser(res.data.data);
|
||||||
// fetch user and store in local storage
|
} catch (e) {
|
||||||
public static async authorize(code: string): Promise<void> {
|
console.error(e);
|
||||||
try {
|
|
||||||
const res = await axios.post('/api/battlenet/authorize', { code });
|
|
||||||
UserService.storeUser(res.data.data);
|
|
||||||
} catch (e) {
|
|
||||||
console.error(e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const UserService = {
|
||||||
|
storeUser,
|
||||||
|
getUser,
|
||||||
|
authorize,
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user