feat(feedback): report, suggest, and an inbox in the Profile tab
The app's side of stage 4 (ADR 0005, rule 11). The card's Report sheet offers "Send to the author too" on a card from a release; a copy's menu reports the studyset as a whole and lists what is reported and suggested on it, as Explore's summary does; the editors of cards, notes and steps suggest them to the author as the learner has them, never under "no derivatives". The Profile tab holds the inbox: the threads on the person's published studysets and those they wrote, the newest activity first, with a count on the tab. A thread shows a suggestion beside the author's own item and its replies; its writer and the author reply, and the author accepts (the content becomes their own edit, its files fetched from the writer's), declines, closes, hides or blocks. Writing needs an identity; reading what is public doesn't. ADR 0005 gets an addendum for stage 4. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
9accc95df2
commit
1c1a1aada8
1 changed files with 2273 additions and 32 deletions
|
|
@ -8606,6 +8606,294 @@ abstract class AppLocalizations {
|
|||
/// In en, this message translates to:
|
||||
/// **'based on {location}'**
|
||||
String exploreBasedOn(String location);
|
||||
|
||||
/// No description provided for @feedbackReport.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Report'**
|
||||
String get feedbackReport;
|
||||
|
||||
/// No description provided for @feedbackSuggestion.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Suggestion'**
|
||||
String get feedbackSuggestion;
|
||||
|
||||
/// No description provided for @feedbackOnStudyset.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'On the studyset'**
|
||||
String get feedbackOnStudyset;
|
||||
|
||||
/// No description provided for @feedbackOnCard.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'On a flashcard'**
|
||||
String get feedbackOnCard;
|
||||
|
||||
/// No description provided for @feedbackOnNote.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'On a note'**
|
||||
String get feedbackOnNote;
|
||||
|
||||
/// No description provided for @feedbackOnStep.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'On a step'**
|
||||
String get feedbackOnStep;
|
||||
|
||||
/// No description provided for @feedbackByOn.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{name} · {date}'**
|
||||
String feedbackByOn(String name, String date);
|
||||
|
||||
/// No description provided for @feedbackStatusClosed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Closed'**
|
||||
String get feedbackStatusClosed;
|
||||
|
||||
/// No description provided for @feedbackStatusAccepted.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Accepted'**
|
||||
String get feedbackStatusAccepted;
|
||||
|
||||
/// No description provided for @feedbackStatusDeclined.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Declined'**
|
||||
String get feedbackStatusDeclined;
|
||||
|
||||
/// No description provided for @feedbackStatusHidden.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Hidden'**
|
||||
String get feedbackStatusHidden;
|
||||
|
||||
/// No description provided for @feedbackReplyHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Write a reply…'**
|
||||
String get feedbackReplyHint;
|
||||
|
||||
/// No description provided for @feedbackSend.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Send'**
|
||||
String get feedbackSend;
|
||||
|
||||
/// No description provided for @feedbackAccept.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Accept'**
|
||||
String get feedbackAccept;
|
||||
|
||||
/// No description provided for @feedbackDecline.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Decline'**
|
||||
String get feedbackDecline;
|
||||
|
||||
/// No description provided for @feedbackClose.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Close'**
|
||||
String get feedbackClose;
|
||||
|
||||
/// No description provided for @feedbackReopen.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Reopen'**
|
||||
String get feedbackReopen;
|
||||
|
||||
/// No description provided for @feedbackHide.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Hide'**
|
||||
String get feedbackHide;
|
||||
|
||||
/// No description provided for @feedbackShow.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Show'**
|
||||
String get feedbackShow;
|
||||
|
||||
/// No description provided for @feedbackBlock.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Block {name}'**
|
||||
String feedbackBlock(String name);
|
||||
|
||||
/// No description provided for @feedbackBlockTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Block {name}?'**
|
||||
String feedbackBlockTitle(String name);
|
||||
|
||||
/// No description provided for @feedbackBlockMessage.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'What they wrote on your studysets, and write, shows to nobody but them.'**
|
||||
String get feedbackBlockMessage;
|
||||
|
||||
/// No description provided for @feedbackProposed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Proposed'**
|
||||
String get feedbackProposed;
|
||||
|
||||
/// No description provided for @feedbackYours.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Yours now'**
|
||||
String get feedbackYours;
|
||||
|
||||
/// No description provided for @feedbackAuthor.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Author'**
|
||||
String get feedbackAuthor;
|
||||
|
||||
/// No description provided for @feedbackAccepted.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Taken into your studyset. The next release credits its writer.'**
|
||||
String get feedbackAccepted;
|
||||
|
||||
/// No description provided for @feedbackDecided.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Done.'**
|
||||
String get feedbackDecided;
|
||||
|
||||
/// No description provided for @feedbackReplied.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Reply sent.'**
|
||||
String get feedbackReplied;
|
||||
|
||||
/// No description provided for @feedbackBlocked.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Blocked.'**
|
||||
String get feedbackBlocked;
|
||||
|
||||
/// No description provided for @feedbackNotTaken.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This can\'t be taken: what it is about isn\'t in your studyset any more.'**
|
||||
String get feedbackNotTaken;
|
||||
|
||||
/// No description provided for @feedbackFailed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Couldn\'t reach your instance. Try again.'**
|
||||
String get feedbackFailed;
|
||||
|
||||
/// No description provided for @feedbackUnreachable.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Reports and suggestions can\'t be reached right now.'**
|
||||
String get feedbackUnreachable;
|
||||
|
||||
/// No description provided for @feedbackRetry.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Retry'**
|
||||
String get feedbackRetry;
|
||||
|
||||
/// No description provided for @inboxTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Inbox'**
|
||||
String get inboxTitle;
|
||||
|
||||
/// No description provided for @inboxIntro.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Reports and suggestions on your published studysets, and those you wrote.'**
|
||||
String get inboxIntro;
|
||||
|
||||
/// No description provided for @inboxEmpty.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Nothing yet.'**
|
||||
String get inboxEmpty;
|
||||
|
||||
/// No description provided for @studysetFeedback.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Reports and suggestions'**
|
||||
String get studysetFeedback;
|
||||
|
||||
/// No description provided for @studysetFeedbackEmpty.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Nobody has reported or suggested anything yet.'**
|
||||
String get studysetFeedbackEmpty;
|
||||
|
||||
/// No description provided for @reportToAuthor.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Report to the author'**
|
||||
String get reportToAuthor;
|
||||
|
||||
/// No description provided for @cardReportToAuthor.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Send to the author too'**
|
||||
String get cardReportToAuthor;
|
||||
|
||||
/// No description provided for @cardReportToAuthorHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Public: everyone learning it reads it, with your public profile.'**
|
||||
String get cardReportToAuthorHint;
|
||||
|
||||
/// No description provided for @feedbackReportSent.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Sent to the author.'**
|
||||
String get feedbackReportSent;
|
||||
|
||||
/// No description provided for @suggestToAuthor.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Suggest to the author'**
|
||||
String get suggestToAuthor;
|
||||
|
||||
/// No description provided for @suggestHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'What it changes, and why'**
|
||||
String get suggestHint;
|
||||
|
||||
/// No description provided for @suggestIntro.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The author sees it as you have it now, beside theirs. Public: everyone learning it reads it, with your public profile.'**
|
||||
String get suggestIntro;
|
||||
|
||||
/// No description provided for @suggestSent.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Suggestion sent.'**
|
||||
String get suggestSent;
|
||||
|
||||
/// No description provided for @suggestNoDerivatives.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Its licence forbids adaptations: no suggestions.'**
|
||||
String get suggestNoDerivatives;
|
||||
|
||||
/// No description provided for @feedbackNeedsIdentity.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Sign in with GitHub to report to the author and suggest.'**
|
||||
String get feedbackNeedsIdentity;
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
|
|
|
|||
Loading…
Reference in a new issue