diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 59abca6b5..f7c9e16d4 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -359,7 +359,7 @@ class ChatListController extends State final roomId = response.roomId; if (roomId != null) { roomSearchResult.chunk.add( - PublicRoomsChunk( + PublishedRoomsChunk( name: searchQuery, guestCanJoin: false, numJoinedMembers: 0, diff --git a/lib/pages/chat_list/chat_list_body.dart b/lib/pages/chat_list/chat_list_body.dart index 7e998777c..705197545 100644 --- a/lib/pages/chat_list/chat_list_body.dart +++ b/lib/pages/chat_list/chat_list_body.dart @@ -415,7 +415,7 @@ class PublicRoomsHorizontalList extends StatelessWidget { required this.publicRooms, }); - final List? publicRooms; + final List? publicRooms; @override Widget build(BuildContext context) { diff --git a/lib/pages/chat_list/space_view.dart b/lib/pages/chat_list/space_view.dart index 294bad50e..33ea75344 100644 --- a/lib/pages/chat_list/space_view.dart +++ b/lib/pages/chat_list/space_view.dart @@ -45,7 +45,7 @@ class SpaceView extends StatefulWidget { } class _SpaceViewState extends State { - final List _discoveredChildren = []; + final List _discoveredChildren = []; final TextEditingController _filterController = TextEditingController(); String? _nextBatch; bool _noMoreRooms = false; @@ -95,7 +95,7 @@ class _SpaceViewState extends State { } } - void _joinChildRoom(SpaceRoomsChunk item) async { + void _joinChildRoom(SpaceRoomsChunk$2 item) async { final client = Matrix.of(context).client; final space = client.getRoomById(widget.spaceId); diff --git a/lib/pages/settings/settings.dart b/lib/pages/settings/settings.dart index 2928126f6..1fd0d5625 100644 --- a/lib/pages/settings/settings.dart +++ b/lib/pages/settings/settings.dart @@ -45,7 +45,11 @@ class SettingsController extends State { final matrix = Matrix.of(context); final success = await showFutureLoadingDialog( context: context, - future: () => matrix.client.setDisplayName(matrix.client.userID!, input), + future: () => matrix.client.setProfileField( + matrix.client.userID!, + 'displayname', + {'displayname': input}, + ), ); if (success.error == null) { updateProfile(); diff --git a/lib/pangea/chat_list/widgets/public_room_bottom_sheet.dart b/lib/pangea/chat_list/widgets/public_room_bottom_sheet.dart index b2894fc27..715918012 100644 --- a/lib/pangea/chat_list/widgets/public_room_bottom_sheet.dart +++ b/lib/pangea/chat_list/widgets/public_room_bottom_sheet.dart @@ -16,7 +16,7 @@ import 'package:fluffychat/widgets/matrix.dart'; class PublicRoomBottomSheet extends StatefulWidget { final String? roomAlias; final BuildContext outerContext; - final PublicRoomsChunk? chunk; + final PublishedRoomsChunk? chunk; final List? via; PublicRoomBottomSheet({ @@ -32,7 +32,7 @@ class PublicRoomBottomSheet extends StatefulWidget { static Future show({ required BuildContext context, String? roomAlias, - PublicRoomsChunk? chunk, + PublishedRoomsChunk? chunk, List? via, }) async { final room = MatrixState.pangeaController.matrixState.client @@ -60,7 +60,7 @@ class PublicRoomBottomSheet extends StatefulWidget { class PublicRoomBottomSheetState extends State { BuildContext get outerContext => widget.outerContext; - PublicRoomsChunk? get chunk => widget.chunk; + PublishedRoomsChunk? get chunk => widget.chunk; String? get roomAlias => widget.roomAlias; List? get via => widget.via; @@ -138,9 +138,9 @@ class PublicRoomBottomSheetState extends State { ); } - bool testRoom(PublicRoomsChunk r) => r.canonicalAlias == roomAlias; + bool testRoom(PublishedRoomsChunk r) => r.canonicalAlias == roomAlias; - Future search() async { + Future search() async { final chunk = this.chunk; if (chunk != null) return chunk; final query = await Matrix.of(outerContext).client.queryPublicRooms( @@ -174,7 +174,7 @@ class PublicRoomBottomSheetState extends State { ), ], ), - body: FutureBuilder( + body: FutureBuilder( future: search(), builder: (context, snapshot) { return Padding( diff --git a/lib/pangea/chat_settings/utils/delete_room.dart b/lib/pangea/chat_settings/utils/delete_room.dart index 4cf22806a..26511f420 100644 --- a/lib/pangea/chat_settings/utils/delete_room.dart +++ b/lib/pangea/chat_settings/utils/delete_room.dart @@ -34,8 +34,8 @@ extension DeleteRoom on Room { await client.delete(id); } - Future> getSpaceChildrenToDelete() async { - final List rooms = []; + Future> getSpaceChildrenToDelete() async { + final List rooms = []; String? nextBatch; int calls = 0; diff --git a/lib/pangea/chat_settings/widgets/delete_space_dialog.dart b/lib/pangea/chat_settings/widgets/delete_space_dialog.dart index 2b16d1d17..c755faacb 100644 --- a/lib/pangea/chat_settings/widgets/delete_space_dialog.dart +++ b/lib/pangea/chat_settings/widgets/delete_space_dialog.dart @@ -23,7 +23,7 @@ class DeleteSpaceDialog extends StatefulWidget { Room room, BuildContext context, ) async { - final resp = await showDialog?>( + final resp = await showDialog?>( context: context, builder: (_) => DeleteSpaceDialog(space: room), ); @@ -40,7 +40,7 @@ class DeleteSpaceDialog extends StatefulWidget { static Future _deleteSpace( Room space, - List rooms, + List rooms, ) async { final List> futures = []; for (final room in rooms) { @@ -66,8 +66,8 @@ class DeleteSpaceDialog extends StatefulWidget { } class DeleteSpaceDialogState extends State { - List _rooms = []; - final List _roomsToDelete = []; + List _rooms = []; + final List _roomsToDelete = []; bool _loadingRooms = true; String? _roomLoadError; @@ -109,7 +109,7 @@ class DeleteSpaceDialogState extends State { void _onRoomSelected( bool? selected, - SpaceRoomsChunk room, + SpaceRoomsChunk$2 room, ) { if (selected == null || (selected && _roomsToDelete.contains(room)) || @@ -134,7 +134,7 @@ class DeleteSpaceDialogState extends State { }); } - List get _selectableRooms { + List get _selectableRooms { return _rooms.where((chunk) { final room = widget.space.client.getRoomById(chunk.roomId); return room != null && diff --git a/lib/pangea/course_chats/course_chats_page.dart b/lib/pangea/course_chats/course_chats_page.dart index a26eeb56d..fd5138e57 100644 --- a/lib/pangea/course_chats/course_chats_page.dart +++ b/lib/pangea/course_chats/course_chats_page.dart @@ -49,7 +49,7 @@ class CourseChatsController extends State String get roomId => widget.roomId; Room? get room => widget.client.getRoomById(widget.roomId); - List? discoveredChildren; + List? discoveredChildren; StreamSubscription? _roomSubscription; String? _nextBatch; bool noMoreRooms = false; @@ -109,7 +109,7 @@ class CourseChatsController extends State List joinedActivities() => joinedRooms.where((r) => r.isActivitySession).toList(); - List get discoveredGroupChats => (discoveredChildren ?? []) + List get discoveredGroupChats => (discoveredChildren ?? []) .where( (chunk) => chunk.roomType == null || @@ -174,7 +174,7 @@ class CourseChatsController extends State Future _joinDefaultChats() async { if (discoveredChildren == null) return; - final found = List.from(discoveredChildren!); + final found = List.from(discoveredChildren!); final List joinFutures = []; for (final chunk in found) { @@ -269,7 +269,7 @@ class CourseChatsController extends State // Failsafe to prevent too many calls to the server in a row int callsToServer = 0; - List? currentHierarchy = + List? currentHierarchy = discoveredChildren == null || reload ? null : List.from(discoveredChildren!); @@ -443,7 +443,7 @@ class CourseChatsController extends State NavigationUtil.goToSpaceRoute(room.id, [], context); } - void joinChildRoom(SpaceRoomsChunk item) async { + void joinChildRoom(SpaceRoomsChunk$2 item) async { final space = widget.client.getRoomById(widget.roomId); final roomId = await PublicRoomBottomSheet.show( context: context, @@ -503,7 +503,7 @@ class CourseChatsController extends State bool _includeSpaceChild( Room space, - SpaceRoomsChunk hierarchyMember, + SpaceRoomsChunk$2 hierarchyMember, ) { if (!mounted) return false; final bool isAnalyticsRoom = @@ -519,11 +519,11 @@ class CourseChatsController extends State return !isAnalyticsRoom && (isMember || isSuggested); } - List _filterHierarchyResponse( + List _filterHierarchyResponse( Room space, - List hierarchyResponse, + List hierarchyResponse, ) { - final List filteredChildren = []; + final List filteredChildren = []; for (final child in hierarchyResponse) { if (child.roomId == widget.roomId) { continue; @@ -616,8 +616,8 @@ class CourseChatsController extends State } int _sortSpaceChildren( - SpaceRoomsChunk a, - SpaceRoomsChunk b, + SpaceRoomsChunk$2 a, + SpaceRoomsChunk$2 b, ) { final bool aIsSpace = a.roomType == 'm.space'; final bool bIsSpace = b.roomType == 'm.space'; diff --git a/lib/pangea/course_chats/extended_space_rooms_chunk.dart b/lib/pangea/course_chats/extended_space_rooms_chunk.dart index e3adbd56a..fd50ad059 100644 --- a/lib/pangea/course_chats/extended_space_rooms_chunk.dart +++ b/lib/pangea/course_chats/extended_space_rooms_chunk.dart @@ -4,7 +4,7 @@ import 'package:fluffychat/pangea/activity_planner/activity_plan_model.dart'; import 'package:fluffychat/pangea/activity_sessions/activity_role_model.dart'; class ExtendedSpaceRoomsChunk { - final SpaceRoomsChunk chunk; + final SpaceRoomsChunk$2 chunk; final List assignedRoles; final ActivityPlanModel activity; diff --git a/lib/pangea/course_chats/unjoined_chat_list_item.dart b/lib/pangea/course_chats/unjoined_chat_list_item.dart index c95407c1a..0d2372812 100644 --- a/lib/pangea/course_chats/unjoined_chat_list_item.dart +++ b/lib/pangea/course_chats/unjoined_chat_list_item.dart @@ -8,7 +8,7 @@ import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/matrix.dart'; class UnjoinedChatListItem extends StatelessWidget { - final SpaceRoomsChunk chunk; + final SpaceRoomsChunk$2 chunk; final VoidCallback onTap; const UnjoinedChatListItem({ super.key, diff --git a/lib/pangea/download/download_file_util.dart b/lib/pangea/download/download_file_util.dart index 95b3111ea..045665f82 100644 --- a/lib/pangea/download/download_file_util.dart +++ b/lib/pangea/download/download_file_util.dart @@ -7,7 +7,7 @@ import 'package:path_provider/path_provider.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:universal_html/html.dart' as webfile; -import 'package:fluffychat/pages/chat/recording_dialog.dart'; +import 'package:fluffychat/pages/chat/recording_view_model.dart'; import 'package:fluffychat/pangea/download/download_type_enum.dart'; class DownloadUtil { diff --git a/lib/pangea/extensions/pangea_rooms_chunk_extension.dart b/lib/pangea/extensions/pangea_rooms_chunk_extension.dart index 8906094e8..bf9dc4d99 100644 --- a/lib/pangea/extensions/pangea_rooms_chunk_extension.dart +++ b/lib/pangea/extensions/pangea_rooms_chunk_extension.dart @@ -4,7 +4,7 @@ import 'package:matrix/matrix_api_lite/generated/model.dart'; import 'package:fluffychat/pangea/spaces/space_constants.dart'; -extension PangeaRoomsChunk on PublicRoomsChunk { +extension PangeaRoomsChunk on PublishedRoomsChunk { /// Use Random with a seed to get the default /// avatar associated with this space String defaultAvatar() { diff --git a/lib/pangea/login/pages/create_pangea_account_page.dart b/lib/pangea/login/pages/create_pangea_account_page.dart index 69347f823..eaa7c38fc 100644 --- a/lib/pangea/login/pages/create_pangea_account_page.dart +++ b/lib/pangea/login/pages/create_pangea_account_page.dart @@ -118,7 +118,11 @@ class CreatePangeaAccountPageState extends State { final selectedAvatarPath = avatarPath(random.nextInt(4) + 1); final avatarUrl = Uri.parse("${AppConfig.assetsBaseURL}/$selectedAvatarPath"); - await client.setAvatarUrl(client.userID!, avatarUrl); + await client.setProfileField( + client.userID!, + 'avatar_url', + {'avatar_url': avatarUrl}, + ); } catch (err, s) { ErrorHandler.logError( e: err, diff --git a/lib/pangea/login/pages/signup.dart b/lib/pangea/login/pages/signup.dart index a30527363..2777aba63 100644 --- a/lib/pangea/login/pages/signup.dart +++ b/lib/pangea/login/pages/signup.dart @@ -195,9 +195,10 @@ class SignupPageController extends State { GoogleAnalytics.login("pangea", registerRes?.userId); if (displayname != localPart && client.userID != null) { - await client.setDisplayName( + await client.setProfileField( client.userID!, - displayname, + 'displayname', + {'displayname': displayname}, ); } } diff --git a/lib/pangea/spaces/public_course_extension.dart b/lib/pangea/spaces/public_course_extension.dart index 8d3722c35..cd3a6d168 100644 --- a/lib/pangea/spaces/public_course_extension.dart +++ b/lib/pangea/spaces/public_course_extension.dart @@ -63,7 +63,7 @@ class PublicCoursesResponse extends GetPublicRoomsResponse { } class PublicCoursesChunk { - final PublicRoomsChunk room; + final PublishedRoomsChunk room; final String courseId; PublicCoursesChunk({ @@ -73,7 +73,7 @@ class PublicCoursesChunk { factory PublicCoursesChunk.fromJson(Map json) { return PublicCoursesChunk( - room: PublicRoomsChunk.fromJson(json), + room: PublishedRoomsChunk.fromJson(json), courseId: json['course_id'] as String, ); } diff --git a/lib/utils/localized_exception_extension.dart b/lib/utils/localized_exception_extension.dart index 0b1989b46..e1fdea9cf 100644 --- a/lib/utils/localized_exception_extension.dart +++ b/lib/utils/localized_exception_extension.dart @@ -8,7 +8,7 @@ import 'package:matrix/encryption.dart'; import 'package:matrix/matrix.dart'; import 'package:fluffychat/l10n/l10n.dart'; -import 'package:fluffychat/pages/chat/recording_dialog.dart'; +import 'package:fluffychat/pages/chat/recording_view_model.dart'; import 'package:fluffychat/pangea/analytics_practice/analytics_practice_session_repo.dart'; import 'package:fluffychat/pangea/common/network/requests.dart'; import 'package:fluffychat/utils/other_party_can_receive.dart'; diff --git a/lib/utils/matrix_sdk_extensions/matrix_locals.dart b/lib/utils/matrix_sdk_extensions/matrix_locals.dart index 123580134..f5bb236f6 100644 --- a/lib/utils/matrix_sdk_extensions/matrix_locals.dart +++ b/lib/utils/matrix_sdk_extensions/matrix_locals.dart @@ -363,4 +363,7 @@ class MatrixLocals extends MatrixLocalizations { ? '' : '${duration.inMinutes.toString().padLeft(2, '0')}:${(duration.inSeconds % 60).toString().padLeft(2, '0')}', ); + + @override + String get refreshingLastEvent => l10n.loadingPleaseWait; } diff --git a/lib/widgets/adaptive_dialogs/public_room_dialog.dart b/lib/widgets/adaptive_dialogs/public_room_dialog.dart index a018b8e25..09e125613 100644 --- a/lib/widgets/adaptive_dialogs/public_room_dialog.dart +++ b/lib/widgets/adaptive_dialogs/public_room_dialog.dart @@ -18,7 +18,7 @@ import 'adaptive_dialog_action.dart'; class PublicRoomDialog extends StatelessWidget { final String? roomAlias; - final PublicRoomsChunk? chunk; + final PublishedRoomsChunk? chunk; final List? via; const PublicRoomDialog({super.key, this.roomAlias, this.chunk, this.via}); @@ -68,9 +68,9 @@ class PublicRoomDialog extends StatelessWidget { return; } - bool _testRoom(PublicRoomsChunk r) => r.canonicalAlias == roomAlias; + bool _testRoom(PublishedRoomsChunk r) => r.canonicalAlias == roomAlias; - Future _search(BuildContext context) async { + Future _search(BuildContext context) async { final chunk = this.chunk; if (chunk != null) return chunk; final query = await Matrix.of(context).client.queryPublicRooms( @@ -100,7 +100,7 @@ class PublicRoomDialog extends StatelessWidget { ), content: ConstrainedBox( constraints: const BoxConstraints(maxWidth: 256, maxHeight: 256), - child: FutureBuilder( + child: FutureBuilder( future: _search(context), builder: (context, snapshot) { final theme = Theme.of(context); diff --git a/pubspec.lock b/pubspec.lock index 859fc5d1e..8d0ecc6b5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -521,14 +521,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.9.9" - enhanced_enum: - dependency: transitive - description: - name: enhanced_enum - sha256: "074c5a8b9664799ca91e1e8b68003b8694cb19998671cbafd9c7779c13fcdecf" - url: "https://pub.dev" - source: hosted - version: "0.2.4" equatable: dependency: transitive description: @@ -856,14 +848,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.1" - flutter_openssl_crypto: - dependency: "direct main" - description: - name: flutter_openssl_crypto - sha256: "293b4fcda13ab0710645a16e82f3d5b7de19bfc0ab2d06bcdb87637222eda5e1" - url: "https://pub.dev" - source: hosted - version: "0.5.0" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -876,10 +860,10 @@ packages: dependency: transitive description: name: flutter_rust_bridge - sha256: b416ff56002789e636244fb4cc449f587656eff995e5a7169457eb0593fcaddb + sha256: "37ef40bc6f863652e865f0b2563ea07f0d3c58d8efad803cc01933a4b2ee067e" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.1" flutter_secure_storage: dependency: "direct main" description: @@ -962,10 +946,10 @@ packages: dependency: "direct main" description: name: flutter_vodozemac - sha256: "2405ca121b84d1cd83200a14021022e1691b123a23bcefc36adc7740cefbc1f9" + sha256: "54cd3790b6dfdc1afce928f8c46f7eeea9e4f8326f077400894935926f202057" url: "https://pub.dev" source: hosted - version: "0.2.2" + version: "0.3.0" flutter_web_auth_2: dependency: "direct main" description: @@ -1358,6 +1342,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.6.7" + js_interop: + dependency: transitive + description: + name: js_interop + sha256: "7ec859c296958ccea34dc770504bd3ff4ae52fdd9e7eeb2bacc7081ad476a1f5" + url: "https://pub.dev" + source: hosted + version: "0.0.1" json_annotation: dependency: transitive description: @@ -1521,12 +1513,10 @@ packages: matrix: dependency: "direct main" description: - path: "." - ref: merge-upstream - resolved-ref: "1e5975c8dae6af46444f07868bb2ddf5689c3cbe" - url: "https://github.com/pangeachat/matrix-dart-sdk.git" - source: git - version: "1.0.1" + path: "/Users/ggurdin/pangea/matrix-dart-sdk" + relative: false + source: path + version: "2.0.1" meta: dependency: transitive description: @@ -2704,10 +2694,10 @@ packages: dependency: transitive description: name: vodozemac - sha256: dba14017e042748fb22d270e8ab1d3e46965b89788dd3857dba938ec07571968 + sha256: "95cac62ffab94db99e134c8f9aac198f8131a4eed0bed76a6cfc9c72add229b9" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.3.0" wakelock_plus: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index ac487a95f..ff465e306 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -44,10 +44,9 @@ dependencies: sdk: flutter flutter_map: ^8.2.2 flutter_new_badger: ^1.1.1 - flutter_openssl_crypto: ^0.5.0 flutter_secure_storage: ^9.2.4 flutter_shortcuts_new: ^2.0.0 - flutter_vodozemac: ^0.2.2 + flutter_vodozemac: ^0.3.0 flutter_web_auth_2: ^3.1.1 # Version 4 blocked by https://github.com/MixinNetwork/flutter-plugins/issues/379 flutter_webrtc: ^1.2.0 geolocator: ^14.0.2 @@ -62,11 +61,13 @@ dependencies: latlong2: ^0.9.1 linkify: ^5.0.0 # #Pangea - # matrix: ^2.0.1 + # matrix: + # git: https://github.com/famedly/matrix-dart-sdk.git matrix: - git: - url: https://github.com/pangeachat/matrix-dart-sdk.git # repo - ref: merge-upstream + path: /Users/ggurdin/pangea/matrix-dart-sdk + # git: + # url: https://github.com/pangeachat/matrix-dart-sdk.git # repo + # ref: merge-upstream # Pangea# mime: ^2.0.0 native_imaging: ^0.2.0