File size: 1,515 Bytes
5b324f1
 
 
59ecc13
5b324f1
 
 
 
 
 
 
 
5e9e312
 
 
 
 
5b324f1
 
59ecc13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import { __USERSERVER__ } from "@G/global.config";
import axios from "axios";

export interface UserInfo {
	username: string;
	useraccount: string;
	id: string;
	avatar: string;
	color: string;
}

export async function getUserByToken(token: string) {
	const authToken = token || localStorage.getItem("token") || "";
	const res = await axios.get(`${__USERSERVER__}/user/info`, {
		params: { token: authToken },
		headers: authToken ? { Authorization: authToken } : {},
	});
	return res.data as UserInfo;
}

export async function updateMyProfile(payload: {
	username?: string;
	color?: string;
	avatarFile?: File;
}) {
	const token = localStorage.getItem("token") || "";
	const formData = new FormData();
	if (payload.username !== undefined) formData.append("username", payload.username);
	if (payload.color !== undefined) formData.append("color", payload.color);
	if (payload.avatarFile) formData.append("avatar", payload.avatarFile);
	const res = await axios.post(`${__USERSERVER__}/user/profile/update`, formData, {
		headers: {
			...(token ? { Authorization: token } : {}),
			"Content-Type": "multipart/form-data",
		},
	});
	return (res.data?.data || res.data) as UserInfo;
}

export async function changeMyPassword(oldPassword: string, newPassword: string) {
	const token = localStorage.getItem("token") || "";
	const res = await axios.post(
		`${__USERSERVER__}/user/profile/change-password`,
		{ oldPassword, newPassword },
		{
			headers: token ? { Authorization: token } : {},
		}
	);
	return res.data;
}