Files
smooth-app/packages/smooth_app/lib/data_models/onboarding_loader.dart
monsieurtanuki 6ae6d5c833 refactor: removing a tmp code file (#1512)
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
2022-04-07 18:03:12 +02:00

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();
}
}