diff --git a/lib/src/core/engine.dart b/lib/src/core/engine.dart index a6e1c8e..4db8802 100644 --- a/lib/src/core/engine.dart +++ b/lib/src/core/engine.dart @@ -649,6 +649,10 @@ class Engine extends Disposable with EventsEmittable { ..on((event) => events.emit(event)) // relay to Room ..on((event) => events.emit(event)) + ..on((event) { + logger.fine('Server refreshed the token'); + token = event.token; + }) ..on((event) async { if (_connectionState == ConnectionState.reconnecting) { logger.warning( diff --git a/lib/src/core/signal_client.dart b/lib/src/core/signal_client.dart index 8e2783e..90dfa99 100644 --- a/lib/src/core/signal_client.dart +++ b/lib/src/core/signal_client.dart @@ -206,6 +206,9 @@ class SignalClient extends Disposable with EventsEmittable { allowed: msg.subscriptionPermissionUpdate.allowed, )); break; + case lk_rtc.SignalResponse_Message.refreshToken: + events.emit(SignalTokenUpdatedEvent(token: msg.refreshToken)); + break; default: logger.warning('skipping unsupported signal message'); } diff --git a/lib/src/internal/events.dart b/lib/src/internal/events.dart index d0d146d..ae191d1 100644 --- a/lib/src/internal/events.dart +++ b/lib/src/internal/events.dart @@ -231,6 +231,14 @@ class SignalSubscriptionPermissionUpdateEvent }); } +@internal +class SignalTokenUpdatedEvent with SignalEvent, InternalEvent { + final String token; + const SignalTokenUpdatedEvent({ + required this.token, + }); +} + // ---------------------------------------------------------------------- // Engine events // ----------------------------------------------------------------------