1
0
Fork 0
mirror of https://github.com/muerwre/vault-frontend.git synced 2025-04-25 04:46:40 +07:00

fixed auth hydration

This commit is contained in:
Fedor Katurov 2022-01-09 19:32:37 +07:00
parent d9feff085a
commit e90f8b6888
3 changed files with 14 additions and 3 deletions

View file

@ -1,7 +1,7 @@
import { IUser } from '~/types/auth'; import { IUser } from '~/types/auth';
import { EMPTY_USER } from '~/constants/auth'; import { EMPTY_USER } from '~/constants/auth';
import { makeAutoObservable } from 'mobx'; import { makeAutoObservable } from 'mobx';
import { makePersistable } from 'mobx-persist-store'; import { makePersistable, isHydrated } from 'mobx-persist-store';
export class AuthStore { export class AuthStore {
token: string = ''; token: string = '';
@ -18,6 +18,10 @@ export class AuthStore {
}); });
} }
get isHydrated() {
return isHydrated(this);
}
get isUser() { get isUser() {
return !!this.token; return !!this.token;
} }

View file

@ -13,6 +13,10 @@ export class Store {
constructor() { constructor() {
makeAutoObservable(this); makeAutoObservable(this);
} }
get isHydrated() {
return this.auth.isHydrated;
}
} }
const defaultStore = new Store(); const defaultStore = new Store();

View file

@ -1,10 +1,13 @@
import React, { createContext, FC, useContext } from 'react'; import React, { createContext, FC, useContext } from 'react';
import { Store } from '~/store'; import { Store } from '~/store';
import { observer } from 'mobx-react-lite';
export const StoreContext = createContext<Store>(new Store()); export const StoreContext = createContext<Store>(new Store());
export const StoreContextProvider: FC<{ store: Store }> = ({ children, store }) => { export const StoreContextProvider: FC<{ store: Store }> = observer(({ children, store }) => {
if (!store.isHydrated) return null;
return <StoreContext.Provider value={store}>{children}</StoreContext.Provider>; return <StoreContext.Provider value={store}>{children}</StoreContext.Provider>;
}; });
export const useStore = () => useContext(StoreContext); export const useStore = () => useContext(StoreContext);