comty/packages/comty.js/src/helpers/handleRegenerationEvent.js

43 lines
1.2 KiB
JavaScript

import SessionModel from "../models/session"
import request from "../handlers/request"
import { reconnectWebsockets } from "../"
export default async (refreshToken) => {
__comty_shared_state.eventBus.emit("session.expiredExceptionEvent", refreshToken)
__comty_shared_state.onExpiredExceptionEvent = true
const expiredToken = await SessionModel.token
// send request to regenerate token
const response = await request({
method: "POST",
url: "/session/regenerate",
data: {
expiredToken: expiredToken,
refreshToken,
}
}).catch((error) => {
console.error(`Failed to regenerate token: ${error.message}`)
return false
})
if (!response) {
return __comty_shared_state.eventBus.emit("session.invalid", "Failed to regenerate token")
}
if (!response.data?.token) {
return __comty_shared_state.eventBus.emit("session.invalid", "Failed to regenerate token, invalid server response.")
}
// set new token
SessionModel.token = response.data.token
__comty_shared_state.onExpiredExceptionEvent = false
// emit event
__comty_shared_state.eventBus.emit("session.regenerated")
// reconnect websockets
reconnectWebsockets()
}