Skip to content

Commit 1201550

Browse files
committed
profile: Add toggle switch for "Invisible mode", with local echo
The PerAccountSettingBuilder widget should be helpful for plenty of other things too, like channel settings. I think we'll get an updated design for the profile page soon, but pending that, this is our current thinking for how "Invisible mode" should look: https://chat.zulip.org/#narrow/channel/530-mobile-design/topic/presence.3A.20invisible.20mode/near/2204336 Fixes: #1578
1 parent b491bd7 commit 1201550

20 files changed

+737
-1
lines changed

assets/l10n/app_en.arb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -773,6 +773,18 @@
773773
"@yesterday": {
774774
"description": "Term to use to reference the previous day."
775775
},
776+
"invisibleMode": "Invisible mode",
777+
"@invisibleMode": {
778+
"description": "Label for the 'Invisible mode' switch on the profile page."
779+
},
780+
"turnOnInvisibleModeErrorTitle": "Error turning on invisible mode. Please try again.",
781+
"@turnOnInvisibleModeErrorTitle": {
782+
"description": "Error title when turning on invisible mode failed."
783+
},
784+
"turnOffInvisibleModeErrorTitle": "Error turning off invisible mode. Please try again.",
785+
"@turnOffInvisibleModeErrorTitle": {
786+
"description": "Error title when turning off invisible mode failed."
787+
},
776788
"userRoleOwner": "Owner",
777789
"@userRoleOwner": {
778790
"description": "Label for UserRole.owner"

lib/basic.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ sealed class Option<T> {
1919

2020
/// The value contained in this option, if any; else the given value.
2121
T or(T optb);
22+
23+
/// The value contained in this option, if any;
24+
/// else the value returned by [fn].
25+
///
26+
/// [fn] is called only if its return value is needed.
27+
T orElse(T Function() fn);
2228
}
2329

2430
class OptionNone<T> extends Option<T> {
@@ -27,6 +33,9 @@ class OptionNone<T> extends Option<T> {
2733
@override
2834
T or(T optb) => optb;
2935

36+
@override
37+
T orElse(T Function() fn) => fn();
38+
3039
@override
3140
bool operator ==(Object other) => other is OptionNone;
3241

@@ -45,6 +54,9 @@ class OptionSome<T> extends Option<T> {
4554
@override
4655
T or(T optb) => value;
4756

57+
@override
58+
T orElse(T Function() fn) => value;
59+
4860
@override
4961
bool operator ==(Object other) => other is OptionSome && value == other.value;
5062

lib/generated/l10n/zulip_localizations.dart

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1173,6 +1173,24 @@ abstract class ZulipLocalizations {
11731173
/// **'Yesterday'**
11741174
String get yesterday;
11751175

1176+
/// Label for the 'Invisible mode' switch on the profile page.
1177+
///
1178+
/// In en, this message translates to:
1179+
/// **'Invisible mode'**
1180+
String get invisibleMode;
1181+
1182+
/// Error title when turning on invisible mode failed.
1183+
///
1184+
/// In en, this message translates to:
1185+
/// **'Error turning on invisible mode. Please try again.'**
1186+
String get turnOnInvisibleModeErrorTitle;
1187+
1188+
/// Error title when turning off invisible mode failed.
1189+
///
1190+
/// In en, this message translates to:
1191+
/// **'Error turning off invisible mode. Please try again.'**
1192+
String get turnOffInvisibleModeErrorTitle;
1193+
11761194
/// Label for UserRole.owner
11771195
///
11781196
/// In en, this message translates to:

lib/generated/l10n/zulip_localizations_ar.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,17 @@ class ZulipLocalizationsAr extends ZulipLocalizations {
635635
@override
636636
String get yesterday => 'Yesterday';
637637

638+
@override
639+
String get invisibleMode => 'Invisible mode';
640+
641+
@override
642+
String get turnOnInvisibleModeErrorTitle =>
643+
'Error turning on invisible mode. Please try again.';
644+
645+
@override
646+
String get turnOffInvisibleModeErrorTitle =>
647+
'Error turning off invisible mode. Please try again.';
648+
638649
@override
639650
String get userRoleOwner => 'Owner';
640651

lib/generated/l10n/zulip_localizations_de.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -656,6 +656,17 @@ class ZulipLocalizationsDe extends ZulipLocalizations {
656656
@override
657657
String get yesterday => 'Gestern';
658658

659+
@override
660+
String get invisibleMode => 'Invisible mode';
661+
662+
@override
663+
String get turnOnInvisibleModeErrorTitle =>
664+
'Error turning on invisible mode. Please try again.';
665+
666+
@override
667+
String get turnOffInvisibleModeErrorTitle =>
668+
'Error turning off invisible mode. Please try again.';
669+
659670
@override
660671
String get userRoleOwner => 'Besitzer';
661672

lib/generated/l10n/zulip_localizations_en.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,17 @@ class ZulipLocalizationsEn extends ZulipLocalizations {
635635
@override
636636
String get yesterday => 'Yesterday';
637637

638+
@override
639+
String get invisibleMode => 'Invisible mode';
640+
641+
@override
642+
String get turnOnInvisibleModeErrorTitle =>
643+
'Error turning on invisible mode. Please try again.';
644+
645+
@override
646+
String get turnOffInvisibleModeErrorTitle =>
647+
'Error turning off invisible mode. Please try again.';
648+
638649
@override
639650
String get userRoleOwner => 'Owner';
640651

lib/generated/l10n/zulip_localizations_it.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,17 @@ class ZulipLocalizationsIt extends ZulipLocalizations {
650650
@override
651651
String get yesterday => 'Ieri';
652652

653+
@override
654+
String get invisibleMode => 'Invisible mode';
655+
656+
@override
657+
String get turnOnInvisibleModeErrorTitle =>
658+
'Error turning on invisible mode. Please try again.';
659+
660+
@override
661+
String get turnOffInvisibleModeErrorTitle =>
662+
'Error turning off invisible mode. Please try again.';
663+
653664
@override
654665
String get userRoleOwner => 'Proprietario';
655666

lib/generated/l10n/zulip_localizations_ja.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,17 @@ class ZulipLocalizationsJa extends ZulipLocalizations {
635635
@override
636636
String get yesterday => 'Yesterday';
637637

638+
@override
639+
String get invisibleMode => 'Invisible mode';
640+
641+
@override
642+
String get turnOnInvisibleModeErrorTitle =>
643+
'Error turning on invisible mode. Please try again.';
644+
645+
@override
646+
String get turnOffInvisibleModeErrorTitle =>
647+
'Error turning off invisible mode. Please try again.';
648+
638649
@override
639650
String get userRoleOwner => 'オーナー';
640651

lib/generated/l10n/zulip_localizations_nb.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,17 @@ class ZulipLocalizationsNb extends ZulipLocalizations {
635635
@override
636636
String get yesterday => 'Yesterday';
637637

638+
@override
639+
String get invisibleMode => 'Invisible mode';
640+
641+
@override
642+
String get turnOnInvisibleModeErrorTitle =>
643+
'Error turning on invisible mode. Please try again.';
644+
645+
@override
646+
String get turnOffInvisibleModeErrorTitle =>
647+
'Error turning off invisible mode. Please try again.';
648+
638649
@override
639650
String get userRoleOwner => 'Owner';
640651

lib/generated/l10n/zulip_localizations_pl.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -646,6 +646,17 @@ class ZulipLocalizationsPl extends ZulipLocalizations {
646646
@override
647647
String get yesterday => 'Wczoraj';
648648

649+
@override
650+
String get invisibleMode => 'Invisible mode';
651+
652+
@override
653+
String get turnOnInvisibleModeErrorTitle =>
654+
'Error turning on invisible mode. Please try again.';
655+
656+
@override
657+
String get turnOffInvisibleModeErrorTitle =>
658+
'Error turning off invisible mode. Please try again.';
659+
649660
@override
650661
String get userRoleOwner => 'Właściciel';
651662

0 commit comments

Comments
 (0)