-
Notifications
You must be signed in to change notification settings - Fork 0
/
fetch_token.ts
30 lines (25 loc) · 896 Bytes
/
fetch_token.ts
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
import { logger } from "@paperpod/common";
import { fetchers } from "@paperpod/frontend";
import { useLoggedInStorage, useSessionStorage } from "../storage/storage";
const { retrieve: retrieveLoggedIn, store: updateLoggedIn } =
useLoggedInStorage();
const { retrieve: retrieveSessionToken, store: updateSessionToken } =
useSessionStorage();
const fetchToken = async () => {
const existingToken = await retrieveSessionToken();
const [status, newToken] = await fetchers.auth.refreshToken(existingToken);
if (status === 200) {
await Promise.all([updateLoggedIn(true), updateSessionToken(newToken)]);
} else {
updateLoggedIn(false);
}
};
const run = async () => {
const loggedIn = await retrieveLoggedIn();
if (loggedIn) {
setInterval(fetchToken, 10 * 60 * 1000); //i.e. ten minutes)
}
};
run().then(() => {
logger.debug(`Running token background script`);
});