From 99094b5643931dd2463e4573ce97420c40d72dd6 Mon Sep 17 00:00:00 2001 From: Hamlet Jiang Su Date: Sun, 10 Mar 2024 19:53:40 -0700 Subject: [PATCH] added additional lemmy-styled user/community formats --- lib/core/enums/full_name_separator.dart | 12 ++--- lib/settings/pages/general_settings_page.dart | 54 ++++++++++++++++--- 2 files changed, 54 insertions(+), 12 deletions(-) diff --git a/lib/core/enums/full_name_separator.dart b/lib/core/enums/full_name_separator.dart index 01e25d644..449758fb7 100644 --- a/lib/core/enums/full_name_separator.dart +++ b/lib/core/enums/full_name_separator.dart @@ -3,12 +3,9 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:thunder/thunder/bloc/thunder_bloc.dart'; enum FullNameSeparator { - dot('name · instance.tld'), - at('name@instance.tld'); - - final String label; - - const FullNameSeparator(this.label); + dot, // name · instance.tld + at, // name@instance.tld + lemmy; // '@name@instance.tld or !name@instance.tld' } String generateUserFullName(BuildContext? context, name, instance, {FullNameSeparator? userSeparator}) { @@ -17,6 +14,7 @@ String generateUserFullName(BuildContext? context, name, instance, {FullNameSepa return switch (userSeparator) { FullNameSeparator.dot => '$name · $instance', FullNameSeparator.at => '$name@$instance', + FullNameSeparator.lemmy => '@$name@$instance', }; } @@ -26,6 +24,7 @@ String generateUserFullNameSuffix(BuildContext? context, instance, {FullNameSepa return switch (userSeparator) { FullNameSeparator.dot => ' · $instance', FullNameSeparator.at => '@$instance', + FullNameSeparator.lemmy => '@$instance', }; } @@ -35,5 +34,6 @@ String generateCommunityFullName(BuildContext? context, name, instance, {FullNam return switch (communitySeparator) { FullNameSeparator.dot => '$name · $instance', FullNameSeparator.at => '$name@$instance', + FullNameSeparator.lemmy => '!$name@$instance', }; } diff --git a/lib/settings/pages/general_settings_page.dart b/lib/settings/pages/general_settings_page.dart index f583a8257..bbf0131df 100644 --- a/lib/settings/pages/general_settings_page.dart +++ b/lib/settings/pages/general_settings_page.dart @@ -635,10 +635,31 @@ class _GeneralSettingsPageState extends State with SingleTi SliverToBoxAdapter( child: ListOption( description: l10n.userFormat, - value: ListPickerItem(label: userSeparator.label, icon: Icons.person_rounded, payload: userSeparator, capitalizeLabel: false), + value: ListPickerItem( + label: generateUserFullName(null, 'name', 'instance.tld', userSeparator: userSeparator), + icon: Icons.person_rounded, + payload: userSeparator, + capitalizeLabel: false, + ), options: [ - ListPickerItem(icon: const IconData(0x2022), label: FullNameSeparator.dot.label, payload: FullNameSeparator.dot, capitalizeLabel: false), - ListPickerItem(icon: Icons.alternate_email_rounded, label: FullNameSeparator.at.label, payload: FullNameSeparator.at, capitalizeLabel: false), + ListPickerItem( + icon: const IconData(0x2022), + label: generateUserFullName(null, 'name', 'instance.tld', userSeparator: FullNameSeparator.dot), + payload: FullNameSeparator.dot, + capitalizeLabel: false, + ), + ListPickerItem( + icon: Icons.alternate_email_rounded, + label: generateUserFullName(null, 'name', 'instance.tld', userSeparator: FullNameSeparator.at), + payload: FullNameSeparator.at, + capitalizeLabel: false, + ), + ListPickerItem( + icon: Icons.alternate_email_rounded, + label: generateUserFullName(null, 'name', 'instance.tld', userSeparator: FullNameSeparator.lemmy), + payload: FullNameSeparator.lemmy, + capitalizeLabel: false, + ), ], icon: Icons.person_rounded, onChanged: (value) => setPreferences(LocalSettings.userFormat, value.payload.name), @@ -648,10 +669,31 @@ class _GeneralSettingsPageState extends State with SingleTi SliverToBoxAdapter( child: ListOption( description: l10n.communityFormat, - value: ListPickerItem(label: communitySeparator.label, icon: Icons.person_rounded, payload: communitySeparator, capitalizeLabel: false), + value: ListPickerItem( + label: generateCommunityFullName(null, 'name', 'instance.tld', communitySeparator: communitySeparator), + icon: Icons.person_rounded, + payload: communitySeparator, + capitalizeLabel: false, + ), options: [ - ListPickerItem(icon: const IconData(0x2022), label: FullNameSeparator.dot.label, payload: FullNameSeparator.dot, capitalizeLabel: false), - ListPickerItem(icon: Icons.alternate_email_rounded, label: FullNameSeparator.at.label, payload: FullNameSeparator.at, capitalizeLabel: false), + ListPickerItem( + icon: const IconData(0x2022), + label: generateCommunityFullName(null, 'name', 'instance.tld', communitySeparator: FullNameSeparator.dot), + payload: FullNameSeparator.dot, + capitalizeLabel: false, + ), + ListPickerItem( + icon: Icons.alternate_email_rounded, + label: generateCommunityFullName(null, 'name', 'instance.tld', communitySeparator: FullNameSeparator.at), + payload: FullNameSeparator.at, + capitalizeLabel: false, + ), + ListPickerItem( + icon: Icons.priority_high_rounded, + label: generateCommunityFullName(null, 'name', 'instance.tld', communitySeparator: FullNameSeparator.lemmy), + payload: FullNameSeparator.lemmy, + capitalizeLabel: false, + ), ], icon: Icons.people_rounded, onChanged: (value) => setPreferences(LocalSettings.communityFormat, value.payload.name),