mirror of https://github.com/usememos/memos
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.3 KiB
TypeScript
69 lines
1.3 KiB
TypeScript
import api from "../helpers/api";
|
|
import appStore from "../stores/appStore";
|
|
|
|
class UserService {
|
|
public getState() {
|
|
return appStore.getState().userState;
|
|
}
|
|
|
|
public async doSignIn() {
|
|
const user = await api.getUser();
|
|
if (user) {
|
|
appStore.dispatch({
|
|
type: "LOGIN",
|
|
payload: {
|
|
user: this.convertResponseModelUser(user),
|
|
},
|
|
});
|
|
} else {
|
|
userService.doSignOut();
|
|
}
|
|
return user;
|
|
}
|
|
|
|
public async doSignOut() {
|
|
appStore.dispatch({
|
|
type: "SIGN_OUT",
|
|
payload: null,
|
|
});
|
|
api.signout().catch(() => {
|
|
// do nth
|
|
});
|
|
}
|
|
|
|
public async updateUsername(name: string): Promise<void> {
|
|
await api.patchUser({
|
|
name,
|
|
});
|
|
}
|
|
|
|
public async updatePassword(password: string): Promise<void> {
|
|
await api.patchUser({
|
|
password,
|
|
});
|
|
}
|
|
|
|
public async resetOpenId(): Promise<string> {
|
|
const user = await api.patchUser({
|
|
resetOpenId: true,
|
|
});
|
|
appStore.dispatch({
|
|
type: "RESET_OPENID",
|
|
payload: user.openId,
|
|
});
|
|
return user.openId;
|
|
}
|
|
|
|
private convertResponseModelUser(user: User): User {
|
|
return {
|
|
...user,
|
|
createdTs: user.createdTs * 1000,
|
|
updatedTs: user.updatedTs * 1000,
|
|
};
|
|
}
|
|
}
|
|
|
|
const userService = new UserService();
|
|
|
|
export default userService;
|