From d3ecae011323b5dc89a867fea3df87657f53774e Mon Sep 17 00:00:00 2001 From: Christien Rioux Date: Mon, 18 Dec 2023 20:05:23 -0500 Subject: [PATCH] updates and refactor protobuf --- ios/Podfile.lock | 8 +- lib/entities/local_account.freezed.dart | 2 +- lib/entities/preferences.freezed.dart | 6 +- lib/entities/user_login.freezed.dart | 4 +- lib/providers/chat.dart | 15 +- lib/providers/connection_state.freezed.dart | 2 +- lib/providers/contact.dart | 11 +- lib/providers/contact.g.dart | 7 +- lib/providers/contact_invite.dart | 60 ++-- lib/providers/conversation.dart | 38 +-- .../src/dht_record_pool.freezed.dart | 4 +- lib/veilid_support/src/config.dart | 27 +- lib/veilid_support/src/identity.freezed.dart | 6 +- macos/Podfile.lock | 4 +- pubspec.lock | 318 +++++++++--------- pubspec.yaml | 2 +- 16 files changed, 266 insertions(+), 248 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 5ba25f2..c858771 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -55,7 +55,7 @@ PODS: - GTMSessionFetcher/Core (< 3.0, >= 1.1) - MLImage (= 1.0.0-beta4) - MLKitCommon (~> 9.0) - - mobile_scanner (3.2.0): + - mobile_scanner (3.5.5): - Flutter - GoogleMLKit/BarcodeScanning (~> 4.0.0) - nanopb (2.30909.0): @@ -160,17 +160,17 @@ SPEC CHECKSUMS: MLKitBarcodeScanning: 04e264482c5f3810cb89ebc134ef6b61e67db505 MLKitCommon: c1b791c3e667091918d91bda4bba69a91011e390 MLKitVision: 8baa5f46ee3352614169b85250574fde38c36f49 - mobile_scanner: 47056db0c04027ea5f41a716385542da28574662 + mobile_scanner: 202ab6f652e40a9add68b10de4c4fb2a745c4348 nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431 pasteboard: 982969ebaa7c78af3e6cc7761e8f5e77565d9ce0 path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943 PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4 - share_plus: 599aa54e4ea31d4b4c0e9c911bcc26c55e791028 + share_plus: c3fef564749587fc939ef86ffb283ceac0baf9f5 shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126 smart_auth: 4bedbc118723912d0e45a07e8ab34039c19e04f2 sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a system_info_plus: 5393c8da281d899950d751713575fbf91c7709aa - url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4 + url_launcher_ios: bf5ce03e0e2088bad9cc378ea97fa0ed5b49673b veilid: f5c2e662f91907b30cf95762619526ac3e4512fd PODFILE CHECKSUM: 7f4cf2154d55730d953b184299e6feee7a274740 diff --git a/lib/entities/local_account.freezed.dart b/lib/entities/local_account.freezed.dart index 19dcd76..a720f3f 100644 --- a/lib/entities/local_account.freezed.dart +++ b/lib/entities/local_account.freezed.dart @@ -225,7 +225,7 @@ class _$LocalAccountImpl implements _LocalAccount { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$LocalAccountImpl && diff --git a/lib/entities/preferences.freezed.dart b/lib/entities/preferences.freezed.dart index 7020dcb..0e951e0 100644 --- a/lib/entities/preferences.freezed.dart +++ b/lib/entities/preferences.freezed.dart @@ -146,7 +146,7 @@ class _$LockPreferenceImpl implements _LockPreference { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$LockPreferenceImpl && @@ -332,7 +332,7 @@ class _$ThemePreferencesImpl implements _ThemePreferences { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$ThemePreferencesImpl && @@ -541,7 +541,7 @@ class _$PreferencesImpl implements _Preferences { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$PreferencesImpl && diff --git a/lib/entities/user_login.freezed.dart b/lib/entities/user_login.freezed.dart index aca29fc..9aa3b68 100644 --- a/lib/entities/user_login.freezed.dart +++ b/lib/entities/user_login.freezed.dart @@ -182,7 +182,7 @@ class _$UserLoginImpl implements _UserLogin { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$UserLoginImpl && @@ -358,7 +358,7 @@ class _$ActiveLoginsImpl implements _ActiveLogins { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$ActiveLoginsImpl && diff --git a/lib/providers/chat.dart b/lib/providers/chat.dart index 7ddbe1d..d64c4b9 100644 --- a/lib/providers/chat.dart +++ b/lib/providers/chat.dart @@ -3,7 +3,6 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../proto/proto.dart' as proto; -import '../proto/proto.dart' show Chat, ChatType; import '../veilid_support/veilid_support.dart'; import 'account.dart'; @@ -19,8 +18,8 @@ Future getOrCreateChatSingleContact({ activeAccountInfo.userLogin.accountRecordInfo.accountRecord.recordKey; // Create conversation type Chat - final chat = Chat() - ..type = ChatType.SINGLE_CONTACT + final chat = proto.Chat() + ..type = proto.ChatType.SINGLE_CONTACT ..remoteConversationKey = remoteConversationRecordKey.toProto(); // Add Chat to account's list @@ -35,7 +34,7 @@ Future getOrCreateChatSingleContact({ if (cbuf == null) { throw Exception('Failed to get chat'); } - final c = Chat.fromBuffer(cbuf); + final c = proto.Chat.fromBuffer(cbuf); if (c == chat) { return; } @@ -68,7 +67,7 @@ Future deleteChat( if (cbuf == null) { throw Exception('Failed to get chat'); } - final c = Chat.fromBuffer(cbuf); + final c = proto.Chat.fromBuffer(cbuf); if (c.remoteConversationKey == remoteConversationKey) { await chatList.tryRemoveItem(i); @@ -84,7 +83,7 @@ Future deleteChat( /// Get the active account contact list @riverpod -Future?> fetchChatList(FetchChatListRef ref) async { +Future?> fetchChatList(FetchChatListRef ref) async { // See if we've logged into this account or if it is locked final activeAccountInfo = await ref.watch(fetchActiveAccountProvider.future); if (activeAccountInfo == null) { @@ -94,7 +93,7 @@ Future?> fetchChatList(FetchChatListRef ref) async { activeAccountInfo.userLogin.accountRecordInfo.accountRecord.recordKey; // Decode the chat list from the DHT - IList out = const IListConst([]); + IList out = const IListConst([]); await (await DHTShortArray.openOwned( proto.OwnedDHTRecordPointerProto.fromProto( activeAccountInfo.account.chatList), @@ -105,7 +104,7 @@ Future?> fetchChatList(FetchChatListRef ref) async { if (cir == null) { throw Exception('Failed to get chat'); } - out = out.add(Chat.fromBuffer(cir)); + out = out.add(proto.Chat.fromBuffer(cir)); } }); diff --git a/lib/providers/connection_state.freezed.dart b/lib/providers/connection_state.freezed.dart index 350a1af..9616832 100644 --- a/lib/providers/connection_state.freezed.dart +++ b/lib/providers/connection_state.freezed.dart @@ -116,7 +116,7 @@ class _$ConnectionStateImpl extends _ConnectionState { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$ConnectionStateImpl && diff --git a/lib/providers/contact.dart b/lib/providers/contact.dart index d935e73..c44b302 100644 --- a/lib/providers/contact.dart +++ b/lib/providers/contact.dart @@ -4,7 +4,6 @@ import 'package:fast_immutable_collections/fast_immutable_collections.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../proto/proto.dart' as proto; -import '../proto/proto.dart' show Contact; import '../veilid_support/veilid_support.dart'; import '../tools/tools.dart'; @@ -24,7 +23,7 @@ Future createContact({ activeAccountInfo.userLogin.accountRecordInfo.accountRecord.recordKey; // Create Contact - final contact = Contact() + final contact = proto.Contact() ..editedProfile = profile ..remoteProfile = profile ..identityMasterJson = jsonEncode(remoteIdentity.toJson()) @@ -51,7 +50,7 @@ Future createContact({ Future deleteContact( {required ActiveAccountInfo activeAccountInfo, - required Contact contact}) async { + required proto.Contact contact}) async { final pool = await DHTRecordPool.instance(); final accountRecordKey = activeAccountInfo.userLogin.accountRecordInfo.accountRecord.recordKey; @@ -104,7 +103,7 @@ Future deleteContact( /// Get the active account contact list @riverpod -Future?> fetchContactList(FetchContactListRef ref) async { +Future?> fetchContactList(FetchContactListRef ref) async { // See if we've logged into this account or if it is locked final activeAccountInfo = await ref.watch(fetchActiveAccountProvider.future); if (activeAccountInfo == null) { @@ -114,7 +113,7 @@ Future?> fetchContactList(FetchContactListRef ref) async { activeAccountInfo.userLogin.accountRecordInfo.accountRecord.recordKey; // Decode the contact list from the DHT - IList out = const IListConst([]); + IList out = const IListConst([]); await (await DHTShortArray.openOwned( proto.OwnedDHTRecordPointerProto.fromProto( activeAccountInfo.account.contactList), @@ -125,7 +124,7 @@ Future?> fetchContactList(FetchContactListRef ref) async { if (cir == null) { throw Exception('Failed to get contact'); } - out = out.add(Contact.fromBuffer(cir)); + out = out.add(proto.Contact.fromBuffer(cir)); } }); diff --git a/lib/providers/contact.g.dart b/lib/providers/contact.g.dart index 823f594..b428110 100644 --- a/lib/providers/contact.g.dart +++ b/lib/providers/contact.g.dart @@ -6,14 +6,14 @@ part of 'contact.dart'; // RiverpodGenerator // ************************************************************************** -String _$fetchContactListHash() => r'f75cb33fbc664404bba122f1e128e437e0f0b2da'; +String _$fetchContactListHash() => r'03e5b90435c331be87495d999a62a97af5b74d9e'; /// Get the active account contact list /// /// Copied from [fetchContactList]. @ProviderFor(fetchContactList) final fetchContactListProvider = - AutoDisposeFutureProvider?>.internal( + AutoDisposeFutureProvider?>.internal( fetchContactList, name: r'fetchContactListProvider', debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') @@ -23,6 +23,7 @@ final fetchContactListProvider = allTransitiveDependencies: null, ); -typedef FetchContactListRef = AutoDisposeFutureProviderRef?>; +typedef FetchContactListRef + = AutoDisposeFutureProviderRef?>; // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member diff --git a/lib/providers/contact_invite.dart b/lib/providers/contact_invite.dart index 3f7bd72..e776409 100644 --- a/lib/providers/contact_invite.dart +++ b/lib/providers/contact_invite.dart @@ -6,15 +6,6 @@ import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../entities/local_account.dart'; import '../proto/proto.dart' as proto; -import '../proto/proto.dart' - show - ContactInvitation, - ContactInvitationRecord, - ContactRequest, - ContactRequestPrivate, - ContactResponse, - SignedContactInvitation, - SignedContactResponse; import '../tools/tools.dart'; import '../veilid_support/veilid_support.dart'; import 'account.dart'; @@ -48,7 +39,7 @@ class AcceptedOrRejectedContact { Future checkAcceptRejectContact( {required ActiveAccountInfo activeAccountInfo, - required ContactInvitationRecord contactInvitationRecord}) async { + required proto.ContactInvitationRecord contactInvitationRecord}) async { // Open the contact request inbox try { final pool = await DHTRecordPool.instance(); @@ -68,15 +59,17 @@ Future checkAcceptRejectContact( defaultSubkey: 1)) .scope((contactRequestInbox) async { // - final signedContactResponse = await contactRequestInbox - .getProtobuf(SignedContactResponse.fromBuffer, forceRefresh: true); + final signedContactResponse = await contactRequestInbox.getProtobuf( + proto.SignedContactResponse.fromBuffer, + forceRefresh: true); if (signedContactResponse == null) { return null; } final contactResponseBytes = Uint8List.fromList(signedContactResponse.contactResponse); - final contactResponse = ContactResponse.fromBuffer(contactResponseBytes); + final contactResponse = + proto.ContactResponse.fromBuffer(contactResponseBytes); final contactIdentityMasterRecordKey = proto.TypedKeyProto.fromProto( contactResponse.identityMasterRecordKey); final cs = await pool.veilid.getCryptoSystem(recordKey.kind); @@ -154,7 +147,7 @@ Future checkAcceptRejectContact( Future deleteContactInvitation( {required bool accepted, required ActiveAccountInfo activeAccountInfo, - required ContactInvitationRecord contactInvitationRecord}) async { + required proto.ContactInvitationRecord contactInvitationRecord}) async { final pool = await DHTRecordPool.instance(); final accountRecordKey = activeAccountInfo.userLogin.accountRecordInfo.accountRecord.recordKey; @@ -235,7 +228,7 @@ Future createContactInvitation( .deleteScope((localConversation) async { // dont bother reopening localConversation with writer // Make ContactRequestPrivate and encrypt with the writer secret - final crpriv = ContactRequestPrivate() + final crpriv = proto.ContactRequestPrivate() ..writerKey = contactRequestWriter.key.toProto() ..profile = activeAccountInfo.account.profile ..identityMasterRecordKey = @@ -247,7 +240,7 @@ Future createContactInvitation( await cs.encryptAeadWithNonce(crprivbytes, contactRequestWriter.secret); // Create ContactRequest and embed contactrequestprivate - final creq = ContactRequest() + final creq = proto.ContactRequest() ..encryptionKeyType = encryptionKeyType.toProto() ..private = encryptedContactRequestPrivate; @@ -263,18 +256,18 @@ Future createContactInvitation( await contactRequestInbox.eventualWriteProtobuf(creq); // Create ContactInvitation and SignedContactInvitation - final cinv = ContactInvitation() + final cinv = proto.ContactInvitation() ..contactRequestInboxKey = contactRequestInbox.key.toProto() ..writerSecret = encryptedSecret; final cinvbytes = cinv.writeToBuffer(); - final scinv = SignedContactInvitation() + final scinv = proto.SignedContactInvitation() ..contactInvitation = cinvbytes ..identitySignature = (await cs.sign(identityKey, identitySecret, cinvbytes)).toProto(); signedContactInvitationBytes = scinv.writeToBuffer(); // Create ContactInvitationRecord - final cinvrec = ContactInvitationRecord() + final cinvrec = proto.ContactInvitationRecord() ..contactRequestInbox = contactRequestInbox.ownedDHTRecordPointer.toProto() ..writerKey = contactRequestWriter.key.toProto() @@ -311,11 +304,11 @@ class ValidContactInvitation { required this.contactIdentityMaster, required this.writer}); - SignedContactInvitation signedContactInvitation; - ContactInvitation contactInvitation; + proto.SignedContactInvitation signedContactInvitation; + proto.ContactInvitation contactInvitation; TypedKey contactRequestInboxKey; - ContactRequest contactRequest; - ContactRequestPrivate contactRequestPrivate; + proto.ContactRequest contactRequest; + proto.ContactRequestPrivate contactRequestPrivate; IdentityMaster contactIdentityMaster; KeyPair writer; } @@ -327,7 +320,7 @@ typedef GetEncryptionKeyCallback = Future Function( Future validateContactInvitation( {required ActiveAccountInfo activeAccountInfo, - required IList? contactInvitationRecords, + required IList? contactInvitationRecords, required Uint8List inviteData, required GetEncryptionKeyCallback getEncryptionKeyCallback}) async { final accountRecordKey = @@ -434,7 +427,7 @@ Future acceptContactInvitation( remoteIdentityPublicKey: validContactInvitation.contactIdentityMaster .identityPublicTypedKey(), callback: (localConversation) async { - final contactResponse = ContactResponse() + final contactResponse = proto.ContactResponse() ..accept = true ..remoteConversationRecordKey = localConversation.key.toProto() ..identityMasterRecordKey = activeAccountInfo @@ -450,13 +443,14 @@ Future acceptContactInvitation( activeAccountInfo.userLogin.identitySecret.value, contactResponseBytes); - final signedContactResponse = SignedContactResponse() + final signedContactResponse = proto.SignedContactResponse() ..contactResponse = contactResponseBytes ..identitySignature = identitySignature.toProto(); // Write the acceptance to the inbox if (await contactRequestInbox.tryWriteProtobuf( - SignedContactResponse.fromBuffer, signedContactResponse, + proto.SignedContactResponse.fromBuffer, + signedContactResponse, subkey: 1) != null) { throw Exception('failed to accept contact invitation'); @@ -494,7 +488,7 @@ Future rejectContactInvitation(ActiveAccountInfo activeAccountInfo, final cs = await pool.veilid .getCryptoSystem(validContactInvitation.contactRequestInboxKey.kind); - final contactResponse = ContactResponse() + final contactResponse = proto.ContactResponse() ..accept = false ..identityMasterRecordKey = activeAccountInfo .localAccount.identityMaster.masterRecordKey @@ -506,13 +500,13 @@ Future rejectContactInvitation(ActiveAccountInfo activeAccountInfo, activeAccountInfo.userLogin.identitySecret.value, contactResponseBytes); - final signedContactResponse = SignedContactResponse() + final signedContactResponse = proto.SignedContactResponse() ..contactResponse = contactResponseBytes ..identitySignature = identitySignature.toProto(); // Write the rejection to the inbox if (await contactRequestInbox.tryWriteProtobuf( - SignedContactResponse.fromBuffer, signedContactResponse, + proto.SignedContactResponse.fromBuffer, signedContactResponse, subkey: 1) != null) { log.error('failed to reject contact invitation'); @@ -524,7 +518,7 @@ Future rejectContactInvitation(ActiveAccountInfo activeAccountInfo, /// Get the active account contact invitation list @riverpod -Future?> fetchContactInvitationRecords( +Future?> fetchContactInvitationRecords( FetchContactInvitationRecordsRef ref) async { // See if we've logged into this account or if it is locked final activeAccountInfo = await ref.watch(fetchActiveAccountProvider.future); @@ -535,7 +529,7 @@ Future?> fetchContactInvitationRecords( activeAccountInfo.userLogin.accountRecordInfo.accountRecord.recordKey; // Decode the contact invitation list from the DHT - IList out = const IListConst([]); + IList out = const IListConst([]); try { await (await DHTShortArray.openOwned( @@ -548,7 +542,7 @@ Future?> fetchContactInvitationRecords( if (cir == null) { throw Exception('Failed to get contact invitation record'); } - out = out.add(ContactInvitationRecord.fromBuffer(cir)); + out = out.add(proto.ContactInvitationRecord.fromBuffer(cir)); } }); } on VeilidAPIExceptionTryAgain catch (_) { diff --git a/lib/providers/conversation.dart b/lib/providers/conversation.dart index 7e1c56b..617ead3 100644 --- a/lib/providers/conversation.dart +++ b/lib/providers/conversation.dart @@ -4,7 +4,6 @@ import 'package:fast_immutable_collections/fast_immutable_collections.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../proto/proto.dart' as proto; -import '../proto/proto.dart' show Conversation, Message; import '../tools/tools.dart'; import '../veilid_init.dart'; @@ -79,7 +78,7 @@ Future createConversation( parent: localConversation.key, crypto: crypto, smplWriter: writer)) .deleteScope((messages) async { // Write local conversation key - final conversation = Conversation() + final conversation = proto.Conversation() ..profile = activeAccountInfo.account.profile ..identityMasterJson = jsonEncode(activeAccountInfo.localAccount.identityMaster.toJson()) @@ -87,7 +86,7 @@ Future createConversation( // final update = await localConversation.tryWriteProtobuf( - Conversation.fromBuffer, conversation); + proto.Conversation.fromBuffer, conversation); if (update != null) { throw Exception('Failed to write local conversation'); } @@ -96,7 +95,7 @@ Future createConversation( }); } -Future readRemoteConversation({ +Future readRemoteConversation({ required ActiveAccountInfo activeAccountInfo, required TypedKey remoteConversationRecordKey, required TypedKey remoteIdentityPublicKey, @@ -113,16 +112,16 @@ Future readRemoteConversation({ .scope((remoteConversation) async { // final conversation = - await remoteConversation.getProtobuf(Conversation.fromBuffer); + await remoteConversation.getProtobuf(proto.Conversation.fromBuffer); return conversation; }); } -Future writeLocalConversation({ +Future writeLocalConversation({ required ActiveAccountInfo activeAccountInfo, required TypedKey localConversationRecordKey, required TypedKey remoteIdentityPublicKey, - required Conversation conversation, + required proto.Conversation conversation, }) async { final accountRecordKey = activeAccountInfo.userLogin.accountRecordInfo.accountRecord.recordKey; @@ -138,7 +137,7 @@ Future writeLocalConversation({ .scope((localConversation) async { // final update = await localConversation.tryWriteProtobuf( - Conversation.fromBuffer, conversation); + proto.Conversation.fromBuffer, conversation); if (update != null) { return update; } @@ -146,7 +145,7 @@ Future writeLocalConversation({ }); } -Future readLocalConversation({ +Future readLocalConversation({ required ActiveAccountInfo activeAccountInfo, required TypedKey localConversationRecordKey, required TypedKey remoteIdentityPublicKey, @@ -163,7 +162,8 @@ Future readLocalConversation({ parent: accountRecordKey, crypto: crypto)) .scope((localConversation) async { // - final update = await localConversation.getProtobuf(Conversation.fromBuffer); + final update = + await localConversation.getProtobuf(proto.Conversation.fromBuffer); if (update != null) { return update; } @@ -175,7 +175,7 @@ Future addLocalConversationMessage( {required ActiveAccountInfo activeAccountInfo, required TypedKey localConversationRecordKey, required TypedKey remoteIdentityPublicKey, - required Message message}) async { + required proto.Message message}) async { final conversation = await readLocalConversation( activeAccountInfo: activeAccountInfo, localConversationRecordKey: localConversationRecordKey, @@ -201,7 +201,7 @@ Future mergeLocalConversationMessages( {required ActiveAccountInfo activeAccountInfo, required TypedKey localConversationRecordKey, required TypedKey remoteIdentityPublicKey, - required IList newMessages}) async { + required IList newMessages}) async { final conversation = await readLocalConversation( activeAccountInfo: activeAccountInfo, localConversationRecordKey: localConversationRecordKey, @@ -262,7 +262,7 @@ Future mergeLocalConversationMessages( return changed; } -Future?> getLocalConversationMessages({ +Future?> getLocalConversationMessages({ required ActiveAccountInfo activeAccountInfo, required TypedKey localConversationRecordKey, required TypedKey remoteIdentityPublicKey, @@ -283,9 +283,9 @@ Future?> getLocalConversationMessages({ return (await DHTShortArray.openRead(messagesRecordKey, parent: localConversationRecordKey, crypto: crypto)) .scope((messages) async { - var out = IList(); + var out = IList(); for (var i = 0; i < messages.length; i++) { - final msg = await messages.getItemProtobuf(Message.fromBuffer, i); + final msg = await messages.getItemProtobuf(proto.Message.fromBuffer, i); if (msg == null) { throw Exception('Failed to get message'); } @@ -295,7 +295,7 @@ Future?> getLocalConversationMessages({ }); } -Future?> getRemoteConversationMessages({ +Future?> getRemoteConversationMessages({ required ActiveAccountInfo activeAccountInfo, required TypedKey remoteConversationRecordKey, required TypedKey remoteIdentityPublicKey, @@ -316,9 +316,9 @@ Future?> getRemoteConversationMessages({ return (await DHTShortArray.openRead(messagesRecordKey, parent: remoteConversationRecordKey, crypto: crypto)) .scope((messages) async { - var out = IList(); + var out = IList(); for (var i = 0; i < messages.length; i++) { - final msg = await messages.getItemProtobuf(Message.fromBuffer, i); + final msg = await messages.getItemProtobuf(proto.Message.fromBuffer, i); if (msg == null) { throw Exception('Failed to get message'); } @@ -332,7 +332,7 @@ Future?> getRemoteConversationMessages({ class ActiveConversationMessages extends _$ActiveConversationMessages { /// Get message for active conversation @override - FutureOr?> build() async { + FutureOr?> build() async { await eventualVeilid.future; final activeChat = ref.watch(activeChatStateProvider); diff --git a/lib/veilid_support/dht_support/src/dht_record_pool.freezed.dart b/lib/veilid_support/dht_support/src/dht_record_pool.freezed.dart index a90b480..a00efd3 100644 --- a/lib/veilid_support/dht_support/src/dht_record_pool.freezed.dart +++ b/lib/veilid_support/dht_support/src/dht_record_pool.freezed.dart @@ -156,7 +156,7 @@ class _$DHTRecordPoolAllocationsImpl implements _DHTRecordPoolAllocations { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$DHTRecordPoolAllocationsImpl && @@ -327,7 +327,7 @@ class _$OwnedDHTRecordPointerImpl implements _OwnedDHTRecordPointer { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$OwnedDHTRecordPointerImpl && diff --git a/lib/veilid_support/src/config.dart b/lib/veilid_support/src/config.dart index 3ffa1ca..e45cfe7 100644 --- a/lib/veilid_support/src/config.dart +++ b/lib/veilid_support/src/config.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart'; import 'package:veilid/veilid.dart'; Future getVeilidChatConfig() async { @@ -18,8 +19,32 @@ Future getVeilidChatConfig() async { config.copyWith(blockStore: config.blockStore.copyWith(delete: true)); } + // ignore: do_not_use_environment + const envNetwork = String.fromEnvironment('NETWORK'); + if (envNetwork.isNotEmpty) { + final bootstrap = kIsWeb + ? ['ws://bootstrap.$envNetwork.veilid.net:5150/ws'] + : ['bootstrap.$envNetwork.veilid.net']; + config = config.copyWith( + network: config.network.copyWith( + routingTable: + config.network.routingTable.copyWith(bootstrap: bootstrap))); + } + + // ignore: do_not_use_environment + const envBootstrap = String.fromEnvironment('BOOTSTRAP'); + if (envBootstrap.isNotEmpty) { + final bootstrap = envBootstrap.split(',').map((e) => e.trim()).toList(); + config = config.copyWith( + network: config.network.copyWith( + routingTable: + config.network.routingTable.copyWith(bootstrap: bootstrap))); + } + return config.copyWith( - capabilities: const VeilidConfigCapabilities(disable: ['DHTV', 'TUNL']), + capabilities: + // XXX: Remove DHTV and DHTW when we get background sync implemented + const VeilidConfigCapabilities(disable: ['DHTV', 'DHTW', 'TUNL']), protectedStore: config.protectedStore.copyWith(allowInsecureFallback: true), // network: config.network.copyWith( // dht: config.network.dht.copyWith( diff --git a/lib/veilid_support/src/identity.freezed.dart b/lib/veilid_support/src/identity.freezed.dart index d8626df..9948cce 100644 --- a/lib/veilid_support/src/identity.freezed.dart +++ b/lib/veilid_support/src/identity.freezed.dart @@ -126,7 +126,7 @@ class _$AccountRecordInfoImpl implements _AccountRecordInfo { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$AccountRecordInfoImpl && @@ -268,7 +268,7 @@ class _$IdentityImpl implements _Identity { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$IdentityImpl && @@ -503,7 +503,7 @@ class _$IdentityMasterImpl implements _IdentityMaster { } @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && other is _$IdentityMasterImpl && diff --git a/macos/Podfile.lock b/macos/Podfile.lock index e321ce3..949cb69 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -3,7 +3,7 @@ PODS: - FMDB (2.7.5): - FMDB/standard (= 2.7.5) - FMDB/standard (2.7.5) - - mobile_scanner (3.0.0): + - mobile_scanner (3.5.5): - FlutterMacOS - pasteboard (0.0.1): - FlutterMacOS @@ -76,7 +76,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a - mobile_scanner: ed7618fb749adc6574563e053f3b8e5002c13994 + mobile_scanner: d12930b68bf502497f78b8b5182aeccfaa1e04f6 pasteboard: 9b69dba6fedbb04866be632205d532fe2f6b1d99 path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943 screen_retriever: 59634572a57080243dd1bf715e55b6c54f241a38 diff --git a/pubspec.lock b/pubspec.lock index d0d040d..ffbd7a1 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -29,26 +29,26 @@ packages: dependency: "direct main" description: name: animated_theme_switcher - sha256: a131266f7021a8a663da4c4848c53c62178949a7517c2af00b22e4c614352302 + sha256: de8ce9872d6e6676ab1140f76ff00cd0084a9dfee62168044062629927949652 url: "https://pub.dev" source: hosted - version: "2.0.8" + version: "2.0.9" ansicolor: dependency: "direct main" description: name: ansicolor - sha256: "607f8fa9786f392043f169898923e6c59b4518242b68b8862eb8a8b7d9c30b4a" + sha256: "8bf17a8ff6ea17499e40a2d2542c2f481cd7615760c6d34065cb22bfd22e6880" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.2" archive: dependency: "direct main" description: name: archive - sha256: "20071638cbe4e5964a427cfa0e86dce55d060bc7d82d56f3554095d7239a8765" + sha256: "7b875fd4a20b165a3084bd2d210439b22ebc653f21cea4842729c0c30c82596b" url: "https://pub.dev" source: hosted - version: "3.4.2" + version: "3.4.9" args: dependency: transitive description: @@ -69,10 +69,10 @@ packages: dependency: "direct main" description: name: awesome_extensions - sha256: "6b9c6a5f70d17959ace71d649d3b816b13b73267196035d431ff17e65a228608" + sha256: "79bb5a24f1224795e599c75ec047ca6f4718e17be535544350d213bb37bc88cd" url: "https://pub.dev" source: hosted - version: "2.0.9" + version: "2.0.10" badges: dependency: "direct main" description: @@ -85,10 +85,10 @@ packages: dependency: "direct main" description: name: basic_utils - sha256: "1fb8c5493fc1b9500512b2e153c0b9bcc9e281621cde7f810420f4761be9e38d" + sha256: "2064b21d3c41ed7654bc82cc476fd65542e04d60059b74d5eed490a4da08fc6c" url: "https://pub.dev" source: hosted - version: "5.6.1" + version: "5.7.0" blurry_modal_progress_hud: dependency: "direct main" description: @@ -125,26 +125,26 @@ packages: dependency: transitive description: name: build_daemon - sha256: "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65" + sha256: "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.0.1" build_resolvers: dependency: transitive description: name: build_resolvers - sha256: "0713a05b0386bd97f9e63e78108805a4feca5898a4b821d6610857f10c91e975" + sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.2" build_runner: dependency: "direct dev" description: name: build_runner - sha256: "10c6bcdbf9d049a0b666702cf1cee4ddfdc38f02a19d35ae392863b47519848b" + sha256: "67d591d602906ef9201caf93452495ad1812bea2074f04e25dbd7c133785821b" url: "https://pub.dev" source: hosted - version: "2.4.6" + version: "2.4.7" build_runner_core: dependency: transitive description: @@ -165,10 +165,10 @@ packages: dependency: transitive description: name: built_value - sha256: a8de5955205b4d1dbbbc267daddf2178bd737e4bab8987c04a500478c9651e74 + sha256: c9aabae0718ec394e5bc3c7272e6bb0dc0b32201a08fe185ec1d8401d3e39309 url: "https://pub.dev" source: hosted - version: "8.6.3" + version: "8.8.1" cached_network_image: dependency: transitive description: @@ -197,34 +197,34 @@ packages: dependency: transitive description: name: camera - sha256: f63f2687fb1795c36f7c57b18a03071880eabb0fd8b5291b0fcd3fb979cb0fb1 + sha256: "7fa53bb1c2059e58bf86b7ab506e3b2a78e42f82d365b44b013239b975a166ef" url: "https://pub.dev" source: hosted - version: "0.10.5+4" + version: "0.10.5+7" camera_android: dependency: transitive description: name: camera_android - sha256: c978373b41a463c9edda3fea0a06966299f55db63232cd0f0d4efc21a59a0006 + sha256: "7215e38fa0be58cc3203a6e48de3636fb9b1bf93d6eeedf667f882d51b3a4bf3" url: "https://pub.dev" source: hosted - version: "0.10.8+12" + version: "0.10.8+15" camera_avfoundation: dependency: transitive description: name: camera_avfoundation - sha256: dde42d19ad4cdf79287f9e410599db72beaec7e505787dc6abfd0ce5b526e9c0 + sha256: "3c8dd395f18722f01b5f325ddd7f5256e9bcdce538fb9243b378ba759df3283c" url: "https://pub.dev" source: hosted - version: "0.9.13+5" + version: "0.9.13+8" camera_platform_interface: dependency: transitive description: name: camera_platform_interface - sha256: "8734d1c682f034bdb12d0d6ff379b0535a9b8e44266b530025bf8266d6a62f28" + sha256: b6a568984254cadaca41a6b896d87d3b2e79a2e5791afa036f8d524c6783b93a url: "https://pub.dev" source: hosted - version: "2.5.2" + version: "2.7.0" camera_web: dependency: transitive description: @@ -301,10 +301,10 @@ packages: dependency: transitive description: name: cli_util - sha256: b8db3080e59b2503ca9e7922c3df2072cf13992354d5e944074ffa836fba43b7 + sha256: c05b7406fdabc7a49a3929d4af76bcaccbbffcbcdcf185b082e1ae07da323d19 url: "https://pub.dev" source: hosted - version: "0.4.0" + version: "0.4.1" clock: dependency: transitive description: @@ -317,18 +317,18 @@ packages: dependency: transitive description: name: code_builder - sha256: "1be9be30396d7e4c0db42c35ea6ccd7cc6a1e19916b5dc64d6ac216b5544d677" + sha256: feee43a5c05e7b3199bb375a86430b8ada1b04104f2923d0e03cc01ca87b6d84 url: "https://pub.dev" source: hosted - version: "4.7.0" + version: "4.9.0" collection: dependency: transitive description: name: collection - sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.2" + version: "1.18.0" convert: dependency: transitive description: @@ -349,10 +349,10 @@ packages: dependency: transitive description: name: cross_file - sha256: fd832b5384d0d6da4f6df60b854d33accaaeb63aa9e10e736a87381f08dee2cb + sha256: fedaadfa3a6996f75211d835aaeb8fede285dae94262485698afd832371b9a5e url: "https://pub.dev" source: hosted - version: "0.3.3+5" + version: "0.3.3+8" crypto: dependency: transitive description: @@ -381,26 +381,26 @@ packages: dependency: transitive description: name: custom_lint - sha256: "837821e4619c167fd5a547b03bb2fc6be7e65b800ec75528848429705c31ceba" + sha256: "198ec6b8e084d22f508a76556c9afcfb71706ad3f42b083fe0ee923351a96d90" url: "https://pub.dev" source: hosted - version: "0.5.3" + version: "0.5.7" custom_lint_core: dependency: transitive description: name: custom_lint_core - sha256: "3bdebdd52a42b4d6e5be9cd833ad1ecfbbc23e1020ca537060e54085497aea9c" + sha256: f84c3fe2f27ef3b8831953e477e59d4a29c2952623f9eac450d7b40d9cdd94cc url: "https://pub.dev" source: hosted - version: "0.5.3" + version: "0.5.7" dart_style: dependency: transitive description: name: dart_style - sha256: abd7625e16f51f554ea244d090292945ec4d4be7bfbaf2ec8cccea568919d334 + sha256: "40ae61a5d43feea6d24bd22c0537a6629db858963b99b4bc1c3db80676f32368" url: "https://pub.dev" source: hosted - version: "2.3.3" + version: "2.3.4" diffutil_dart: dependency: transitive description: @@ -429,10 +429,10 @@ packages: dependency: "direct main" description: name: fast_immutable_collections - sha256: b4f7d3af6e90a80cf7a3dddd0de3b4a46acb446320795b77b034535c4d267fbe + sha256: "3eb1d7495c70598964add20e10666003fad6e855b108fe684ebcbf8ad0c8e120" url: "https://pub.dev" source: hosted - version: "9.1.5" + version: "9.2.0" ffi: dependency: transitive description: @@ -445,10 +445,10 @@ packages: dependency: transitive description: name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "7.0.0" file_utils: dependency: transitive description: @@ -474,10 +474,10 @@ packages: dependency: "direct main" description: name: flutter_animate - sha256: "62f346340a96192070e31e3f2a1bd30a28530f1fe8be978821e06cd56b74d6d2" + sha256: "1dbc1aabfb8ec1e9d9feed2b675c21fb6b0a11f99be53ec3bc0f1901af6a8eb7" url: "https://pub.dev" source: hosted - version: "4.2.0+1" + version: "4.3.0" flutter_cache_manager: dependency: transitive description: @@ -498,10 +498,10 @@ packages: dependency: "direct main" description: name: flutter_chat_ui - sha256: d2b7d99fae88d17fdab13f4be3e6ae15c4ceaa5d3e199b61c254a67222d42611 + sha256: "6a4712026429d3b28547bd3d147ded44f8dd53dacc1ff14113693d7b7dd14382" url: "https://pub.dev" source: hosted - version: "1.6.9" + version: "1.6.10" flutter_form_builder: dependency: "direct main" description: @@ -514,10 +514,10 @@ packages: dependency: "direct main" description: name: flutter_hooks - sha256: "6ae13b1145c589112cbd5c4fda6c65908993a9cb18d4f82042e9c28dd9fbf611" + sha256: "7c8db779c2d1010aa7f9ea3fbefe8f86524fcb87b69e8b0af31e1a4b55422dec" url: "https://pub.dev" source: hosted - version: "0.20.1" + version: "0.20.3" flutter_link_previewer: dependency: transitive description: @@ -543,10 +543,10 @@ packages: dependency: "direct main" description: name: flutter_native_splash - sha256: ecff62b3b893f2f665de7e4ad3de89f738941fcfcaaba8ee601e749efafa4698 + sha256: "141b20f15a2c4fe6e33c49257ca1bc114fc5c500b04fcbc8d75016bb86af672f" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.8" flutter_parsed_text: dependency: transitive description: @@ -559,26 +559,26 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: f185ac890306b5779ecbd611f52502d8d4d63d27703ef73161ca0407e815f02c + sha256: b068ffc46f82a55844acfa4fdbb61fad72fa2aef0905548419d97f0f95c456da url: "https://pub.dev" source: hosted - version: "2.0.16" + version: "2.0.17" flutter_riverpod: dependency: "direct main" description: name: flutter_riverpod - sha256: fcea39b84b666649280f6f678bc0bb479253bf865abc0387a8b11dac6477bf92 + sha256: da9591d1f8d5881628ccd5c25c40e74fc3eef50ba45e40c3905a06e1712412d5 url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.9" flutter_slidable: dependency: "direct main" description: name: flutter_slidable - sha256: cc4231579e3eae41ae166660df717f4bad1359c87f4a4322ad8ba1befeb3d2be + sha256: "19ed4813003a6ff4e9c6bcce37e792a2a358919d7603b2b31ff200229191e44c" url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "3.0.1" flutter_spinkit: dependency: "direct main" description: @@ -591,10 +591,10 @@ packages: dependency: "direct main" description: name: flutter_svg - sha256: "8c5d68a82add3ca76d792f058b186a0599414f279f00ece4830b9b231b570338" + sha256: d39e7f95621fc84376bc0f7d504f05c3a41488c562f4a8ad410569127507402c url: "https://pub.dev" source: hosted - version: "2.0.7" + version: "2.0.9" flutter_test: dependency: "direct dev" description: flutter @@ -625,10 +625,10 @@ packages: dependency: "direct dev" description: name: freezed - sha256: be7826ed5d87e98c924a839542674fc14edbcb3e4fc0adbc058d680f2b241837 + sha256: "6c5031daae12c7072b3a87eff98983076434b4889ef2a44384d0cae3f82372ba" url: "https://pub.dev" source: hosted - version: "2.4.3" + version: "2.4.6" freezed_annotation: dependency: "direct main" description: @@ -665,10 +665,10 @@ packages: dependency: "direct main" description: name: go_router - sha256: a07c781bf55bf11ae85133338e4850f0b4e33e261c44a66c750fc707d65d8393 + sha256: "2ccd74480706e0a70a0e0dfa9543dede41bc11d0fe3b146a6ad7b7686f6b4407" url: "https://pub.dev" source: hosted - version: "11.1.2" + version: "11.1.4" graphs: dependency: transitive description: @@ -681,10 +681,10 @@ packages: dependency: "direct main" description: name: hooks_riverpod - sha256: a5242fee89736eaf7e5565c271e2d87b0aeb9953ee936de819339366aebc6882 + sha256: c12a456e03ef9be65b0be66963596650ad7a3220e96c7e7b0a048562ea32d6ae url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.9" html: dependency: transitive description: @@ -697,10 +697,10 @@ packages: dependency: transitive description: name: http - sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" + sha256: d4872660c46d929f6b8a9ef4e7a7eff7e49bbf0c4ec3f385ee32df5119175139 url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.2" http_multi_server: dependency: transitive description: @@ -721,10 +721,10 @@ packages: dependency: "direct dev" description: name: icons_launcher - sha256: "69de6373013966ea033f4cefbbbae258ccbfe790a6cfc69796cb33fda996298a" + sha256: "3ed4560181f238e69ca5d55589d6946ef31e6a321c934251a26ce1d9e9867305" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.6" image: dependency: "direct main" description: @@ -825,10 +825,10 @@ packages: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" mime: dependency: transitive description: @@ -841,26 +841,26 @@ packages: dependency: "direct main" description: name: mobile_scanner - sha256: "2fbc3914fe625e196c64ea8ffc4084cd36781d2be276d4d5923b11af3b5d44ff" + sha256: c3e5bba1cb626b6ab4fc46610f72a136803f6854267967e19f4a4a6a31ff9b74 url: "https://pub.dev" source: hosted - version: "3.4.1" + version: "3.5.5" motion_toast: dependency: "direct main" description: name: motion_toast - sha256: "5742e33ec2f11210f5269294304fb9bd0f30eace78ad23925eb9306dce7763c9" + sha256: "1bdd11696de9151804644d3dadcbcfaa55749db0353aeca150389ecdeb2eaaac" url: "https://pub.dev" source: hosted - version: "2.7.9" + version: "2.7.10" mutex: dependency: "direct main" description: name: mutex - sha256: "03116a4e46282a671b46c12de649d72c0ed18188ffe12a8d0fc63e83f4ad88f4" + sha256: "8827da25de792088eb33e572115a5eb0d61d61a3c01acbc8bcbe76ed78f1a1f2" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.1.0" octo_image: dependency: transitive description: @@ -913,10 +913,10 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "6b8b19bd80da4f11ce91b2d1fb931f3006911477cec227cce23d3253d80df3f1" + sha256: e595b98692943b4881b219f0a9e3945118d3c16bd7e2813f98ec6e532d905f72 url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.1" path_provider_foundation: dependency: transitive description: @@ -953,10 +953,10 @@ packages: dependency: transitive description: name: petitparser - sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 + sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 url: "https://pub.dev" source: hosted - version: "5.4.0" + version: "6.0.2" photo_view: dependency: transitive description: @@ -977,10 +977,10 @@ packages: dependency: transitive description: name: platform - sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102 + sha256: "0a279f0707af40c890e80b1e9df8bb761694c074ba7e1d4ab1bc4b728e200b59" url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.3" platform_info: dependency: transitive description: @@ -993,10 +993,10 @@ packages: dependency: transitive description: name: plugin_platform_interface - sha256: da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d + sha256: f4f88d4a900933e7267e2b353594774fc0d07fb072b47eedcd5b54e1ea3269f8 url: "https://pub.dev" source: hosted - version: "2.1.6" + version: "2.1.7" pointycastle: dependency: transitive description: @@ -1057,10 +1057,10 @@ packages: dependency: "direct main" description: name: qr_code_dart_scan - sha256: "4b5222c044700f9ecb3d1c39ca9c5cf433b508f81a0649b768628d3b5ee2ffc4" + sha256: ab40c5e8cf09e723fdd1c24ee23ae7187e44d958cc4b1554b4cd094845ae6989 url: "https://pub.dev" source: hosted - version: "0.7.2" + version: "0.7.3" qr_flutter: dependency: "direct main" description: @@ -1097,42 +1097,42 @@ packages: dependency: "direct main" description: name: reorderable_grid - sha256: a1322139ec59134e2180acb1b84fe436ea927ce2712ae01da511614131a07d85 + sha256: "0b9cd95ef0f070ef99f92affe9cf85a4aa127099cd1334e5940950ce58cd981d" url: "https://pub.dev" source: hosted - version: "1.0.8" + version: "1.0.10" riverpod: dependency: transitive description: name: riverpod - sha256: ff676bd8a715c7085692fe4919564f78fb90d33b10a1c5c14e740581857cc914 + sha256: "942999ee48b899f8a46a860f1e13cee36f2f77609eb54c5b7a669bb20d550b11" url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.9" riverpod_analyzer_utils: dependency: transitive description: name: riverpod_analyzer_utils - sha256: d72d7096964baf288b55619fe48100001fc4564ab7923ed0a7f5c7650e03c0d6 + sha256: d4dabc35358413bf4611fcb6abb46308a67c4ef4cd5e69fd3367b11925c59f57 url: "https://pub.dev" source: hosted - version: "0.3.4" + version: "0.5.0" riverpod_annotation: dependency: "direct main" description: name: riverpod_annotation - sha256: aeeb1eb6ccf2d779f2ef730e6d96d560316b677662222316779a8cf0a94ee317 + sha256: b70e95fbd5ca7ce42f5148092022971bb2e9843b6ab71e97d479e8ab52e98979 url: "https://pub.dev" source: hosted - version: "2.1.6" + version: "2.3.3" riverpod_generator: dependency: "direct dev" description: name: riverpod_generator - sha256: "5b36ad2f2b562cffb37212e8d59390b25499bf045b732276e30a207b16a25f61" + sha256: ff8f064f1d7ef3cc6af481bba8e9a3fcdb4d34df34fac1b39bbc003167065be0 url: "https://pub.dev" source: hosted - version: "2.3.3" + version: "2.3.9" rxdart: dependency: transitive description: @@ -1161,34 +1161,34 @@ packages: dependency: "direct main" description: name: searchable_listview - sha256: e1ba75eda1460c24648e54c543843a7142811ea4966c2106e0cc6792128b7127 + sha256: "492bb75e133d1be902d2c1e8aa362f21127260106557492993432a4f5489494a" url: "https://pub.dev" source: hosted - version: "2.7.1" + version: "2.9.1" share_plus: dependency: "direct main" description: name: share_plus - sha256: "6cec740fa0943a826951223e76218df002804adb588235a8910dc3d6b0654e11" + sha256: f74fc3f1cbd99f39760182e176802f693fa0ec9625c045561cfad54681ea93dd url: "https://pub.dev" source: hosted - version: "7.1.0" + version: "7.2.1" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface - sha256: "357412af4178d8e11d14f41723f80f12caea54cf0d5cd29af9dcdab85d58aea7" + sha256: df08bc3a07d01f5ea47b45d03ffcba1fa9cd5370fb44b3f38c70e42cced0f956 url: "https://pub.dev" source: hosted - version: "3.3.0" + version: "3.3.1" shared_preferences: dependency: "direct main" description: name: shared_preferences - sha256: b7f41bad7e521d205998772545de63ff4e6c97714775902c199353f8bf1511ac + sha256: "81429e4481e1ccfb51ede496e916348668fd0921627779233bd24cc3ff6abd02" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.2" shared_preferences_android: dependency: transitive description: @@ -1209,10 +1209,10 @@ packages: dependency: transitive description: name: shared_preferences_linux - sha256: c2eb5bf57a2fe9ad6988121609e47d3e07bb3bdca5b6f8444e4cf302428a128a + sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" shared_preferences_platform_interface: dependency: transitive description: @@ -1225,18 +1225,18 @@ packages: dependency: transitive description: name: shared_preferences_web - sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf + sha256: "7b15ffb9387ea3e237bb7a66b8a23d2147663d391cafc5c8f37b2e7b4bde5d21" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.2" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: f763a101313bd3be87edffe0560037500967de9c394a714cd598d945517f694f + sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" shelf: dependency: transitive description: @@ -1278,10 +1278,10 @@ packages: dependency: transitive description: name: source_gen - sha256: fc0da689e5302edb6177fdd964efcb7f58912f43c28c2047a808f5bfff643d16 + sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.5.0" source_helper: dependency: transitive description: @@ -1318,18 +1318,18 @@ packages: dependency: transitive description: name: sqflite_common - sha256: "1b92f368f44b0dee2425bb861cfa17b6f6cf3961f762ff6f941d20b33355660a" + sha256: bb4738f15b23352822f4c42a531677e5c6f522e079461fd240ead29d8d8a54a6 url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.5.0+2" stack_trace: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" state_notifier: dependency: transitive description: @@ -1342,10 +1342,10 @@ packages: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" stream_transform: dependency: transitive description: @@ -1374,10 +1374,10 @@ packages: dependency: transitive description: name: synchronized - sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" + sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.0+1" system_info2: dependency: transitive description: @@ -1406,10 +1406,10 @@ packages: dependency: transitive description: name: test_api - sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.6.1" timing: dependency: transitive description: @@ -1446,66 +1446,66 @@ packages: dependency: transitive description: name: url_launcher - sha256: "47e208a6711459d813ba18af120d9663c20bdf6985d6ad39fe165d2538378d27" + sha256: e9aa5ea75c84cf46b3db4eea212523591211c3cf2e13099ee4ec147f54201c86 url: "https://pub.dev" source: hosted - version: "6.1.14" + version: "6.2.2" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: b04af59516ab45762b2ca6da40fa830d72d0f6045cd97744450b73493fa76330 + sha256: "31222ffb0063171b526d3e569079cf1f8b294075ba323443fdc690842bfd4def" url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "6.2.0" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "7c65021d5dee51813d652357bc65b8dd4a6177082a9966bc8ba6ee477baa795f" + sha256: bba3373219b7abb6b5e0d071b0fe66dfbe005d07517a68e38d4fc3638f35c6d3 url: "https://pub.dev" source: hosted - version: "6.1.5" + version: "6.2.1" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: b651aad005e0cb06a01dbd84b428a301916dc75f0e7ea6165f80057fee2d8e8e + sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811 url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.1.1" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: b55486791f666e62e0e8ff825e58a023fd6b1f71c49926483f1128d3bbd8fe88 + sha256: b7244901ea3cf489c5335bdacda07264a6e960b1c1b1a9f91e4bc371d9e68234 url: "https://pub.dev" source: hosted - version: "3.0.7" + version: "3.1.0" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - sha256: "95465b39f83bfe95fcb9d174829d6476216f2d548b79c38ab2506e0458787618" + sha256: "980e8d9af422f477be6948bdfb68df8433be71f5743a188968b0c1b887807e50" url: "https://pub.dev" source: hosted - version: "2.1.5" + version: "2.2.0" url_launcher_web: dependency: transitive description: name: url_launcher_web - sha256: "2942294a500b4fa0b918685aff406773ba0a4cd34b7f42198742a94083020ce5" + sha256: "7286aec002c8feecc338cc33269e96b73955ab227456e9fb2a91f7fab8a358e9" url: "https://pub.dev" source: hosted - version: "2.0.20" + version: "2.2.2" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "95fef3129dc7cfaba2bc3d5ba2e16063bb561fc6d78e63eee16162bc70029069" + sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7 url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.1.1" uuid: dependency: "direct main" description: @@ -1518,26 +1518,26 @@ packages: dependency: transitive description: name: vector_graphics - sha256: "670f6e07aca990b4a2bcdc08a784193c4ccdd1932620244c3a86bb72a0eac67f" + sha256: "0f0c746dd2d6254a0057218ff980fc7f5670fd0fcf5e4db38a490d31eed4ad43" url: "https://pub.dev" source: hosted - version: "1.1.7" + version: "1.1.9+1" vector_graphics_codec: dependency: transitive description: name: vector_graphics_codec - sha256: "7451721781d967db9933b63f5733b1c4533022c0ba373a01bdd79d1a5457f69f" + sha256: "0edf6d630d1bfd5589114138ed8fada3234deacc37966bec033d3047c29248b7" url: "https://pub.dev" source: hosted - version: "1.1.7" + version: "1.1.9+1" vector_graphics_compiler: dependency: transitive description: name: vector_graphics_compiler - sha256: "80a13c613c8bde758b1464a1755a7b3a8f2b6cec61fbf0f5a53c94c30f03ba2e" + sha256: d24333727332d9bd20990f1483af4e09abdb9b1fc7c3db940b56ab5c42790c26 url: "https://pub.dev" source: hosted - version: "1.1.7" + version: "1.1.9+1" vector_math: dependency: transitive description: @@ -1552,7 +1552,7 @@ packages: path: "../veilid/veilid-flutter" relative: true source: path - version: "0.2.4" + version: "0.2.5" visibility_detector: dependency: transitive description: @@ -1573,10 +1573,10 @@ packages: dependency: transitive description: name: web - sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 url: "https://pub.dev" source: hosted - version: "0.1.4-beta" + version: "0.3.0" web_socket_channel: dependency: transitive description: @@ -1589,18 +1589,18 @@ packages: dependency: transitive description: name: win32 - sha256: "350a11abd2d1d97e0cc7a28a81b781c08002aa2864d9e3f192ca0ffa18b06ed3" + sha256: b0f37db61ba2f2e9b7a78a1caece0052564d1bc70668156cf3a29d676fe4e574 url: "https://pub.dev" source: hosted - version: "5.0.9" + version: "5.1.1" window_manager: dependency: "direct main" description: name: window_manager - sha256: "6ee795be9124f90660ea9d05e581a466de19e1c89ee74fc4bf528f60c8600edd" + sha256: dcc865277f26a7dad263a47d0e405d77e21f12cb71f30333a52710a408690bd7 url: "https://pub.dev" source: hosted - version: "0.3.6" + version: "0.3.7" xdg_directories: dependency: transitive description: @@ -1613,10 +1613,10 @@ packages: dependency: transitive description: name: xml - sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" + sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 url: "https://pub.dev" source: hosted - version: "6.3.0" + version: "6.5.0" xterm: dependency: "direct main" description: @@ -1637,10 +1637,10 @@ packages: dependency: "direct main" description: name: zxing2 - sha256: "1e141568c9646bc262fa75aacf739bc151ef6ad0226997c0016cc3da358a1bbc" + sha256: a042961441bd400f59595f9125ef5fca4c888daf0ea59c17f41e0e151f8a12b5 url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.2.1" zxing_lib: dependency: transitive description: @@ -1650,5 +1650,5 @@ packages: source: hosted version: "0.9.0" sdks: - dart: ">=3.1.0 <4.0.0" - flutter: ">=3.13.0" + dart: ">=3.2.0 <4.0.0" + flutter: ">=3.16.0" diff --git a/pubspec.yaml b/pubspec.yaml index d498631..6a58ced 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -47,7 +47,7 @@ dependencies: intl: ^0.18.0 json_annotation: ^4.8.1 loggy: ^2.0.3 - mobile_scanner: ^3.4.1 + mobile_scanner: ^3.5.1 motion_toast: ^2.7.8 mutex: ^3.0.1 pasteboard: ^0.2.0