diff --git a/lib/repositories/signalR_repo.dart b/lib/repositories/signalR_repo.dart index 430440f..0ec0b61 100644 --- a/lib/repositories/signalR_repo.dart +++ b/lib/repositories/signalR_repo.dart @@ -15,6 +15,8 @@ abstract class SignalrRepo { required Function(dynamic) onHubReconnected, required Function(dynamic) onHubDisconnected, }); + + Future closeConnection(); } class SignalrRepoImp implements SignalrRepo { @@ -103,6 +105,7 @@ class SignalrRepoImp implements SignalrRepo { return false; } + @override closeConnection() async { if (connection!.state == HubConnectionState.connected || connection!.state == HubConnectionState.connecting) { await connection!.stop(); diff --git a/lib/utilities/native_method_handler.dart b/lib/utilities/native_method_handler.dart index c16bdcb..7110c7c 100644 --- a/lib/utilities/native_method_handler.dart +++ b/lib/utilities/native_method_handler.dart @@ -6,7 +6,8 @@ import 'package:restart_app/restart_app.dart'; abstract class NativeMethodChannelService { void reopenApp(); - void restartApp(); + + Future restartApp(); } class NativeMethodChannelServiceImp implements NativeMethodChannelService { @@ -26,7 +27,7 @@ class NativeMethodChannelServiceImp implements NativeMethodChannelService { } @override - void restartApp() async { + Future restartApp() async { try { await Restart.restartApp(); } catch (e) { diff --git a/lib/view_models/queuing_view_model.dart b/lib/view_models/queuing_view_model.dart index 41ef270..a26daf6 100644 --- a/lib/view_models/queuing_view_model.dart +++ b/lib/view_models/queuing_view_model.dart @@ -49,6 +49,10 @@ class QueuingViewModel extends ChangeNotifier { ); } + Future stopHubConnection() async { + return await signalrRepo.closeConnection(); + } + initializeAudioPlayer() { audioService.listenAudioPlayerEvents(onToneCompleted: onToneCompleted); } diff --git a/lib/view_models/screen_config_view_model.dart b/lib/view_models/screen_config_view_model.dart index 5f0aebe..3125745 100644 --- a/lib/view_models/screen_config_view_model.dart +++ b/lib/view_models/screen_config_view_model.dart @@ -333,6 +333,8 @@ class ScreenConfigViewModel extends ChangeNotifier { // At midnight, update weather and prayer details if required if (now.day != lastChecked.day) { if (now.difference(now.copyWith(hour: 0, minute: 0, second: 0, millisecond: 0, microsecond: 0)).inMinutes >= 5) { + QueuingViewModel queuingViewModel = getIt.get(); + await queuingViewModel.stopHubConnection(); nativeMethodChannelService.restartApp(); if (globalConfigurationsModel.isWeatherReq) { await getWeatherDetailsFromServer();