diff --git a/lib/pangea/extensions/pangea_rooms_chunk_extension.dart b/lib/pangea/extensions/pangea_rooms_chunk_extension.dart new file mode 100644 index 000000000..78785948f --- /dev/null +++ b/lib/pangea/extensions/pangea_rooms_chunk_extension.dart @@ -0,0 +1,16 @@ +import 'dart:math'; + +import 'package:matrix/matrix_api_lite/generated/model.dart'; + +import 'package:fluffychat/pangea/spaces/constants/space_constants.dart'; + +extension PangeaRoomsChunk on PublicRoomsChunk { + /// Use Random with a seed to get the default + /// avatar associated with this space + String defaultAvatar() { + final int seed = roomId.hashCode; + return SpaceConstants.publicSpaceIcons[Random(seed).nextInt( + SpaceConstants.publicSpaceIcons.length, + )]; + } +} diff --git a/lib/pangea/find_your_people/public_space_tile.dart b/lib/pangea/find_your_people/public_space_tile.dart index ef19865a1..5dd19f68f 100644 --- a/lib/pangea/find_your_people/public_space_tile.dart +++ b/lib/pangea/find_your_people/public_space_tile.dart @@ -1,5 +1,3 @@ -import 'dart:math'; - import 'package:flutter/material.dart'; import 'package:cached_network_image/cached_network_image.dart'; @@ -8,8 +6,8 @@ import 'package:matrix/matrix.dart'; import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/analytics_summary/learning_progress_indicator_button.dart'; +import 'package:fluffychat/pangea/extensions/pangea_rooms_chunk_extension.dart'; import 'package:fluffychat/pangea/public_spaces/public_room_bottom_sheet.dart'; -import 'package:fluffychat/pangea/spaces/constants/space_constants.dart'; import 'package:fluffychat/widgets/avatar.dart'; class PublicSpaceTile extends StatelessWidget { @@ -53,10 +51,7 @@ class PublicSpaceTile extends StatelessWidget { 10, ), child: CachedNetworkImage( - imageUrl: SpaceConstants - .publicSpaceIcons[Random().nextInt( - SpaceConstants.publicSpaceIcons.length, - )], + imageUrl: space.defaultAvatar(), width: isColumnMode ? 80.0 : 58.0, height: isColumnMode ? 80.0 : 58.0, fit: BoxFit.cover, diff --git a/lib/pangea/public_spaces/public_room_bottom_sheet.dart b/lib/pangea/public_spaces/public_room_bottom_sheet.dart index 89ed09700..a634dc39b 100644 --- a/lib/pangea/public_spaces/public_room_bottom_sheet.dart +++ b/lib/pangea/public_spaces/public_room_bottom_sheet.dart @@ -1,5 +1,3 @@ -import 'dart:math'; - import 'package:flutter/material.dart'; import 'package:cached_network_image/cached_network_image.dart'; @@ -9,7 +7,7 @@ import 'package:matrix/matrix.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/common/config/environment.dart'; -import 'package:fluffychat/pangea/spaces/constants/space_constants.dart'; +import 'package:fluffychat/pangea/extensions/pangea_rooms_chunk_extension.dart'; import 'package:fluffychat/utils/adaptive_bottom_sheet.dart'; import 'package:fluffychat/utils/fluffy_share.dart'; import 'package:fluffychat/widgets/avatar.dart'; @@ -212,10 +210,7 @@ class PublicRoomBottomSheetState extends State { : ClipRRect( borderRadius: BorderRadius.circular(24.0), child: CachedNetworkImage( - imageUrl: SpaceConstants - .publicSpaceIcons[Random().nextInt( - SpaceConstants.publicSpaceIcons.length, - )], + imageUrl: chunk!.defaultAvatar(), width: 160.0, height: 160.0, fit: BoxFit.cover, diff --git a/lib/pangea/public_spaces/public_space_card.dart b/lib/pangea/public_spaces/public_space_card.dart index 5b8063225..29521f67b 100644 --- a/lib/pangea/public_spaces/public_space_card.dart +++ b/lib/pangea/public_spaces/public_space_card.dart @@ -1,5 +1,3 @@ -import 'dart:math'; - import 'package:flutter/material.dart'; import 'package:cached_network_image/cached_network_image.dart'; @@ -7,8 +5,8 @@ import 'package:matrix/matrix.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/common/widgets/pressable_button.dart'; +import 'package:fluffychat/pangea/extensions/pangea_rooms_chunk_extension.dart'; import 'package:fluffychat/pangea/public_spaces/public_room_bottom_sheet.dart'; -import 'package:fluffychat/pangea/spaces/constants/space_constants.dart'; import 'package:fluffychat/widgets/mxc_image.dart'; class PublicSpaceCard extends StatelessWidget { @@ -71,10 +69,7 @@ class PublicSpaceCard extends StatelessWidget { fit: BoxFit.cover, ) : CachedNetworkImage( - imageUrl: SpaceConstants - .publicSpaceIcons[Random().nextInt( - SpaceConstants.publicSpaceIcons.length, - )], + imageUrl: space.defaultAvatar(), width: width, height: width, fit: BoxFit.cover,