Skip to content

Commit 3b9dcbd

Browse files
committed
Merge remote-tracking branch 'pr/1701'
2 parents 96cefa4 + 9d3abbd commit 3b9dcbd

28 files changed

+1294
-113
lines changed

assets/icons/ZulipIcons.ttf

136 Bytes
Binary file not shown.

assets/icons/chevron_down.svg

Lines changed: 3 additions & 0 deletions
Loading

assets/l10n/app_en.arb

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,66 @@
817817
"@userRoleUnknown": {
818818
"description": "Label for UserRole.unknown"
819819
},
820+
"statusButtonLabelStatusSet": "Status",
821+
"@statusButtonLabelStatusSet": {
822+
"description": "The status button label in self-user profile page when status is set."
823+
},
824+
"statusButtonLabelStatusUnset": "Set status",
825+
"@statusButtonLabelStatusUnset": {
826+
"description": "The status button label in self-user profile page when status is not set."
827+
},
828+
"noStatusText": "No status text",
829+
"@noStatusText": {
830+
"description": "The text part of the status button sub-label in self-user profile page when status text is not set."
831+
},
832+
"setStatusPageTitle": "Set status",
833+
"@setStatusPageTitle": {
834+
"description": "Title for the 'Set status' page."
835+
},
836+
"statusClearButtonLabel": "Clear",
837+
"@statusClearButtonLabel": {
838+
"description": "Label for the button that clears the user status, in 'Set status' page."
839+
},
840+
"statusSaveButtonLabel": "Save",
841+
"@statusSaveButtonLabel": {
842+
"description": "Label for the button that saves the user status, in 'Set status' page."
843+
},
844+
"statusTextHint": "Your status",
845+
"@statusTextHint": {
846+
"description": "Hint text for the status text input field in 'Set status' page."
847+
},
848+
"userStatusBusy": "Busy",
849+
"@userStatusBusy": {
850+
"description": "A suggested user status text, 'Busy'."
851+
},
852+
"userStatusInAMeeting": "In a meeting",
853+
"@userStatusInAMeeting": {
854+
"description": "A suggested user status text, 'In a meeting'."
855+
},
856+
"userStatusCommuting": "Commuting",
857+
"@userStatusCommuting": {
858+
"description": "A suggested user status text, 'Commuting'."
859+
},
860+
"userStatusOutSick": "Out sick",
861+
"@userStatusOutSick": {
862+
"description": "A suggested user status text, 'Out sick'."
863+
},
864+
"userStatusVacationing": "Vacationing",
865+
"@userStatusVacationing": {
866+
"description": "A suggested user status text, 'Vacationing'."
867+
},
868+
"userStatusWorkingRemotely": "Working remotely",
869+
"@userStatusWorkingRemotely": {
870+
"description": "A suggested user status text, 'Working remotely'."
871+
},
872+
"userStatusAtTheOffice": "At the office",
873+
"@userStatusAtTheOffice": {
874+
"description": "A suggested user status text, 'At the office'."
875+
},
876+
"updateStatusErrorTitle": "Error updating user status. Please try again.",
877+
"@updateStatusErrorTitle": {
878+
"description": "Error title when updating user status failed."
879+
},
820880
"searchMessagesPageTitle": "Search",
821881
"@searchMessagesPageTitle": {
822882
"description": "Page title for the 'Search' message view."

lib/api/model/model.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,10 @@ class UserStatusChange {
223223
return UserStatus(text: text.or(old.text), emoji: emoji.or(old.emoji));
224224
}
225225

226+
UserStatusChange copyWith({Option<String?>? text, Option<StatusEmoji?>? emoji}) {
227+
return UserStatusChange(text: text ?? this.text, emoji: emoji ?? this.emoji);
228+
}
229+
226230
factory UserStatusChange.fromJson(Map<String, dynamic> json) {
227231
return UserStatusChange(
228232
text: _textFromJson(json), emoji: _emojiFromJson(json));

lib/api/route/users.dart

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:json_annotation/json_annotation.dart';
22

3+
import '../../basic.dart';
34
import '../core.dart';
45
import '../model/model.dart';
56

@@ -34,6 +35,21 @@ class GetOwnUserResult {
3435
Map<String, dynamic> toJson() => _$GetOwnUserResultToJson(this);
3536
}
3637

38+
/// https://zulip.com/api/update-status
39+
Future<void> updateStatus(ApiConnection connection, {
40+
required UserStatusChange change,
41+
}) {
42+
return connection.post('updateStatus', (_) {}, 'users/me/status', {
43+
if (change.text case OptionSome(:var value))
44+
'status_text': RawParameter(value ?? ''),
45+
if (change.emoji case OptionSome(:var value)) ...{
46+
'emoji_name': RawParameter(value?.emojiName ?? ''),
47+
'emoji_code': RawParameter(value?.emojiCode ?? ''),
48+
'reaction_type': RawParameter(value?.reactionType.toJson() ?? ''),
49+
}
50+
});
51+
}
52+
3753
/// https://zulip.com/api/update-presence
3854
///
3955
/// Passes true for `slim_presence` to avoid getting an ancient data format

lib/generated/l10n/zulip_localizations.dart

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,6 +1241,96 @@ abstract class ZulipLocalizations {
12411241
/// **'Unknown'**
12421242
String get userRoleUnknown;
12431243

1244+
/// The status button label in self-user profile page when status is set.
1245+
///
1246+
/// In en, this message translates to:
1247+
/// **'Status'**
1248+
String get statusButtonLabelStatusSet;
1249+
1250+
/// The status button label in self-user profile page when status is not set.
1251+
///
1252+
/// In en, this message translates to:
1253+
/// **'Set status'**
1254+
String get statusButtonLabelStatusUnset;
1255+
1256+
/// The text part of the status button sub-label in self-user profile page when status text is not set.
1257+
///
1258+
/// In en, this message translates to:
1259+
/// **'No status text'**
1260+
String get noStatusText;
1261+
1262+
/// Title for the 'Set status' page.
1263+
///
1264+
/// In en, this message translates to:
1265+
/// **'Set status'**
1266+
String get setStatusPageTitle;
1267+
1268+
/// Label for the button that clears the user status, in 'Set status' page.
1269+
///
1270+
/// In en, this message translates to:
1271+
/// **'Clear'**
1272+
String get statusClearButtonLabel;
1273+
1274+
/// Label for the button that saves the user status, in 'Set status' page.
1275+
///
1276+
/// In en, this message translates to:
1277+
/// **'Save'**
1278+
String get statusSaveButtonLabel;
1279+
1280+
/// Hint text for the status text input field in 'Set status' page.
1281+
///
1282+
/// In en, this message translates to:
1283+
/// **'Your status'**
1284+
String get statusTextHint;
1285+
1286+
/// A suggested user status text, 'Busy'.
1287+
///
1288+
/// In en, this message translates to:
1289+
/// **'Busy'**
1290+
String get userStatusBusy;
1291+
1292+
/// A suggested user status text, 'In a meeting'.
1293+
///
1294+
/// In en, this message translates to:
1295+
/// **'In a meeting'**
1296+
String get userStatusInAMeeting;
1297+
1298+
/// A suggested user status text, 'Commuting'.
1299+
///
1300+
/// In en, this message translates to:
1301+
/// **'Commuting'**
1302+
String get userStatusCommuting;
1303+
1304+
/// A suggested user status text, 'Out sick'.
1305+
///
1306+
/// In en, this message translates to:
1307+
/// **'Out sick'**
1308+
String get userStatusOutSick;
1309+
1310+
/// A suggested user status text, 'Vacationing'.
1311+
///
1312+
/// In en, this message translates to:
1313+
/// **'Vacationing'**
1314+
String get userStatusVacationing;
1315+
1316+
/// A suggested user status text, 'Working remotely'.
1317+
///
1318+
/// In en, this message translates to:
1319+
/// **'Working remotely'**
1320+
String get userStatusWorkingRemotely;
1321+
1322+
/// A suggested user status text, 'At the office'.
1323+
///
1324+
/// In en, this message translates to:
1325+
/// **'At the office'**
1326+
String get userStatusAtTheOffice;
1327+
1328+
/// Error title when updating user status failed.
1329+
///
1330+
/// In en, this message translates to:
1331+
/// **'Error updating user status. Please try again.'**
1332+
String get updateStatusErrorTitle;
1333+
12441334
/// Page title for the 'Search' message view.
12451335
///
12461336
/// In en, this message translates to:

lib/generated/l10n/zulip_localizations_ar.dart

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -670,6 +670,52 @@ class ZulipLocalizationsAr extends ZulipLocalizations {
670670
@override
671671
String get userRoleUnknown => 'Unknown';
672672

673+
@override
674+
String get statusButtonLabelStatusSet => 'Status';
675+
676+
@override
677+
String get statusButtonLabelStatusUnset => 'Set status';
678+
679+
@override
680+
String get noStatusText => 'No status text';
681+
682+
@override
683+
String get setStatusPageTitle => 'Set status';
684+
685+
@override
686+
String get statusClearButtonLabel => 'Clear';
687+
688+
@override
689+
String get statusSaveButtonLabel => 'Save';
690+
691+
@override
692+
String get statusTextHint => 'Your status';
693+
694+
@override
695+
String get userStatusBusy => 'Busy';
696+
697+
@override
698+
String get userStatusInAMeeting => 'In a meeting';
699+
700+
@override
701+
String get userStatusCommuting => 'Commuting';
702+
703+
@override
704+
String get userStatusOutSick => 'Out sick';
705+
706+
@override
707+
String get userStatusVacationing => 'Vacationing';
708+
709+
@override
710+
String get userStatusWorkingRemotely => 'Working remotely';
711+
712+
@override
713+
String get userStatusAtTheOffice => 'At the office';
714+
715+
@override
716+
String get updateStatusErrorTitle =>
717+
'Error updating user status. Please try again.';
718+
673719
@override
674720
String get searchMessagesPageTitle => 'Search';
675721

lib/generated/l10n/zulip_localizations_de.dart

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -691,6 +691,52 @@ class ZulipLocalizationsDe extends ZulipLocalizations {
691691
@override
692692
String get userRoleUnknown => 'Unbekannt';
693693

694+
@override
695+
String get statusButtonLabelStatusSet => 'Status';
696+
697+
@override
698+
String get statusButtonLabelStatusUnset => 'Set status';
699+
700+
@override
701+
String get noStatusText => 'No status text';
702+
703+
@override
704+
String get setStatusPageTitle => 'Set status';
705+
706+
@override
707+
String get statusClearButtonLabel => 'Clear';
708+
709+
@override
710+
String get statusSaveButtonLabel => 'Save';
711+
712+
@override
713+
String get statusTextHint => 'Your status';
714+
715+
@override
716+
String get userStatusBusy => 'Busy';
717+
718+
@override
719+
String get userStatusInAMeeting => 'In a meeting';
720+
721+
@override
722+
String get userStatusCommuting => 'Commuting';
723+
724+
@override
725+
String get userStatusOutSick => 'Out sick';
726+
727+
@override
728+
String get userStatusVacationing => 'Vacationing';
729+
730+
@override
731+
String get userStatusWorkingRemotely => 'Working remotely';
732+
733+
@override
734+
String get userStatusAtTheOffice => 'At the office';
735+
736+
@override
737+
String get updateStatusErrorTitle =>
738+
'Error updating user status. Please try again.';
739+
694740
@override
695741
String get searchMessagesPageTitle => 'Search';
696742

lib/generated/l10n/zulip_localizations_en.dart

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -670,6 +670,52 @@ class ZulipLocalizationsEn extends ZulipLocalizations {
670670
@override
671671
String get userRoleUnknown => 'Unknown';
672672

673+
@override
674+
String get statusButtonLabelStatusSet => 'Status';
675+
676+
@override
677+
String get statusButtonLabelStatusUnset => 'Set status';
678+
679+
@override
680+
String get noStatusText => 'No status text';
681+
682+
@override
683+
String get setStatusPageTitle => 'Set status';
684+
685+
@override
686+
String get statusClearButtonLabel => 'Clear';
687+
688+
@override
689+
String get statusSaveButtonLabel => 'Save';
690+
691+
@override
692+
String get statusTextHint => 'Your status';
693+
694+
@override
695+
String get userStatusBusy => 'Busy';
696+
697+
@override
698+
String get userStatusInAMeeting => 'In a meeting';
699+
700+
@override
701+
String get userStatusCommuting => 'Commuting';
702+
703+
@override
704+
String get userStatusOutSick => 'Out sick';
705+
706+
@override
707+
String get userStatusVacationing => 'Vacationing';
708+
709+
@override
710+
String get userStatusWorkingRemotely => 'Working remotely';
711+
712+
@override
713+
String get userStatusAtTheOffice => 'At the office';
714+
715+
@override
716+
String get updateStatusErrorTitle =>
717+
'Error updating user status. Please try again.';
718+
673719
@override
674720
String get searchMessagesPageTitle => 'Search';
675721

0 commit comments

Comments
 (0)