Skip to content

Commit

Permalink
action_sheet: Implement resolve/unresolve in topic action sheet
Browse files Browse the repository at this point in the history
Fixes: zulip#744
  • Loading branch information
chrisbobbe committed Jan 24, 2025
1 parent 3e67860 commit 5c7b14f
Show file tree
Hide file tree
Showing 14 changed files with 585 additions and 11 deletions.
36 changes: 36 additions & 0 deletions assets/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,42 @@
"@actionSheetOptionUnfollowTopic": {
"description": "Label for unfollowing a topic on action sheet."
},
"actionSheetOptionResolveTopic": "Mark as resolved",
"@actionSheetOptionResolveTopic": {
"description": "Label for the 'Mark as resolved' button on the topic action sheet."
},
"actionSheetOptionUnresolveTopic": "Mark as unresolved",
"@actionSheetOptionUnresolveTopic": {
"description": "Label for the 'Mark as unresolved' button on the topic action sheet."
},
"resolveTopicInterruptedTitle": "Problem marking topic as resolved",
"@resolveTopicInterruptedTitle": {
"description": "Error title when trying to 'Mark as resolved' and the app decides not to continue."
},
"unresolveTopicInterruptedTitle": "Problem marking topic as unresolved",
"@unresolveTopicInterruptedTitle": {
"description": "Error title when trying to 'Mark as unresolved' and the app decides not to continue."
},
"topicAlreadyResolvedMessage": "This topic is already marked as resolved.",
"@topicAlreadyResolvedMessage": {
"description": "Error message when trying to 'Mark as resolved' a topic that was already marked by someone else."
},
"topicAlreadyUnresolvedMessage": "This topic is already marked as unresolved.",
"@topicAlreadyUnresolvedMessage": {
"description": "Error message when trying to 'Mark as unresolved' a topic that was already marked by someone else."
},
"topicRenamedMessage": "This topic has been renamed.",
"@topicRenamedMessage": {
"description": "Error title when trying to 'Mark as resolved' or 'Mark as unresolved' a topic that was renamed by someone else."
},
"errorResolveTopicFailedTitle": "Failed to mark topic as resolved",
"@errorResolveTopicFailedTitle": {
"description": "Error title when marking a topic as resolved failed."
},
"errorUnresolveTopicFailedTitle": "Failed to mark topic as unresolved",
"@errorUnresolveTopicFailedTitle": {
"description": "Error title when marking a topic as unresolved failed."
},
"actionSheetOptionCopyMessageText": "Copy message text",
"@actionSheetOptionCopyMessageText": {
"description": "Label for copy message text button on action sheet."
Expand Down
6 changes: 6 additions & 0 deletions lib/api/model/model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -695,6 +695,12 @@ extension type const TopicName(String _value) {
/// The key to use for "same topic as" comparisons.
String canonicalize() => apiName.toLowerCase();

/// Whether the topic starts with [resolvedTopicPrefixRegexp].
bool get isResolved => resolvedTopicPrefixRegexp.hasMatch(_value);

/// This [TopicName] plus the [resolvedTopicPrefix] prefix.
TopicName resolve() => TopicName(resolvedTopicPrefix + _value);

/// A [TopicName] with [resolvedTopicPrefixRegexp] stripped if present.
TopicName unresolve() =>
TopicName(_value.replaceFirst(resolvedTopicPrefixRegexp, ''));
Expand Down
54 changes: 54 additions & 0 deletions lib/generated/l10n/zulip_localizations.dart
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,60 @@ abstract class ZulipLocalizations {
/// **'Unfollow topic'**
String get actionSheetOptionUnfollowTopic;

/// Label for the 'Mark as resolved' button on the topic action sheet.
///
/// In en, this message translates to:
/// **'Mark as resolved'**
String get actionSheetOptionResolveTopic;

/// Label for the 'Mark as unresolved' button on the topic action sheet.
///
/// In en, this message translates to:
/// **'Mark as unresolved'**
String get actionSheetOptionUnresolveTopic;

/// Error title when trying to 'Mark as resolved' and the app decides not to continue.
///
/// In en, this message translates to:
/// **'Problem marking topic as resolved'**
String get resolveTopicInterruptedTitle;

/// Error title when trying to 'Mark as unresolved' and the app decides not to continue.
///
/// In en, this message translates to:
/// **'Problem marking topic as unresolved'**
String get unresolveTopicInterruptedTitle;

/// Error message when trying to 'Mark as resolved' a topic that was already marked by someone else.
///
/// In en, this message translates to:
/// **'This topic is already marked as resolved.'**
String get topicAlreadyResolvedMessage;

/// Error message when trying to 'Mark as unresolved' a topic that was already marked by someone else.
///
/// In en, this message translates to:
/// **'This topic is already marked as unresolved.'**
String get topicAlreadyUnresolvedMessage;

/// Error title when trying to 'Mark as resolved' or 'Mark as unresolved' a topic that was renamed by someone else.
///
/// In en, this message translates to:
/// **'This topic has been renamed.'**
String get topicRenamedMessage;

/// Error title when marking a topic as resolved failed.
///
/// In en, this message translates to:
/// **'Failed to mark topic as resolved'**
String get errorResolveTopicFailedTitle;

/// Error title when marking a topic as unresolved failed.
///
/// In en, this message translates to:
/// **'Failed to mark topic as unresolved'**
String get errorUnresolveTopicFailedTitle;

/// Label for copy message text button on action sheet.
///
/// In en, this message translates to:
Expand Down
27 changes: 27 additions & 0 deletions lib/generated/l10n/zulip_localizations_ar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,33 @@ class ZulipLocalizationsAr extends ZulipLocalizations {
@override
String get actionSheetOptionUnfollowTopic => 'Unfollow topic';

@override
String get actionSheetOptionResolveTopic => 'Mark as resolved';

@override
String get actionSheetOptionUnresolveTopic => 'Mark as unresolved';

@override
String get resolveTopicInterruptedTitle => 'Problem marking topic as resolved';

@override
String get unresolveTopicInterruptedTitle => 'Problem marking topic as unresolved';

@override
String get topicAlreadyResolvedMessage => 'This topic is already marked as resolved.';

@override
String get topicAlreadyUnresolvedMessage => 'This topic is already marked as unresolved.';

@override
String get topicRenamedMessage => 'This topic has been renamed.';

@override
String get errorResolveTopicFailedTitle => 'Failed to mark topic as resolved';

@override
String get errorUnresolveTopicFailedTitle => 'Failed to mark topic as unresolved';

@override
String get actionSheetOptionCopyMessageText => 'Copy message text';

Expand Down
27 changes: 27 additions & 0 deletions lib/generated/l10n/zulip_localizations_en.dart
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,33 @@ class ZulipLocalizationsEn extends ZulipLocalizations {
@override
String get actionSheetOptionUnfollowTopic => 'Unfollow topic';

@override
String get actionSheetOptionResolveTopic => 'Mark as resolved';

@override
String get actionSheetOptionUnresolveTopic => 'Mark as unresolved';

@override
String get resolveTopicInterruptedTitle => 'Problem marking topic as resolved';

@override
String get unresolveTopicInterruptedTitle => 'Problem marking topic as unresolved';

@override
String get topicAlreadyResolvedMessage => 'This topic is already marked as resolved.';

@override
String get topicAlreadyUnresolvedMessage => 'This topic is already marked as unresolved.';

@override
String get topicRenamedMessage => 'This topic has been renamed.';

@override
String get errorResolveTopicFailedTitle => 'Failed to mark topic as resolved';

@override
String get errorUnresolveTopicFailedTitle => 'Failed to mark topic as unresolved';

@override
String get actionSheetOptionCopyMessageText => 'Copy message text';

Expand Down
27 changes: 27 additions & 0 deletions lib/generated/l10n/zulip_localizations_ja.dart
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,33 @@ class ZulipLocalizationsJa extends ZulipLocalizations {
@override
String get actionSheetOptionUnfollowTopic => 'Unfollow topic';

@override
String get actionSheetOptionResolveTopic => 'Mark as resolved';

@override
String get actionSheetOptionUnresolveTopic => 'Mark as unresolved';

@override
String get resolveTopicInterruptedTitle => 'Problem marking topic as resolved';

@override
String get unresolveTopicInterruptedTitle => 'Problem marking topic as unresolved';

@override
String get topicAlreadyResolvedMessage => 'This topic is already marked as resolved.';

@override
String get topicAlreadyUnresolvedMessage => 'This topic is already marked as unresolved.';

@override
String get topicRenamedMessage => 'This topic has been renamed.';

@override
String get errorResolveTopicFailedTitle => 'Failed to mark topic as resolved';

@override
String get errorUnresolveTopicFailedTitle => 'Failed to mark topic as unresolved';

@override
String get actionSheetOptionCopyMessageText => 'Copy message text';

Expand Down
27 changes: 27 additions & 0 deletions lib/generated/l10n/zulip_localizations_nb.dart
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,33 @@ class ZulipLocalizationsNb extends ZulipLocalizations {
@override
String get actionSheetOptionUnfollowTopic => 'Unfollow topic';

@override
String get actionSheetOptionResolveTopic => 'Mark as resolved';

@override
String get actionSheetOptionUnresolveTopic => 'Mark as unresolved';

@override
String get resolveTopicInterruptedTitle => 'Problem marking topic as resolved';

@override
String get unresolveTopicInterruptedTitle => 'Problem marking topic as unresolved';

@override
String get topicAlreadyResolvedMessage => 'This topic is already marked as resolved.';

@override
String get topicAlreadyUnresolvedMessage => 'This topic is already marked as unresolved.';

@override
String get topicRenamedMessage => 'This topic has been renamed.';

@override
String get errorResolveTopicFailedTitle => 'Failed to mark topic as resolved';

@override
String get errorUnresolveTopicFailedTitle => 'Failed to mark topic as unresolved';

@override
String get actionSheetOptionCopyMessageText => 'Copy message text';

Expand Down
27 changes: 27 additions & 0 deletions lib/generated/l10n/zulip_localizations_pl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,33 @@ class ZulipLocalizationsPl extends ZulipLocalizations {
@override
String get actionSheetOptionUnfollowTopic => 'Nie śledź wątku';

@override
String get actionSheetOptionResolveTopic => 'Mark as resolved';

@override
String get actionSheetOptionUnresolveTopic => 'Mark as unresolved';

@override
String get resolveTopicInterruptedTitle => 'Problem marking topic as resolved';

@override
String get unresolveTopicInterruptedTitle => 'Problem marking topic as unresolved';

@override
String get topicAlreadyResolvedMessage => 'This topic is already marked as resolved.';

@override
String get topicAlreadyUnresolvedMessage => 'This topic is already marked as unresolved.';

@override
String get topicRenamedMessage => 'This topic has been renamed.';

@override
String get errorResolveTopicFailedTitle => 'Failed to mark topic as resolved';

@override
String get errorUnresolveTopicFailedTitle => 'Failed to mark topic as unresolved';

@override
String get actionSheetOptionCopyMessageText => 'Skopiuj tekst wiadomości';

Expand Down
27 changes: 27 additions & 0 deletions lib/generated/l10n/zulip_localizations_ru.dart
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,33 @@ class ZulipLocalizationsRu extends ZulipLocalizations {
@override
String get actionSheetOptionUnfollowTopic => 'Не отслеживать тему';

@override
String get actionSheetOptionResolveTopic => 'Mark as resolved';

@override
String get actionSheetOptionUnresolveTopic => 'Mark as unresolved';

@override
String get resolveTopicInterruptedTitle => 'Problem marking topic as resolved';

@override
String get unresolveTopicInterruptedTitle => 'Problem marking topic as unresolved';

@override
String get topicAlreadyResolvedMessage => 'This topic is already marked as resolved.';

@override
String get topicAlreadyUnresolvedMessage => 'This topic is already marked as unresolved.';

@override
String get topicRenamedMessage => 'This topic has been renamed.';

@override
String get errorResolveTopicFailedTitle => 'Failed to mark topic as resolved';

@override
String get errorUnresolveTopicFailedTitle => 'Failed to mark topic as unresolved';

@override
String get actionSheetOptionCopyMessageText => 'Скопировать текст сообщения';

Expand Down
27 changes: 27 additions & 0 deletions lib/generated/l10n/zulip_localizations_sk.dart
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,33 @@ class ZulipLocalizationsSk extends ZulipLocalizations {
@override
String get actionSheetOptionUnfollowTopic => 'Prestať sledovať tému';

@override
String get actionSheetOptionResolveTopic => 'Mark as resolved';

@override
String get actionSheetOptionUnresolveTopic => 'Mark as unresolved';

@override
String get resolveTopicInterruptedTitle => 'Problem marking topic as resolved';

@override
String get unresolveTopicInterruptedTitle => 'Problem marking topic as unresolved';

@override
String get topicAlreadyResolvedMessage => 'This topic is already marked as resolved.';

@override
String get topicAlreadyUnresolvedMessage => 'This topic is already marked as unresolved.';

@override
String get topicRenamedMessage => 'This topic has been renamed.';

@override
String get errorResolveTopicFailedTitle => 'Failed to mark topic as resolved';

@override
String get errorUnresolveTopicFailedTitle => 'Failed to mark topic as unresolved';

@override
String get actionSheetOptionCopyMessageText => 'Skopírovať text správy';

Expand Down
Loading

0 comments on commit 5c7b14f

Please sign in to comment.