diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 825c5f09..f2d265f6 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -528,8 +528,8 @@ class ChatListController extends State with TickerProviderStateMixin { final client = Matrix.of(context).client; await client.roomsLoading; await client.accountDataLoading; - if (client.prevBatch?.isEmpty ?? true) { - await client.onFirstSync.stream.first; + if (client.onSync.value == null) { + await client.onSync.stream.first; } // Load space members to display DM rooms final spaceId = activeSpaceId; diff --git a/lib/utils/background_push.dart b/lib/utils/background_push.dart index cd79b0ab..05567660 100644 --- a/lib/utils/background_push.dart +++ b/lib/utils/background_push.dart @@ -219,7 +219,7 @@ class BackgroundPush { Future setupPush() async { Logs().d("SetupPush"); - if (client.loginState != LoginState.loggedIn || + if (client.onLoginStateChanged.value != LoginState.loggedIn || !PlatformInfos.isMobile || context == null) { return; diff --git a/lib/utils/voip_plugin.dart b/lib/utils/voip_plugin.dart index 1b9de844..c1420721 100644 --- a/lib/utils/voip_plugin.dart +++ b/lib/utils/voip_plugin.dart @@ -164,4 +164,10 @@ class VoipPlugin extends WidgetsBindingObserver implements WebRTCDelegate { void handleNewGroupCall(GroupCall groupCall) { // TODO: implement handleNewGroupCall } + + @override + Future cloneStream(webrtc_impl.MediaStream stream) { + // TODO: implement cloneStream + throw UnimplementedError(); + } } diff --git a/lib/widgets/connection_status_header.dart b/lib/widgets/connection_status_header.dart index 3ff19bc4..2bfc83e8 100644 --- a/lib/widgets/connection_status_header.dart +++ b/lib/widgets/connection_status_header.dart @@ -16,33 +16,28 @@ class ConnectionStatusHeader extends StatefulWidget { } class _ConnectionStatusHeaderState extends State { - StreamSubscription? _onSyncSub; - static bool _anySyncReceived = false; + late final StreamSubscription _onSyncSub; - SyncStatusUpdate _status = - const SyncStatusUpdate(SyncStatus.waitingForResponse); + @override + void initState() { + _onSyncSub = Matrix.of(context).client.onSyncStatus.stream.listen( + (_) => setState(() {}), + ); + super.initState(); + } @override void dispose() { - _onSyncSub?.cancel(); + _onSyncSub.cancel(); super.dispose(); } @override Widget build(BuildContext context) { - _onSyncSub ??= Matrix.of(context).client.onSyncStatus.stream.listen( - (status) => setState( - () { - _status = status; - if (status.status == SyncStatus.finished) { - _anySyncReceived = true; - } - }, - ), - ); - - final hide = _anySyncReceived && - _status.status != SyncStatus.error && + final status = Matrix.of(context).client.onSyncStatus.value ?? + const SyncStatusUpdate(SyncStatus.waitingForResponse); + final hide = Matrix.of(context).client.onSync.value != null && + status.status != SyncStatus.error && Matrix.of(context).client.prevBatch != null; return AnimatedContainer( @@ -60,12 +55,12 @@ class _ConnectionStatusHeaderState extends State { height: 24, child: CircularProgressIndicator.adaptive( strokeWidth: 2, - value: hide ? 1.0 : _status.progress, + value: hide ? 1.0 : status.progress, ), ), const SizedBox(width: 12), Text( - _status.toLocalizedString(context), + status.toLocalizedString(context), maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle(color: Theme.of(context).colorScheme.onSurface), diff --git a/lib/widgets/layouts/loading_view.dart b/lib/widgets/layouts/loading_view.dart index e593fbca..7015bcd9 100644 --- a/lib/widgets/layouts/loading_view.dart +++ b/lib/widgets/layouts/loading_view.dart @@ -13,10 +13,8 @@ class LoadingView extends StatelessWidget { Widget build(BuildContext context) { WidgetsBinding.instance.addPostFrameCallback( (_) => VRouter.of(context).to( - Matrix.of(context) - .widget - .clients - .any((client) => client.loginState == LoginState.loggedIn) + Matrix.of(context).widget.clients.any((client) => + client.onLoginStateChanged.value == LoginState.loggedIn) ? '/rooms' : '/home', queryParameters: VRouter.of(context).queryParameters, diff --git a/lib/widgets/matrix.dart b/lib/widgets/matrix.dart index 0d208bbb..dd876482 100644 --- a/lib/widgets/matrix.dart +++ b/lib/widgets/matrix.dart @@ -211,7 +211,7 @@ class MatrixState extends State with WidgetsBindingObserver { } } } catch (e, s) { - client.onLoginStateChanged.sink.addError(e, s); + client.onLoginStateChanged.addError(e, s); SentryController.captureException(e, s); rethrow; } diff --git a/pubspec.lock b/pubspec.lock index 212d7888..f4032c9f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1019,7 +1019,7 @@ packages: name: matrix url: "https://pub.dartlang.org" source: hosted - version: "0.10.1" + version: "0.10.3" matrix_api_lite: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 281df392..b0e4daef 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -57,7 +57,7 @@ dependencies: keyboard_shortcuts: ^0.1.4 localstorage: ^4.0.0+1 lottie: ^1.2.2 - matrix: ^0.10.1 + matrix: ^0.10.3 matrix_homeserver_recommendations: ^0.2.0 matrix_link_text: ^1.0.2 native_imaging: @@ -158,5 +158,3 @@ dependency_overrides: git: url: https://github.com/TheOneWithTheBraid/snapping_sheet.git ref: listenable - #matrix: - # path: ../famedlysdk/