Use seed to make random avatar consistent

This commit is contained in:
Kelrap 2025-06-25 10:53:13 -04:00
parent fee8742248
commit b64c66c74b
4 changed files with 22 additions and 21 deletions

View file

@ -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,
)];
}
}

View file

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

View file

@ -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<PublicRoomBottomSheet> {
: 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,

View file

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