export async function refreshToken()

in src/Frontend/src/services/auth.ts [86:124]


export async function refreshToken(firebaseAuth: Auth) : Promise<IAuthSigninResponse | null> {
    return new Promise<IAuthSigninResponse | null>(async (resolve, reject) => {
        try {
            onAuthStateChanged(firebaseAuth, async (user) => {
                const userStorage : (string | null) = getCookie('user');
                const access_token : (string | null) = getCookie('token');
                const refresh_token : (string | null) = getCookie("refresh_token");
                if (!access_token || !userStorage || !refresh_token) return reject(null);

                api.post(ENDPOINT_AUTH_REFRESH, {}).then(response  => {
                    const { id, access_token, refresh_token, token_type, scopes, user_id } = response.data;

                    if (!id){
                        AlertInstance.alert(ALERT_ERROR, 'toast.errors.error_no_data');
                        resolve(null);
                    }

                    resolve({ 
                        id,
                        access_token, 
                        refresh_token,
                        token_type,
                        scopes,
                        email: JSON.parse(userStorage).email,
                        user_name: JSON.parse(userStorage).user_name,
                        user_id
                    });
                }).catch((error: any) => {
                    AlertInstance.alert(ALERT_ERROR, 'toast.errors.auth.error_api');
                    if (process.env.NODE_ENV === 'development') console.error('[API ERROR REFRESHING TOKEN]: ' + error);
                    reject(null);
                });                
            });
        } catch (e) {
            if (process.env.NODE_ENV === 'development') console.error('[PROMISE ERROR REFRESHING TOKEN]: ' + e);
            reject(null);
        }
    })
}