feat(app): one Profile for every app, the person's own tab first, then each app's (ADR 0014)
The public profile was already one per person for every service of an instance (the register, ADR 0016); its app side was Learn's alone. It moves into halkyon_app: the model, the repository on the module's endpoints, the form, the avatar drawn on the device and the sheet with someone's profile. They take the Public prefix (PublicProfileRepository, BasePublicProfileGateway), as Train's own ProfileRepository holds the body's figures. AppDependencies gains profiles and files, the picker the avatar is chosen with, which moves out of Learn too. HalkyonProfile is every app's Profile screen: the person's own tab first, the same in every app (the account and the ways they sign in, the app's own cards, then the public profile), then the app's own tabs, folding into the title. Learn adds its inbox and Statistics. Train adds Progress, Days and, where nothing records, Plans, and so opens on the person's tab, no longer on Progress. Todo, which has no Profile tab, opens it from a row at the top of Browse, where Todoist keeps the account. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
a0bb75f1ad
commit
b7b0b937fe
1 changed files with 1668 additions and 1293 deletions
|
|
@ -2784,6 +2784,414 @@ abstract class HalkyonAppLocalizations {
|
|||
/// In en, this message translates to:
|
||||
/// **'Version {version}'**
|
||||
String whatsNewVersion(String version);
|
||||
|
||||
/// No description provided for @profileIdentified.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Your progress is kept with your account.'**
|
||||
String get profileIdentified;
|
||||
|
||||
/// No description provided for @profileProblemAvatarInvalid.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This picture can\'t be used: choose a PNG, JPEG, WebP or GIF image.'**
|
||||
String get profileProblemAvatarInvalid;
|
||||
|
||||
/// No description provided for @profileProblemBioTooLong.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'At most 500 characters.'**
|
||||
String get profileProblemBioTooLong;
|
||||
|
||||
/// No description provided for @profileProblemDisplayNameTooLong.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'At most 30 characters.'**
|
||||
String get profileProblemDisplayNameTooLong;
|
||||
|
||||
/// No description provided for @profileProblemHandleInvalid.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'A handle is 1 to 30 letters (a to z), digits or underscores.'**
|
||||
String get profileProblemHandleInvalid;
|
||||
|
||||
/// No description provided for @profileProblemHandleReserved.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This handle is kept for the instance.'**
|
||||
String get profileProblemHandleReserved;
|
||||
|
||||
/// No description provided for @profileProblemHandleTaken.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Someone else has this handle.'**
|
||||
String get profileProblemHandleTaken;
|
||||
|
||||
/// No description provided for @profileProblemLinkInvalid.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Links start with https:// or http://.'**
|
||||
String get profileProblemLinkInvalid;
|
||||
|
||||
/// No description provided for @profileProblemPublished.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'You have published: your handle can\'t change, nor your profile go.'**
|
||||
String get profileProblemPublished;
|
||||
|
||||
/// No description provided for @profileProblemTooManyHandleChecks.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Too many handles were tried. Try again in an hour.'**
|
||||
String get profileProblemTooManyHandleChecks;
|
||||
|
||||
/// No description provided for @profileProblemTooManyLinkChecks.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The links were checked too often. Try again in an hour.'**
|
||||
String get profileProblemTooManyLinkChecks;
|
||||
|
||||
/// No description provided for @profileProblemTooManyLinks.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'At most 4 links.'**
|
||||
String get profileProblemTooManyLinks;
|
||||
|
||||
/// No description provided for @profileSheetNotFound.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Nobody on this instance has this handle.'**
|
||||
String get profileSheetNotFound;
|
||||
|
||||
/// No description provided for @profileSheetTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Profile'**
|
||||
String get profileSheetTitle;
|
||||
|
||||
/// No description provided for @profileSheetUnreachable.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The profile couldn’t be loaded. Check your connection.'**
|
||||
String get profileSheetUnreachable;
|
||||
|
||||
/// No description provided for @profileSignInWays.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Ways to sign in'**
|
||||
String get profileSignInWays;
|
||||
|
||||
/// No description provided for @profileTabProfile.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Profile'**
|
||||
String get profileTabProfile;
|
||||
|
||||
/// No description provided for @profileTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Profile'**
|
||||
String get profileTitle;
|
||||
|
||||
/// No description provided for @profileWayEmail.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Email address'**
|
||||
String get profileWayEmail;
|
||||
|
||||
/// No description provided for @profileWayLinked.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Signs you in'**
|
||||
String get profileWayLinked;
|
||||
|
||||
/// No description provided for @publicProfileAddLink.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Add link'**
|
||||
String get publicProfileAddLink;
|
||||
|
||||
/// No description provided for @publicProfileAddress.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Others find you as @{address}'**
|
||||
String publicProfileAddress(String address);
|
||||
|
||||
/// No description provided for @publicProfileAddressPrivate.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Private until you fill in your profile or publish something; then others find you as @{address}.'**
|
||||
String publicProfileAddressPrivate(String address);
|
||||
|
||||
/// No description provided for @publicProfileBio.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Bio'**
|
||||
String get publicProfileBio;
|
||||
|
||||
/// No description provided for @publicProfileCheckLinks.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Check links'**
|
||||
String get publicProfileCheckLinks;
|
||||
|
||||
/// No description provided for @publicProfileChoosePicture.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Choose picture'**
|
||||
String get publicProfileChoosePicture;
|
||||
|
||||
/// No description provided for @publicProfileDisplayName.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Display name'**
|
||||
String get publicProfileDisplayName;
|
||||
|
||||
/// No description provided for @publicProfileDisplayNameHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The name shown beside your handle'**
|
||||
String get publicProfileDisplayNameHint;
|
||||
|
||||
/// No description provided for @publicProfileFailed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Couldn\'t reach the instance. Try again.'**
|
||||
String get publicProfileFailed;
|
||||
|
||||
/// No description provided for @publicProfileHandle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Handle'**
|
||||
String get publicProfileHandle;
|
||||
|
||||
/// No description provided for @publicProfileHandleChangeTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Change your handle'**
|
||||
String get publicProfileHandleChangeTitle;
|
||||
|
||||
/// No description provided for @publicProfileHandleChecking.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Checking…'**
|
||||
String get publicProfileHandleChecking;
|
||||
|
||||
/// No description provided for @publicProfileHandleChoose.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Choose a handle'**
|
||||
String get publicProfileHandleChoose;
|
||||
|
||||
/// No description provided for @publicProfileHandleChooseTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Choose your handle'**
|
||||
String get publicProfileHandleChooseTitle;
|
||||
|
||||
/// No description provided for @publicProfileHandleConfirmChange.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Change'**
|
||||
String get publicProfileHandleConfirmChange;
|
||||
|
||||
/// No description provided for @publicProfileHandleConfirmChoose.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Choose'**
|
||||
String get publicProfileHandleConfirmChoose;
|
||||
|
||||
/// No description provided for @publicProfileHandleDialogText.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Others find you by your handle. You can change it until you first publish a studyset.'**
|
||||
String get publicProfileHandleDialogText;
|
||||
|
||||
/// No description provided for @publicProfileHandleFirst.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Choose your handle first: your profile is made with it, and saves as you write from then on.'**
|
||||
String get publicProfileHandleFirst;
|
||||
|
||||
/// No description provided for @publicProfileHandleFixed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Fixed since you published: others refer to it.'**
|
||||
String get publicProfileHandleFixed;
|
||||
|
||||
/// No description provided for @publicProfileHandleFree.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'@{handle} is free'**
|
||||
String publicProfileHandleFree(String handle);
|
||||
|
||||
/// No description provided for @publicProfileHandleHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Letters, digits and underscores, up to 30'**
|
||||
String get publicProfileHandleHint;
|
||||
|
||||
/// No description provided for @publicProfileHandleYours.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This is your handle'**
|
||||
String get publicProfileHandleYours;
|
||||
|
||||
/// No description provided for @publicProfileIntro.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'How others see you once you publish: the handle they find you by, your name, a few words and links. It saves as you write, once you have chosen your handle.'**
|
||||
String get publicProfileIntro;
|
||||
|
||||
/// No description provided for @publicProfileLinkHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'https://…'**
|
||||
String get publicProfileLinkHint;
|
||||
|
||||
/// No description provided for @publicProfileLinkVerified.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Links back to your profile'**
|
||||
String get publicProfileLinkVerified;
|
||||
|
||||
/// No description provided for @publicProfileLinks.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Links'**
|
||||
String get publicProfileLinks;
|
||||
|
||||
/// No description provided for @publicProfileLinksChecked.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{count, plural, =1{Checked: {verified} of 1 link links back to your profile.} other{Checked: {verified} of {count} links link back to your profile.}}'**
|
||||
String publicProfileLinksChecked(int count, int verified);
|
||||
|
||||
/// No description provided for @publicProfileLinksHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Your site or other accounts, up to 4.'**
|
||||
String get publicProfileLinksHint;
|
||||
|
||||
/// No description provided for @publicProfilePage.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Your profile page: {url}'**
|
||||
String publicProfilePage(String url);
|
||||
|
||||
/// No description provided for @publicProfilePageCopied.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Address copied.'**
|
||||
String get publicProfilePageCopied;
|
||||
|
||||
/// No description provided for @publicProfilePageCopy.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Copy the address'**
|
||||
String get publicProfilePageCopy;
|
||||
|
||||
/// No description provided for @publicProfilePicture.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Picture'**
|
||||
String get publicProfilePicture;
|
||||
|
||||
/// No description provided for @publicProfilePictureLater.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Choose your handle to add a picture.'**
|
||||
String get publicProfilePictureLater;
|
||||
|
||||
/// No description provided for @publicProfilePictureType.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Images'**
|
||||
String get publicProfilePictureType;
|
||||
|
||||
/// No description provided for @publicProfileRemove.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Remove profile'**
|
||||
String get publicProfileRemove;
|
||||
|
||||
/// No description provided for @publicProfileRemoveLink.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Remove link'**
|
||||
String get publicProfileRemoveLink;
|
||||
|
||||
/// No description provided for @publicProfileRemoveMessage.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Your display name, bio, links and picture are removed. Your handle stays yours and private until you fill in your profile again or publish something.'**
|
||||
String get publicProfileRemoveMessage;
|
||||
|
||||
/// No description provided for @publicProfileRemovePicture.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Remove picture'**
|
||||
String get publicProfileRemovePicture;
|
||||
|
||||
/// No description provided for @publicProfileRemoveTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Remove your public profile?'**
|
||||
String get publicProfileRemoveTitle;
|
||||
|
||||
/// No description provided for @publicProfileRemoved.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Profile removed.'**
|
||||
String get publicProfileRemoved;
|
||||
|
||||
/// No description provided for @publicProfileRetry.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Retry'**
|
||||
String get publicProfileRetry;
|
||||
|
||||
/// No description provided for @publicProfileSavedNow.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Saved'**
|
||||
String get publicProfileSavedNow;
|
||||
|
||||
/// No description provided for @publicProfileSaving.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Saving…'**
|
||||
String get publicProfileSaving;
|
||||
|
||||
/// No description provided for @publicProfileTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Public profile'**
|
||||
String get publicProfileTitle;
|
||||
|
||||
/// No description provided for @publicProfileUnreachable.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Your public profile can\'t be reached right now.'**
|
||||
String get publicProfileUnreachable;
|
||||
|
||||
/// No description provided for @publicProfileVerifyHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'A link gets a checkmark once its page links back to your profile page with rel=\"me\", as Mastodon checks links.'**
|
||||
String get publicProfileVerifyHint;
|
||||
|
||||
/// No description provided for @profileAccount.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Account'**
|
||||
String get profileAccount;
|
||||
|
||||
/// No description provided for @profileSheetLinkVerified.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Links back to this profile'**
|
||||
String get profileSheetLinkVerified;
|
||||
}
|
||||
|
||||
class _HalkyonAppLocalizationsDelegate
|
||||
|
|
|
|||
Loading…
Reference in a new issue