Hey is a decentralized and permissionless social media app built with Lens Protocol 🌿

fix: add retry delay for token refresh (#23)

authored by yoginth.com and committed by

GitHub f18598af f6079fda

+10 -6
+5 -3
apps/mobile/helpers/tokenManager.ts
··· 9 9 10 10 const executeTokenRefresh = async (refreshToken: string): Promise<string> => { 11 11 try { 12 - for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) { 12 + for (let attempt = 0; attempt < MAX_RETRIES; attempt++) { 13 13 const { data } = await apolloClient.mutate<RefreshMutation>({ 14 14 mutation: RefreshDocument, 15 15 variables: { request: { refreshToken } } ··· 42 42 throw new Error("Refresh token is invalid or expired"); 43 43 } 44 44 45 - if (attempt === MAX_RETRIES) { 46 - throw new Error("Unknown error during token refresh"); 45 + if (attempt < MAX_RETRIES - 1) { 46 + await new Promise((resolve) => 47 + setTimeout(resolve, 2 ** attempt * 1000) 48 + ); 47 49 } 48 50 } 49 51
+5 -3
apps/web/src/helpers/tokenManager.ts
··· 9 9 10 10 const executeTokenRefresh = async (refreshToken: string): Promise<string> => { 11 11 try { 12 - for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) { 12 + for (let attempt = 0; attempt < MAX_RETRIES; attempt++) { 13 13 const { data } = await apolloClient.mutate<RefreshMutation>({ 14 14 mutation: RefreshDocument, 15 15 variables: { request: { refreshToken } } ··· 42 42 throw new Error("Refresh token is invalid or expired"); 43 43 } 44 44 45 - if (attempt === MAX_RETRIES) { 46 - throw new Error("Unknown error during token refresh"); 45 + if (attempt < MAX_RETRIES - 1) { 46 + await new Promise((resolve) => 47 + setTimeout(resolve, 2 ** attempt * 1000) 48 + ); 47 49 } 48 50 } 49 51