1
0
mirror of https://github.com/mgerb/classic-wow-forums synced 2026-01-12 01:52:49 +00:00

client - use mobx as state container

This commit is contained in:
2018-01-09 20:24:09 -06:00
parent 8a39f687a8
commit 2d6ff0875f
13 changed files with 100 additions and 42 deletions

View File

@@ -0,0 +1,5 @@
import userStore from './user-store';
export const stores = {
userStore,
};

View File

@@ -0,0 +1,38 @@
import { action, observable } from 'mobx';
import { UserModel } from '../model';
import { resetAuthorizationHeader, setAuthorizationHeader } from '../axios/axios';
export class UserStore {
@observable user?: UserModel;
constructor() {
// use timeout or axios won't be defined
setTimeout(() => {
this.getUserFromStorage();
});
}
@action setUser(user: UserModel) {
localStorage.setItem('user', JSON.stringify(user));
this.getUserFromStorage();
}
@action private getUserFromStorage(): void {
const u = localStorage.getItem('user');
if (u) {
this.user = JSON.parse(u);
setAuthorizationHeader(this.user!.token);
}
}
// when the user logs out
@action resetUser() {
this.user = undefined;
resetAuthorizationHeader();
localStorage.removeItem('user');
}
}
export default new UserStore();