mirror of
https://github.com/openfoodfacts/smooth-app.git
synced 2025-08-26 11:16:45 +08:00

Now that knowledge panels are an explicit field of product, we can simplify the code. Deleted files: * `onboarding_data_knowledge_panels.dart` * `tmp.dart` Impacted files: * `knowledge_panels_template.dart`: now using the new `OnboardingDataProduct.forKnowledgePanels` constructor * `onboarding_data_product.dart`: refactored in order to include knowledge panels as part of product * `onboarding_loader.dart`: now using the new `OnboardingDataProduct` constructors * `preferences_page.dart`: now using the new `OnboardingDataProduct.forProduct` constructor
54 lines
1.8 KiB
Dart
54 lines
1.8 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|
import 'package:smooth_app/data_models/onboarding_data_product.dart';
|
|
import 'package:smooth_app/database/local_database.dart';
|
|
import 'package:smooth_app/generic_lib/loading_dialog.dart';
|
|
import 'package:smooth_app/pages/onboarding/onboarding_flow_navigator.dart';
|
|
|
|
/// Helper around data we download, store and reuse at onboarding.
|
|
class OnboardingLoader {
|
|
OnboardingLoader(this._localDatabase);
|
|
|
|
final LocalDatabase _localDatabase;
|
|
|
|
/// To be called first thing when we click on "next" during onboarding.
|
|
Future<void> runAtNextTime(
|
|
final OnboardingPage page,
|
|
final BuildContext context,
|
|
) async {
|
|
switch (page) {
|
|
case OnboardingPage.WELCOME:
|
|
await LoadingDialog.run<void>(
|
|
context: context,
|
|
future: _downloadData(),
|
|
title: AppLocalizations.of(context)!
|
|
.onboarding_welcome_loading_dialog_title,
|
|
);
|
|
return;
|
|
case OnboardingPage.NOT_STARTED:
|
|
case OnboardingPage.SCAN_EXAMPLE:
|
|
case OnboardingPage.HEALTH_CARD_EXAMPLE:
|
|
case OnboardingPage.ECO_CARD_EXAMPLE:
|
|
case OnboardingPage.PREFERENCES_PAGE:
|
|
case OnboardingPage.CONSENT_PAGE:
|
|
return;
|
|
case OnboardingPage.ONBOARDING_COMPLETE:
|
|
await _unloadData();
|
|
return;
|
|
}
|
|
}
|
|
|
|
/// Actual download of all data.
|
|
Future<void> _downloadData() async {
|
|
await OnboardingDataProduct.forProduct(_localDatabase).downloadData();
|
|
await OnboardingDataProduct.forKnowledgePanels(_localDatabase)
|
|
.downloadData();
|
|
}
|
|
|
|
/// Unloads all data that are no longer required.
|
|
Future<void> _unloadData() async {
|
|
await OnboardingDataProduct.forProduct(_localDatabase).clear();
|
|
await OnboardingDataProduct.forKnowledgePanels(_localDatabase).clear();
|
|
}
|
|
}
|