mirror of
https://github.com/openfoodfacts/smooth-app.git
synced 2025-08-14 02:30:54 +08:00

Deleted files: * `sample_eco_knowledge_panels.json`: replaced by new file `sample_knowledge_panels.json` * `sample_health_knowledge_panels.json`: replaced by new file `sample_knowledge_panels.json` New files: * `abstract_onboarding_data.dart`: Abstraction of data we download, store and reuse at onboarding. * `dao_string.dart`: Where we store strings. * `loading_dialog.dart`: Dialog with a stop button, while a future is running. * `onboarding_data_knowledge_panels.dart`: Helper around knowledge panels we download, store and reuse at onboarding. * `onboarding_data_product.dart`: Helper around a product we download, store and reuse at onboarding. * `onboarding_loader.dart`: Helper around data we download, store and reuse at onboarding. * `sample_knowledge_panels.json`: json data downloaded today for en_US, cf. onboarding_data_knowledge_panels.dart * `tmp.dart`: Fixes to off-dart. Impacted files: * `knowledge_panel_page_template.dart`: added parameters to 1. use the database (and downloaded data) and 2. limit the display to a given panel * `knowlegde_panel_builder.dart`: added a method to display only one panel * `local_database.dart`: added new dao `DaoString` * `new_product_page.dart`: refactored * `next_button.dart`: added an optional call to async methods at "next" time - e.g. data download * `nutrition_page_loaded.dart`: now uses the new `LoadingDialog` * `onboarding_flow_navigator.dart`: now using the database to get more relevant (previoulsy downloaded) data * `preferences_page.dart`: now using previously downloaded data instead of assets * `product_dialog_helper.dart`: now uses the new `LoadingDialog` * `question_card.dart`: unrelated minor refactoring * `sample_eco_card_page.dart`: now using previously downloaded data instead of assets, and displaying only the environment card * `sample_health_card_page.dart`: now using previously downloaded data instead of assets, and displaying only the health card * `sample_product_json.dart`: json data downloaded today for en_US, cf. onboarding_data_product.dart * `sign_up_page.dart`: now uses the new `LoadingDialog`
51 lines
1.7 KiB
Dart
51 lines
1.7 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:smooth_app/data_models/onboarding_data_knowledge_panels.dart';
|
|
import 'package:smooth_app/data_models/onboarding_data_product.dart';
|
|
import 'package:smooth_app/database/local_database.dart';
|
|
import 'package:smooth_app/pages/onboarding/onboarding_flow_navigator.dart';
|
|
import 'package:smooth_app/widgets/loading_dialog.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: 'Loading internet data', // TODO(monsieurtanuki): localize
|
|
);
|
|
return;
|
|
case OnboardingPage.NOT_STARTED:
|
|
case OnboardingPage.SCAN_EXAMPLE:
|
|
case OnboardingPage.HEALTH_CARD_EXAMPLE:
|
|
case OnboardingPage.ECO_CARD_EXAMPLE:
|
|
case OnboardingPage.PREFERENCES_PAGE:
|
|
return;
|
|
case OnboardingPage.ONBOARDING_COMPLETE:
|
|
await _unloadData();
|
|
return;
|
|
}
|
|
}
|
|
|
|
/// Actual download of all data.
|
|
Future<void> _downloadData() async {
|
|
await OnboardingDataProduct(_localDatabase).downloadData();
|
|
await OnboardingDataKnowledgePanels(_localDatabase).downloadData();
|
|
}
|
|
|
|
/// Unloads all data that are no longer required.
|
|
Future<void> _unloadData() async {
|
|
await OnboardingDataProduct(_localDatabase).clear();
|
|
await OnboardingDataKnowledgePanels(_localDatabase).clear();
|
|
}
|
|
}
|