mirror of
https://github.com/ragestudio/comty.js.git
synced 2025-06-09 02:24:18 +00:00
32 lines
1.1 KiB
JavaScript
Executable File
32 lines
1.1 KiB
JavaScript
Executable File
import refreshToken from "./refreshToken"
|
|
|
|
export default async (data, callback) => {
|
|
// handle 401, 403 responses
|
|
if (data instanceof Error) {
|
|
if (data.code && (data.code === "ECONNABORTED" || data.code === "ERR_NETWORK")) {
|
|
console.error(`Request aborted or network error`)
|
|
return false
|
|
}
|
|
|
|
if (data.response) {
|
|
if (data.response.status === 401) {
|
|
// check if the server issue a refresh token on data
|
|
if (data.response.data.expired) {
|
|
try {
|
|
console.log(`Session expired, trying to regenerate...`)
|
|
|
|
await refreshToken()
|
|
} catch (error) {
|
|
__comty_shared_state.eventBus.emit("session.invalid", error.message)
|
|
|
|
console.error(`Failed to regenerate token: ${error.message}`)
|
|
|
|
throw new Error(`Invalid or Expired session`)
|
|
}
|
|
|
|
return await callback()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |