diff --git a/lib/services/app_home_widget/home_widget_repository.dart b/lib/services/app_home_widget/home_widget_repository.dart index a69c0ae..2c5a2e4 100644 --- a/lib/services/app_home_widget/home_widget_repository.dart +++ b/lib/services/app_home_widget/home_widget_repository.dart @@ -326,7 +326,41 @@ class HomeWidgetRepository { case 'didvanvoice': case 'media': - route = Routes.didvanVoiceList; + // DidvanVoiceList expects List. The notification + // doesn't carry the full list, so we fetch it on the fly the same + // way the legacy int-id branch does. + try { + final service = RequestService(RequestHelper.didvanVoice); + await service.httpGet(); + if (service.statusCode == 200) { + final rawData = service.data('result'); + List voices = []; + if (rawData is List && rawData.isNotEmpty) { + voices = rawData + .map((e) => DidvanVoiceModel.fromJson( + Map.from(e as Map))) + .toList(); + } else if (rawData is Map) { + voices = [ + DidvanVoiceModel.fromJson( + Map.from(rawData)), + ]; + } + if (voices.isNotEmpty) { + route = Routes.didvanVoiceList; + args = voices; + } else { + route = Routes.home; + } + } else { + route = Routes.home; + } + } catch (e) { + if (kDebugMode) { + print("Error fetching didvan voices for notification: $e"); + } + route = Routes.home; + } break; // Unknown type with a UUID — best effort: generic reader.