add refresh
This commit is contained in:
parent
41adedee40
commit
defcdeec33
@ -86,6 +86,23 @@ final class SocketService {
|
||||
}
|
||||
}
|
||||
|
||||
@discardableResult
|
||||
private func refreshAuthTokenIfNeeded(disconnectIfMissing: Bool) -> Bool {
|
||||
let storedToken = resolveCurrentAccessToken()
|
||||
|
||||
guard let token = storedToken, !token.isEmpty else {
|
||||
guard disconnectIfMissing else { return false }
|
||||
currentToken = nil
|
||||
disconnectInternal()
|
||||
return true
|
||||
}
|
||||
|
||||
guard token != currentToken else { return false }
|
||||
|
||||
connectInternal(with: token)
|
||||
return true
|
||||
}
|
||||
|
||||
private func resolveCurrentAccessToken() -> String? {
|
||||
guard
|
||||
let login = UserDefaults.standard.string(forKey: "currentUser"),
|
||||
@ -172,11 +189,13 @@ final class SocketService {
|
||||
|
||||
socket.on(clientEvent: .reconnect) { _, _ in
|
||||
if AppConfig.DEBUG { print("[SocketService] Reconnecting") }
|
||||
if self.refreshAuthTokenIfNeeded(disconnectIfMissing: true) { return }
|
||||
self.updateConnectionState(.connecting)
|
||||
}
|
||||
|
||||
socket.on(clientEvent: .reconnectAttempt) { data, _ in
|
||||
if AppConfig.DEBUG { print("[SocketService] Reconnect attempt: \(data)") }
|
||||
if self.refreshAuthTokenIfNeeded(disconnectIfMissing: true) { return }
|
||||
self.updateConnectionState(.connecting)
|
||||
}
|
||||
|
||||
@ -233,6 +252,8 @@ final class SocketService {
|
||||
}
|
||||
|
||||
private func performHeartbeatCheck() {
|
||||
if refreshAuthTokenIfNeeded(disconnectIfMissing: true) { return }
|
||||
|
||||
guard let socket = socket else {
|
||||
updateConnectionState(.disconnected)
|
||||
return
|
||||
@ -245,6 +266,7 @@ final class SocketService {
|
||||
updateConnectionState(.connecting)
|
||||
case .disconnected, .notConnected:
|
||||
updateConnectionState(.connecting)
|
||||
if refreshAuthTokenIfNeeded(disconnectIfMissing: true) { return }
|
||||
socket.connect(withPayload: currentAuthPayload)
|
||||
@unknown default:
|
||||
updateConnectionState(.connecting)
|
||||
@ -313,6 +335,7 @@ final class SocketService {
|
||||
|
||||
consecutiveHeartbeatMisses = 0
|
||||
updateConnectionState(.connecting)
|
||||
if refreshAuthTokenIfNeeded(disconnectIfMissing: true) { return }
|
||||
socket.disconnect()
|
||||
socket.connect(withPayload: currentAuthPayload)
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user