From 7850117cb6113e4ec9671db3aed258c14106eb1f Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Thu, 21 May 2026 12:49:01 -0400 Subject: [PATCH] abstract ColorHash into its own extension --- lib/helpers/extensions/string_to_color.dart | 6 ++++++ lib/widgets/lazy_loading/message_displayname.dart | 8 ++------ lib/widgets/member_list.dart | 8 ++------ lib/widgets/renderers/membership.dart | 8 ++------ 4 files changed, 12 insertions(+), 18 deletions(-) create mode 100644 lib/helpers/extensions/string_to_color.dart diff --git a/lib/helpers/extensions/string_to_color.dart b/lib/helpers/extensions/string_to_color.dart new file mode 100644 index 0000000..8d30e76 --- /dev/null +++ b/lib/helpers/extensions/string_to_color.dart @@ -0,0 +1,6 @@ +import "package:color_hash/color_hash.dart"; +import "package:flutter/material.dart"; + +extension ToColor on String { + Color get colorHash => ColorHash(this, lightness: .7, saturation: .7).color; +} diff --git a/lib/widgets/lazy_loading/message_displayname.dart b/lib/widgets/lazy_loading/message_displayname.dart index e388fe7..b1c1460 100644 --- a/lib/widgets/lazy_loading/message_displayname.dart +++ b/lib/widgets/lazy_loading/message_displayname.dart @@ -1,10 +1,10 @@ -import "package:color_hash/color_hash.dart"; import "package:flutter/material.dart"; import "package:flutter_riverpod/flutter_riverpod.dart"; import "package:nexus/controllers/author_controller.dart"; import "package:nexus/helpers/extensions/better_when.dart"; import "package:nexus/helpers/extensions/get_localpart.dart"; import "package:nexus/helpers/extensions/show_user_popover.dart"; +import "package:nexus/helpers/extensions/string_to_color.dart"; import "package:nexus/models/event.dart"; class MessageDisplayname extends ConsumerWidget { @@ -35,11 +35,7 @@ class MessageDisplayname extends ConsumerWidget { style: style ?? TextStyle( - color: ColorHash( - event.sender, - lightness: .7, - saturation: .7, - ).color, + color: event.sender.colorHash, fontWeight: FontWeight.bold, ), maxLines: 1, diff --git a/lib/widgets/member_list.dart b/lib/widgets/member_list.dart index d943f8a..e5d41d7 100644 --- a/lib/widgets/member_list.dart +++ b/lib/widgets/member_list.dart @@ -1,10 +1,10 @@ -import "package:color_hash/color_hash.dart"; import "package:flutter/material.dart"; import "package:flutter_hooks/flutter_hooks.dart"; import "package:hooks_riverpod/hooks_riverpod.dart"; import "package:nexus/controllers/members_by_status_controller.dart"; import "package:nexus/helpers/extensions/get_localpart.dart"; import "package:nexus/helpers/extensions/show_user_popover.dart"; +import "package:nexus/helpers/extensions/string_to_color.dart"; import "package:nexus/models/configs/members_by_status_config.dart"; import "package:nexus/models/content/membership.dart"; import "package:nexus/models/membership_status.dart"; @@ -94,11 +94,7 @@ class MemberList extends HookConsumerWidget { displayName ?? member.stateKey!.localpart, overflow: TextOverflow.ellipsis, style: TextStyle( - color: ColorHash( - member.stateKey!, - lightness: .7, - saturation: .8, - ).color, + color: member.stateKey!.colorHash, fontWeight: FontWeight.bold, ), ), diff --git a/lib/widgets/renderers/membership.dart b/lib/widgets/renderers/membership.dart index aa0b5d1..8e9e22e 100644 --- a/lib/widgets/renderers/membership.dart +++ b/lib/widgets/renderers/membership.dart @@ -1,7 +1,7 @@ -import "package:color_hash/color_hash.dart"; import "package:flutter/material.dart"; import "package:nexus/helpers/extensions/get_localpart.dart"; import "package:nexus/helpers/extensions/show_user_popover.dart"; +import "package:nexus/helpers/extensions/string_to_color.dart"; import "package:nexus/models/content/membership.dart"; import "package:nexus/models/event.dart"; import "package:nexus/models/membership_status.dart"; @@ -41,11 +41,7 @@ class MembershipRenderer extends StatelessWidget { content.displayName ?? event.stateKey!.localpart, maxLines: 1, style: TextStyle( - color: ColorHash( - event.sender, - lightness: .7, - saturation: .7, - ).color, + color: event.sender.colorHash, fontWeight: FontWeight.bold, ), ),