Skip to content

Commit 438e220

Browse files
committed
[Launcher] feat: add incremental downloads toggle
1 parent 034dff7 commit 438e220

3 files changed

Lines changed: 20 additions & 3 deletions

File tree

Launcher/lib/core/services/app_settings.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ class General {
2828

2929
set enabledPreloadMods(bool value) => box.put('enabledPreloadMods', value);
3030

31+
bool get incrementalDownloadsEnabled =>
32+
box.get('incrementalDownloadsEnabled', defaultValue: true) as bool;
33+
34+
set incrementalDownloadsEnabled(bool value) =>
35+
box.put('incrementalDownloadsEnabled', value);
36+
3137
String? get currentVersion => box.get('currentVersion') as String?;
3238

3339
set currentVersion(String? value) => box.put('currentVersion', value);

Launcher/lib/features/download_manager/services/download_orchestrator.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,12 @@ class DownloadOrchestrator with ChangeNotifier {
196196
return false;
197197
}
198198

199-
final updater = IncrementalUpdater();
200-
if (resolved.filename.endsWith('.zip')) {
199+
final isZipFile = extension(resolved.filename) == '.zip';
200+
final useIncrementalUpdate =
201+
Preferences.general.incrementalDownloadsEnabled;
202+
203+
if (useIncrementalUpdate && isZipFile) {
204+
final updater = IncrementalUpdater();
201205
final isEligible = await updater.checkEligibility(resolved.url);
202206
if (isEligible) {
203207
_logger.info('Using incremental update for ${request.displayName}');

Launcher/lib/features/settings/screens/pages/mod_support.dart

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class ModSupport extends StatelessWidget {
1717
const SettingsHeader(title: 'MODS'),
1818
HiveListener(
1919
box: box,
20-
keys: ['enabledPreloadMods'],
20+
keys: ['enabledPreloadMods', 'incrementalDownloadsEnabled'],
2121
builder: (_) => KyberTable(
2222
items: [
2323
KyberTableItem.button(
@@ -43,6 +43,13 @@ class ModSupport extends StatelessWidget {
4343
Preferences.general.enabledPreloadMods = value;
4444
},
4545
),
46+
KyberTableItem.switchButton(
47+
title: 'Incremental Mod Downloads',
48+
value: Preferences.general.incrementalDownloadsEnabled,
49+
onChange: (bool value) {
50+
Preferences.general.incrementalDownloadsEnabled = value;
51+
},
52+
),
4653
],
4754
),
4855
),

0 commit comments

Comments
 (0)