accounts-frontend/src/services/api/accounts.js

103 lines
2.0 KiB
JavaScript
Raw Normal View History

// @flow
import request from 'services/request';
export type UserResponse = {
elyProfileLink: string,
email: string,
hasMojangUsernameCollision: boolean,
id: number,
isActive: boolean,
isOtpEnabled: boolean,
lang: string,
passwordChangedAt: number, // timestamp
registeredAt: number, // timestamp
shouldAcceptRules: boolean,
username: string,
uuid: string,
};
export function getInfo(id: number, token?: string): Promise<UserResponse> {
return request.get(
`/api/v1/accounts/${id}`,
{},
{
token,
},
);
}
export function changePassword(
id: number,
{
password = '',
newPassword = '',
newRePassword = '',
logoutAll = true,
}: {
password?: string,
newPassword?: string,
newRePassword?: string,
logoutAll?: boolean,
},
): Promise<{ success: boolean }> {
return request.post(`/api/v1/accounts/${id}/password`, {
password,
newPassword,
newRePassword,
logoutAll,
});
}
export function acceptRules(id: number): Promise<{ success: boolean }> {
return request.post(`/api/v1/accounts/${id}/rules`);
}
export function changeUsername(
id: number,
username: ?string,
password: ?string,
): Promise<{ success: boolean }> {
return request.post(`/api/v1/accounts/${id}/username`, {
username,
password,
});
}
export function changeLang(
id: number,
lang: string,
): Promise<{ success: boolean }> {
return request.post(`/api/v1/accounts/${id}/language`, {
lang,
});
}
export function requestEmailChange(
id: number,
password: string,
): Promise<{ success: boolean }> {
return request.post(`/api/v1/accounts/${id}/email-verification`, {
password,
});
}
export function setNewEmail(
id: number,
email: string,
key: string,
): Promise<{ success: boolean }> {
return request.post(`/api/v1/accounts/${id}/new-email-verification`, {
email,
key,
});
}
export function confirmNewEmail(
id: number,
key: string,
): Promise<{ success: boolean }> {
return request.post(`/api/v1/accounts/${id}/email`, {
key,
});
}