Created
August 24, 2017 16:56
-
-
Save cayasso/67523a07b7246bbb273eaeb5eca18f2a to your computer and use it in GitHub Desktop.
mobx user store
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { observable, extendObservable } from 'mobx' | |
import * as storage from '../../utils/local-storage' | |
import config from '../../config' | |
import * as api from './api' | |
const defaults = { | |
sub: null, | |
email: null, | |
mail_verified: null | |
} | |
export const user = observable(defaults) | |
const set = (data) => { | |
extendObservable(user, data) | |
return user | |
} | |
export const fetch = async () => { | |
try { | |
const data = await api.getUser() | |
return set(data) | |
} catch(error) { | |
return { error } | |
} | |
} | |
export const signin = async (credentials) => { | |
try { | |
const data = await api.signin(credentials) | |
return set(data) | |
} catch(error) { | |
return { error } | |
} | |
} | |
export const signup = async (credentials) => { | |
try { | |
const data = await api.signup(credentials) | |
return set(data) | |
} catch(error) { | |
return { error } | |
} | |
} | |
export const sigout = async () => { | |
try { | |
await api.signout() | |
storage.set('signout', { | |
time: Date.now(), | |
sessionId: config.sessionId | |
}) | |
return set(defaults) | |
} catch(error) { | |
return { error } | |
} | |
} | |
export const confirm = async (code) => { | |
try { | |
return await api.confirm(code) || {} | |
} catch(error) { | |
return { error } | |
} | |
} | |
export const isAuthenticated = () => { | |
return Boolean(user.email) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment