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