diff --git a/CHANGELOG.md b/CHANGELOG.md index 58fb6fe53..13b7d34be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,7 +30,7 @@ - chore: Use Cupertino Activity Indicator in ChatEventList (krille-chan) - chore: Use other join endpoint for room upgrades (Krille) - fix(macos): update dependencies to make the build work (Rafał Hirsch) -- fix: Add missing html tag to render (Krille) +- fix: Add missing \ html tag to render (Krille) - fix: Consistent element padding between server picker and login view (xegim) - fix: Index of numbered lists are off (Krille) - fix: never use a transition on the shell route (Rafał Hirsch) diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index eb0ac0229..6398500f7 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -705,6 +705,15 @@ } } }, + "countInvited": "{count} invited", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, "create": "Create", "@create": { "type": "String", @@ -3199,6 +3208,18 @@ } } }, + "sentVoiceMessage": "\uD83C\uDF99\uFE0F {duration} - {sender}", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, "deletePushRuleCanNotBeUndone": "If you delete this notification setting, this can not be undone.", "more": "More", "shareKeysWith": "Share keys with...", diff --git a/assets/l10n/intl_es.arb b/assets/l10n/intl_es.arb index 83010397e..306d249e6 100644 --- a/assets/l10n/intl_es.arb +++ b/assets/l10n/intl_es.arb @@ -6083,4 +6083,4 @@ "type": "String", "placeholders": {} } -} \ No newline at end of file +} diff --git a/assets/l10n/intl_vi.arb b/assets/l10n/intl_vi.arb index 87d240b4d..46fb83fbb 100644 --- a/assets/l10n/intl_vi.arb +++ b/assets/l10n/intl_vi.arb @@ -4382,4 +4382,4 @@ "type": "String", "placeholders": {} } -} \ No newline at end of file +} diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 4557f1a4b..02b5406b4 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -327,10 +327,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; diff --git a/lib/config/app_config.dart b/lib/config/app_config.dart index d04d20be0..bbeb5089f 100644 --- a/lib/config/app_config.dart +++ b/lib/config/app_config.dart @@ -9,6 +9,7 @@ abstract class AppConfig { // static String _applicationName = 'FluffyChat'; static String _applicationName = 'Pangea Chat'; // #Pangea + static String get applicationName => _applicationName; static String? _applicationWelcomeMessage; @@ -16,7 +17,8 @@ abstract class AppConfig { // #Pangea // static String _defaultHomeserver = 'matrix.org'; static String get _defaultHomeserver => Environment.synapseURL; - // #Pangea + // Pangea# + static String get defaultHomeserver => _defaultHomeserver; static double fontSizeFactor = 1; static const Color chatColor = primaryColor; @@ -24,6 +26,7 @@ abstract class AppConfig { static const double messageFontSize = 16.0; static const bool allowOtherHomeservers = true; static const bool enableRegistration = true; + // #Pangea static const double toolbarMaxHeight = 250.0; static const double toolbarMinHeight = 200.0; static const double toolbarMinWidth = 350.0; @@ -82,6 +85,7 @@ abstract class AppConfig { // 'https://gitlab.com/famedly/fluffychat/-/blob/main/PRIVACY.md'; static String _privacyUrl = "https://www.pangeachat.com/privacy"; //Pangea# + static String get privacyUrl => _privacyUrl; // #Pangea // static const String website = 'https://fluffychat.im'; @@ -97,19 +101,21 @@ abstract class AppConfig { // #Pangea // static const String appOpenUrlScheme = 'im.fluffychat'; static const String appOpenUrlScheme = 'matrix.pangea.chat'; - static String _webBaseUrl = 'https://fluffychat.im/web'; // Pangea# + static String _webBaseUrl = 'https://fluffychat.im/web'; + static String get webBaseUrl => _webBaseUrl; - //#Pangea - static const String sourceCodeUrl = 'https://gitlab.com/famedly/fluffychat'; + static const String sourceCodeUrl = + 'https://github.com/krille-chan/fluffychat'; + // #Pangea // static const String supportUrl = - // 'https://gitlab.com/famedly/fluffychat/issues'; + // 'https://github.com/krille-chan/fluffychat/issues'; + // static const String changelogUrl = + // 'https://github.com/krille-chan/fluffychat/blob/main/CHANGELOG.md'; static const String supportUrl = 'https://www.pangeachat.com/faqs'; static const String termsOfServiceUrl = 'https://www.pangeachat.com/terms-of-service'; - // static const String changelogUrl = - // 'https://github.com/krille-chan/fluffychat/blob/main/CHANGELOG.md'; - //Pangea# + // Pangea# static final Uri newIssueUrl = Uri( scheme: 'https', host: 'github.com', @@ -145,21 +151,9 @@ abstract class AppConfig { static const String schemePrefix = 'matrix:'; // #Pangea // static const String pushNotificationsChannelId = 'fluffychat_push'; - // static const String pushNotificationsChannelName = 'FluffyChat push channel'; - // static const String pushNotificationsChannelDescription = - // 'Push notifications for FluffyChat'; // static const String pushNotificationsAppId = 'chat.fluffy.fluffychat'; - // static const String pushNotificationsGatewayUrl = - // 'https://push.fluffychat.im/_matrix/push/v1/notify'; - // static const String pushNotificationsPusherFormat = 'event_id_only'; static const String pushNotificationsChannelId = 'pangeachat_push'; - static const String pushNotificationsChannelName = 'Pangea Chat push channel'; - static const String pushNotificationsChannelDescription = - 'Push notifications for Pangea Chat'; static const String pushNotificationsAppId = 'com.talktolearn.chat'; - static const String pushNotificationsGatewayUrl = - 'https://sygnal.pangea.chat/_matrix/push/v1/notify'; - static const String? pushNotificationsPusherFormat = null; // Pangea# static const double borderRadius = 18.0; static const double columnWidth = 360.0; diff --git a/lib/config/setting_keys.dart b/lib/config/setting_keys.dart index 8b7bae372..19136fa9f 100644 --- a/lib/config/setting_keys.dart +++ b/lib/config/setting_keys.dart @@ -50,7 +50,10 @@ enum AppSettings { // Pangea# pushNotificationsGatewayUrl( 'pushNotificationsGatewayUrl', - 'https://push.fluffychat.im/_matrix/push/v1/notify', + // #Pangea + // 'https://push.fluffychat.im/_matrix/push/v1/notify', + 'https://sygnal.pangea.chat/_matrix/push/v1/notify', + // Pangea# ), pushNotificationsPusherFormat( 'pushNotificationsPusherFormat', diff --git a/lib/pages/chat/events/message.dart b/lib/pages/chat/events/message.dart index 6d923c7b3..454660762 100644 --- a/lib/pages/chat/events/message.dart +++ b/lib/pages/chat/events/message.dart @@ -451,8 +451,12 @@ class Message extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (event.relationshipType == - RelationshipTypes.reply) + if ({ + RelationshipTypes.reply, + RelationshipTypes.thread, + }.contains( + event.relationshipType, + )) FutureBuilder( future: event.getReplyEvent( timeline, diff --git a/lib/pages/chat/events/video_player.dart b/lib/pages/chat/events/video_player.dart index 882d2c950..b3b5bfc05 100644 --- a/lib/pages/chat/events/video_player.dart +++ b/lib/pages/chat/events/video_player.dart @@ -101,7 +101,6 @@ class EventVideoPlayerState extends State { autoPlay: true, autoInitialize: true, ); - // #Pangea _stopVideoSubscription?.cancel(); _stopVideoSubscription = diff --git a/lib/pages/chat_details/chat_details.dart b/lib/pages/chat_details/chat_details.dart index fa178d409..044289785 100644 --- a/lib/pages/chat_details/chat_details.dart +++ b/lib/pages/chat_details/chat_details.dart @@ -3,6 +3,7 @@ import 'dart:developer'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:collection/collection.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:go_router/go_router.dart'; import 'package:image_picker/image_picker.dart'; diff --git a/lib/pages/chat_details/participant_list_item.dart b/lib/pages/chat_details/participant_list_item.dart index 43743e868..8e24d3165 100644 --- a/lib/pages/chat_details/participant_list_item.dart +++ b/lib/pages/chat_details/participant_list_item.dart @@ -85,14 +85,12 @@ class ParticipantListItem extends StatelessWidget { ), ], ), - subtitle: - // #Pangea - LevelDisplayName(userId: user.id), - // Text( + // #Pangea + subtitle: LevelDisplayName(userId: user.id), + // subtitle: Text( // user.id, // maxLines: 1, // overflow: TextOverflow.ellipsis, - // ), // Pangea# leading: Opacity( opacity: user.membership == Membership.join ? 1 : 0.5, diff --git a/lib/pages/chat_list/client_chooser_button.dart b/lib/pages/chat_list/client_chooser_button.dart index 252ec83e5..68acc13cb 100644 --- a/lib/pages/chat_list/client_chooser_button.dart +++ b/lib/pages/chat_list/client_chooser_button.dart @@ -4,6 +4,7 @@ import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:go_router/go_router.dart'; import 'package:matrix/matrix.dart'; +import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/matrix.dart'; @@ -56,28 +57,27 @@ class ClientChooserButton extends StatelessWidget { ], ), ), - // Currently disabled because of: - // https://github.com/matrix-org/matrix-react-sdk/pull/12286 - /*PopupMenuItem( + PopupMenuItem( value: SettingsAction.archive, child: Row( children: [ const Icon(Icons.archive_outlined), const SizedBox(width: 18), - Text(L10n.of(context)!.archive), - ], - ), - ),*/ - PopupMenuItem( - value: SettingsAction.settings, - child: Row( - children: [ - const Icon(Icons.settings_outlined), - const SizedBox(width: 18), - Text(L10n.of(context).settings), + Text(L10n.of(context).archive), ], ), ), + if (!FluffyThemes.isColumnMode(context)) + PopupMenuItem( + value: SettingsAction.settings, + child: Row( + children: [ + const Icon(Icons.settings_outlined), + const SizedBox(width: 18), + Text(L10n.of(context).settings), + ], + ), + ), const PopupMenuDivider(), for (final bundle in bundles) ...[ if (matrix.accountBundles[bundle]!.length != 1 || @@ -158,30 +158,22 @@ class ClientChooserButton extends StatelessWidget { matrix.accountBundles.forEach((key, value) => clientCount += value.length); return FutureBuilder( future: matrix.client.fetchOwnProfile(), - builder: (context, snapshot) => Stack( - alignment: Alignment.center, - children: [ - ...List.generate( - clientCount, - (index) => const SizedBox.shrink(), - ), - const SizedBox.shrink(), - const SizedBox.shrink(), - PopupMenuButton( - onSelected: (o) => _clientSelected(o, context), - itemBuilder: _bundleMenuItems, - child: Material( - color: Colors.transparent, - borderRadius: BorderRadius.circular(99), - child: Avatar( - mxContent: snapshot.data?.avatarUrl, - name: snapshot.data?.displayName ?? - matrix.client.userID!.localpart, - size: 32, - ), + builder: (context, snapshot) => Material( + clipBehavior: Clip.hardEdge, + borderRadius: BorderRadius.circular(99), + color: Colors.transparent, + child: PopupMenuButton( + onSelected: (o) => _clientSelected(o, context), + itemBuilder: _bundleMenuItems, + child: Center( + child: Avatar( + mxContent: snapshot.data?.avatarUrl, + name: + snapshot.data?.displayName ?? matrix.client.userID!.localpart, + size: 32, ), ), - ], + ), ), ); } diff --git a/lib/pages/chat_members/chat_members.dart b/lib/pages/chat_members/chat_members.dart index 6d1cf22ee..6376a9b2c 100644 --- a/lib/pages/chat_members/chat_members.dart +++ b/lib/pages/chat_members/chat_members.dart @@ -34,11 +34,7 @@ class ChatMembersController extends State { final members = this .members - ?.where( - (member) => - membershipFilter == Membership.join || - member.membership == membershipFilter, - ) + ?.where((member) => member.membership == membershipFilter) .toList(); if (filter.isEmpty) { diff --git a/lib/pages/chat_members/chat_members_view.dart b/lib/pages/chat_members/chat_members_view.dart index e1598344c..67bf67cd2 100644 --- a/lib/pages/chat_members/chat_members_view.dart +++ b/lib/pages/chat_members/chat_members_view.dart @@ -144,9 +144,30 @@ class ChatMembersView extends StatelessWidget { Membership.ban => L10n.of(context).banned, Membership.invite => - L10n.of(context).invited, + L10n.of(context).countInvited( + room.summary + .mInvitedMemberCount ?? + controller.members + ?.where( + (member) => + member.membership == + Membership.invite, + ) + .length ?? + 0, + ), Membership.join => - L10n.of(context).all, + L10n.of(context).countParticipants( + room.summary.mJoinedMemberCount ?? + controller.members + ?.where( + (member) => + member.membership == + Membership.join, + ) + .length ?? + 0, + ), Membership.knock => L10n.of(context).knocking, Membership.leave => diff --git a/lib/pages/new_private_chat/new_private_chat_view.dart b/lib/pages/new_private_chat/new_private_chat_view.dart index f5274e59f..b850ea916 100644 --- a/lib/pages/new_private_chat/new_private_chat_view.dart +++ b/lib/pages/new_private_chat/new_private_chat_view.dart @@ -125,7 +125,7 @@ class NewPrivateChatView extends StatelessWidget { ), style: TextStyle( color: theme.colorScheme.onSurface, - fontSize: 13, + fontSize: 12, ), ), ), @@ -167,9 +167,15 @@ class NewPrivateChatView extends StatelessWidget { vertical: 24.0, ), child: Material( - borderRadius: - BorderRadius.circular(AppConfig.borderRadius), - color: theme.colorScheme.primaryContainer, + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(AppConfig.borderRadius), + side: BorderSide( + width: 3, + color: theme.colorScheme.primary, + ), + ), + color: Colors.transparent, clipBehavior: Clip.hardEdge, child: InkWell( borderRadius: @@ -179,10 +185,10 @@ class NewPrivateChatView extends StatelessWidget { userId, ), child: Padding( - padding: const EdgeInsets.all(32.0), + padding: const EdgeInsets.all(16.0), child: ConstrainedBox( constraints: - const BoxConstraints(maxWidth: 256), + const BoxConstraints(maxWidth: 200), child: PrettyQrView.data( // #Pangea // data: 'https://matrix.to/#/$userId', @@ -191,8 +197,7 @@ class NewPrivateChatView extends StatelessWidget { decoration: PrettyQrDecoration( shape: PrettyQrSmoothSymbol( roundFactor: 1, - color: - theme.colorScheme.onPrimaryContainer, + color: theme.colorScheme.primary, ), ), ), diff --git a/lib/pangea/public_spaces/public_room_bottom_sheet.dart b/lib/pangea/public_spaces/public_room_bottom_sheet.dart index 2a5381fc4..07b29095d 100644 --- a/lib/pangea/public_spaces/public_room_bottom_sheet.dart +++ b/lib/pangea/public_spaces/public_room_bottom_sheet.dart @@ -142,7 +142,7 @@ class PublicRoomBottomSheetState extends State { context: context, future: () async => client.knockRoom( roomAlias ?? chunk!.roomId, - serverName: via, + via: via, ), onSuccess: () => L10n.of(context).knockSpaceSuccess, delay: false, diff --git a/lib/utils/client_manager.dart b/lib/utils/client_manager.dart index 523f9c416..8362d4a64 100644 --- a/lib/utils/client_manager.dart +++ b/lib/utils/client_manager.dart @@ -132,9 +132,6 @@ abstract class ClientManager { }, logLevel: kReleaseMode ? Level.warning : Level.verbose, databaseBuilder: flutterMatrixSdkDatabaseBuilder, - // #Pangea - // legacyDatabaseBuilder: FlutterHiveCollectionsDatabase.databaseBuilder, - // Pangea# supportedLoginTypes: { AuthenticationTypes.password, AuthenticationTypes.sso, diff --git a/lib/utils/matrix_sdk_extensions/flutter_hive_collections_database.dart b/lib/utils/matrix_sdk_extensions/flutter_hive_collections_database.dart deleted file mode 100644 index 9ad5ce5c0..000000000 --- a/lib/utils/matrix_sdk_extensions/flutter_hive_collections_database.dart +++ /dev/null @@ -1,149 +0,0 @@ -import 'dart:convert'; -import 'dart:io'; - -import 'package:flutter/foundation.dart' hide Key; -import 'package:flutter/services.dart'; - -import 'package:flutter_secure_storage/flutter_secure_storage.dart'; -import 'package:hive/hive.dart'; -import 'package:matrix/matrix.dart'; -import 'package:path_provider/path_provider.dart'; -import 'package:universal_html/html.dart' as html; - -// ignore: deprecated_member_use -class FlutterHiveCollectionsDatabase extends HiveCollectionsDatabase { - FlutterHiveCollectionsDatabase( - super.name, - String super.path, { - super.key, - }); - - static const String _cipherStorageKey = 'hive_encryption_key'; - - static Future databaseBuilder( - Client client, - ) async { - Logs().d('Open Hive...'); - HiveAesCipher? hiverCipher; - try { - // Workaround for secure storage is calling Platform.operatingSystem on web - if (kIsWeb) { - // ignore: unawaited_futures - html.window.navigator.storage?.persist(); - throw MissingPluginException(); - } - - const secureStorage = FlutterSecureStorage(); - final containsEncryptionKey = - await secureStorage.read(key: _cipherStorageKey) != null; - if (!containsEncryptionKey) { - // do not try to create a buggy secure storage for new Linux users - if (Platform.isLinux) throw MissingPluginException(); - final key = Hive.generateSecureKey(); - await secureStorage.write( - key: _cipherStorageKey, - value: base64UrlEncode(key), - ); - } - - // workaround for if we just wrote to the key and it still doesn't exist - final rawEncryptionKey = await secureStorage.read(key: _cipherStorageKey); - if (rawEncryptionKey == null) throw MissingPluginException(); - - hiverCipher = HiveAesCipher(base64Url.decode(rawEncryptionKey)); - } on MissingPluginException catch (_) { - const FlutterSecureStorage() - .delete(key: _cipherStorageKey) - .catchError((_) {}); - Logs().i('Hive encryption is not supported on this platform'); - } catch (e, s) { - const FlutterSecureStorage() - .delete(key: _cipherStorageKey) - .catchError((_) {}); - Logs().w('Unable to init Hive encryption', e, s); - } - - final db = FlutterHiveCollectionsDatabase( - 'hive_collections_${client.clientName.replaceAll(' ', '_').toLowerCase()}', - await findDatabasePath(client), - key: hiverCipher, - ); - try { - await db.open(); - } catch (e, s) { - Logs().w('Unable to open Hive. Delete database and storage key...', e, s); - const FlutterSecureStorage().delete(key: _cipherStorageKey); - await db.clear().catchError((_) {}); - await Hive.deleteFromDisk(); - rethrow; - } - Logs().d('Hive is ready'); - return db; - } - - static Future findDatabasePath(Client client) async { - var path = client.clientName; - if (!kIsWeb) { - Directory directory; - try { - if (Platform.isLinux) { - directory = await getApplicationSupportDirectory(); - } else { - directory = await getApplicationDocumentsDirectory(); - } - } catch (_) { - try { - directory = await getLibraryDirectory(); - } catch (_) { - directory = Directory.current; - } - } - // do not destroy your stable FluffyChat in debug mode - directory = Directory( - directory.uri.resolve(kDebugMode ? 'hive_debug' : 'hive').toFilePath(), - ); - directory.create(recursive: true); - path = directory.path; - } - return path; - } - - @override - int get maxFileSize => supportsFileStoring ? 100 * 1000 * 1000 : 0; - @override - bool get supportsFileStoring => !kIsWeb; - - Future _getFileStoreDirectory() async { - try { - try { - return (await getTemporaryDirectory()).path; - } catch (_) { - return (await getApplicationDocumentsDirectory()).path; - } - } catch (_) { - return (await getDownloadsDirectory())!.path; - } - } - - @override - Future getFile(Uri mxcUri) async { - if (!supportsFileStoring) return null; - final tempDirectory = await _getFileStoreDirectory(); - final file = - File('$tempDirectory/${Uri.encodeComponent(mxcUri.toString())}'); - if (await file.exists() == false) return null; - final bytes = await file.readAsBytes(); - return bytes; - } - - @override - Future storeFile(Uri mxcUri, Uint8List bytes, int time) async { - if (!supportsFileStoring) return null; - final tempDirectory = await _getFileStoreDirectory(); - final file = - File('$tempDirectory/${Uri.encodeComponent(mxcUri.toString())}'); - if (await file.exists()) return; - await file.writeAsBytes(bytes); - return; - } -} diff --git a/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart b/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart index 85bc517bc..b07f6e613 100644 --- a/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart +++ b/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart @@ -10,7 +10,6 @@ import 'package:sqflite_common_ffi/sqflite_ffi.dart'; import 'package:universal_html/html.dart' as html; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; -import 'package:fluffychat/utils/matrix_sdk_extensions/flutter_hive_collections_database.dart'; import 'package:fluffychat/utils/platform_infos.dart'; import 'cipher.dart'; @@ -74,7 +73,7 @@ Future flutterMatrixSdkDatabaseBuilder(Client client) async { Logs().e('Unable to send error notification', e, s); } - return FlutterHiveCollectionsDatabase.databaseBuilder(client); + rethrow; } } diff --git a/lib/utils/matrix_sdk_extensions/matrix_locals.dart b/lib/utils/matrix_sdk_extensions/matrix_locals.dart index 83875cb43..0db2251d7 100644 --- a/lib/utils/matrix_sdk_extensions/matrix_locals.dart +++ b/lib/utils/matrix_sdk_extensions/matrix_locals.dart @@ -1,4 +1,5 @@ import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:intl/intl.dart'; import 'package:matrix/matrix.dart'; /// This is a temporary helper class until there is a proper solution to this with the new system @@ -353,4 +354,21 @@ class MatrixLocals extends MatrixLocalizations { @override String get cancelledSend => l10n.sendCanceled; + + @override + String voiceMessage(String senderName, Duration? duration) { + final dateTime = duration == null + ? null + : DateTime.fromMillisecondsSinceEpoch( + duration.inSeconds * 1000, + ); + final formattedDuration = dateTime == null + ? '' + : DateFormat( + DateFormat.MINUTE_SECOND, + l10n.localeName, + ).format(dateTime); + + return l10n.sentVoiceMessage(senderName, formattedDuration); + } } diff --git a/lib/utils/push_helper.dart b/lib/utils/push_helper.dart index 33e69b925..d4f15ccec 100644 --- a/lib/utils/push_helper.dart +++ b/lib/utils/push_helper.dart @@ -87,7 +87,7 @@ Future _tryPushHelper( .first; final event = await client.getEventByPushNotification( notification, - storeInDatabase: isBackgroundMessage, + storeInDatabase: false, ); if (event == null) { diff --git a/lib/utils/url_launcher.dart b/lib/utils/url_launcher.dart index 5dff82be7..6ae98926b 100644 --- a/lib/utils/url_launcher.dart +++ b/lib/utils/url_launcher.dart @@ -191,7 +191,6 @@ class UrlLauncher { await PublicRoomBottomSheet.show( context: context, roomAlias: identityParts.primaryIdentifier, - // Pangea# ); // Pangea# } diff --git a/lib/widgets/avatar.dart b/lib/widgets/avatar.dart index b850b40e9..7368d80e9 100644 --- a/lib/widgets/avatar.dart +++ b/lib/widgets/avatar.dart @@ -71,50 +71,48 @@ class Avatar extends StatelessWidget { borderRadius: borderRadius, side: border ?? BorderSide.none, ), - clipBehavior: Clip.hardEdge, - child: - // #Pangea - (userId ?? presenceUserId) == BotName.byEnvironment - ? BotFace( - width: size, - expression: BotExpression.idle, - useRive: useRive, - ) - : + clipBehavior: Clip.antiAlias, + // #Pangea + // child: noPic + child: (userId ?? presenceUserId) == BotName.byEnvironment + ? BotFace( + width: size, + expression: BotExpression.idle, + useRive: useRive, + ) + : noPic // Pangea# - - noPic - ? Container( - decoration: - BoxDecoration(color: name?.lightColorAvatar), - alignment: Alignment.center, - child: Text( - fallbackLetters, - textAlign: TextAlign.center, - style: TextStyle( - fontFamily: 'RobotoMono', - color: Colors.white, - fontWeight: FontWeight.bold, - fontSize: (size / 2.5).roundToDouble(), - ), - ), - ) - : MxcImage( - client: client, - key: ValueKey(mxContent.toString()), - cacheKey: '${mxContent}_$size', - uri: mxContent, - fit: BoxFit.cover, - width: size, - height: size, - placeholder: (_) => Center( - child: Icon( - Icons.person_2, - color: theme.colorScheme.tertiary, - size: size / 1.5, - ), - ), + ? Container( + decoration: + BoxDecoration(color: name?.lightColorAvatar), + alignment: Alignment.center, + child: Text( + fallbackLetters, + textAlign: TextAlign.center, + style: TextStyle( + fontFamily: 'RobotoMono', + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: (size / 2.5).roundToDouble(), ), + ), + ) + : MxcImage( + client: client, + key: ValueKey(mxContent.toString()), + cacheKey: '${mxContent}_$size', + uri: mxContent, + fit: BoxFit.cover, + width: size, + height: size, + placeholder: (_) => Center( + child: Icon( + Icons.person_2, + color: theme.colorScheme.tertiary, + size: size / 1.5, + ), + ), + ), ), ), // #Pangea diff --git a/pangea_packages/fcm_shared_isolate/example/ios/Flutter/ephemeral/flutter_lldb_helper.py b/pangea_packages/fcm_shared_isolate/example/ios/Flutter/ephemeral/flutter_lldb_helper.py new file mode 100644 index 000000000..a88caf99d --- /dev/null +++ b/pangea_packages/fcm_shared_isolate/example/ios/Flutter/ephemeral/flutter_lldb_helper.py @@ -0,0 +1,32 @@ +# +# Generated file, do not edit. +# + +import lldb + +def handle_new_rx_page(frame: lldb.SBFrame, bp_loc, extra_args, intern_dict): + """Intercept NOTIFY_DEBUGGER_ABOUT_RX_PAGES and touch the pages.""" + base = frame.register["x0"].GetValueAsAddress() + page_len = frame.register["x1"].GetValueAsUnsigned() + + # Note: NOTIFY_DEBUGGER_ABOUT_RX_PAGES will check contents of the + # first page to see if handled it correctly. This makes diagnosing + # misconfiguration (e.g. missing breakpoint) easier. + data = bytearray(page_len) + data[0:8] = b'IHELPED!' + + error = lldb.SBError() + frame.GetThread().GetProcess().WriteMemory(base, data, error) + if not error.Success(): + print(f'Failed to write into {base}[+{page_len}]', error) + return + +def __lldb_init_module(debugger: lldb.SBDebugger, _): + target = debugger.GetDummyTarget() + # Caveat: must use BreakpointCreateByRegEx here and not + # BreakpointCreateByName. For some reasons callback function does not + # get carried over from dummy target for the later. + bp = target.BreakpointCreateByRegex("^NOTIFY_DEBUGGER_ABOUT_RX_PAGES$") + bp.SetScriptCallbackFunction('{}.handle_new_rx_page'.format(__name__)) + bp.SetAutoContinue(True) + print("-- LLDB integration loaded --") diff --git a/pangea_packages/fcm_shared_isolate/example/ios/Flutter/ephemeral/flutter_lldbinit b/pangea_packages/fcm_shared_isolate/example/ios/Flutter/ephemeral/flutter_lldbinit new file mode 100644 index 000000000..e3ba6fbed --- /dev/null +++ b/pangea_packages/fcm_shared_isolate/example/ios/Flutter/ephemeral/flutter_lldbinit @@ -0,0 +1,5 @@ +# +# Generated file, do not edit. +# + +command script import --relative-to-command-file flutter_lldb_helper.py diff --git a/pubspec.lock b/pubspec.lock index f3d6b7c90..968c0f8ae 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: "401dd18096f5eaa140404ccbbbf346f83c850e6f27049698a7ee75a3488ddb32" + sha256: "214e6f07e2a44f45972e0365c7b537eaeaddb4598db0778dd4ac64b4acd3f5b1" url: "https://pub.dev" source: hosted - version: "1.3.52" + version: "1.3.55" _macros: dependency: transitive description: dart @@ -106,10 +106,10 @@ packages: dependency: transitive description: name: args - sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6 + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 url: "https://pub.dev" source: hosted - version: "2.6.0" + version: "2.7.0" async: dependency: "direct main" description: @@ -130,58 +130,58 @@ packages: dependency: "direct main" description: name: audioplayers - sha256: b3d02a23918b980073d4a76c4e5659eaf5127251ca91a6a804869ba88ef1c8bf + sha256: a5341380a4f1d3a10a4edde5bb75de5127fe31e0faa8c4d860e64d2f91ad84c7 url: "https://pub.dev" source: hosted - version: "6.2.0" + version: "6.4.0" audioplayers_android: dependency: transitive description: name: audioplayers_android - sha256: "56830454da1a943f33c686cdbfca52a8d24f4c6fd6ce88c6b3501020dbaaf48b" + sha256: f8c90823a45b475d2c129f85bbda9c029c8d4450b172f62e066564c6e170f69a url: "https://pub.dev" source: hosted - version: "5.0.3" + version: "5.2.0" audioplayers_darwin: dependency: transitive description: name: audioplayers_darwin - sha256: "34e1fb3a88ba02566615c6ca7173aa93b39cf61a38a05a729b60ba14c4899169" + sha256: "405cdbd53ebdb4623f1c5af69f275dad4f930ce895512d5261c07cd95d23e778" url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "6.2.0" audioplayers_linux: dependency: transitive description: name: audioplayers_linux - sha256: ce8383c1ff0db1ba93b5b0b8ef5b260ec2d0ce2598ad37dc8b946b773dd2c5fa + sha256: "7e0d081a6a527c53aef9539691258a08ff69a7dc15ef6335fbea1b4b03ebbef0" url: "https://pub.dev" source: hosted - version: "4.1.0" + version: "4.2.0" audioplayers_platform_interface: dependency: transitive description: name: audioplayers_platform_interface - sha256: "6834dd48dfb7bc6c2404998ebdd161f79cd3774a7e6779e1348d54a3bfdcfaa5" + sha256: "77e5fa20fb4a64709158391c75c1cca69a481d35dc879b519e350a05ff520373" url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "7.1.0" audioplayers_web: dependency: transitive description: name: audioplayers_web - sha256: "3609bdf0e05e66a3d9750ee40b1e37f2a622c4edb796cc600b53a90a30a2ace4" + sha256: bd99d8821114747682a2be0adcdb70233d4697af989b549d3a20a0f49f6c9b13 url: "https://pub.dev" source: hosted - version: "5.0.1" + version: "5.1.0" audioplayers_windows: dependency: transitive description: name: audioplayers_windows - sha256: "52b57c706a20fc85daa911be67381b3a5c9d03f8e27cb9fdb226de5bddf293b1" + sha256: "871d3831c25cd2408ddc552600fd4b32fba675943e319a41284704ee038ad563" url: "https://pub.dev" source: hosted - version: "4.1.0" + version: "4.2.0" badges: dependency: "direct main" description: @@ -258,10 +258,10 @@ packages: dependency: transitive description: name: chalkdart - sha256: "08c910ee341fcdd1e46f20ddce59b13c1d85f5d97f2fd2f12014c46ede670e40" + sha256: "7ffc6bd39c81453fb9ba8dbce042a9c960219b75ea1c07196a7fa41c2fab9e86" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "3.0.5" characters: dependency: "direct main" description: @@ -290,10 +290,18 @@ packages: dependency: "direct main" description: name: chewie - sha256: df6711bc3ba165ad19cb496e350250be5673327f79c61c9cc8a15088ed8007ed + sha256: "4d9554a8f87cc2dc6575dfd5ad20a4375015a29edd567fd6733febe6365e2566" url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "1.11.3" + cli_config: + dependency: transitive + description: + name: cli_config + sha256: ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec + url: "https://pub.dev" + source: hosted + version: "0.2.0" cli_util: dependency: transitive description: @@ -354,10 +362,10 @@ packages: dependency: transitive description: name: coverage - sha256: e3493833ea012784c740e341952298f1cc77f1f01b1bbc3eb4eecf6984fb7f43 + sha256: "4b8701e48a58f7712492c9b1f7ba0bb9d525644dd66d023b62e1fc8cdb560c8a" url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "1.14.0" cross_file: dependency: "direct main" description: @@ -402,10 +410,10 @@ packages: dependency: transitive description: name: dart_webrtc - sha256: "03df5b41b23bc185ebcf4b0ffc92d002e295bf56287fb5f9d2c321ddaf7760cc" + sha256: "5b76fd85ac95d6f5dee3e7d7de8d4b51bfbec1dc73804647c6aebb52d6297116" url: "https://pub.dev" source: hosted - version: "1.5.1" + version: "1.5.3+hotfix.2" dbus: dependency: transitive description: @@ -521,10 +529,10 @@ packages: dependency: transitive description: name: ffi - sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" + sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.4" file: dependency: transitive description: @@ -553,10 +561,10 @@ packages: dependency: transitive description: name: file_selector_android - sha256: "98ac58e878b05ea2fdb204e7f4fc4978d90406c9881874f901428e01d3b18fbc" + sha256: "6bba3d590ee9462758879741abc132a19133600dd31832f55627442f1ebd7b54" url: "https://pub.dev" source: hosted - version: "0.5.1+12" + version: "0.5.1+14" file_selector_ios: dependency: transitive description: @@ -577,10 +585,10 @@ packages: dependency: transitive description: name: file_selector_macos - sha256: "271ab9986df0c135d45c3cdb6bd0faa5db6f4976d3e4b437cf7d0f258d941bfc" + sha256: "8c9250b2bd2d8d4268e39c82543bacbaca0fda7d29e0728c3c4bbb7c820fd711" url: "https://pub.dev" source: hosted - version: "0.9.4+2" + version: "0.9.4+3" file_selector_platform_interface: dependency: transitive description: @@ -609,34 +617,34 @@ packages: dependency: "direct main" description: name: firebase_analytics - sha256: "6abce50b79729d8a13c3d4ae05ac612d5ef2f57394330bc5e581ca0e762325f4" + sha256: b5b31727ad7c7f41e139637d1d582e435fd14054abcbd162c64476f90737105c url: "https://pub.dev" source: hosted - version: "11.4.3" + version: "11.4.6" firebase_analytics_platform_interface: dependency: transitive description: name: firebase_analytics_platform_interface - sha256: cd9ae65870bf23ab7e63a04fe9c1b38522fd3556a8c32288afd3f5cb10d4b8f4 + sha256: "86817ee7db6377e09830467932c31644713d8e8915cefff64610ad735612bc7d" url: "https://pub.dev" source: hosted - version: "4.3.3" + version: "4.3.6" firebase_analytics_web: dependency: transitive description: name: firebase_analytics_web - sha256: "5654ed7e39d7a8099e60748924327159785512d78d913e965f9ca93c533af910" + sha256: "4914e184a6aa37811d976db59f95fa8fda1d58db49ab7f73d4d8aac9dd9b19b7" url: "https://pub.dev" source: hosted - version: "0.5.10+9" + version: "0.5.10+12" firebase_core: dependency: "direct main" description: name: firebase_core - sha256: "6a4ea0f1d533443c8afc3d809cd36a4e2b8f2e2e711f697974f55bb31d71d1b8" + sha256: "8cfe3c900512399ce8d50fcc817e5758ff8615eeb6fa5c846a4cc47bbf6353b6" url: "https://pub.dev" source: hosted - version: "3.12.0" + version: "3.13.1" firebase_core_platform_interface: dependency: transitive description: @@ -649,42 +657,42 @@ packages: dependency: transitive description: name: firebase_core_web - sha256: e47f5c2776de018fa19bc9f6f723df136bc75cdb164d64b65305babd715c8e41 + sha256: ddd72baa6f727e5b23f32d9af23d7d453d67946f380bd9c21daf474ee0f7326e url: "https://pub.dev" source: hosted - version: "2.21.0" + version: "2.23.0" firebase_messaging: dependency: "direct main" description: name: firebase_messaging - sha256: "8755a083a20bac4485e8b46d223f6f2eab34e659a76a75f8cf3cded53bc98a15" + sha256: "38111089e511f03daa2c66b4c3614c16421b7d78c84ee04331a0a65b47df4542" url: "https://pub.dev" source: hosted - version: "15.2.3" + version: "15.2.6" firebase_messaging_platform_interface: dependency: transitive description: name: firebase_messaging_platform_interface - sha256: "8cc771079677460de53ad8fcca5bc3074d58c5fc4f9d89b19585e5bfd9c64292" + sha256: ba254769982e5f439e534eed68856181c74e2b3f417c8188afad2bb440807cc7 url: "https://pub.dev" source: hosted - version: "4.6.3" + version: "4.6.6" firebase_messaging_web: dependency: transitive description: name: firebase_messaging_web - sha256: caa73059b0396c97f691683c4cfc3f897c8543801579b7dd4851c431d8e4e091 + sha256: dba89137272aac39e95f71408ba25c33fb8ed903cd5fa8d1e49b5cd0d96069e0 url: "https://pub.dev" source: hosted - version: "3.10.3" + version: "3.10.6" fixnum: dependency: transitive description: name: fixnum - sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" flutter: dependency: "direct main" description: flutter @@ -864,10 +872,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "615a505aef59b151b46bbeef55b36ce2b6ed299d160c51d84281946f0aa0ce0e" + sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e url: "https://pub.dev" source: hosted - version: "2.0.24" + version: "2.0.28" flutter_secure_storage: dependency: "direct main" description: @@ -880,10 +888,10 @@ packages: dependency: transitive description: name: flutter_secure_storage_linux - sha256: bf7404619d7ab5c0a1151d7c4e802edad8f33535abfbeff2f9e1fe1274e2d705 + sha256: be76c1d24a97d0b98f8b54bce6b481a380a6590df992d0098f868ad54dc8f688 url: "https://pub.dev" source: hosted - version: "1.2.2" + version: "1.2.3" flutter_secure_storage_macos: dependency: transitive description: @@ -928,10 +936,10 @@ packages: dependency: "direct main" description: name: flutter_svg - sha256: c200fd79c918a40c5cd50ea0877fa13f81bdaf6f0a5d3dbcc2a13e3285d6aa1b + sha256: d44bf546b13025ec7353091516f6881f1d4c633993cb109c3916c3a0159dadf1 url: "https://pub.dev" source: hosted - version: "2.0.17" + version: "2.1.0" flutter_test: dependency: "direct dev" description: flutter @@ -941,10 +949,10 @@ packages: dependency: "direct main" description: name: flutter_tts - sha256: baa3cb6b4990318460fe28bfa8c7869399e97223971532c02bd97c5e876aa3c5 + sha256: bdf2fc4483e74450dc9fc6fe6a9b6a5663e108d4d0dad3324a22c8e26bf48af4 url: "https://pub.dev" source: hosted - version: "4.2.2" + version: "4.2.3" flutter_typeahead: dependency: "direct main" description: @@ -980,10 +988,10 @@ packages: dependency: "direct main" description: name: flutter_webrtc - sha256: "9c4ca34ced1d1b780baf3776557f9edd0af18ce030969346f752e8df455faaab" + sha256: b832dc76c0d1577f14aaf35e9c38d4ed7667cbc89c492b7bf4505d8d5f62e08b url: "https://pub.dev" source: hosted - version: "0.12.10" + version: "0.12.12+hotfix.1" freezed_annotation: dependency: transitive description: @@ -1009,50 +1017,50 @@ packages: dependency: "direct main" description: name: geolocator - sha256: d2ec66329cab29cb297d51d96c067d457ca519dca8589665fa0b82ebacb7dbe4 + sha256: f62bcd90459e63210bbf9c35deb6a51c521f992a78de19a1fe5c11704f9530e2 url: "https://pub.dev" source: hosted - version: "13.0.2" + version: "13.0.4" geolocator_android: dependency: transitive description: name: geolocator_android - sha256: "7aefc530db47d90d0580b552df3242440a10fe60814496a979aa67aa98b1fd47" + sha256: fcb1760a50d7500deca37c9a666785c047139b5f9ee15aa5469fae7dbbe3170d url: "https://pub.dev" source: hosted - version: "4.6.1" + version: "4.6.2" geolocator_apple: dependency: transitive description: name: geolocator_apple - sha256: c4ecead17985ede9634f21500072edfcb3dba0ef7b97f8d7bc556d2d722b3ba3 + sha256: dbdd8789d5aaf14cf69f74d4925ad1336b4433a6efdf2fce91e8955dc921bf22 url: "https://pub.dev" source: hosted - version: "2.3.9" + version: "2.3.13" geolocator_platform_interface: dependency: transitive description: name: geolocator_platform_interface - sha256: "386ce3d9cce47838355000070b1d0b13efb5bc430f8ecda7e9238c8409ace012" + sha256: "30cb64f0b9adcc0fb36f628b4ebf4f731a2961a0ebd849f4b56200205056fe67" url: "https://pub.dev" source: hosted - version: "4.2.4" + version: "4.2.6" geolocator_web: dependency: transitive description: name: geolocator_web - sha256: "2ed69328e05cd94e7eb48bb0535f5fc0c0c44d1c4fa1e9737267484d05c29b5e" + sha256: b1ae9bdfd90f861fde8fd4f209c37b953d65e92823cb73c7dee1fa021b06f172 url: "https://pub.dev" source: hosted - version: "4.1.1" + version: "4.1.3" geolocator_windows: dependency: transitive description: name: geolocator_windows - sha256: "53da08937d07c24b0d9952eb57a3b474e29aae2abf9dd717f7e1230995f13f0e" + sha256: "175435404d20278ffd220de83c2ca293b73db95eafbdc8131fe8609be1421eb6" url: "https://pub.dev" source: hosted - version: "0.2.3" + version: "0.2.5" get: dependency: transitive description: @@ -1097,10 +1105,10 @@ packages: dependency: "direct main" description: name: go_router - sha256: f02fd7d2a4dc512fec615529824fdd217fecb3a3d3de68360293a551f21634b3 + sha256: "0b1e06223bee260dee31a171fb1153e306907563a0b0225e8c1733211911429a" url: "https://pub.dev" source: hosted - version: "14.8.1" + version: "15.1.2" graphs: dependency: transitive description: @@ -1153,10 +1161,10 @@ packages: dependency: "direct main" description: name: html - sha256: "1fc58edeaec4307368c60d59b7e15b9d658b57d7f3125098b6294153c75337ec" + sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602" url: "https://pub.dev" source: hosted - version: "0.15.5" + version: "0.15.6" html_unescape: dependency: transitive description: @@ -1169,10 +1177,10 @@ packages: dependency: "direct main" description: name: http - sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f + sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" http_multi_server: dependency: transitive description: @@ -1209,10 +1217,10 @@ packages: dependency: transitive description: name: image_picker_android - sha256: "82652a75e3dd667a91187769a6a2cc81bd8c111bbead698d8e938d2b63e5e89a" + sha256: "317a5d961cec5b34e777b9252393f2afbd23084aa6e60fcf601dcf6341b9ebeb" url: "https://pub.dev" source: hosted - version: "0.8.12+21" + version: "0.8.12+23" image_picker_for_web: dependency: transitive description: @@ -1233,10 +1241,10 @@ packages: dependency: transitive description: name: image_picker_linux - sha256: "4ed1d9bb36f7cd60aa6e6cd479779cc56a4cb4e4de8f49d487b1aaad831300fa" + sha256: "34a65f6740df08bbbeb0a1abd8e6d32107941fd4868f67a507b25601651022c9" url: "https://pub.dev" source: hosted - version: "0.2.1+1" + version: "0.2.1+2" image_picker_macos: dependency: transitive description: @@ -1273,18 +1281,18 @@ packages: dependency: "direct main" description: name: in_app_purchase - sha256: "11a40f148eeb4f681a0572003e2b33432e110c90c1bbb4f9ef83b81ec0c4f737" + sha256: "5cddd7f463f3bddb1d37a72b95066e840d5822d66291331d7f8f05ce32c24b6c" url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.3" in_app_purchase_android: dependency: transitive description: name: in_app_purchase_android - sha256: "45ae4fe253f85b4fcc58b421fe137f6e48aca16bf8a618cd760cb0542e7f854e" + sha256: fd76e5612da6facadcfe8a3477da092908227260a9f6ec7db9a66dd989c69b02 url: "https://pub.dev" source: hosted - version: "0.4.0" + version: "0.4.0+2" in_app_purchase_platform_interface: dependency: transitive description: @@ -1297,10 +1305,10 @@ packages: dependency: transitive description: name: in_app_purchase_storekit - sha256: "276831961023055b55a2156c1fc043f50f6215ff49fb0f5f2273da6eeb510ecf" + sha256: "9c2b438aa8ef95ac1c1f5ab1aaace8d6edd0ba3745b8b8df832f7baa2e7492f7" url: "https://pub.dev" source: hosted - version: "0.3.21" + version: "0.4.1" injector: dependency: transitive description: @@ -1358,18 +1366,18 @@ packages: dependency: transitive description: name: just_audio_platform_interface - sha256: "271b93b484c6f494ecd72a107fffbdb26b425f170c665b9777a0a24a726f2f24" + sha256: "4cd94536af0219fa306205a58e78d67e02b0555283c1c094ee41e402a14a5c4a" url: "https://pub.dev" source: hosted - version: "4.4.0" + version: "4.5.0" just_audio_web: dependency: transitive description: name: just_audio_web - sha256: "58915be64509a7683c44bf11cd1a23c15a48de104927bee116e3c63c8eeea0d4" + sha256: "6ba8a2a7e87d57d32f0f7b42856ade3d6a9fbe0f1a11fabae0a4f00bb73f0663" url: "https://pub.dev" source: hosted - version: "0.4.14" + version: "0.4.16" jwt_decode: dependency: "direct main" description: @@ -1494,19 +1502,19 @@ packages: dependency: "direct main" description: name: material_symbols_icons - sha256: "1403944c2a68dbdf934fca2b2115a372e70a4a185c136ab71a9d16e2108d0b14" + sha256: "7c50901b39d1ad645ee25d920aed008061e1fd541a897b4ebf2c01d966dbf16b" url: "https://pub.dev" source: hosted - version: "4.2805.1" + version: "4.2815.1" matrix: dependency: "direct main" description: path: "." - ref: disable-space-hierarchy-cache - resolved-ref: "8f62b78df9cea6490ee8b23802e46d7b320aeb83" + ref: main + resolved-ref: "3fb6836b3f8b37091b5874b194aa25b17bb12b32" url: "https://github.com/pangeachat/matrix-dart-sdk.git" source: git - version: "0.38.0" + version: "0.40.0" meta: dependency: transitive description: @@ -1535,10 +1543,10 @@ packages: dependency: "direct dev" description: name: msix - sha256: c50d6bd1aafe0d071a3c1e5a5ccb056404502935cb0a549e3178c4aae16caf33 + sha256: edde648a8133bf301883c869d19d127049683037c65ff64173ba526ac7a8af2f url: "https://pub.dev" source: hosted - version: "3.16.8" + version: "3.16.9" native_imaging: dependency: "direct main" description: @@ -1575,10 +1583,10 @@ packages: dependency: transitive description: name: olm - sha256: "3306bf534ceb914fd148b3b4a3d603fb5e067b2e6da8304025b47c24cfdf6b46" + sha256: "6a3fe1e5170b954dd9e4ba3b27513e6aa9b7591eb7bb0d7f6f32140b7f140c6f" url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "3.1.0" open_file: dependency: "direct main" description: @@ -1655,26 +1663,26 @@ packages: dependency: transitive description: name: package_config - sha256: "92d4488434b520a62570293fbd33bb556c7d49230791c1b4bbd973baf6d2dc67" + sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.2.0" package_info_plus: dependency: "direct main" description: name: package_info_plus - sha256: "67eae327b1b0faf761964a1d2e5d323c797f3799db0e85aa232db8d9e922bc35" + sha256: "7976bfe4c583170d6cdc7077e3237560b364149fcd268b5f53d95a991963b191" url: "https://pub.dev" source: hosted - version: "8.2.1" + version: "8.3.0" package_info_plus_platform_interface: dependency: transitive description: name: package_info_plus_platform_interface - sha256: "205ec83335c2ab9107bbba3f8997f9356d72ca3c715d2f038fc773d0366b4c76" + sha256: "6c935fb612dff8e3cc9632c2b301720c77450a126114126ffaafe28d2e87956c" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.2.0" pana: dependency: transitive description: @@ -1719,10 +1727,10 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "4adf4fd5423ec60a29506c76581bc05854c55e3a0b72d35bb28d661c9686edf2" + sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9 url: "https://pub.dev" source: hosted - version: "2.2.15" + version: "2.2.17" path_provider_foundation: dependency: transitive description: @@ -1783,10 +1791,10 @@ packages: dependency: transitive description: name: permission_handler_apple - sha256: f84a188e79a35c687c132a0a0556c254747a08561e99ab933f12f6ca71ef3c98 + sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 url: "https://pub.dev" source: hosted - version: "9.4.6" + version: "9.4.7" permission_handler_html: dependency: transitive description: @@ -1815,10 +1823,10 @@ packages: dependency: transitive description: name: petitparser - sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 + sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646" url: "https://pub.dev" source: hosted - version: "6.0.2" + version: "6.1.0" platform: dependency: transitive description: @@ -1827,14 +1835,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.6" - platform_detect: - dependency: transitive - description: - name: platform_detect - sha256: a62f99417fc4fa2d099ce0ccdbb1bd3977920f2a64292c326271f049d4bc3a4f - url: "https://pub.dev" - source: hosted - version: "2.1.0" plugin_platform_interface: dependency: transitive description: @@ -1871,10 +1871,10 @@ packages: dependency: transitive description: name: pointer_interceptor_web - sha256: "7a7087782110f8c1827170660b09f8aa893e0e9a61431dbbe2ac3fc482e8c044" + sha256: "460b600e71de6fcea2b3d5f662c92293c049c4319e27f0829310e5a953b3ee2a" url: "https://pub.dev" source: hosted - version: "0.10.2+1" + version: "0.10.3" polylabel: dependency: transitive description: @@ -1895,10 +1895,10 @@ packages: dependency: "direct main" description: name: pretty_qr_code - sha256: cbdb4af29da1c1fa21dd76f809646c591320ab9e435d3b0eab867492d43607d5 + sha256: b078bd5d51956dea4342378af1b092ad962b81bdbb55b10fffce03461da8db74 url: "https://pub.dev" source: hosted - version: "3.3.0" + version: "3.4.0" process: dependency: transitive description: @@ -1927,18 +1927,18 @@ packages: dependency: "direct main" description: name: provider - sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c + sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84" url: "https://pub.dev" source: hosted - version: "6.1.2" + version: "6.1.5" pub_semver: dependency: transitive description: name: pub_semver - sha256: "7b3cfbf654f3edd0c6298ecd5be782ce997ddf0e00531b9464b55245185bbbbd" + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" url: "https://pub.dev" source: hosted - version: "2.1.5" + version: "2.2.0" pubspec_parse: dependency: transitive description: @@ -1959,10 +1959,10 @@ packages: dependency: "direct main" description: name: purchases_flutter - sha256: "88099e7b2a9f140d565d6ded919b9b3b2a0187b59542e46abee1b16b319c2025" + sha256: "0bbb149e5a875f6f39ca913ea70f9007a2ba1c2556d0c3a99e76ef6d169dac4d" url: "https://pub.dev" source: hosted - version: "8.5.1" + version: "8.10.0" qr: dependency: transitive description: @@ -2015,10 +2015,10 @@ packages: dependency: transitive description: name: record_android - sha256: "36e009c3b83e034321a44a7683d95dd055162a231f95600f7da579dcc79701f9" + sha256: "97d7122455f30de89a01c6c244c839085be6b12abca251fc0e78f67fed73628b" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" record_darwin: dependency: transitive description: @@ -2047,18 +2047,18 @@ packages: dependency: transitive description: name: record_web - sha256: ef6f5c7760f22d6785ee8d97a2133ff14cb839c65e525ad831eb7f891d83f592 + sha256: "024c81eb7f51468b1833a3eca8b461c7ca25c04899dba37abe580bb57afd32e4" url: "https://pub.dev" source: hosted - version: "1.1.5" + version: "1.1.8" record_windows: dependency: transitive description: name: record_windows - sha256: "26bfebc8899f4fa5b6b044089887dc42115820cd6a907bdf40c16e909e87de0a" + sha256: "85a22fc97f6d73ecd67c8ba5f2f472b74ef1d906f795b7970f771a0914167e99" url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.6" retry: dependency: transitive description: @@ -2119,10 +2119,10 @@ packages: dependency: transitive description: name: sentry - sha256: "90c2f956c146bcc9c4843406dd4a65d08b25575828dc2ad51de0ca5cd713209f" + sha256: "599701ca0693a74da361bc780b0752e1abc98226cf5095f6b069648116c896bb" url: "https://pub.dev" source: hosted - version: "8.13.2" + version: "8.14.2" sentry_dart_plugin: dependency: "direct dev" description: @@ -2135,10 +2135,10 @@ packages: dependency: "direct main" description: name: sentry_flutter - sha256: ee6b41956ad570706bf5c2489915d71d75522d154200c0df24be2c4e5654ca21 + sha256: "5ba2cf40646a77d113b37a07bd69f61bb3ec8a73cbabe5537b05a7c89d2656f8" url: "https://pub.dev" source: hosted - version: "8.13.2" + version: "8.14.2" share_plus: dependency: "direct main" description: @@ -2159,18 +2159,18 @@ packages: dependency: "direct main" description: name: shared_preferences - sha256: "846849e3e9b68f3ef4b60c60cf4b3e02e9321bc7f4d8c4692cf87ffa82fc8a3a" + sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5" url: "https://pub.dev" source: hosted - version: "2.5.2" + version: "2.5.3" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: a768fc8ede5f0c8e6150476e14f38e2417c0864ca36bb4582be8e21925a03c22 + sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac" url: "https://pub.dev" source: hosted - version: "2.4.6" + version: "2.4.10" shared_preferences_foundation: dependency: transitive description: @@ -2239,10 +2239,10 @@ packages: dependency: transitive description: name: shelf_web_socket - sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67 + sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.0" shimmer: dependency: "direct main" description: @@ -2300,42 +2300,42 @@ packages: dependency: transitive description: name: sqflite - sha256: "2d7299468485dca85efeeadf5d38986909c5eb0cd71fd3db2c2f000e6c9454bb" + sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03 url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" sqflite_android: dependency: transitive description: name: sqflite_android - sha256: "78f489aab276260cdd26676d2169446c7ecd3484bbd5fead4ca14f3ed4dd9ee3" + sha256: "2b3070c5fa881839f8b402ee4a39c1b4d561704d4ebbbcfb808a119bc2a1701b" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: "761b9740ecbd4d3e66b8916d784e581861fd3c3553eda85e167bc49fdb68f709" + sha256: "84731e8bfd8303a3389903e01fb2141b6e59b5973cacbb0929021df08dddbe8b" url: "https://pub.dev" source: hosted - version: "2.5.4+6" + version: "2.5.5" sqflite_common_ffi: dependency: "direct main" description: name: sqflite_common_ffi - sha256: "883dd810b2b49e6e8c3b980df1829ef550a94e3f87deab5d864917d27ca6bf36" + sha256: "1f3ef3888d3bfbb47785cc1dda0dc7dd7ebd8c1955d32a9e8e9dae1e38d1c4c1" url: "https://pub.dev" source: hosted - version: "2.3.4+4" + version: "2.3.5" sqflite_darwin: dependency: transitive description: name: sqflite_darwin - sha256: "22adfd9a2c7d634041e96d6241e6e1c8138ca6817018afc5d443fef91dcefa9c" + sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3" url: "https://pub.dev" source: hosted - version: "2.4.1+1" + version: "2.4.2" sqflite_platform_interface: dependency: transitive description: @@ -2348,18 +2348,18 @@ packages: dependency: "direct main" description: name: sqlcipher_flutter_libs - sha256: a6a08d3082c1deaacc8f6670c78a9c2384991102db5b234d5293aa2c65e87f61 + sha256: "777c3469ada8fe6b808bd50f1c752cdd2ca1b1f3cf751d434502ead15334f3a5" url: "https://pub.dev" source: hosted - version: "0.6.4" + version: "0.6.6" sqlite3: dependency: transitive description: name: sqlite3 - sha256: "32b632dda27d664f85520093ed6f735ae5c49b5b75345afb8b19411bc59bb53d" + sha256: c0503c69b44d5714e6abbf4c1f51a3c3cc42b75ce785f44404765e4635481d38 url: "https://pub.dev" source: hosted - version: "2.7.4" + version: "2.7.6" stack_trace: dependency: transitive description: @@ -2412,10 +2412,10 @@ packages: dependency: transitive description: name: synchronized - sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225" + sha256: "0669c70faae6270521ee4f05bffd2919892d42d1276e6c495be80174b6bc0ef6" url: "https://pub.dev" source: hosted - version: "3.3.0+3" + version: "3.3.1" system_info2: dependency: transitive description: @@ -2613,18 +2613,18 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "6fc2f56536ee873eeb867ad176ae15f304ccccc357848b351f6f0d8d4a40d193" + sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79" url: "https://pub.dev" source: hosted - version: "6.3.14" + version: "6.3.16" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "16a513b6c12bb419304e72ea0ae2ab4fed569920d1c7cb850263fe3acc824626" + sha256: "7f2022359d4c099eea7df3fdf739f7d3d3b9faf3166fb1dd390775176e0b76cb" url: "https://pub.dev" source: hosted - version: "6.3.2" + version: "6.3.3" url_launcher_linux: dependency: transitive description: @@ -2653,10 +2653,10 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: "3ba963161bd0fe395917ba881d320b9c4f6dd3c4a233da62ab18a5025c85f1e9" + sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" url_launcher_windows: dependency: transitive description: @@ -2693,10 +2693,10 @@ packages: dependency: transitive description: name: vector_graphics_compiler - sha256: "1b4b9e706a10294258727674a340ae0d6e64a7231980f9f9a3d12e4b42407aad" + sha256: "557a315b7d2a6dbb0aaaff84d857967ce6bdc96a63dc6ee2a57ce5a6ee5d3331" url: "https://pub.dev" source: hosted - version: "1.1.16" + version: "1.1.17" vector_math: dependency: transitive description: @@ -2717,26 +2717,26 @@ packages: dependency: "direct main" description: name: video_player - sha256: "48941c8b05732f9582116b1c01850b74dbee1d8520cd7e34ad4609d6df666845" + sha256: "0d55b1f1a31e5ad4c4967bfaa8ade0240b07d20ee4af1dfef5f531056512961a" url: "https://pub.dev" source: hosted - version: "2.9.3" + version: "2.10.0" video_player_android: dependency: transitive description: name: video_player_android - sha256: "7018dbcb395e2bca0b9a898e73989e67c0c4a5db269528e1b036ca38bcca0d0b" + sha256: "4a5135754a62dbc827a64a42ef1f8ed72c962e191c97e2d48744225c2b9ebb73" url: "https://pub.dev" source: hosted - version: "2.7.17" + version: "2.8.7" video_player_avfoundation: dependency: transitive description: name: video_player_avfoundation - sha256: "84b4752745eeccb6e75865c9aab39b3d28eb27ba5726d352d45db8297fbd75bc" + sha256: "9ee764e5cd2fc1e10911ae8ad588e1a19db3b6aa9a6eb53c127c42d3a3c3f22f" url: "https://pub.dev" source: hosted - version: "2.7.0" + version: "2.7.1" video_player_platform_interface: dependency: transitive description: @@ -2749,10 +2749,10 @@ packages: dependency: transitive description: name: video_player_web - sha256: "3ef40ea6d72434edbfdba4624b90fd3a80a0740d260667d91e7ecd2d79e13476" + sha256: e8bba2e5d1e159d5048c9a491bb2a7b29c535c612bb7d10c1e21107f5bd365ba url: "https://pub.dev" source: hosted - version: "2.3.4" + version: "2.3.5" vm_service: dependency: transitive description: @@ -2765,18 +2765,18 @@ packages: dependency: "direct main" description: name: wakelock_plus - sha256: "36c88af0b930121941345306d259ec4cc4ecca3b151c02e3a9e71aede83c615e" + sha256: a474e314c3e8fb5adef1f9ae2d247e57467ad557fa7483a2b895bc1b421c5678 url: "https://pub.dev" source: hosted - version: "1.2.10" + version: "1.3.2" wakelock_plus_platform_interface: dependency: transitive description: name: wakelock_plus_platform_interface - sha256: "70e780bc99796e1db82fe764b1e7dcb89a86f1e5b3afb1db354de50f2e41eb7a" + sha256: e10444072e50dbc4999d7316fd303f7ea53d31c824aa5eb05d7ccbdd98985207 url: "https://pub.dev" source: hosted - version: "1.2.2" + version: "1.2.3" watcher: dependency: transitive description: @@ -2789,26 +2789,26 @@ packages: dependency: transitive description: name: web - sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" web_socket: dependency: transitive description: name: web_socket - sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" url: "https://pub.dev" source: hosted - version: "0.1.6" + version: "1.0.1" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: "0b8e2457400d8a859b7b2030786835a28a8e80836ef64402abef392ff4f1d0e5" + sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.3" webdriver: dependency: transitive description: @@ -2829,10 +2829,10 @@ packages: dependency: "direct main" description: name: webrtc_interface - sha256: e92afec11152a9ccb5c9f35482754edd99696e886ab6acaf90c06dd2d09f09eb + sha256: "86fe3afc81a08481dfb25cf14a5a94e27062ecef25544783f352c914e0bbc1ca" url: "https://pub.dev" source: hosted - version: "1.2.2+hotfix.1" + version: "1.2.2+hotfix.2" win32: dependency: "direct overridden" description: @@ -2890,5 +2890,5 @@ packages: source: hosted version: "3.1.3" sdks: - dart: ">=3.7.0-0 <4.0.0" - flutter: ">=3.27.0" + dart: ">=3.7.0 <4.0.0" + flutter: ">=3.29.0" diff --git a/pubspec.yaml b/pubspec.yaml index b8b738d3d..441d6a5bf 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -18,7 +18,7 @@ dependencies: async: ^2.11.0 badges: ^3.1.2 blurhash_dart: ^1.2.1 - chewie: ^1.8.1 + chewie: ^1.11.0 collection: ^1.18.0 cross_file: ^0.3.4+2 cupertino_icons: any @@ -56,7 +56,7 @@ dependencies: flutter_web_auth_2: ^3.1.1 # Version 4 blocked by https://github.com/MixinNetwork/flutter-plugins/issues/379 flutter_webrtc: ^0.12.9 geolocator: ^13.0.1 - go_router: ^14.8.1 + go_router: ^15.1.2 handy_window: ^0.4.0 hive: ^2.2.3 hive_flutter: ^1.1.0 @@ -72,8 +72,8 @@ dependencies: matrix: git: url: https://github.com/pangeachat/matrix-dart-sdk.git # repo - ref: disable-space-hierarchy-cache # branch - # matrix: ^0.39.1 + ref: main + # matrix: ^0.40.0 # Pangea# mime: ^1.0.6 native_imaging: ^0.2.0 diff --git a/test/utils/test_client.dart b/test/utils/test_client.dart index 7cbe72f71..c27faa8f6 100644 --- a/test/utils/test_client.dart +++ b/test/utils/test_client.dart @@ -3,7 +3,7 @@ import 'package:matrix/encryption/utils/key_verification.dart'; import 'package:matrix/matrix.dart'; -import 'package:fluffychat/utils/matrix_sdk_extensions/flutter_hive_collections_database.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart'; Future prepareTestClient({ bool loggedIn = false, @@ -22,7 +22,7 @@ Future prepareTestClient({ importantStateEvents: { 'im.ponies.room_emotes', // we want emotes to work properly }, - databaseBuilder: FlutterHiveCollectionsDatabase.databaseBuilder, + databaseBuilder: flutterMatrixSdkDatabaseBuilder, supportedLoginTypes: { AuthenticationTypes.password, AuthenticationTypes.sso,