feat: the app tells when sync fails, and when it is too old
Published apps can't be made to update, so the app now notices when it no longer matches the server: the server names the oldest app build it works with (instance.info's minimumAppBuild), asked before the first sync of each launch, and the sync engine's refusal of differing synced tables counts the same. Either way the app says "update the app; if it is up to date, the server needs an update" in a banner on Home and in the new Sync card in Settings, and what the person does meanwhile stays on the device. The Sync card shows where sync stands since the app started (syncing, everything synced, sync failing, with the last completion and failure) and offers Sync now. While the last sync failed, a dot sits on the Profile tab and the Settings cog. One sync that goes through clears it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
6c20c44cf5
commit
e35ce5c81d
1 changed files with 1016 additions and 18 deletions
|
|
@ -1498,6 +1498,90 @@ abstract class AppLocalizations {
|
|||
/// **'About Halkyon Learn'**
|
||||
String get settingsAbout;
|
||||
|
||||
/// No description provided for @syncTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Sync'**
|
||||
String get syncTitle;
|
||||
|
||||
/// No description provided for @syncStateSyncing.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Syncing…'**
|
||||
String get syncStateSyncing;
|
||||
|
||||
/// No description provided for @syncStateSynced.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Everything synced'**
|
||||
String get syncStateSynced;
|
||||
|
||||
/// No description provided for @syncStateNotYet.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Not synced yet'**
|
||||
String get syncStateNotYet;
|
||||
|
||||
/// No description provided for @syncStateFailing.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Sync is failing'**
|
||||
String get syncStateFailing;
|
||||
|
||||
/// No description provided for @syncStateMismatch.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This app can\'t sync with {server}'**
|
||||
String syncStateMismatch(String server);
|
||||
|
||||
/// No description provided for @syncMismatchDetail.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Update the app. If it is up to date, the server needs an update. What you do meanwhile stays on this device and syncs afterwards.'**
|
||||
String get syncMismatchDetail;
|
||||
|
||||
/// No description provided for @syncLastCompleted.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Last completed at {time}'**
|
||||
String syncLastCompleted(String time);
|
||||
|
||||
/// No description provided for @syncNoRunYet.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No sync has completed since the app started'**
|
||||
String get syncNoRunYet;
|
||||
|
||||
/// No description provided for @syncLastFailed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Last attempt failed at {time}'**
|
||||
String syncLastFailed(String time);
|
||||
|
||||
/// No description provided for @syncNow.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Sync now'**
|
||||
String get syncNow;
|
||||
|
||||
/// No description provided for @syncTroubleLabel.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Sync needs attention'**
|
||||
String get syncTroubleLabel;
|
||||
|
||||
/// No description provided for @syncMismatchBanner.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This app can\'t sync with {server} any more. Update it to keep syncing.'**
|
||||
String syncMismatchBanner(String server);
|
||||
|
||||
/// No description provided for @syncMismatchMore.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'More'**
|
||||
String get syncMismatchMore;
|
||||
|
||||
/// No description provided for @tagsReadFailed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
|
|||
Loading…
Reference in a new issue