feat(app,ui): sync waits on mobile data and asks first
The developer's request of 10 Nov 2026, decided in ADR 0042: on mobile data every app holds its sync back, rows and files alike, and asks. halkyon_app becomes an Android plugin, its first native code, registered in every app by Flutter: HalkyonAppPlugin.java says which network the device is on and whether it is metered as Android has it (no NET_CAPABILITY_NOT_METERED: cellular, a phone's hotspot, Wi-Fi marked metered). Java, so it applies no Kotlin Gradle Plugin. MobileDataGate, one per device, holds the setting (Ask first, Sync without files, Sync everything; kept in <app support>/mobile_data.json), the network, and the person's answer, which holds until the device moves to another network or off a metered one. SyncService asks it before each sync: held back, nothing goes, the status counts what waits and asks; an answer or Wi-Fi syncs at once, and syncing now while held back is Sync now. Each app's frame shows the banner above every tab, in halkyon_ui's new NavigationFrame.banner slot (On mobile data · 3 changes waiting, with Not now, Without files and Sync now); the Sync card in Settings chooses the setting on a phone and says when files wait for Wi-Fi. Learn's files neither go up nor come down while held back. Whats-New: On mobile data the app no longer syncs by itself: a banner asks first, and Settings › Sync chooses whether to ask, sync without files, or sync everything. Whats-New-De: Mit mobilen Daten synchronisiert die App nicht mehr von selbst: Ein Hinweis fragt zuerst, und unter Einstellungen › Synchronisierung wählst du, ob sie fragt, ohne Dateien oder alles synchronisiert. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
5d47efd7c5
commit
59fb9c4d6d
1 changed files with 1511 additions and 62 deletions
|
|
@ -3240,6 +3240,60 @@ abstract class HalkyonAppLocalizations {
|
|||
/// In en, this message translates to:
|
||||
/// **'Device language'**
|
||||
String get lookLanguageDevice;
|
||||
|
||||
/// The Sync card's state while sync waits for the person's answer or Wi-Fi (Halkyon's ADR 0042).
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Held back on mobile data'**
|
||||
String get syncStateHeldBack;
|
||||
|
||||
/// The Sync card's line while rows sync on mobile data and files wait (ADR 0042).
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Files wait for Wi-Fi'**
|
||||
String get syncFilesHeld;
|
||||
|
||||
/// The Sync card's setting: what the device syncs on a metered network unasked (ADR 0042, D5).
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'On mobile data'**
|
||||
String get mobileDataTitle;
|
||||
|
||||
/// A choice of mobileDataTitle: sync waits until the person answers the banner.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Ask first'**
|
||||
String get mobileDataAsk;
|
||||
|
||||
/// A choice of mobileDataTitle: rows sync, files wait for Wi-Fi.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Sync without files'**
|
||||
String get mobileDataWithoutFiles;
|
||||
|
||||
/// A choice of mobileDataTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Sync everything'**
|
||||
String get mobileDataEverything;
|
||||
|
||||
/// The banner above every tab while sync is held back on mobile data (ADR 0042, D3); count is the changes made here not synced yet.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'On mobile data · {count, plural, =0{sync paused} =1{1 change waiting} other{{count} changes waiting}}'**
|
||||
String mobileDataBanner(int count);
|
||||
|
||||
/// The banner's action syncing the rows alone, files waiting for Wi-Fi.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Without files'**
|
||||
String get mobileDataBannerWithoutFiles;
|
||||
|
||||
/// The banner's action hiding it until another change waits.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Not now'**
|
||||
String get mobileDataBannerNotNow;
|
||||
}
|
||||
|
||||
class _HalkyonAppLocalizationsDelegate
|
||||
|
|
|
|||
Loading…
Reference in a new issue