-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathprofile.js
More file actions
75 lines (62 loc) · 1.83 KB
/
profile.js
File metadata and controls
75 lines (62 loc) · 1.83 KB
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import { request, handleResponse } from './util'
export const privateProfile = async () => {
const resp = await request('GET', '/users/me')
localStorage.setItem('userPerms', resp?.data?.perms || 0)
return handleResponse({ resp, valid: ['goodUserSelfData'] })
}
export const pendingPrivateProfile = async ({ authToken }) => {
const { data } = await (
await fetch('/api/v1/users/me', {
headers: {
authorization: `Bearer ${authToken}`,
},
})
).json()
localStorage.setItem('userPerms', data.perms || 0)
return data
}
export const publicProfile = async uuid => {
const resp = await request('GET', `/users/${encodeURIComponent(uuid)}`)
return handleResponse({ resp, valid: ['goodUserData'] })
}
export const updateAccount = async ({ name, division }) => {
const resp = await request('PATCH', '/users/me', {
name,
division,
})
if (resp.kind === 'badRateLimit') {
const ms = resp.data.timeLeft
const sec = Math.floor(ms / 1000)
const min = Math.floor(sec / 60)
let msg
if (min === 0) {
msg = `${sec} seconds`
} else {
msg = `${min} minutes`
}
return {
error: `Please wait ${msg} before trying this again`,
}
}
return handleResponse({ resp, valid: ['goodUserUpdate'] })
}
export const updateEmail = async ({ email, recaptchaCode }) => {
const resp = await request('PUT', '/users/me/auth/email', {
email,
recaptchaCode,
})
return handleResponse({
resp,
valid: ['goodVerifySent', 'goodEmailSet'],
resolveDataMessage: true,
})
}
export const deleteEmail = async () => {
const resp = await request('DELETE', '/users/me/auth/email')
// If the email did not exist, still a "success" in that no more email
return handleResponse({
resp,
valid: ['goodEmailRemoved', 'badEmailNoExists'],
resolveDataMessage: true,
})
}