From 3e12f6050c80c6d1ccb4988121c48b88132421b8 Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Fri, 23 May 2025 13:08:39 -0400 Subject: [PATCH] chore: add intro and accouncement chat icons (#2889) --- .../spaces/constants/space_constants.dart | 14 ++++ .../spaces/utils/client_spaces_extension.dart | 64 ++++++++++++++++--- 2 files changed, 68 insertions(+), 10 deletions(-) diff --git a/lib/pangea/spaces/constants/space_constants.dart b/lib/pangea/spaces/constants/space_constants.dart index 7a40bfca3..12c2b3ee1 100644 --- a/lib/pangea/spaces/constants/space_constants.dart +++ b/lib/pangea/spaces/constants/space_constants.dart @@ -1,3 +1,5 @@ +import 'package:fluffychat/config/app_config.dart'; + class SpaceConstants { static const powerLevelOfAdmin = 100; static const languageToolPermissions = 1; @@ -6,4 +8,16 @@ class SpaceConstants { static const String classCode = 'classcode'; static const String introductionChatAlias = 'introductionChat'; static const String announcementsChatAlias = 'announcementsChat'; + + static List introChatIcons = [ + '${AppConfig.assetsBaseURL}/Introduction_1.jpg', + '${AppConfig.assetsBaseURL}/Introduction_2.png', + '${AppConfig.assetsBaseURL}/Introduction_3.jpg', + ]; + + static List announcementChatIcons = [ + '${AppConfig.assetsBaseURL}/Announment_1.png', + '${AppConfig.assetsBaseURL}/Announment_2.png', + '${AppConfig.assetsBaseURL}/Announcement_3.jpg', + ]; } diff --git a/lib/pangea/spaces/utils/client_spaces_extension.dart b/lib/pangea/spaces/utils/client_spaces_extension.dart index fe1345768..08e1c74a4 100644 --- a/lib/pangea/spaces/utils/client_spaces_extension.dart +++ b/lib/pangea/spaces/utils/client_spaces_extension.dart @@ -1,9 +1,12 @@ +import 'dart:math'; import 'dart:typed_data'; +import 'package:http/http.dart' as http; import 'package:matrix/matrix.dart'; import 'package:fluffychat/pangea/chat/constants/default_power_level.dart'; import 'package:fluffychat/pangea/common/constants/model_keys.dart'; +import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart'; import 'package:fluffychat/pangea/spaces/constants/space_constants.dart'; import 'package:fluffychat/pangea/spaces/utils/space_code.dart'; @@ -66,6 +69,47 @@ extension SpacesClientExtension on Client { String introductionsName = "Introductions", String announcementsName = "Announcements", }) async { + Uri? introChatUploadURL; + Uri? announcementsChatUploadURL; + + try { + final random = Random(); + final introChatIconURL = SpaceConstants + .introChatIcons[random.nextInt(SpaceConstants.introChatIcons.length)]; + final announcementsChatIconURL = SpaceConstants.announcementChatIcons[ + random.nextInt(SpaceConstants.announcementChatIcons.length)]; + + final introResponse = await http.get(Uri.parse(introChatIconURL)); + final introChatIcon = introResponse.bodyBytes; + final intoChatIconFilename = Uri.encodeComponent( + Uri.parse(introChatIconURL).pathSegments.last, + ); + introChatUploadURL = await uploadContent( + introChatIcon, + filename: intoChatIconFilename, + ); + + final announcementsResponse = + await http.get(Uri.parse(announcementsChatIconURL)); + final announcementsChatIcon = announcementsResponse.bodyBytes; + final announcementsChatIconFilename = Uri.encodeComponent( + Uri.parse(announcementsChatIconURL).pathSegments.last, + ); + announcementsChatUploadURL = await uploadContent( + announcementsChatIcon, + filename: announcementsChatIconFilename, + ); + } catch (e, s) { + ErrorHandler.logError( + e: "Failed to upload space chat icons", + s: s, + data: { + "error": e, + "spaceId": space.id, + }, + ); + } + final introChatFuture = createRoom( preset: CreateRoomPreset.publicChat, visibility: Visibility.private, @@ -73,11 +117,11 @@ extension SpacesClientExtension on Client { roomAliasName: "${SpaceConstants.introductionChatAlias}_${space.id.localpart}", initialState: [ - // if (avatar != null) - // StateEvent( - // type: EventTypes.RoomAvatar, - // content: {'url': avatarUrl.toString()}, - // ), + if (introChatUploadURL != null) + StateEvent( + type: EventTypes.RoomAvatar, + content: {'url': introChatUploadURL.toString()}, + ), StateEvent( type: EventTypes.RoomPowerLevels, stateKey: '', @@ -93,11 +137,11 @@ extension SpacesClientExtension on Client { roomAliasName: "${SpaceConstants.announcementsChatAlias}_${space.id.localpart}", initialState: [ - // if (avatar != null) - // StateEvent( - // type: EventTypes.RoomAvatar, - // content: {'url': avatarUrl.toString()}, - // ), + if (announcementsChatUploadURL != null) + StateEvent( + type: EventTypes.RoomAvatar, + content: {'url': announcementsChatUploadURL.toString()}, + ), StateEvent( type: EventTypes.RoomPowerLevels, stateKey: '',