chore: add intro and accouncement chat icons (#2889)

This commit is contained in:
ggurdin 2025-05-23 13:08:39 -04:00 committed by GitHub
parent fcc0a0f344
commit 3e12f6050c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 68 additions and 10 deletions

View file

@ -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<String> introChatIcons = [
'${AppConfig.assetsBaseURL}/Introduction_1.jpg',
'${AppConfig.assetsBaseURL}/Introduction_2.png',
'${AppConfig.assetsBaseURL}/Introduction_3.jpg',
];
static List<String> announcementChatIcons = [
'${AppConfig.assetsBaseURL}/Announment_1.png',
'${AppConfig.assetsBaseURL}/Announment_2.png',
'${AppConfig.assetsBaseURL}/Announcement_3.jpg',
];
}

View file

@ -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: '',