From 1c8aee2fa0457a9938783eeaf6ed33f381b31af0 Mon Sep 17 00:00:00 2001 From: Vinicius Souza Date: Mon, 11 Nov 2024 14:57:22 +0000 Subject: [PATCH] feat: refresh and save token --- src/services/api.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/services/api.ts b/src/services/api.ts index 45a027f..4021d8e 100644 --- a/src/services/api.ts +++ b/src/services/api.ts @@ -2,7 +2,7 @@ import axios, { AxiosError, AxiosInstance } from 'axios'; import { AppError } from '@utils/AppError'; -import { storageAuthTokenGet } from '@storage/storageAuthToken'; +import { storageAuthTokenGet, storageAuthTokenSave } from '@storage/storageAuthToken'; type SignOut = () => void; @@ -64,6 +64,20 @@ api.registerInterceptTokenManager = (signOut: SignOut) => { } isRefreshing = true; + + return new Promise(async (resolve, reject) => { + try { + const { data } = api.post('/sessions/refresh_token', { refresh_token }); + await storageAuthTokenSave({ token: data.token, refresh_token: data.refresh_token }); + } catch (error: any) { + failedQueue.forEach((request) => request.onFailure(error)); + signOut(); + reject(error); + } finally { + isRefreshing = false; + failedQueue = []; + } + }); } signOut();