Skip to content

Commit 83f1fba

Browse files
authored
Added additional Lemmy styled user/community formats (#1183)
1 parent 12fdca4 commit 83f1fba

File tree

2 files changed

+54
-12
lines changed

2 files changed

+54
-12
lines changed

lib/core/enums/full_name_separator.dart

+6-6
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,9 @@ import 'package:flutter_bloc/flutter_bloc.dart';
33
import 'package:thunder/thunder/bloc/thunder_bloc.dart';
44

55
enum FullNameSeparator {
6-
dot('name · instance.tld'),
7-
at('name@instance.tld');
8-
9-
final String label;
10-
11-
const FullNameSeparator(this.label);
6+
dot, // name · instance.tld
7+
at, // name@instance.tld
8+
lemmy; // '@name@instance.tld or !name@instance.tld'
129
}
1310

1411
String generateUserFullName(BuildContext? context, name, instance, {FullNameSeparator? userSeparator}) {
@@ -17,6 +14,7 @@ String generateUserFullName(BuildContext? context, name, instance, {FullNameSepa
1714
return switch (userSeparator) {
1815
FullNameSeparator.dot => '$name · $instance',
1916
FullNameSeparator.at => '$name@$instance',
17+
FullNameSeparator.lemmy => '@$name@$instance',
2018
};
2119
}
2220

@@ -26,6 +24,7 @@ String generateUserFullNameSuffix(BuildContext? context, instance, {FullNameSepa
2624
return switch (userSeparator) {
2725
FullNameSeparator.dot => ' · $instance',
2826
FullNameSeparator.at => '@$instance',
27+
FullNameSeparator.lemmy => '@$instance',
2928
};
3029
}
3130

@@ -35,5 +34,6 @@ String generateCommunityFullName(BuildContext? context, name, instance, {FullNam
3534
return switch (communitySeparator) {
3635
FullNameSeparator.dot => '$name · $instance',
3736
FullNameSeparator.at => '$name@$instance',
37+
FullNameSeparator.lemmy => '!$name@$instance',
3838
};
3939
}

lib/settings/pages/general_settings_page.dart

+48-6
Original file line numberDiff line numberDiff line change
@@ -635,10 +635,31 @@ class _GeneralSettingsPageState extends State<GeneralSettingsPage> with SingleTi
635635
SliverToBoxAdapter(
636636
child: ListOption(
637637
description: l10n.userFormat,
638-
value: ListPickerItem(label: userSeparator.label, icon: Icons.person_rounded, payload: userSeparator, capitalizeLabel: false),
638+
value: ListPickerItem(
639+
label: generateUserFullName(null, 'name', 'instance.tld', userSeparator: userSeparator),
640+
icon: Icons.person_rounded,
641+
payload: userSeparator,
642+
capitalizeLabel: false,
643+
),
639644
options: [
640-
ListPickerItem(icon: const IconData(0x2022), label: FullNameSeparator.dot.label, payload: FullNameSeparator.dot, capitalizeLabel: false),
641-
ListPickerItem(icon: Icons.alternate_email_rounded, label: FullNameSeparator.at.label, payload: FullNameSeparator.at, capitalizeLabel: false),
645+
ListPickerItem(
646+
icon: const IconData(0x2022),
647+
label: generateUserFullName(null, 'name', 'instance.tld', userSeparator: FullNameSeparator.dot),
648+
payload: FullNameSeparator.dot,
649+
capitalizeLabel: false,
650+
),
651+
ListPickerItem(
652+
icon: Icons.alternate_email_rounded,
653+
label: generateUserFullName(null, 'name', 'instance.tld', userSeparator: FullNameSeparator.at),
654+
payload: FullNameSeparator.at,
655+
capitalizeLabel: false,
656+
),
657+
ListPickerItem(
658+
icon: Icons.alternate_email_rounded,
659+
label: generateUserFullName(null, 'name', 'instance.tld', userSeparator: FullNameSeparator.lemmy),
660+
payload: FullNameSeparator.lemmy,
661+
capitalizeLabel: false,
662+
),
642663
],
643664
icon: Icons.person_rounded,
644665
onChanged: (value) => setPreferences(LocalSettings.userFormat, value.payload.name),
@@ -648,10 +669,31 @@ class _GeneralSettingsPageState extends State<GeneralSettingsPage> with SingleTi
648669
SliverToBoxAdapter(
649670
child: ListOption(
650671
description: l10n.communityFormat,
651-
value: ListPickerItem(label: communitySeparator.label, icon: Icons.person_rounded, payload: communitySeparator, capitalizeLabel: false),
672+
value: ListPickerItem(
673+
label: generateCommunityFullName(null, 'name', 'instance.tld', communitySeparator: communitySeparator),
674+
icon: Icons.person_rounded,
675+
payload: communitySeparator,
676+
capitalizeLabel: false,
677+
),
652678
options: [
653-
ListPickerItem(icon: const IconData(0x2022), label: FullNameSeparator.dot.label, payload: FullNameSeparator.dot, capitalizeLabel: false),
654-
ListPickerItem(icon: Icons.alternate_email_rounded, label: FullNameSeparator.at.label, payload: FullNameSeparator.at, capitalizeLabel: false),
679+
ListPickerItem(
680+
icon: const IconData(0x2022),
681+
label: generateCommunityFullName(null, 'name', 'instance.tld', communitySeparator: FullNameSeparator.dot),
682+
payload: FullNameSeparator.dot,
683+
capitalizeLabel: false,
684+
),
685+
ListPickerItem(
686+
icon: Icons.alternate_email_rounded,
687+
label: generateCommunityFullName(null, 'name', 'instance.tld', communitySeparator: FullNameSeparator.at),
688+
payload: FullNameSeparator.at,
689+
capitalizeLabel: false,
690+
),
691+
ListPickerItem(
692+
icon: Icons.priority_high_rounded,
693+
label: generateCommunityFullName(null, 'name', 'instance.tld', communitySeparator: FullNameSeparator.lemmy),
694+
payload: FullNameSeparator.lemmy,
695+
capitalizeLabel: false,
696+
),
655697
],
656698
icon: Icons.people_rounded,
657699
onChanged: (value) => setPreferences(LocalSettings.communityFormat, value.payload.name),

0 commit comments

Comments
 (0)