import 'package:flutter/cupertino.dart'; import 'package:home_widget/home_widget.dart'; import 'package:persian_number_utility/persian_number_utility.dart'; import 'package:url_launcher/url_launcher_string.dart'; import '../../main.dart'; import '../../models/requests/infography.dart'; import '../../models/requests/news.dart'; import '../../models/requests/radar.dart'; import '../../models/widget_response.dart'; import '../../routes/routes.dart'; import '../network/request.dart'; import '../network/request_helper.dart'; class HomeWidgetRepository { static Future fetchWidget() async { final service = RequestService( RequestHelper.widgetNews(), ); await service.httpGet(); if (service.isSuccess) { final favourites = service.data('content'); HomeWidget.saveWidgetData("token", RequestService.token.toString()); for (var i = 0; i < favourites.length; i++) { HomeWidget.saveWidgetData( "id${i + 1}", WidgetResponse.fromJson(favourites[i]).id.toString()); HomeWidget.saveWidgetData("title${i + 1}", WidgetResponse.fromJson(favourites[i]).title.toString()); HomeWidget.saveWidgetData( "createdAt${i + 1}", DateTime.parse( WidgetResponse.fromJson(favourites[i]).createdAt.toString()) .toPersianDateStr()); HomeWidget.saveWidgetData("type${i + 1}", WidgetResponse.fromJson(favourites[i]).type.toString()); HomeWidget.saveWidgetData("link${i + 1}", WidgetResponse.fromJson(favourites[i]).link.toString()); HomeWidget.saveWidgetData("category${i + 1}", WidgetResponse.fromJson(favourites[i]).category.toString()); HomeWidget.saveWidgetData("image${i + 1}", WidgetResponse.fromJson(favourites[i]).image.toString()); } HomeWidget.updateWidget( androidName: "FavWidget", ); } } static Future decideWhereToGo() async { String? uri = await HomeWidget.getWidgetData('uri', defaultValue: ""); if (uri!.isNotEmpty) { int row = 0; String route = ""; dynamic args; switch (uri) { case 'setting': route = Routes.favouritesStep; args = {"toTimer": false}; break; case 'rowfirst': row = 1; break; case 'rowmiddle': row = 2; break; case 'rowlast': row = 3; break; } if (row != 0) { String? id = await HomeWidget.getWidgetData("id$row", defaultValue: ""); WidgetResponse data = WidgetResponse( id: int.parse(id!), title: await HomeWidget.getWidgetData("title$row", defaultValue: ""), createdAt: await HomeWidget.getWidgetData("createdAt$row", defaultValue: ""), type: await HomeWidget.getWidgetData("type$row", defaultValue: ""), link: await HomeWidget.getWidgetData("link$row", defaultValue: ""), category: await HomeWidget.getWidgetData("category$row", defaultValue: ""), image: await HomeWidget.getWidgetData("image$row", defaultValue: ""), ); if (data.link!.startsWith('http')) { launchUrlString( '${data.link}', mode: LaunchMode.inAppWebView, ); return; } switch (data.type!) { case "infography": route = Routes.infography; args = { // 'onMarkChanged': (id, value) => // markChangeHandler(data.type, id, value), 'id': data.id, 'args': const InfographyRequestArgs(page: 0), 'hasUnmarkConfirmation': false, }; break; case "news": route = Routes.newsDetails; args = { // 'onMarkChanged': (id, value) => // markChangeHandler(data.type, id, value), 'id': data.id, 'args': const NewsRequestArgs(page: 0), 'hasUnmarkConfirmation': false, }; break; case "radar": route = Routes.radarDetails; args = { // 'onMarkChanged': (id, value) => // markChangeHandler(data.type, id, value), 'id': data.id, 'args': const RadarRequestArgs(page: 0), 'hasUnmarkConfirmation': false, }; break; case "video": route = Routes.studioDetails; args = { 'type': 'podcast', 'id': data.id, }; break; case "podcast": route = Routes.podcasts; args = { 'type': 'podcast', 'id': data.id, }; break; } } if (route.isNotEmpty) { Future.delayed( const Duration(milliseconds: 500), () => Navigator.of(navigatorKey.currentContext!) .pushNamed(route.toString(), arguments: args)); } } await HomeWidget.saveWidgetData("uri", ""); return; } }