From 04f034971f43336eb38784c8aa73b02d1fd72d3a Mon Sep 17 00:00:00 2001 From: yaso Date: Tue, 30 Jun 2026 16:21:47 +0200 Subject: [PATCH] Complete Offline Wallet Display & Edit --- mih_ui/analysis_options.yaml | 4 +- mih_ui/build.yaml | 6 +- mih_ui/lib/main_dev.dart | 6 + mih_ui/lib/mih_hive/hive_adapters.dart | 2 + mih_ui/lib/mih_hive/hive_adapters.g.dart | 56 +- mih_ui/lib/mih_hive/hive_adapters.g.yaml | 22 +- .../lib/mih_hive/mih_calendar_hive_data.dart | 33 + .../lib/mih_hive/mzansi_wallet_hive_data.dart | 226 +++++- mih_ui/lib/mih_objects/loyalty_card.dart | 2 + .../lib/mih_packages/mzansi_ai/mzansi_ai.dart | 2 - .../builder/build_loyalty_card_list.dart | 160 ++-- .../components/mih_add_card_window.dart | 68 +- .../mzansi_wallet/mih_wallet.dart | 3 +- .../mih_providers/mzansi_wallet_provider.dart | 31 + .../mih_mzansi_calendar_services.dart | 19 + .../mih_mzansi_wallet_services.dart | 104 +++ mih_ui/linux/flutter/generated_plugins.cmake | 1 + .../Flutter/GeneratedPluginRegistrant.swift | 8 +- mih_ui/pubspec.lock | 716 +++++++++--------- .../flutter/generated_plugin_registrant.cc | 9 +- .../windows/flutter/generated_plugins.cmake | 2 + 21 files changed, 973 insertions(+), 507 deletions(-) create mode 100644 mih_ui/lib/mih_hive/mih_calendar_hive_data.dart diff --git a/mih_ui/analysis_options.yaml b/mih_ui/analysis_options.yaml index 65062592..d73341aa 100644 --- a/mih_ui/analysis_options.yaml +++ b/mih_ui/analysis_options.yaml @@ -1,7 +1,7 @@ analyzer: exclude: - - lib/**/*.g.dart - - lib/**/hive_registrar.g.dart + - lib/mih_hive/*.g.dart + - lib/mih_hive/hive_registrar.g.dart include: package:flutter_lints/flutter.yaml diff --git a/mih_ui/build.yaml b/mih_ui/build.yaml index f99dfb8c..a022b6d7 100644 --- a/mih_ui/build.yaml +++ b/mih_ui/build.yaml @@ -1,10 +1,14 @@ targets: $default: builders: + # Disable type adapter generator since we use GenerateAdapters in hive_adapters.dart + hive_ce_generator:hive_type_adapter_generator: + enabled: false + # 1. Restrict adapter generation to your mih_hive folder hive_ce_generator:hive_adapters_generator: generate_for: - - lib/mih_hive/*.dart + - lib/mih_hive/hive_adapters.dart # 2. Restrict registrar generation to your entry points hive_ce_generator:hive_registrar_generator: diff --git a/mih_ui/lib/main_dev.dart b/mih_ui/lib/main_dev.dart index 71e42e5c..e11b0b37 100644 --- a/mih_ui/lib/main_dev.dart +++ b/mih_ui/lib/main_dev.dart @@ -11,6 +11,7 @@ import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_go_router.dart'; import 'package:mzansi_innovation_hub/mih_hive/hive_registrar.g.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; +import 'package:mzansi_innovation_hub/mih_objects/appointment.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_objects/business_employee.dart'; import 'package:mzansi_innovation_hub/mih_objects/business_user.dart'; @@ -45,7 +46,12 @@ void main() async { // Mzansi Wallet Data await Hive.openBox('loyalty_card_box'); await Hive.openBox('fav_loyalty_card_box'); + await Hive.openBox('wallet_modifications_queue'); + // About MIH Data await Hive.openBox('about_mih_box'); + // Mih Calendar Data + await Hive.openBox('personal_calendar_box'); + await Hive.openBox('business_calendar_box'); // await Firebase.initializeApp( // // options: DefaultFirebaseOptions.currentPlatform, diff --git a/mih_ui/lib/mih_hive/hive_adapters.dart b/mih_ui/lib/mih_hive/hive_adapters.dart index 78d43de4..2e84a35d 100644 --- a/mih_ui/lib/mih_hive/hive_adapters.dart +++ b/mih_ui/lib/mih_hive/hive_adapters.dart @@ -1,6 +1,7 @@ // hive_adapters.dart import 'package:hive_ce/hive_ce.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; +import 'package:mzansi_innovation_hub/mih_objects/appointment.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_objects/business_employee.dart'; import 'package:mzansi_innovation_hub/mih_objects/business_user.dart'; @@ -16,5 +17,6 @@ import 'package:mzansi_innovation_hub/mih_objects/user_consent.dart'; AdapterSpec(), AdapterSpec(), AdapterSpec(), + AdapterSpec(), ]) part 'hive_adapters.g.dart'; diff --git a/mih_ui/lib/mih_hive/hive_adapters.g.dart b/mih_ui/lib/mih_hive/hive_adapters.g.dart index df0aa419..e9d1ec0f 100644 --- a/mih_ui/lib/mih_hive/hive_adapters.g.dart +++ b/mih_ui/lib/mih_hive/hive_adapters.g.dart @@ -357,13 +357,14 @@ class MIHLoyaltyCardAdapter extends TypeAdapter { favourite: fields[4] as String, priority_index: (fields[5] as num).toInt(), nickname: fields[6] as String, + offline_id: fields[7] as String?, ); } @override void write(BinaryWriter writer, MIHLoyaltyCard obj) { writer - ..writeByte(7) + ..writeByte(8) ..writeByte(0) ..write(obj.idloyalty_cards) ..writeByte(1) @@ -377,7 +378,9 @@ class MIHLoyaltyCardAdapter extends TypeAdapter { ..writeByte(5) ..write(obj.priority_index) ..writeByte(6) - ..write(obj.nickname); + ..write(obj.nickname) + ..writeByte(7) + ..write(obj.offline_id); } @override @@ -390,3 +393,52 @@ class MIHLoyaltyCardAdapter extends TypeAdapter { runtimeType == other.runtimeType && typeId == other.typeId; } + +class AppointmentAdapter extends TypeAdapter { + @override + final typeId = 7; + + @override + Appointment read(BinaryReader reader) { + final numOfFields = reader.readByte(); + final fields = { + for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(), + }; + return Appointment( + idappointments: (fields[0] as num).toInt(), + app_id: fields[1] as String, + business_id: fields[2] as String, + date_time: fields[3] as String, + title: fields[4] as String, + description: fields[5] as String, + ); + } + + @override + void write(BinaryWriter writer, Appointment obj) { + writer + ..writeByte(6) + ..writeByte(0) + ..write(obj.idappointments) + ..writeByte(1) + ..write(obj.app_id) + ..writeByte(2) + ..write(obj.business_id) + ..writeByte(3) + ..write(obj.date_time) + ..writeByte(4) + ..write(obj.title) + ..writeByte(5) + ..write(obj.description); + } + + @override + int get hashCode => typeId.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is AppointmentAdapter && + runtimeType == other.runtimeType && + typeId == other.typeId; +} diff --git a/mih_ui/lib/mih_hive/hive_adapters.g.yaml b/mih_ui/lib/mih_hive/hive_adapters.g.yaml index 7193a532..f1e1138a 100644 --- a/mih_ui/lib/mih_hive/hive_adapters.g.yaml +++ b/mih_ui/lib/mih_hive/hive_adapters.g.yaml @@ -1,7 +1,7 @@ # Generated by Hive CE # Manual modifications may be necessary for certain migrations # Check in to version control -nextTypeId: 7 +nextTypeId: 8 types: AppUser: typeId: 0 @@ -127,7 +127,7 @@ types: index: 7 MIHLoyaltyCard: typeId: 6 - nextIndex: 7 + nextIndex: 8 fields: idloyalty_cards: index: 0 @@ -143,3 +143,21 @@ types: index: 5 nickname: index: 6 + offline_id: + index: 7 + Appointment: + typeId: 7 + nextIndex: 6 + fields: + idappointments: + index: 0 + app_id: + index: 1 + business_id: + index: 2 + date_time: + index: 3 + title: + index: 4 + description: + index: 5 diff --git a/mih_ui/lib/mih_hive/mih_calendar_hive_data.dart b/mih_ui/lib/mih_hive/mih_calendar_hive_data.dart new file mode 100644 index 00000000..e91f7c5b --- /dev/null +++ b/mih_ui/lib/mih_hive/mih_calendar_hive_data.dart @@ -0,0 +1,33 @@ +import 'package:hive_ce_flutter/hive_ce_flutter.dart'; +import 'package:mzansi_innovation_hub/mih_objects/appointment.dart'; + +class MihCalendarHiveData { + final Box _personalAppointmentBox = + Hive.box('personal_calendar_box'); + final Box _businessAppointmentBox = + Hive.box('business_calendar_box'); + + List getCachedPersonalAppointments() { + final appointments = _personalAppointmentBox.values.toList(); + appointments.sort((a, b) { + final dateA = DateTime.parse(a.date_time); + final dateB = DateTime.parse(b.date_time); + return dateB.compareTo(dateA); + }); + return appointments; + } + + List getCachedBusinessAppointments() { + final appointments = _businessAppointmentBox.values.toList(); + appointments.sort((a, b) { + final dateA = DateTime.parse(a.date_time); + final dateB = DateTime.parse(b.date_time); + return dateB.compareTo(dateA); + }); + return appointments; + } + + Future syncCalendarDataWithServer() async { + return false; + } +} diff --git a/mih_ui/lib/mih_hive/mzansi_wallet_hive_data.dart b/mih_ui/lib/mih_hive/mzansi_wallet_hive_data.dart index 21bdec6e..d5bb5dfe 100644 --- a/mih_ui/lib/mih_hive/mzansi_wallet_hive_data.dart +++ b/mih_ui/lib/mih_hive/mzansi_wallet_hive_data.dart @@ -3,12 +3,15 @@ import 'package:ken_logger/ken_logger.dart'; import 'package:mzansi_innovation_hub/mih_objects/loyalty_card.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_wallet_services.dart'; +import 'package:uuid/uuid.dart'; class MzansiWalletHiveData { final Box _loyaltyCardBox = Hive.box('loyalty_card_box'); final Box _favLoyaltyCardBox = Hive.box('fav_loyalty_card_box'); + final Box _modificationsQueue = + Hive.box('wallet_modifications_queue'); // Get Offline Data List getCachedLoyaltyCards() { @@ -19,10 +22,116 @@ class MzansiWalletHiveData { List getCachedFavLoyaltyCards() { final cards = _favLoyaltyCardBox.values.toList(); - cards.sort((a, b) => a.shop_name.compareTo(b.shop_name)); + cards.sort((a, b) => a.priority_index.compareTo(b.priority_index)); return cards; } + // Set Offline Data + Future addLoyaltyCardLocally(MIHLoyaltyCard newCard) async { + await _loyaltyCardBox.put(newCard.offline_id, newCard); + + if (newCard.favourite == "Yes") { + await _favLoyaltyCardBox.put(newCard.offline_id, newCard); + } + KenLogger.success("New Card Saved Locally."); + } + + Future deleteLoyaltyCardLocally(MIHLoyaltyCard deleteCard) async { + dynamic mainTargetKey; + dynamic favTargetKey; + for (var key in _loyaltyCardBox.keys) { + final card = _loyaltyCardBox.get(key); + if (card != null) { + if (deleteCard.idloyalty_cards != 0 && + card.idloyalty_cards == deleteCard.idloyalty_cards) { + mainTargetKey = key; + break; + } else if (deleteCard.idloyalty_cards == 0 && + card.offline_id == deleteCard.offline_id) { + mainTargetKey = key; + break; + } + } + } + for (var key in _favLoyaltyCardBox.keys) { + final card = _favLoyaltyCardBox.get(key); + if (card != null) { + if (deleteCard.idloyalty_cards != 0 && + card.idloyalty_cards == deleteCard.idloyalty_cards) { + favTargetKey = key; + break; + } else if (deleteCard.idloyalty_cards == 0 && + card.offline_id == deleteCard.offline_id) { + favTargetKey = key; + break; + } + } + } + if (mainTargetKey != null) { + await _loyaltyCardBox.delete(mainTargetKey); + KenLogger.success("Card Deleted Locally."); + } + if (favTargetKey != null) { + await _favLoyaltyCardBox.delete(favTargetKey); + KenLogger.success("Fav Card Deleted Locally."); + } + } + + Future updateLoyaltyCardLocally(MIHLoyaltyCard updatedCard) async { + dynamic mainTargetKey; + dynamic favTargetKey; + for (var key in _loyaltyCardBox.keys) { + final card = _loyaltyCardBox.get(key); + if (card != null) { + if (updatedCard.idloyalty_cards != 0 && + card.idloyalty_cards == updatedCard.idloyalty_cards) { + mainTargetKey = key; + break; + } else if (updatedCard.idloyalty_cards == 0 && + card.offline_id == updatedCard.offline_id) { + mainTargetKey = key; + break; + } + } + } + for (var key in _favLoyaltyCardBox.keys) { + final card = _favLoyaltyCardBox.get(key); + if (card != null) { + if (updatedCard.idloyalty_cards != 0 && + card.idloyalty_cards == updatedCard.idloyalty_cards) { + favTargetKey = key; + break; + } else if (updatedCard.idloyalty_cards == 0 && + card.offline_id == updatedCard.offline_id) { + favTargetKey = key; + break; + } + } + } + if (mainTargetKey != null) { + await _loyaltyCardBox.put(mainTargetKey, updatedCard); + KenLogger.success("Card Udpdated Locally."); + } + if (favTargetKey != null) { + if (updatedCard.favourite == "Yes") { + await _favLoyaltyCardBox.put(favTargetKey, updatedCard); + KenLogger.success("Fav Card Updated Locally."); + } else { + await _favLoyaltyCardBox.delete(favTargetKey); + KenLogger.success("Fav Card Removed Locally."); + } + } else { + if (updatedCard.offline_id == null) { + final String uniqueKey = const Uuid().v4(); + await _favLoyaltyCardBox.put(uniqueKey, updatedCard); + KenLogger.success("Fav Card Added Locally."); + } else { + await _favLoyaltyCardBox.put(updatedCard.offline_id, updatedCard); + KenLogger.success("Fav Card Added Locally."); + } + } + } + // Cache data for offline use Future cacheFavLoyaltyCardsData( List remoteLoyaltyCards) async { @@ -51,9 +160,122 @@ class MzansiWalletHiveData { cacheFavLoyaltyCardsData(remoteFavLoyaltyCards); return true; } catch (error) { - KenLogger.warning("MIH App Operating in Offline Mode. Sync Paused"); + KenLogger.warning("MIH App Operating in Offline Mode. Sync Paused."); return false; // KenLogger.warning("App operating offline mode. Sync paused: $error"); } } + + // Modicfications processing + Future queueAddModification(MIHLoyaltyCard newCardData) async { + await _modificationsQueue.add({ + 'action': 'ADD', + 'payload': newCardData, + }); + KenLogger.warning("Add Card Queued For Online Sync"); + } + + Future queueDeleteModification(MIHLoyaltyCard deleteCardData) async { + await _modificationsQueue.add({ + 'action': 'DELETE', + 'payload': deleteCardData, + }); + KenLogger.warning("Delete Card Queued For Online Sync"); + } + + Future queueUpdateModification(MIHLoyaltyCard updatedCardData) async { + await _modificationsQueue.add({ + 'action': 'UPDATE', + 'payload': updatedCardData, + }); + KenLogger.warning("Update Card Queued For Online Sync"); + } + + Future processModificationsQueue( + MzansiProfileProvider profileProvider) async { + if (_modificationsQueue.isEmpty) { + return true; + } + final List queueKeys = _modificationsQueue.keys.toList(); + for (var taskKey in queueKeys) { + final task = _modificationsQueue.get(taskKey); + if (task == null) { + continue; + } + final String action = task['action']; + final MIHLoyaltyCard taskCard = task['payload']; + KenLogger.warning( + "Card Details: id=${taskCard.idloyalty_cards}, shop=${taskCard.shop_name}, Nunber=${taskCard.card_number}, offline_id=${taskCard.offline_id}"); + if (action == 'ADD') { + dynamic deleteCardTaskKey; + for (var entry in _modificationsQueue.toMap().entries) { + if (entry.value['action'] == 'DELETE' && + entry.value['payload'].offline_id == taskCard.offline_id) { + deleteCardTaskKey = entry.key; + break; + } + } + + if (deleteCardTaskKey != null) { + await _modificationsQueue.delete(taskKey); // Remove 'ADD' + await _modificationsQueue + .delete(deleteCardTaskKey); // Remove 'DELETE' + KenLogger.success( + "Offline add & delete cancelled out. Queue cleaned."); + continue; + } + + final responseCode = await MIHMzansiWalletApis.addLoyaltyCardAPICallV2( + profileProvider.user!.app_id, + taskCard.shop_name, + taskCard.card_number, + taskCard.favourite, + taskCard.priority_index, + taskCard.nickname, + ); + if (responseCode != null && responseCode == 201) { + await _modificationsQueue.delete(taskKey); + KenLogger.success("Add New Local Card to MIH Server"); + } else { + KenLogger.warning("MIH App Operating in Offline Mode. Sync Paused"); + return false; + } + } + if (action == 'DELETE') { + final responseCode = + await MIHMzansiWalletApis.deleteLoyaltyCardAPICallV2( + taskCard.idloyalty_cards, + ); + if (responseCode != null && responseCode == 200) { + await _modificationsQueue.delete(taskKey); + KenLogger.success("Delete Local Card from MIH Server"); + } else { + KenLogger.warning("MIH App Operating in Offline Mode. Sync Paused"); + return false; + } + } + if (action == 'UPDATE') { + final responseCode = + await MIHMzansiWalletApis.updateLoyaltyCardAPICallV2( + taskCard.idloyalty_cards, + taskCard.favourite, + taskCard.priority_index, + taskCard.nickname, + taskCard.card_number, + ); + if (responseCode != null && responseCode == 200) { + await _modificationsQueue.delete(taskKey); + KenLogger.success("Update Local Card from MIH Server"); + } else { + KenLogger.warning("MIH App Operating in Offline Mode. Sync Paused"); + return false; + } + } + } + return true; + } + + bool isModificationNotEmpty() { + return _modificationsQueue.values.toList().isNotEmpty; + } } diff --git a/mih_ui/lib/mih_objects/loyalty_card.dart b/mih_ui/lib/mih_objects/loyalty_card.dart index 5926ae2d..34d235bc 100644 --- a/mih_ui/lib/mih_objects/loyalty_card.dart +++ b/mih_ui/lib/mih_objects/loyalty_card.dart @@ -6,6 +6,7 @@ class MIHLoyaltyCard { final String favourite; final int priority_index; final String nickname; + final String? offline_id; const MIHLoyaltyCard({ required this.idloyalty_cards, @@ -15,6 +16,7 @@ class MIHLoyaltyCard { required this.favourite, required this.priority_index, required this.nickname, + this.offline_id, }); factory MIHLoyaltyCard.fromJson(Map json) { diff --git a/mih_ui/lib/mih_packages/mzansi_ai/mzansi_ai.dart b/mih_ui/lib/mih_packages/mzansi_ai/mzansi_ai.dart index ff081e5a..0160fcfc 100644 --- a/mih_ui/lib/mih_packages/mzansi_ai/mzansi_ai.dart +++ b/mih_ui/lib/mih_packages/mzansi_ai/mzansi_ai.dart @@ -24,8 +24,6 @@ class _MzansiAiState extends State { mzansiProfileProvider.loadCachedProfileState(); if (mzansiProfileProvider.user == null) { await mzansiProfileProvider.syncWithMihServerData(); - } else { - await mzansiProfileProvider.syncWithMihServerData(); } } diff --git a/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart b/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart index ba15d3e6..1d30be31 100644 --- a/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart +++ b/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart @@ -11,7 +11,6 @@ import 'package:mzansi_innovation_hub/mih_packages/mzansi_wallet/components/mih_ import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_wallet_provider.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; -import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_wallet_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; import 'package:mzansi_innovation_hub/mih_objects/loyalty_card.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_wallet/components/mih_card_display.dart'; @@ -130,29 +129,27 @@ class _BuildLoyaltyCardListState extends State { child: MihButton( onPressed: () async { if (_formKey.currentState!.validate()) { - int statusCode = await MIHMzansiWalletApis - .updateLoyaltyCardAPICall( - walletProvider, - mzansiProfileProvider.user!, - widget.cardList[index].idloyalty_cards, - widget.cardList[index].shop_name, - widget.cardList[index].favourite, - widget.cardList[index].priority_index, - _nicknameController.text, - _cardNumberController.text, - ctxt, + walletProvider.updateLocalLoyaltyCard( + mzansiProfileProvider, + MIHLoyaltyCard( + idloyalty_cards: + widget.cardList[index].idloyalty_cards, + app_id: widget.cardList[index].app_id, + shop_name: widget.cardList[index].shop_name, + card_number: _cardNumberController.text, + favourite: widget.cardList[index].favourite, + priority_index: + widget.cardList[index].priority_index, + nickname: _nicknameController.text, + ), + ); + context.pop(); + context.pop(); + MihAlertServices().successBasicAlert( + "Success!", + "You have successfully updated the loyalty card details.", + context, ); - if (statusCode == 200) { - context.pop(); - context.pop(); - MihAlertServices().successBasicAlert( - "Success!", - "You have successfully updated the loyalty card details.", - context, - ); - } else { - MihAlertServices().internetConnectionAlert(context); - } } else { MihAlertServices().inputErrorAlert(context); } @@ -183,24 +180,17 @@ class _BuildLoyaltyCardListState extends State { MihAlertServices().deleteConfirmationAlert( "This Card will be deleted permanently from your Mzansi Wallet. Are you certain you want to delete it?", () async { - int statusCode = await MIHMzansiWalletApis.deleteLoyaltyCardAPICall( - walletProvider, - mzansiProfileProvider.user!, - widget.cardList[index].idloyalty_cards, + walletProvider.deleteLocalLoyaltyCard( + mzansiProfileProvider, + widget.cardList[index], + ); + context.pop(); + context.pop(); + MihAlertServices().successBasicAlert( + "Success!", + "You have successfully deleted the loyalty card from your Mzansi Wallet.", context, ); - if (statusCode == 200) { - context.pop(); - context.pop(); - MihAlertServices().successBasicAlert( - "Success!", - "You have successfully deleted the loyalty card from your Mzansi Wallet.", - context, - ); - } else { - context.pop(); - MihAlertServices().internetConnectionAlert(context); - } }, context, ); @@ -231,34 +221,26 @@ class _BuildLoyaltyCardListState extends State { ), MihButton( onPressed: () async { - int statusCode = await MIHMzansiWalletApis.updateLoyaltyCardAPICall( - walletProvider, - mzansiProfileProvider.user!, - widget.cardList[index].idloyalty_cards, - widget.cardList[index].shop_name, - "Yes", - _noFavourites, - widget.cardList[index].nickname, - widget.cardList[index].card_number, - ctxt, + await walletProvider.updateLocalLoyaltyCard( + mzansiProfileProvider, + MIHLoyaltyCard( + idloyalty_cards: widget.cardList[index].idloyalty_cards, + app_id: widget.cardList[index].app_id, + shop_name: widget.cardList[index].shop_name, + card_number: widget.cardList[index].card_number, + favourite: "Yes", + priority_index: _noFavourites, + nickname: widget.cardList[index].nickname, + ), + ); + context.pop(); + context.pop(); + context.read().setToolIndex(1); + MihAlertServices().successBasicAlert( + "Success!", + "You have successfully added the loyalty card to your favourites.", + context, ); - if (statusCode == 200) { - context.pop(); - context.pop(); - await MIHMzansiWalletApis.getFavouriteLoyaltyCards( - walletProvider, - mzansiProfileProvider.user!.app_id, - context, - ); - context.read().setToolIndex(1); - MihAlertServices().successBasicAlert( - "Success!", - "You have successfully added the loyalty card to your favourites.", - context, - ); - } else { - MihAlertServices().internetConnectionAlert(context); - } }, buttonColor: MihColors.green(), width: 300, @@ -284,34 +266,26 @@ class _BuildLoyaltyCardListState extends State { [ MihButton( onPressed: () async { - int statusCode = await MIHMzansiWalletApis.updateLoyaltyCardAPICall( - walletProvider, - mzansiProfileProvider.user!, - widget.cardList[index].idloyalty_cards, - widget.cardList[index].shop_name, - "", - 0, - widget.cardList[index].nickname, - widget.cardList[index].card_number, - ctxt, + await walletProvider.updateLocalLoyaltyCard( + mzansiProfileProvider, + MIHLoyaltyCard( + idloyalty_cards: widget.cardList[index].idloyalty_cards, + app_id: widget.cardList[index].app_id, + shop_name: widget.cardList[index].shop_name, + card_number: widget.cardList[index].card_number, + favourite: "", + priority_index: 0, + nickname: widget.cardList[index].nickname, + ), + ); + context.pop(); + context.pop(); + context.read().setToolIndex(0); + MihAlertServices().successBasicAlert( + "Success!", + "You have successfully removed the loyalty card to your favourites.", + context, ); - if (statusCode == 200) { - context.pop(); - context.pop(); - await MIHMzansiWalletApis.getFavouriteLoyaltyCards( - walletProvider, - mzansiProfileProvider.user!.app_id, - context, - ); - context.read().setToolIndex(0); - MihAlertServices().successBasicAlert( - "Success!", - "You have successfully removed the loyalty card to your favourites.", - context, - ); - } else { - MihAlertServices().internetConnectionAlert(context); - } }, buttonColor: MihColors.red(), width: 300, diff --git a/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_add_card_window.dart b/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_add_card_window.dart index 2c0512d4..379eeefe 100644 --- a/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_add_card_window.dart +++ b/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_add_card_window.dart @@ -3,13 +3,14 @@ import 'package:go_router/go_router.dart'; import 'package:ken_logger/ken_logger.dart'; import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mzansi_innovation_hub/mih_objects/loyalty_card.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_wallet_provider.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_wallet/components/mih_card_display.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; -import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_wallet_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; import 'package:provider/provider.dart'; +import 'package:uuid/uuid.dart'; class MihAddCardWindow extends StatefulWidget { const MihAddCardWindow({ @@ -58,6 +59,38 @@ class _MihAddCardWindowState extends State { } } + void addLoyaltyCard(MzansiProfileProvider profileProvider, + MzansiWalletProvider walletProvider) async { + if (_formKey.currentState!.validate()) { + if (_shopController.text == "") { + MihAlertServices().inputErrorAlert(context); + } else { + final String uniqueKey = const Uuid().v4(); + + MIHLoyaltyCard newCard = MIHLoyaltyCard( + idloyalty_cards: 0, + app_id: profileProvider.user!.app_id, + shop_name: _shopController.text, + card_number: _cardNumberController.text, + favourite: "No", + priority_index: 0, + nickname: _nicknameController.text, + offline_id: uniqueKey, + ); + await walletProvider.addLocalLoyaltyCard(profileProvider, newCard); + context.pop(); + KenLogger.success("Card Added Successfully"); + successPopUp( + "Successfully Added Card", + "The loyalty card has been added to your favourites.", + 0, + ); + } + } else { + MihAlertServices().inputErrorAlert(context); + } + } + @override Widget build(BuildContext context) { final double width = MediaQuery.sizeOf(context).width; @@ -224,38 +257,7 @@ class _MihAddCardWindowState extends State { Center( child: MihButton( onPressed: () async { - if (_formKey.currentState!.validate()) { - if (_shopController.text == "") { - MihAlertServices().inputErrorAlert(context); - } else { - int statusCode = await MIHMzansiWalletApis - .addLoyaltyCardAPICall( - walletProvider, - mzansiProfileProvider.user!, - mzansiProfileProvider.user!.app_id, - _shopController.text, - _cardNumberController.text, - "", - 0, - _nicknameController.text, - context, - ); - if (statusCode == 201) { - context.pop(); - KenLogger.success("Card Added Successfully"); - successPopUp( - "Successfully Added Card", - "The loyalty card has been added to your favourites.", - 0, - ); - } else { - MihAlertServices() - .internetConnectionAlert(context); - } - } - } else { - MihAlertServices().inputErrorAlert(context); - } + addLoyaltyCard(mzansiProfileProvider, walletProvider); }, buttonColor: MihColors.green(), width: 300, diff --git a/mih_ui/lib/mih_packages/mzansi_wallet/mih_wallet.dart b/mih_ui/lib/mih_packages/mzansi_wallet/mih_wallet.dart index 5ddd4f32..45dbb849 100644 --- a/mih_ui/lib/mih_packages/mzansi_wallet/mih_wallet.dart +++ b/mih_ui/lib/mih_packages/mzansi_wallet/mih_wallet.dart @@ -28,7 +28,8 @@ class _MihWalletState extends State { if (mzansiProfileProvider.user == null) { mzansiProfileProvider.syncWithMihServerData(); } - if (walletProvider.loyaltyCards.isEmpty) { + if (walletProvider.loyaltyCards.isEmpty || + walletProvider.isLocalModificationsPending()) { walletProvider.syncWithMihServerData(mzansiProfileProvider); } setState(() { diff --git a/mih_ui/lib/mih_providers/mzansi_wallet_provider.dart b/mih_ui/lib/mih_providers/mzansi_wallet_provider.dart index 2517561d..c00f46d9 100644 --- a/mih_ui/lib/mih_providers/mzansi_wallet_provider.dart +++ b/mih_ui/lib/mih_providers/mzansi_wallet_provider.dart @@ -28,11 +28,42 @@ class MzansiWalletProvider extends ChangeNotifier { Future syncWithMihServerData( MzansiProfileProvider profileProvider) async { + await _hiveData.processModificationsQueue(profileProvider); bool success = await _hiveData.syncWalletWithServer(profileProvider); loadCachedWallet(); return success; } + Future addLocalLoyaltyCard( + MzansiProfileProvider profileProvider, MIHLoyaltyCard newCard) async { + await _hiveData.addLoyaltyCardLocally(newCard); + await _hiveData.queueAddModification(newCard); + await _hiveData.processModificationsQueue(profileProvider); + await _hiveData.syncWalletWithServer(profileProvider); + loadCachedWallet(); + } + + Future deleteLocalLoyaltyCard( + MzansiProfileProvider profileProvider, MIHLoyaltyCard deleteCard) async { + await _hiveData.deleteLoyaltyCardLocally(deleteCard); + await _hiveData.queueDeleteModification(deleteCard); + loadCachedWallet(); + _hiveData.processModificationsQueue(profileProvider); + } + + bool isLocalModificationsPending() { + return _hiveData.isModificationNotEmpty(); + } + + Future updateLocalLoyaltyCard( + MzansiProfileProvider profileProvider, MIHLoyaltyCard updatedCard) async { + await _hiveData.updateLoyaltyCardLocally(updatedCard); + await _hiveData.queueUpdateModification(updatedCard); + await _hiveData.processModificationsQueue(profileProvider); + await _hiveData.syncWalletWithServer(profileProvider); + loadCachedWallet(); + } + void reset() { toolIndex = 0; loyaltyCards = []; diff --git a/mih_ui/lib/mih_services/mih_mzansi_calendar_services.dart b/mih_ui/lib/mih_services/mih_mzansi_calendar_services.dart index d1ad09c1..4121fc3b 100644 --- a/mih_ui/lib/mih_services/mih_mzansi_calendar_services.dart +++ b/mih_ui/lib/mih_services/mih_mzansi_calendar_services.dart @@ -40,6 +40,25 @@ class MihMzansiCalendarApis { } } + static Future getPersonalAppointmentsV2( + String app_id, + String date, + MihCalendarProvider mihCalendarProvider, + ) async { + final response = await http.get(Uri.parse( + "${AppEnviroment.baseApiUrl}/appointments/personal/$app_id?date=$date")); + if (response.statusCode == 200) { + Iterable l = jsonDecode(response.body); + List personalAppointments = + List.from(l.map((model) => Appointment.fromJson(model))); + mihCalendarProvider.setPersonalAppointments( + appointments: personalAppointments); + return response.statusCode; + } else { + throw Exception('failed to fatch personal appointments'); + } + } + /// This function is used to fetch a list of appointment for a personal user. /// /// Patameters: diff --git a/mih_ui/lib/mih_services/mih_mzansi_wallet_services.dart b/mih_ui/lib/mih_services/mih_mzansi_wallet_services.dart index 7290ab5d..f71255d6 100644 --- a/mih_ui/lib/mih_services/mih_mzansi_wallet_services.dart +++ b/mih_ui/lib/mih_services/mih_mzansi_wallet_services.dart @@ -127,6 +127,32 @@ class MIHMzansiWalletApis { // } } + /// This function is used to Delete loyalty card from users mzansi wallet. + /// + /// Patameters:- + /// AppUser signedInUser, + /// int idloyalty_cards, + /// BuildContext context, + /// + /// Returns VOID (TRIGGERS NOTIGICATIOPN ON SUCCESS) + static Future deleteLoyaltyCardAPICallV2( + int idloyalty_cards, + ) async { + try { + var response = await http.delete( + Uri.parse( + "${AppEnviroment.baseApiUrl}/mzasni-wallet/loyalty-cards/delete/"), + headers: { + "Content-Type": "application/json; charset=UTF-8" + }, + body: jsonEncode({"idloyalty_cards": idloyalty_cards}), + ); + return response.statusCode; + } catch (error) { + return null; + } + } + /// This function is used to add a lopyalty card to users mzansi wallet. /// /// Patameters:- @@ -187,6 +213,48 @@ class MIHMzansiWalletApis { // } } + /// This function is used to add a lopyalty card to users mzansi wallet. + /// + /// Patameters:- + /// AppUser signedInUser, + /// String app_id, + /// String shop_name, + /// String card_number, + /// BuildContext context, + /// + /// Returns VOID (TRIGGERS SUCCESS pop up) + static Future addLoyaltyCardAPICallV2( + String app_id, + String shop_name, + String card_number, + String favourite, + int priority_index, + String nickname, + ) async { + try { + var response = await http + .post( + Uri.parse( + "${AppEnviroment.baseApiUrl}/mzasni-wallet/loyalty-cards/insert/"), + headers: { + "Content-Type": "application/json; charset=UTF-8" + }, + body: jsonEncode({ + "app_id": app_id, + "shop_name": shop_name, + "card_number": card_number, + "favourite": favourite, + "priority_index": priority_index, + "nickname": nickname, + }), + ) + .timeout(const Duration(seconds: 5)); + return response.statusCode; + } catch (error) { + return null; + } + } + /// This function is used to Update loyalty card from users mzansi wallet. /// /// Patameters:- @@ -238,6 +306,42 @@ class MIHMzansiWalletApis { return response.statusCode; } + /// This function is used to Update loyalty card from users mzansi wallet. + /// + /// Patameters:- + /// AppUser signedInUser, + /// int idloyalty_cards, + /// BuildContext context, + /// + /// Returns VOID (TRIGGERS NOTIGICATIOPN ON SUCCESS) + static Future updateLoyaltyCardAPICallV2( + int idloyalty_cards, + String favourite, + int priority_index, + String nickname, + String card_number, + ) async { + try { + var response = await http.put( + Uri.parse( + "${AppEnviroment.baseApiUrl}/mzasni-wallet/loyalty-cards/update/"), + headers: { + "Content-Type": "application/json; charset=UTF-8" + }, + body: jsonEncode({ + "idloyalty_cards": idloyalty_cards, + "favourite": favourite, + "priority_index": priority_index, + "nickname": nickname, + "card_number": card_number, + }), + ); + return response.statusCode; + } catch (error) { + return null; + } + } + //================== POP UPS ========================================================================== static void loadingPopUp(BuildContext context) { diff --git a/mih_ui/linux/flutter/generated_plugins.cmake b/mih_ui/linux/flutter/generated_plugins.cmake index 8ee15a6f..1061886b 100644 --- a/mih_ui/linux/flutter/generated_plugins.cmake +++ b/mih_ui/linux/flutter/generated_plugins.cmake @@ -11,6 +11,7 @@ list(APPEND FLUTTER_PLUGIN_LIST ) list(APPEND FLUTTER_FFI_PLUGIN_LIST + jni ) set(PLUGIN_BUNDLED_LIBRARIES) diff --git a/mih_ui/macos/Flutter/GeneratedPluginRegistrant.swift b/mih_ui/macos/Flutter/GeneratedPluginRegistrant.swift index 3cef27da..9c913249 100644 --- a/mih_ui/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/mih_ui/macos/Flutter/GeneratedPluginRegistrant.swift @@ -10,6 +10,7 @@ import device_info_plus import file_picker import file_saver import file_selector_macos +import firebase_ai import firebase_app_check import firebase_auth import firebase_core @@ -18,7 +19,6 @@ import geolocator_apple import local_auth_darwin import mobile_scanner import package_info_plus -import path_provider_foundation import printing import record_macos import screen_brightness_macos @@ -35,15 +35,15 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin")) FileSaverPlugin.register(with: registry.registrar(forPlugin: "FileSaverPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) - FLTFirebaseAppCheckPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAppCheckPlugin")) + FirebaseAIPlugin.register(with: registry.registrar(forPlugin: "FirebaseAIPlugin")) + FirebaseAppCheckPlugin.register(with: registry.registrar(forPlugin: "FirebaseAppCheckPlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) FlutterTtsPlugin.register(with: registry.registrar(forPlugin: "FlutterTtsPlugin")) GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin")) - FLALocalAuthPlugin.register(with: registry.registrar(forPlugin: "FLALocalAuthPlugin")) + LocalAuthPlugin.register(with: registry.registrar(forPlugin: "LocalAuthPlugin")) MobileScannerPlugin.register(with: registry.registrar(forPlugin: "MobileScannerPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) - PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) PrintingPlugin.register(with: registry.registrar(forPlugin: "PrintingPlugin")) RecordMacOsPlugin.register(with: registry.registrar(forPlugin: "RecordMacOsPlugin")) ScreenBrightnessMacosPlugin.register(with: registry.registrar(forPlugin: "ScreenBrightnessMacosPlugin")) diff --git a/mih_ui/pubspec.lock b/mih_ui/pubspec.lock index 1eff8ae4..a180a0cf 100644 --- a/mih_ui/pubspec.lock +++ b/mih_ui/pubspec.lock @@ -5,26 +5,26 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: e55636ed79578b9abca5fecf9437947798f5ef7456308b5cb85720b793eac92f + sha256: a49d6cf99e8d8e7a8e93668d09ced0bbdb954d0b4fccc2f5f9241c6b87fad95c url: "https://pub.dev" source: hosted - version: "82.0.0" + version: "99.0.0" _flutterfire_internals: dependency: transitive description: name: _flutterfire_internals - sha256: "8a1f5f3020ef2a74fb93f7ab3ef127a8feea33a7a2276279113660784ee7516a" + sha256: "78f98c1f9c4dbbd22c2bb7b7f17c4a5c06150e8b2cb791a0947979ad0d3dabd5" url: "https://pub.dev" source: hosted - version: "1.3.64" + version: "1.3.73" analyzer: dependency: transitive description: name: analyzer - sha256: "904ae5bb474d32c38fb9482e2d925d5454cda04ddd0e55d2e6826bc72f6ba8c0" + sha256: "663efa951fb8a45e06f491223a604c93820598f20e6a99c25617a1576065e8b7" url: "https://pub.dev" source: hosted - version: "7.4.5" + version: "12.1.0" ansicolor: dependency: transitive description: @@ -45,10 +45,10 @@ packages: dependency: transitive description: name: archive - sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd" + sha256: a96e8b390886ee8abb49b7bd3ac8df6f451c621619f52a26e815fdcf568959ff url: "https://pub.dev" source: hosted - version: "4.0.7" + version: "4.0.9" args: dependency: transitive description: @@ -61,10 +61,10 @@ packages: dependency: transitive description: name: async - sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" + sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37 url: "https://pub.dev" source: hosted - version: "2.13.0" + version: "2.13.1" barcode: dependency: transitive description: @@ -85,10 +85,10 @@ packages: dependency: transitive description: name: bazel_worker - sha256: "373a6ef07caa6c674c1cf144a5fe1e0f712c040552031ce669f298e35f7e110a" + sha256: "87cae9150fcf9942b8057e5f51c4848a3efde1289e97411e1c8f01e350120999" url: "https://pub.dev" source: hosted - version: "1.1.3" + version: "1.1.5" bidi: dependency: transitive description: @@ -109,66 +109,42 @@ packages: dependency: transitive description: name: build - sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0 + sha256: a156715e7cd728130c592f30552575908aae5b100005fbc1f0fb16b3c03a3d10 url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "4.0.6" build_config: dependency: transitive description: name: build_config - sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" + sha256: "4070d2a59f8eec34c97c86ceb44403834899075f66e8a9d59706f8e7834f6f71" url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.3.0" build_daemon: dependency: transitive description: name: build_daemon - sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" + sha256: bf05f6e12cfea92d3c09308d7bcdab1906cd8a179b023269eed00c071004b957 url: "https://pub.dev" source: hosted - version: "4.0.4" - build_modules: - dependency: transitive - description: - name: build_modules - sha256: "51422a5753a74fda433d4345b11ce6ad40c2033880a26b2c6b7a8fa7e10e8f2f" - url: "https://pub.dev" - source: hosted - version: "5.1.11" - build_resolvers: - dependency: transitive - description: - name: build_resolvers - sha256: b9e4fda21d846e192628e7a4f6deda6888c36b5b69ba02ff291a01fd529140f0 - url: "https://pub.dev" - source: hosted - version: "2.4.4" + version: "4.1.1" build_runner: dependency: "direct dev" description: name: build_runner - sha256: "058fe9dce1de7d69c4b84fada934df3e0153dd000758c4d65964d0166779aa99" + sha256: "1523ce62448ebac2c15a8ba5fbad8acac169788658a7dd2a1c2d9c2a9318b9a6" url: "https://pub.dev" source: hosted - version: "2.4.15" - build_runner_core: - dependency: transitive - description: - name: build_runner_core - sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021" - url: "https://pub.dev" - source: hosted - version: "8.0.0" + version: "2.15.0" build_web_compilers: dependency: "direct dev" description: name: build_web_compilers - sha256: "311e0b9c797f40eecc8450f0836200b0ad9ea5227f86428a7ed5691f35e347c0" + sha256: c8be4b48f09289d145c7eaa3240f1e7776c529ea1cecddf483218edd3129de3f url: "https://pub.dev" source: hosted - version: "4.4.18" + version: "4.8.0" built_collection: dependency: transitive description: @@ -181,10 +157,10 @@ packages: dependency: transitive description: name: built_value - sha256: "082001b5c3dc495d4a42f1d5789990505df20d8547d42507c29050af6933ee27" + sha256: "34e4067d30ce212937df995f03b69992eea683539ceeac7f679a1f1eba055b56" url: "https://pub.dev" source: hosted - version: "8.10.1" + version: "8.12.6" cached_network_image: dependency: "direct main" description: @@ -213,42 +189,42 @@ packages: dependency: transitive description: name: camera - sha256: "87a27e0553e3432119c1c2f6e4b9a1bbf7d2c660552b910bfa59185a9facd632" + sha256: "4142a19a38e388d3bab444227636610ba88982e36dff4552d5191a86f65dc437" url: "https://pub.dev" source: hosted - version: "0.11.2+1" + version: "0.11.4" camera_android_camerax: dependency: transitive description: name: camera_android_camerax - sha256: "58b8fe843a3c83fd1273c00cb35f5a8ae507f6cc9b2029bcf7e2abba499e28d8" + sha256: "8516fe308bc341a5067fb1a48edff0ddfa57c0d3cdcc9dbe7ceca3ba119e2577" url: "https://pub.dev" source: hosted - version: "0.6.19+1" + version: "0.6.30" camera_avfoundation: dependency: transitive description: name: camera_avfoundation - sha256: "951ef122d01ebba68b7a54bfe294e8b25585635a90465c311b2f875ae72c412f" + sha256: "11b4aee2f5e5e038982e152b4a342c749b414aa27857899d20f4323e94cb5f0b" url: "https://pub.dev" source: hosted - version: "0.9.21+2" + version: "0.9.23+2" camera_platform_interface: dependency: transitive description: name: camera_platform_interface - sha256: "98cfc9357e04bad617671b4c1f78a597f25f08003089dd94050709ae54effc63" + sha256: "7ac852d77699acee79f0d438b793feee26721841e50973576419ff5c6d95e9b7" url: "https://pub.dev" source: hosted - version: "2.12.0" + version: "2.13.0" camera_web: dependency: transitive description: name: camera_web - sha256: "595f28c89d1fb62d77c73c633193755b781c6d2e0ebcd8dc25b763b514e6ba8f" + sha256: "1245a480a113437f8d46d19c0fb90cea9db921436d9cf2ba5fb11854a1312693" url: "https://pub.dev" source: hosted - version: "0.3.5" + version: "0.3.5+4" characters: dependency: transitive description: @@ -289,14 +265,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.2" - code_builder: + code_assets: dependency: transitive description: - name: code_builder - sha256: "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e" + name: code_assets + sha256: bf394f466ba9205f1812a0433b392d6af280f155f56651eda7c18cc32ed493b8 url: "https://pub.dev" source: hosted - version: "4.10.1" + version: "1.2.1" collection: dependency: transitive description: @@ -317,26 +293,26 @@ packages: dependency: "direct main" description: name: country_code_picker - sha256: ee216486da1db8e3c5688f9650c99472ab6a4025ed1ea0c5a54ae6063143d90d + sha256: f0411f4833b6f98e8b7215f4fa3813bcc88e50f13925f70a170dbd36e3e447f5 url: "https://pub.dev" source: hosted - version: "3.3.0" + version: "3.4.1" cross_file: dependency: "direct main" description: name: cross_file - sha256: "701dcfc06da0882883a2657c445103380e53e647060ad8d9dfb710c100996608" + sha256: "28bb3ae56f117b5aec029d702a90f57d285cd975c3c5c281eaca38dbc47c5937" url: "https://pub.dev" source: hosted - version: "0.3.5+1" + version: "0.3.5+2" crypto: dependency: transitive description: name: crypto - sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.0.7" csslib: dependency: transitive description: @@ -349,10 +325,10 @@ packages: dependency: "direct main" description: name: cupertino_icons - sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + sha256: "41e005c33bd814be4d3096aff55b1908d419fde52ca656c8c47719ec745873cd" url: "https://pub.dev" source: hosted - version: "1.0.8" + version: "1.0.9" custom_rating_bar: dependency: "direct main" description: @@ -365,34 +341,34 @@ packages: dependency: transitive description: name: dart_style - sha256: "5b236382b47ee411741447c1f1e111459c941ea1b3f2b540dde54c210a3662af" + sha256: a4c1ccfee44c7e75ed80484071a5c142a385345e658fd8bd7c4b5c97e7198f98 url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.8" dbus: dependency: transitive description: name: dbus - sha256: d0c98dcd4f5169878b6cf8f6e0a52403a9dff371a3e2f019697accbf6f44a270 + sha256: "0ce9b0a839e6dee59a37a623d2fc26a35bbbe6404213e419b0d6411023d62645" url: "https://pub.dev" source: hosted - version: "0.7.12" + version: "0.7.14" device_info_plus: dependency: transitive description: name: device_info_plus - sha256: "0c6396126421b590089447154c5f98a5de423b70cfb15b1578fd018843ee6f53" + sha256: "98f28b42168cc509abc92f88518882fd58061ea372d7999aecc424345c7bff6a" url: "https://pub.dev" source: hosted - version: "11.4.0" + version: "11.5.0" device_info_plus_platform_interface: dependency: transitive description: name: device_info_plus_platform_interface - sha256: "0b04e02b30791224b31969eb1b50d723498f402971bff3630bca2ba839bd1ed2" + sha256: e1ea89119e34903dca74b883d0dd78eb762814f97fb6c76f35e9ff74d261a18f url: "https://pub.dev" source: hosted - version: "7.0.2" + version: "7.0.3" diacritic: dependency: transitive description: @@ -413,26 +389,26 @@ packages: dependency: transitive description: name: dio - sha256: "253a18bbd4851fecba42f7343a1df3a9a4c1d31a2c1b37e221086b4fa8c8dbc9" + sha256: aff32c08f92787a557dd5c0145ac91536481831a01b4648136373cddb0e64f8c url: "https://pub.dev" source: hosted - version: "5.8.0+1" + version: "5.9.2" dio_web_adapter: dependency: transitive description: name: dio_web_adapter - sha256: "7586e476d70caecaf1686d21eee7247ea43ef5c345eab9e0cc3583ff13378d78" + sha256: "2f9e64323a7c3c7ef69567d5c800424a11f8337b8b228bad02524c9fb3c1f340" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" equatable: dependency: transitive description: name: equatable - sha256: "567c64b3cb4cf82397aac55f4f0cbd3ca20d77c6c03bedbc4ceaddc08904aef7" + sha256: "3e0141505477fd8ad55d6eb4e7776d3fe8430be8e497ccb1521370c3f21a3e2b" url: "https://pub.dev" source: hosted - version: "2.0.7" + version: "2.0.8" fake_async: dependency: transitive description: @@ -445,10 +421,10 @@ packages: dependency: transitive description: name: ffi - sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" + sha256: "6d7fd89431262d8f3125e81b50d3847a091d846eafcd4fdb88dd06f36d705a45" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" file: dependency: transitive description: @@ -461,10 +437,10 @@ packages: dependency: "direct main" description: name: file_picker - sha256: "77f8e81d22d2a07d0dee2c62e1dda71dc1da73bf43bb2d45af09727406167964" + sha256: "57d9a1dd5063f85fa3107fb42d1faffda52fdc948cefd5fe5ea85267a5fc7343" url: "https://pub.dev" source: hosted - version: "10.1.9" + version: "10.3.10" file_saver: dependency: "direct main" description: @@ -477,146 +453,146 @@ packages: dependency: transitive description: name: file_selector - sha256: "5f1d15a7f17115038f433d1b0ea57513cc9e29a9d5338d166cb0bef3fa90a7a0" + sha256: bd15e43e9268db636b53eeaca9f56324d1622af30e5c34d6e267649758c84d9a url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.1.0" file_selector_android: dependency: transitive description: name: file_selector_android - sha256: "1ce58b609289551f8ec07265476720e77d19764339cc1d8e4df3c4d34dac6499" + sha256: "6a26687fa65cbc28a5345c7ae6f227e89f0b47740978a4c475b1a625da7a331b" url: "https://pub.dev" source: hosted - version: "0.5.1+17" + version: "0.5.2+8" file_selector_ios: dependency: transitive description: name: file_selector_ios - sha256: fe9f52123af16bba4ad65bd7e03defbbb4b172a38a8e6aaa2a869a0c56a5f5fb + sha256: e2ecf2885c121691ce13b60db3508f53c01f869fb6e8dc5c1cfa771e4c46aeca url: "https://pub.dev" source: hosted - version: "0.5.3+2" + version: "0.5.3+5" file_selector_linux: dependency: transitive description: name: file_selector_linux - sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" + sha256: "2567f398e06ac72dcf2e98a0c95df2a9edd03c2c2e0cacd4780f20cdf56263a0" url: "https://pub.dev" source: hosted - version: "0.9.3+2" + version: "0.9.4" file_selector_macos: dependency: transitive description: name: file_selector_macos - sha256: "19124ff4a3d8864fdc62072b6a2ef6c222d55a3404fe14893a3c02744907b60c" + sha256: "5e0bbe9c312416f1787a68259ea1505b52f258c587f12920422671807c4d618a" url: "https://pub.dev" source: hosted - version: "0.9.4+4" + version: "0.9.5" file_selector_platform_interface: dependency: transitive description: name: file_selector_platform_interface - sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b + sha256: "35e0bd61ebcdb91a3505813b055b09b79dfdc7d0aee9c09a7ba59ae4bb13dc85" url: "https://pub.dev" source: hosted - version: "2.6.2" + version: "2.7.0" file_selector_web: dependency: transitive description: name: file_selector_web - sha256: c4c0ea4224d97a60a7067eca0c8fd419e708ff830e0c83b11a48faf566cec3e7 + sha256: "73181fbc5257776d8ecaa6a94ab3c8e920ad143b9132a6d984a9271dfc6928d3" url: "https://pub.dev" source: hosted - version: "0.9.4+2" + version: "0.9.5" file_selector_windows: dependency: transitive description: name: file_selector_windows - sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" + sha256: "62197474ae75893a62df75939c777763d39c2bc5f73ce5b88497208bc269abfd" url: "https://pub.dev" source: hosted - version: "0.9.3+4" + version: "0.9.3+5" firebase_ai: dependency: transitive description: name: firebase_ai - sha256: "6bffa52bc4b9557b73f59de12ec36349bde76f772431d0702c7ecb4bfeeeb21b" + sha256: "8eea58a5430d3870af62428631c8f4ecfcee813c385a5b2bae048bcba4f3f937" url: "https://pub.dev" source: hosted - version: "3.5.0" + version: "3.13.1" firebase_app_check: dependency: transitive description: name: firebase_app_check - sha256: "4d00b502f510ee97cdb395e95a31a8b871fc96cb917ffc60591528d3c9735986" + sha256: "9d5c79d382a8b87cc0d899294a5234a9f0d15125cd1c97c45ca2faeca6c62918" url: "https://pub.dev" source: hosted - version: "0.4.1+2" + version: "0.4.5" firebase_app_check_platform_interface: dependency: transitive description: name: firebase_app_check_platform_interface - sha256: "7d104d01b00e5dec367dc79184ad99bd1941f2d839b5ef41156b2330c18af13f" + sha256: "58248ca4a6be624f17e47d1f18b3846e477cce3dc7f1c08917e3845aa973beb3" url: "https://pub.dev" source: hosted - version: "0.2.1+2" + version: "0.4.1" firebase_app_check_web: dependency: transitive description: name: firebase_app_check_web - sha256: "885a1a7b8e33c52afaf9c5d75eca616ae310d6ea90322e9a462f8c154ad16b64" + sha256: "6b34be4bb8aa0bc5c2bbe930dd57035e971144521ee7d52d8e293c6cb1216a66" url: "https://pub.dev" source: hosted - version: "0.2.2" + version: "0.2.5" firebase_auth: dependency: transitive description: name: firebase_auth - sha256: e54fb3ba57de041d832574126a37726eedf0f57400869f1942b0ca8ce4a6e209 + sha256: "7996a49c4b4054573eac9124c1c412095ae1406ca367bd2373de1ad2eaba04b8" url: "https://pub.dev" source: hosted - version: "6.1.2" + version: "6.5.4" firebase_auth_platform_interface: dependency: transitive description: name: firebase_auth_platform_interface - sha256: "421f95dc553cb283ed9d4d140e719800c0331d49ed37b962e513c9d1d61b090b" + sha256: "2975965782c8cc46fe5bafc653882617e6fbdceed4499c97345c980734c50d2e" url: "https://pub.dev" source: hosted - version: "8.1.4" + version: "9.0.3" firebase_auth_web: dependency: transitive description: name: firebase_auth_web - sha256: a064ffee202f7d42d62e2c01775899d4ffcb83c602af07632f206acd46a0964e + sha256: b35db5997b32889885dc9b1420b7c81b704f1ec153c3bb2efd228733e1878119 url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "6.2.3" firebase_core: dependency: transitive description: name: firebase_core - sha256: "923085c881663ef685269b013e241b428e1fb03cdd0ebde265d9b40ff18abf80" + sha256: d2625088d8f8836a7a74a7eb94a5372d70ad88382602ba2dcc02805c294d0d16 url: "https://pub.dev" source: hosted - version: "4.4.0" + version: "4.11.0" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface - sha256: cccb4f572325dc14904c02fcc7db6323ad62ba02536833dddb5c02cac7341c64 + sha256: "913e7c96ef83a80ad7e1c3f8a059167b3de23b5d5e07fa3ed8f11abe24de98b6" url: "https://pub.dev" source: hosted - version: "6.0.2" + version: "7.1.0" firebase_core_web: dependency: transitive description: name: firebase_core_web - sha256: "83e7356c704131ca4d8d8dd57e360d8acecbca38b1a3705c7ae46cc34c708084" + sha256: "30ba3ae56f5beb2cea836033201570612c911661889f815eca73b6056c7b55bf" url: "https://pub.dev" source: hosted - version: "3.4.0" + version: "3.9.0" fixnum: dependency: transitive description: @@ -629,10 +605,10 @@ packages: dependency: "direct main" description: name: fl_downloader - sha256: e3f0696f7b22933baeae3c99d806c3a6f11507ab6c2bf74b4c580abf8e036f80 + sha256: "7e28207e959c5d327b3776b7320f88cb475224946e40bcc335a0f7414f7cc563" url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.1.0" flutter: dependency: "direct main" description: flutter @@ -714,18 +690,18 @@ packages: dependency: "direct main" description: name: flutter_markdown_plus - sha256: "7f349c075157816da399216a4127096108fd08e1ac931e34e72899281db4113c" + sha256: "039177906850278e8fb1cd364115ee0a46281135932fa8ecea8455522166d2de" url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.7" flutter_native_splash: dependency: "direct main" description: name: flutter_native_splash - sha256: "8321a6d11a8d13977fa780c89de8d257cce3d841eecfb7a4cadffcc4f12d82dc" + sha256: "9db4b80b044e9af17cc4b1272137fc7ace0054d879ef8210a76adc34aaf4cdff" url: "https://pub.dev" source: hosted - version: "2.4.6" + version: "2.4.8" flutter_parsed_text: dependency: transitive description: @@ -746,10 +722,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e + sha256: "3854fe5e3bff0b113c658f260b90c95dea17c92db0f2addeac2e343dd9969785" url: "https://pub.dev" source: hosted - version: "2.0.28" + version: "2.0.35" flutter_speed_dial: dependency: "direct main" description: @@ -762,10 +738,10 @@ packages: dependency: transitive description: name: flutter_svg - sha256: cd57f7969b4679317c17af6fd16ee233c1e60a82ed209d8a475c54fd6fd6f845 + sha256: "35882981abcbfb8c15b286f0cd690ff25bac12d95eff3e25ee207f37d4c42e7f" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.3.0" flutter_test: dependency: "direct dev" description: flutter @@ -775,10 +751,10 @@ packages: dependency: "direct main" description: name: flutter_tts - sha256: bdf2fc4483e74450dc9fc6fe6a9b6a5663e108d4d0dad3324a22c8e26bf48af4 + sha256: ce5eb209b40e95f2f4a1397116c87ab2fcdff32257d04ed7a764e75894c03775 url: "https://pub.dev" source: hosted - version: "4.2.3" + version: "4.2.5" flutter_web_plugins: dependency: "direct main" description: flutter @@ -800,14 +776,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.0" - frontend_server_client: - dependency: transitive - description: - name: frontend_server_client - sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 - url: "https://pub.dev" - source: hosted - version: "4.0.0" geoclue: dependency: transitive description: @@ -820,26 +788,26 @@ packages: dependency: "direct main" description: name: geolocator - sha256: ee2212a3df8292ec4c90b91183b8001d3f5a800823c974b570c5f9344ca320dc + sha256: "79939537046c9025be47ec645f35c8090ecadb6fe98eba146a0d25e8c1357516" url: "https://pub.dev" source: hosted - version: "14.0.1" + version: "14.0.2" geolocator_android: dependency: transitive description: name: geolocator_android - sha256: "114072db5d1dce0ec0b36af2697f55c133bc89a2c8dd513e137c0afe59696ed4" + sha256: "86ea1654e4f61ff51466848e91c116b422d6010ea269fda0fbe1af7e9e742ce1" url: "https://pub.dev" source: hosted - version: "5.0.1+1" + version: "5.0.3" geolocator_apple: dependency: transitive description: name: geolocator_apple - sha256: dbdd8789d5aaf14cf69f74d4925ad1336b4433a6efdf2fce91e8955dc921bf22 + sha256: "853803d6bb1713c094e935b4a5ae5f19c0308acf81da13fa9ff84fb4c70c0b73" url: "https://pub.dev" source: hosted - version: "2.3.13" + version: "2.3.14" geolocator_linux: dependency: "direct main" description: @@ -852,18 +820,18 @@ packages: dependency: transitive description: name: geolocator_platform_interface - sha256: "30cb64f0b9adcc0fb36f628b4ebf4f731a2961a0ebd849f4b56200205056fe67" + sha256: cdb082e4f048b69da244117b7914cc60d2a8897546ffaa4f2529c786ded7aee2 url: "https://pub.dev" source: hosted - version: "4.2.6" + version: "4.2.8" geolocator_web: dependency: transitive description: name: geolocator_web - sha256: b1ae9bdfd90f861fde8fd4f209c37b953d65e92823cb73c7dee1fa021b06f172 + sha256: "19e485a0f8d6a88abcf9c53cba3a4105e14b7435ed8ac1c108c067b938fe8429" url: "https://pub.dev" source: hosted - version: "4.1.3" + version: "4.1.4" geolocator_windows: dependency: transitive description: @@ -884,26 +852,26 @@ packages: dependency: "direct main" description: name: gma_mediation_meta - sha256: "8c9448d194faf85dbd7e09e4cd602192018915b2803b1605af01549fb72088b3" + sha256: "765367719c81043ee9cde12c854fae9c8de00c619bb0811fd8ce63541d962710" url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.5.0" go_router: dependency: "direct main" description: name: go_router - sha256: "8b1f37dfaf6e958c6b872322db06f946509433bec3de753c3491a42ae9ec2b48" + sha256: d8f590a69729f719177ea68eb1e598295e8dbc41bbc247fed78b2c8a25660d7c url: "https://pub.dev" source: hosted - version: "16.1.0" + version: "16.3.0" google_fonts: dependency: transitive description: name: google_fonts - sha256: "517b20870220c48752eafa0ba1a797a092fb22df0d89535fd9991e86ee2cdd9c" + sha256: ba03d03bcaa2f6cb7bd920e3b5027181db75ab524f8891c8bc3aa603885b8055 url: "https://pub.dev" source: hosted - version: "6.3.2" + version: "6.3.3" google_mobile_ads: dependency: "direct main" description: @@ -948,10 +916,18 @@ packages: dependency: "direct dev" description: name: hive_ce_generator - sha256: "609678c10ebee7503505a0007050af40a0a4f498b1fb7def3220df341e573a89" + sha256: "69800cb5e9bde43d457d24d38c20f458cf95b122c25ba04cfe9519578f31548d" url: "https://pub.dev" source: hosted - version: "1.9.2" + version: "1.11.2" + hooks: + dependency: transitive + description: + name: hooks + sha256: "9a62a50b50b769a737bc0a8ff381f333529df3ab746b2f6b02e83760231455ba" + url: "https://pub.dev" + source: hosted + version: "2.0.2" html: dependency: transitive description: @@ -964,10 +940,10 @@ packages: dependency: "direct main" description: name: http - sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b" + sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.6.0" http_multi_server: dependency: transitive description: @@ -988,42 +964,42 @@ packages: dependency: transitive description: name: image - sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928" + sha256: f9881ff4998044947ec38d098bc7c8316ae1186fa786eddffdb867b9bc94dfce url: "https://pub.dev" source: hosted - version: "4.5.4" + version: "4.8.0" image_picker: dependency: transitive description: name: image_picker - sha256: "736eb56a911cf24d1859315ad09ddec0b66104bc41a7f8c5b96b4e2620cf5041" + sha256: "91c025426c2881c551100bce834e201c835a170151545f58d17da5180ca7d9ac" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.2" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: "28f3987ca0ec702d346eae1d90eda59603a2101b52f1e234ded62cff1d5cfa6e" + sha256: "6f3a1995eafb000333174fae92202622033b0ee7fd917a6cd3730295264df84a" url: "https://pub.dev" source: hosted - version: "0.8.13+1" + version: "0.8.13+19" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "40c2a6a0da15556dc0f8e38a3246064a971a9f512386c3339b89f76db87269b6" + sha256: "66257a3191ab360d23a55c8241c91a6e329d31e94efa7be9cf7a212e65850214" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.1" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: eb06fe30bab4c4497bad449b66448f50edcc695f1c59408e78aa3a8059eb8f0e + sha256: b9c4a438a9ff4f60808c9cf0039b93a42bb6c2211ef6ebb647394b2b3fa84588 url: "https://pub.dev" source: hosted - version: "0.8.13" + version: "0.8.13+6" image_picker_linux: dependency: transitive description: @@ -1036,10 +1012,10 @@ packages: dependency: transitive description: name: image_picker_macos - sha256: d58cd9d67793d52beefd6585b12050af0a7663c0c2a6ece0fb110a35d6955e04 + sha256: "86f0f15a309de7e1a552c12df9ce5b59fe927e71385329355aec4776c6a8ec91" url: "https://pub.dev" source: hosted - version: "0.2.2" + version: "0.2.2+1" image_picker_platform_interface: dependency: transitive description: @@ -1060,10 +1036,10 @@ packages: dependency: "direct main" description: name: intl - sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" + sha256: "1ca20c894b1717686a2319b8548763d812bc0aabdac580420a44c5178c57a867" url: "https://pub.dev" source: hosted - version: "0.20.2" + version: "0.20.3" io: dependency: transitive description: @@ -1080,6 +1056,22 @@ packages: url: "https://pub.dev" source: hosted version: "0.6.1" + jni: + dependency: transitive + description: + name: jni + sha256: c2230682d5bc2362c1c9e8d3c7f406d9cbba23ab3f2e203a025dd47e0fb2e68f + url: "https://pub.dev" + source: hosted + version: "1.0.0" + jni_flutter: + dependency: transitive + description: + name: jni_flutter + sha256: "8b59e590786050b1cd866677dddaf76b1ade5e7bc751abe04b86e84d379d3ba6" + url: "https://pub.dev" + source: hosted + version: "1.0.1" js: dependency: transitive description: @@ -1092,18 +1084,18 @@ packages: dependency: transitive description: name: json_annotation - sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + sha256: "2a743920d81b7910627f68ee2c9ac1fc0bfee32b9fc3403587d7c6791ca12f80" url: "https://pub.dev" source: hosted - version: "4.9.0" + version: "4.12.0" ken_logger: dependency: "direct main" description: name: ken_logger - sha256: d48e3606688555a32a152a7d51c85a6f046b4157a6342812987c4722e90f998f + sha256: "04b9e9a1d964eb80545d7c75105d4e550f678a52ac6440ab1b155d68a4144ac0" url: "https://pub.dev" source: hosted - version: "0.0.3" + version: "0.0.4" leak_tracker: dependency: transitive description: @@ -1140,10 +1132,10 @@ packages: dependency: transitive description: name: lints - sha256: a5e2b223cb7c9c8efdc663ef484fdd95bb243bff242ef5b13e26883547fce9a0 + sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df" url: "https://pub.dev" source: hosted - version: "6.0.0" + version: "6.1.0" local_auth: dependency: "direct main" description: @@ -1156,26 +1148,26 @@ packages: dependency: transitive description: name: local_auth_android - sha256: "63ad7ca6396290626dc0cb34725a939e4cfe965d80d36112f08d49cf13a8136e" + sha256: a0bdfcc0607050a26ef5b31d6b4b254581c3d3ce3c1816ab4d4f4a9173e84467 url: "https://pub.dev" source: hosted - version: "1.0.49" + version: "1.0.56" local_auth_darwin: dependency: transitive description: name: local_auth_darwin - sha256: "630996cd7b7f28f5ab92432c4b35d055dd03a747bc319e5ffbb3c4806a3e50d2" + sha256: "699873970067a40ef2f2c09b4c72eb1cfef64224ef041b3df9fdc5c4c1f91f49" url: "https://pub.dev" source: hosted - version: "1.4.3" + version: "1.6.1" local_auth_platform_interface: dependency: transitive description: name: local_auth_platform_interface - sha256: "1b842ff177a7068442eae093b64abe3592f816afd2a533c0ebcdbe40f9d2075a" + sha256: f98b8e388588583d3f781f6806e4f4c9f9e189d898d27f0c249b93a1973dd122 url: "https://pub.dev" source: hosted - version: "1.0.10" + version: "1.1.0" local_auth_windows: dependency: transitive description: @@ -1196,10 +1188,10 @@ packages: dependency: transitive description: name: markdown - sha256: "935e23e1ff3bc02d390bad4d4be001208ee92cc217cb5b5a6c19bc14aaa318c1" + sha256: ee85086ad7698b42522c6ad42fe195f1b9898e4d974a1af4576c1a3a176cada9 url: "https://pub.dev" source: hosted - version: "7.3.0" + version: "7.3.1" matcher: dependency: transitive description: @@ -1220,10 +1212,10 @@ packages: dependency: "direct main" description: name: math_expressions - sha256: "218dc65bed4726562bb31c53d8daa3cc824664b26fb72d77bc592757edf74ba0" + sha256: e32d803d758ace61cc6c4bdfed1226ff60a6a23646b35685670d28b5616139f8 url: "https://pub.dev" source: hosted - version: "2.7.0" + version: "2.6.0" measure_size: dependency: transitive description: @@ -1260,10 +1252,10 @@ packages: dependency: "direct main" description: name: mobile_scanner - sha256: "54005bdea7052d792d35b4fef0f84ec5ddc3a844b250ecd48dc192fb9b4ebc95" + sha256: c92c26bf2231695b6d3477c8dcf435f51e28f87b1745966b1fe4c47a286171ce url: "https://pub.dev" source: hosted - version: "7.0.1" + version: "7.2.0" mutex: dependency: transitive description: @@ -1280,6 +1272,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.0" + objective_c: + dependency: transitive + description: + name: objective_c + sha256: "6cb691c686fa2838c6deb34980d426145c2a5d537491cb83d463c33cdbc726ed" + url: "https://pub.dev" + source: hosted + version: "9.4.1" octo_image: dependency: transitive description: @@ -1316,10 +1316,10 @@ packages: dependency: transitive description: name: package_info_plus - sha256: f69da0d3189a4b4ceaeb1a3defb0f329b3b352517f52bed4290f83d4f06bc08d + sha256: "468c26b4254ab01979fa5e4a98cb343ea3631b9acee6f21028997419a80e1a20" url: "https://pub.dev" source: hosted - version: "9.0.0" + version: "9.0.1" package_info_plus_platform_interface: dependency: transitive description: @@ -1348,42 +1348,42 @@ packages: dependency: transitive description: name: path_provider - sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" + sha256: a7f4874f987173da295a61c181b8ee71dab59b332a486b391babf26a1b884825 url: "https://pub.dev" source: hosted - version: "2.1.5" + version: "2.1.6" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9 + sha256: "69cbd515a62b94d32a7944f086b2f82b4ac40a1d45bebfc00813a430ab2dabcd" url: "https://pub.dev" source: hosted - version: "2.2.17" + version: "2.3.1" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942" + sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699" url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.6.0" path_provider_linux: dependency: transitive description: name: path_provider_linux - sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 + sha256: "58c2005f147315b11e9b4a7bc889cd5203e250cba8e3f012dae259b4972b5c16" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.2" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" + sha256: "484838772624c3a4b94f1e44a3e19897fee738f2d5c4ce448443b0417f7c9dda" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.3" path_provider_windows: dependency: transitive description: @@ -1396,10 +1396,10 @@ packages: dependency: transitive description: name: pdf - sha256: "28eacad99bffcce2e05bba24e50153890ad0255294f4dd78a17075a2ba5c8416" + sha256: e47a275b267873d5944ad5f5ff0dcc7ac2e36c02b3046a0ffac9b72fd362c44b url: "https://pub.dev" source: hosted - version: "3.11.3" + version: "3.12.0" pdf_widget_wrapper: dependency: transitive description: @@ -1412,10 +1412,10 @@ packages: dependency: transitive description: name: petitparser - sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646" + sha256: "91bd59303e9f769f108f8df05e371341b15d59e995e6806aefab827b58336675" url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "7.0.2" photo_view: dependency: transitive description: @@ -1444,34 +1444,34 @@ packages: dependency: transitive description: name: pool - sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + sha256: "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d" url: "https://pub.dev" source: hosted - version: "1.5.1" + version: "1.5.2" posix: dependency: transitive description: name: posix - sha256: f0d7856b6ca1887cfa6d1d394056a296ae33489db914e365e2044fdada449e62 + sha256: "185ef7606574f789b40f289c233efa52e96dead518aed988e040a10737febb07" url: "https://pub.dev" source: hosted - version: "6.0.2" + version: "6.5.0" printing: dependency: "direct main" description: name: printing - sha256: "482cd5a5196008f984bb43ed0e47cbfdca7373490b62f3b27b3299275bf22a93" + sha256: "689170c9ddb1bda85826466ba80378aa8993486d3c959a71cd7d2d80cb606692" url: "https://pub.dev" source: hosted - version: "5.14.2" + version: "5.14.3" protobuf: dependency: transitive description: name: protobuf - sha256: "579fe5557eae58e3adca2e999e38f02441d8aa908703854a9e0a0f47fa857731" + sha256: "75ec242d22e950bdcc79ee38dd520ce4ee0bc491d7fadc4ea47694604d22bf06" url: "https://pub.dev" source: hosted - version: "4.1.0" + version: "6.0.0" provider: dependency: "direct main" description: @@ -1524,18 +1524,18 @@ packages: dependency: transitive description: name: quick_actions_android - sha256: "612c9d53364c641ddcdeafed83c68fc14efb1bf4f686979d755024fc976fc888" + sha256: af50d52d882a0f520c4be082636b5177b3de239bd468857d5da0b5a6eec61e07 url: "https://pub.dev" source: hosted - version: "1.0.23" + version: "1.0.32" quick_actions_ios: dependency: transitive description: name: quick_actions_ios - sha256: ee2cd54e3bd674eb031ca195b3b9974583638d141493aec1066dee3b2599ed08 + sha256: be1496e7ca1debc86d9ea08e56325649fbc5abb2b6930690c97ba0dae59992b1 url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.4" quick_actions_platform_interface: dependency: transitive description: @@ -1548,58 +1548,66 @@ packages: dependency: transitive description: name: record - sha256: "6bad72fb3ea6708d724cf8b6c97c4e236cf9f43a52259b654efeb6fd9b737f1f" + sha256: "10911465138fafacef459a780564e883e01bd48eabf87ab20543684884492870" url: "https://pub.dev" source: hosted - version: "6.1.2" + version: "6.2.1" record_android: dependency: transitive description: name: record_android - sha256: fb54ee4e28f6829b8c580252a9ef49d9c549cfd263b0660ad7eeac0908658e9f + sha256: eb1732e42d0d2a1895b8db86e4fc917287e6d8491b6ed59918aea8bed6c69de4 url: "https://pub.dev" source: hosted - version: "1.4.4" + version: "1.5.2" record_ios: dependency: transitive description: name: record_ios - sha256: "765b42ac1be019b1674ddd809b811fc721fe5a93f7bb1da7803f0d16772fd6d7" + sha256: c051fb48edd7a0e265daafb9108730dc827c27b551728a3fdfb3ef69efd89c73 url: "https://pub.dev" source: hosted - version: "1.1.4" + version: "1.2.1" record_linux: dependency: transitive description: name: record_linux - sha256: "235b1f1fb84e810f8149cc0c2c731d7d697f8d1c333b32cb820c449bf7bb72d8" + sha256: "31181787bf7eccb0e298835836b69b3cd0a903863b75d70e937de3dec71cd8f3" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.1" record_macos: dependency: transitive description: name: record_macos - sha256: "842ea4b7e95f4dd237aacffc686d1b0ff4277e3e5357865f8d28cd28bc18ed95" + sha256: cfe1b61435e27db418bf513dc36820d10c9f7eb1843786c2c9a52e07e2f4f627 url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.2.2" record_platform_interface: dependency: transitive description: name: record_platform_interface - sha256: b0065fdf1ec28f5a634d676724d388a77e43ce7646fb049949f58c69f3fcb4ed + sha256: "8e56cbe06c6984137fb86132ff03459f29938d927496d9b2d0962e2d6345d488" url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.6.0" + record_use: + dependency: transitive + description: + name: record_use + sha256: "2551bd8eecfe95d14ae75f6021ad0248be5c27f138c2ec12fcb52b500b3ba1ed" + url: "https://pub.dev" + source: hosted + version: "0.6.0" record_web: dependency: transitive description: name: record_web - sha256: "20ac10d56514cb9f8cecc8f3579383084fdfb43b0d04e05a95244d0d76091d90" + sha256: "7e9846981c1f2d111d86f0ae3309071f5bba8b624d1c977316706f08fc31d16d" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" record_windows: dependency: transitive description: @@ -1628,66 +1636,66 @@ packages: dependency: transitive description: name: scratch_space - sha256: "3417e014d20b12cebc5bfb1c0b1f63806054177158596cc31cc4d9aaca767a60" + sha256: "55f141cf286eca871f739518b689af61cb994d671f3fd8efabd63aba7578c309" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.2" screen_brightness: dependency: "direct main" description: name: screen_brightness - sha256: b6cb9381b83fef7be74187ea043d54598b9a265b4ef6e40b69345ae28699b13e + sha256: e0edf92c08889e8f493cde291e7c687db2b4a1471f2371c074070b75d7c7d79b url: "https://pub.dev" source: hosted - version: "2.1.6" + version: "2.1.11" screen_brightness_android: dependency: transitive description: name: screen_brightness_android - sha256: fb5fa43cb89d0c9b8534556c427db1e97e46594ac5d66ebdcf16063b773d54ed + sha256: "2008ad8e9527cc968f7a4de1ec58b476d495b3c612a149dbd6550c4f046da147" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.6" screen_brightness_ios: dependency: transitive description: name: screen_brightness_ios - sha256: "2493953340ecfe8f4f13f61db50ce72533a55b0bbd58ba1402893feecf3727f5" + sha256: "352d355e8523a186ba1e494b74218e5ca96e51975a0630b8ed89fbb7ff609762" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" screen_brightness_macos: dependency: transitive description: name: screen_brightness_macos - sha256: "4edf330ad21078686d8bfaf89413325fbaf571dcebe1e89254d675a3f288b5b9" + sha256: b0957237b842d846a84363b69f229b339a8f91faced55041e245b2ebff7b0142 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.4" screen_brightness_ohos: dependency: transitive description: name: screen_brightness_ohos - sha256: af2680660f7df785bcd2b1bef9b9f3c172191166dd27098f2dfe020c50c3dea4 + sha256: "569a2c97909a50894b81487619eb7654f5358443a5af05f840c19261f49c0940" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.4" screen_brightness_platform_interface: dependency: transitive description: name: screen_brightness_platform_interface - sha256: "737bd47b57746bc4291cab1b8a5843ee881af499514881b0247ec77447ee769c" + sha256: "2de60c0ba569b898950029cc1f7e9dd72bda44a22beb5054aac331cb6fce2ff2" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" screen_brightness_windows: dependency: transitive description: name: screen_brightness_windows - sha256: d3518bf0f5d7a884cee2c14449ae0b36803802866de09f7ef74077874b6b2448 + sha256: "368b9c822e1671de81616e48150006e39eff2a434957e47ee638b09a32b2297c" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" screenshot: dependency: "direct main" description: @@ -1708,42 +1716,42 @@ packages: dependency: "direct main" description: name: share_plus - sha256: b2961506569e28948d75ec346c28775bb111986bb69dc6a20754a457e3d97fa0 + sha256: d7dc0630a923883c6328ca31b89aa682bacbf2f8304162d29f7c6aaff03a27a1 url: "https://pub.dev" source: hosted - version: "11.0.0" + version: "11.1.0" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface - sha256: "1032d392bc5d2095a77447a805aa3f804d2ae6a4d5eef5e6ebb3bd94c1bc19ef" + sha256: "88023e53a13429bd65d8e85e11a9b484f49d4c190abbd96c7932b74d6927cc9a" url: "https://pub.dev" source: hosted - version: "6.0.0" + version: "6.1.0" shared_preferences: dependency: transitive description: name: shared_preferences - sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5" + sha256: c3025c5534b01739267eb7d76959bbc25a6d10f6988e1c2a3036940133dd10bf url: "https://pub.dev" source: hosted - version: "2.5.3" + version: "2.5.5" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac" + sha256: "93ae5884a9df5d3bb696825bceb3a17590754548b5d740eba51500afc8d088f5" url: "https://pub.dev" source: hosted - version: "2.4.10" + version: "2.4.26" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" + sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f" url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "2.5.6" shared_preferences_linux: dependency: transitive description: @@ -1756,10 +1764,10 @@ packages: dependency: transitive description: name: shared_preferences_platform_interface - sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" + sha256: "649dc798a33931919ea356c4305c2d1f81619ea6e92244070b520187b5140ef9" url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" shared_preferences_web: dependency: transitive description: @@ -1809,18 +1817,18 @@ packages: dependency: transitive description: name: source_gen - sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b" + sha256: ec37cc0e6694374cbef59ed79685572c870a54ede6fa30a3e420feb3adffea02 url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "4.2.3" source_helper: dependency: transitive description: name: source_helper - sha256: a447acb083d3a5ef17f983dd36201aeea33fedadb3228fa831f2f0c92f0f3aca + sha256: "4227d54ceefd0bb8ca4c8fcb96e1719dc53f1ee1b6e2ca9d7a6069da160e4eae" url: "https://pub.dev" source: hosted - version: "1.3.7" + version: "1.3.12" source_maps: dependency: transitive description: @@ -1833,58 +1841,50 @@ packages: dependency: transitive description: name: source_span - sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab" url: "https://pub.dev" source: hosted - version: "1.10.1" - sprintf: - dependency: transitive - description: - name: sprintf - sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" - url: "https://pub.dev" - source: hosted - version: "7.0.0" + version: "1.10.2" sqflite: dependency: transitive description: name: sqflite - sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03 + sha256: "58a799e6ac17dd32fbab93813d39ed835a75ccc0f8f85b8955fe318c6712b082" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.3" sqflite_android: dependency: transitive description: name: sqflite_android - sha256: "2b3070c5fa881839f8b402ee4a39c1b4d561704d4ebbbcfb808a119bc2a1701b" + sha256: d0548f9d7422a2dae99ec6f8b0a3074463b132d216fa5ba0d230eeefc901983b url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.3" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: "6ef422a4525ecc601db6c0a2233ff448c731307906e92cabc9ba292afaae16a6" + sha256: "5bf6a55c166e73bf651ba7ec3ed486e577620e3dc8f3a9c6a258a8031b624590" url: "https://pub.dev" source: hosted - version: "2.5.6" + version: "2.5.11" sqflite_darwin: dependency: transitive description: name: sqflite_darwin - sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3" + sha256: c86ca18b8f666bbf903924687fe21cc16fc385d086005067e26619ca530bef9f url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.3+1" sqflite_platform_interface: dependency: transitive description: name: sqflite_platform_interface - sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920" + sha256: f84939f84350d92d04416f8bc4dc52d3896aec7716cc9e80cf0146342139dc50 url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" stack_trace: dependency: transitive description: @@ -1921,82 +1921,82 @@ packages: dependency: "direct main" description: name: supertokens_flutter - sha256: "54ebc0ba9269ae17dc8d26c524cca53a6f0c9155625331839954aa9294a63821" + sha256: "8337f832116f0c5c43ca9c5954b65e2ab04ad611e46fb10567a476dfb67e457e" url: "https://pub.dev" source: hosted - version: "0.6.3" + version: "0.6.5" syncfusion_flutter_core: dependency: "direct main" description: name: syncfusion_flutter_core - sha256: "0e1e1f50edca35bf1a36c75ebd9c4bef722d3ff9998dac9cee3bf11745639d6a" + sha256: bee87cdfe527b31705190162e3bd27bf468d591ae7c68182244bdfd94e21f737 url: "https://pub.dev" source: hosted - version: "29.2.10" + version: "29.2.11" syncfusion_flutter_pdf: dependency: transitive description: name: syncfusion_flutter_pdf - sha256: "7610e12ef69a072705d051f506751518aff91fd76d581d3fbde73fd776ca003c" + sha256: "08fc998934dab953e980ab3b98482e994beda2e736b88c9fec99cdcf04036509" url: "https://pub.dev" source: hosted - version: "29.2.10" + version: "29.2.11" syncfusion_flutter_pdfviewer: dependency: "direct main" description: name: syncfusion_flutter_pdfviewer - sha256: e656bda13b923bd0abaaec826990e57f404c865e13f805f210d50a9c96fc8202 + sha256: "240c3c50e5a9a0ed2ca9d0449414f83ddcb09dafc798362bf8d8db11dabffdfe" url: "https://pub.dev" source: hosted - version: "29.2.10" + version: "29.2.11" syncfusion_flutter_signaturepad: dependency: transitive description: name: syncfusion_flutter_signaturepad - sha256: "65f812d4e8f54fde8e262c7936627488a9aea294ec4dcc11ac1ddbf147ea0b86" + sha256: "903dcd8a6afcd94488be296f9e45c28e2ea6634849eccb70066e310db4198edc" url: "https://pub.dev" source: hosted - version: "29.2.10" + version: "29.2.11" syncfusion_pdfviewer_macos: dependency: transitive description: name: syncfusion_pdfviewer_macos - sha256: "1cba449d5695044d1ced21cbc1e5c45553d5f3523ad3e8842e0cdd7ccf6d35be" + sha256: "529befb03610bc5f647ddba84150355bea18a25f5ce8329f3065971a498b89d1" url: "https://pub.dev" source: hosted - version: "29.2.10" + version: "29.2.11" syncfusion_pdfviewer_platform_interface: dependency: transitive description: name: syncfusion_pdfviewer_platform_interface - sha256: "93244ccbb1f7663fa9988f8c22845f7106e28eccff83685825302c8ddded0861" + sha256: e27a16b987b7b0d241a153ac96119c2bf753075cae93301e0143ebf7c139503b url: "https://pub.dev" source: hosted - version: "29.2.10" + version: "29.2.11" syncfusion_pdfviewer_web: dependency: transitive description: name: syncfusion_pdfviewer_web - sha256: "25e5a91a04a2016907e17552b0581f58d401489d8d5ad9cdefd5be74c0f6ab1d" + sha256: "1cf1d8f8871fd421e454e7e38f1044b6b170bb0201a5bee8634210d27aa79e2e" url: "https://pub.dev" source: hosted - version: "29.2.10" + version: "29.2.11" syncfusion_pdfviewer_windows: dependency: transitive description: name: syncfusion_pdfviewer_windows - sha256: "6dbc08118892a77a269a73f20074093dd3f5e47af5125a296e4080e0858b1a56" + sha256: cc6826cdae73657d010bd4480b5c6f06a78589e86185eeec9f6ec931c4c4276a url: "https://pub.dev" source: hosted - version: "29.2.10" + version: "29.2.11" synchronized: dependency: transitive description: name: synchronized - sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0 + sha256: "93b153dcb6a26dcddee6ca087dd634b53e38c10b5aa163e8e49501a776456153" url: "https://pub.dev" source: hosted - version: "3.4.0" + version: "3.4.1" table_calendar: dependency: "direct main" description: @@ -2021,14 +2021,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.11" - timing: - dependency: transitive - description: - name: timing - sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe" - url: "https://pub.dev" - source: hosted - version: "1.0.2" typed_data: dependency: transitive description: @@ -2041,18 +2033,18 @@ packages: dependency: "direct main" description: name: universal_html - sha256: "56536254004e24d9d8cfdb7dbbf09b74cf8df96729f38a2f5c238163e3d58971" + sha256: c0bcae5c733c60f26c7dfc88b10b0fd27cbcc45cb7492311cdaa6067e21c9cd4 url: "https://pub.dev" source: hosted - version: "2.2.4" + version: "2.3.0" universal_io: dependency: transitive description: name: universal_io - sha256: "1722b2dcc462b4b2f3ee7d188dad008b6eb4c40bbd03a3de451d82c78bba9aad" + sha256: f63cbc48103236abf48e345e07a03ce5757ea86285ed313a6a032596ed9301e2 url: "https://pub.dev" source: hosted - version: "2.2.2" + version: "2.3.1" universal_platform: dependency: transitive description: @@ -2065,50 +2057,50 @@ packages: dependency: "direct main" description: name: upgrader - sha256: e4878f33198ed627af9ec64cb12626ca12672ad94e9671feccd58625ccb484b6 + sha256: "3fae4eb861c7e8567f91412d9ca4a287e024e58d6f79f98da79e3f6d78da74ba" url: "https://pub.dev" source: hosted - version: "12.0.0" + version: "12.5.0" url_launcher: dependency: "direct main" description: name: url_launcher - sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603" + sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8 url: "https://pub.dev" source: hosted - version: "6.3.1" + version: "6.3.2" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79" + sha256: b413d49b73867ac08dd2f9890efd3cc11f2a0e577618d50843440a1fb3776c32 url: "https://pub.dev" source: hosted - version: "6.3.16" + version: "6.3.32" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "7f2022359d4c099eea7df3fdf739f7d3d3b9faf3166fb1dd390775176e0b76cb" + sha256: "580fe5dfb51671ae38191d316e027f6b76272b026370708c2d898799750a02b0" url: "https://pub.dev" source: hosted - version: "6.3.3" + version: "6.4.1" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" + sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: "17ba2000b847f334f16626a574c702b196723af2a289e7a93ffcb79acff855c2" + sha256: "368adf46f71ad3c21b8f06614adb38346f193f3a59ba8fe9a2fd74133070ba18" url: "https://pub.dev" source: hosted - version: "3.2.2" + version: "3.2.5" url_launcher_platform_interface: dependency: transitive description: @@ -2121,34 +2113,34 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" + sha256: "85c81589622fbc87c1c683aaea164d3604a7777495a79d91e39ffcdec39ddb34" url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.3" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" + sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f" url: "https://pub.dev" source: hosted - version: "3.1.4" + version: "3.1.5" uuid: dependency: "direct main" description: name: uuid - sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff + sha256: "1fef9e8e11e2991bb773070d4656b7bd5d850967a2456cfc83cf47925ba79489" url: "https://pub.dev" source: hosted - version: "4.5.1" + version: "4.5.3" vector_graphics: dependency: transitive description: name: vector_graphics - sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6 + sha256: "2306c03da2ba81724afeb589c351ebbc0aa7d86005925be8f8735856dbe5e42d" url: "https://pub.dev" source: hosted - version: "1.1.19" + version: "1.2.2" vector_graphics_codec: dependency: transitive description: @@ -2161,10 +2153,10 @@ packages: dependency: transitive description: name: vector_graphics_compiler - sha256: "557a315b7d2a6dbb0aaaff84d857967ce6bdc96a63dc6ee2a57ce5a6ee5d3331" + sha256: "142a9146f447d15b10bdc00e21d5f4d83e5b32bb5f8f8f5a04c75311344923a3" url: "https://pub.dev" source: hosted - version: "1.1.17" + version: "1.2.6" vector_math: dependency: transitive description: @@ -2193,18 +2185,18 @@ packages: dependency: transitive description: name: vm_service - sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 + sha256: "0016aef94fc66495ac78af5859181e3f3bf2026bd8eecc72b9565601e19ab360" url: "https://pub.dev" source: hosted - version: "15.0.0" + version: "15.2.0" watcher: dependency: transitive description: name: watcher - sha256: "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104" + sha256: "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.2.1" waveform_flutter: dependency: transitive description: @@ -2249,42 +2241,42 @@ packages: dependency: transitive description: name: webview_flutter - sha256: c3e4fe614b1c814950ad07186007eff2f2e5dd2935eba7b9a9a1af8e5885f1ba + sha256: e4d3474277c5043f5f3100ed27d94ad693abfd5c602b0221c719a4497e4ba1e4 url: "https://pub.dev" source: hosted - version: "4.13.0" + version: "4.14.0" webview_flutter_android: dependency: transitive description: name: webview_flutter_android - sha256: f6e6afef6e234801da77170f7a1847ded8450778caf2fe13979d140484be3678 + sha256: a97db7a44f8e71af2f3971c45550a08cce1fb60059c1b8e534251e6cfb753490 url: "https://pub.dev" source: hosted - version: "4.7.0" + version: "4.13.0" webview_flutter_platform_interface: dependency: transitive description: name: webview_flutter_platform_interface - sha256: f0dc2dc3a2b1e3a6abdd6801b9355ebfeb3b8f6cde6b9dc7c9235909c4a1f147 + sha256: "1221c1b12f5278791042f2ec2841743784cf25c5a644e23d6680e5d718824f04" url: "https://pub.dev" source: hosted - version: "2.13.1" + version: "2.15.1" webview_flutter_wkwebview: dependency: transitive description: name: webview_flutter_wkwebview - sha256: a3d461fe3467014e05f3ac4962e5fdde2a4bf44c561cb53e9ae5c586600fdbc3 + sha256: c879dd64b87c452aa84381b244d5469da57ba7e8cca6884c7b1e0d406372c12d url: "https://pub.dev" source: hosted - version: "3.22.0" + version: "3.26.0" win32: dependency: transitive description: name: win32 - sha256: "329edf97fdd893e0f1e3b9e88d6a0e627128cc17cc316a8d67fda8f1451178ba" + sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e url: "https://pub.dev" source: hosted - version: "5.13.0" + version: "5.15.0" win32_registry: dependency: transitive description: @@ -2305,10 +2297,10 @@ packages: dependency: transitive description: name: xml - sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 + sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025" url: "https://pub.dev" source: hosted - version: "6.5.0" + version: "6.6.1" yaml: dependency: transitive description: @@ -2326,5 +2318,5 @@ packages: source: hosted version: "2.1.0" sdks: - dart: ">=3.10.0-0 <3.13.0-z" - flutter: ">=3.29.0" + dart: ">=3.12.0 <3.13.0-z" + flutter: ">=3.44.0" diff --git a/mih_ui/windows/flutter/generated_plugin_registrant.cc b/mih_ui/windows/flutter/generated_plugin_registrant.cc index ad71ace9..6333ee3e 100644 --- a/mih_ui/windows/flutter/generated_plugin_registrant.cc +++ b/mih_ui/windows/flutter/generated_plugin_registrant.cc @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -16,7 +17,7 @@ #include #include #include -#include +#include #include #include #include @@ -26,6 +27,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("FileSaverPlugin")); FileSelectorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("FileSelectorWindows")); + FirebaseAppCheckPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FirebaseAppCheckPluginCApi")); FirebaseAuthPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("FirebaseAuthPluginCApi")); FirebaseCorePluginCApiRegisterWithRegistrar( @@ -42,8 +45,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("PrintingPlugin")); RecordWindowsPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("RecordWindowsPluginCApi")); - ScreenBrightnessWindowsPluginRegisterWithRegistrar( - registry->GetRegistrarForPlugin("ScreenBrightnessWindowsPlugin")); + ScreenBrightnessWindowsPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("ScreenBrightnessWindowsPluginCApi")); SharePlusWindowsPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi")); SyncfusionPdfviewerWindowsPluginRegisterWithRegistrar( diff --git a/mih_ui/windows/flutter/generated_plugins.cmake b/mih_ui/windows/flutter/generated_plugins.cmake index 57f48306..e04ffd25 100644 --- a/mih_ui/windows/flutter/generated_plugins.cmake +++ b/mih_ui/windows/flutter/generated_plugins.cmake @@ -5,6 +5,7 @@ list(APPEND FLUTTER_PLUGIN_LIST file_saver file_selector_windows + firebase_app_check firebase_auth firebase_core fl_downloader @@ -20,6 +21,7 @@ list(APPEND FLUTTER_PLUGIN_LIST ) list(APPEND FLUTTER_FFI_PLUGIN_LIST + jni ) set(PLUGIN_BUNDLED_LIBRARIES)