diff --git a/packages/smooth_app/lib/database/knowledge_panels_query.dart b/packages/smooth_app/lib/database/knowledge_panels_query.dart deleted file mode 100644 index a15438b7eb6..00000000000 --- a/packages/smooth_app/lib/database/knowledge_panels_query.dart +++ /dev/null @@ -1,33 +0,0 @@ -import 'dart:async'; - -import 'package:openfoodfacts/model/KnowledgePanels.dart'; -import 'package:openfoodfacts/openfoodfacts.dart'; -import 'package:smooth_app/database/product_query.dart'; - -class KnowledgePanelsQuery { - KnowledgePanelsQuery({ - required this.barcode, - }); - - final String barcode; - - Future getKnowledgePanels() async { - final ProductQueryConfiguration configuration = ProductQueryConfiguration( - barcode, - language: ProductQuery.getLanguage(), - country: ProductQuery.getCountry(), - fields: [ProductField.KNOWLEDGE_PANELS], - version: ProductQueryVersion.v2, - ); - - try { - final ProductResult productResult = await OpenFoodAPIClient.getProduct( - configuration, - ); - return productResult.product!.knowledgePanels!; - } catch (exception) { - // TODO(jasmeetsingh): Capture the exception in Sentry and don't log it here. - return KnowledgePanels.empty(); - } - } -} diff --git a/packages/smooth_app/lib/database/product_query.dart b/packages/smooth_app/lib/database/product_query.dart index fca313a0e1f..6f4e9403701 100644 --- a/packages/smooth_app/lib/database/product_query.dart +++ b/packages/smooth_app/lib/database/product_query.dart @@ -112,6 +112,7 @@ abstract class ProductQuery { ProductField.ECOSCORE_DATA, ProductField.ECOSCORE_GRADE, ProductField.ECOSCORE_SCORE, + ProductField.KNOWLEDGE_PANELS, ]; Future getSearchResult(); diff --git a/packages/smooth_app/lib/pages/product/new_product_page.dart b/packages/smooth_app/lib/pages/product/new_product_page.dart index 320edc0573d..f2d042f8753 100644 --- a/packages/smooth_app/lib/pages/product/new_product_page.dart +++ b/packages/smooth_app/lib/pages/product/new_product_page.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:openfoodfacts/model/KnowledgePanels.dart'; import 'package:openfoodfacts/openfoodfacts.dart'; import 'package:provider/provider.dart'; import 'package:smooth_app/cards/product_cards/knowledge_panels/knowledge_panels_builder.dart'; @@ -11,7 +10,6 @@ import 'package:smooth_app/data_models/product_list.dart'; import 'package:smooth_app/data_models/product_preferences.dart'; import 'package:smooth_app/data_models/user_preferences.dart'; import 'package:smooth_app/database/dao_product_list.dart'; -import 'package:smooth_app/database/knowledge_panels_query.dart'; import 'package:smooth_app/database/local_database.dart'; import 'package:smooth_app/database/product_query.dart'; import 'package:smooth_app/generic_lib/buttons/smooth_action_button.dart'; @@ -225,52 +223,21 @@ class _ProductPageState extends State { ); } - FutureBuilder _buildKnowledgePanelCards() { - // Note that this will make a new request on every rebuild. - // TODO(jasmeet): Avoid additional requests on rebuilds. - final Future knowledgePanels = KnowledgePanelsQuery( - barcode: _product.barcode!, - ).getKnowledgePanels(); - return FutureBuilder( - future: knowledgePanels, - builder: - (BuildContext context, AsyncSnapshot snapshot) { - List knowledgePanelWidgets = []; - if (snapshot.hasData) { - // Render all KnowledgePanels - knowledgePanelWidgets = KnowledgePanelsBuilder( - setState: () => setState(() {}), - refreshProductCallback: _refreshProduct, - ).buildAll( - snapshot.data!, - context: context, - product: _product, - ); - } else if (snapshot.hasError) { - // TODO(jasmeet): Retry the request. - // Do nothing for now. - } else { - // Query results not available yet. - knowledgePanelWidgets = [_buildLoadingWidget()]; - } - return KnowledgePanelProductCards(knowledgePanelWidgets); - }); - } - - Widget _buildLoadingWidget() { - return Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: const [ - SizedBox( - child: CircularProgressIndicator(), - width: 60, - height: 60, - ), - ], - ), - ); + Widget _buildKnowledgePanelCards() { + final List knowledgePanelWidgets; + if (_product.knowledgePanels == null) { + knowledgePanelWidgets = []; + } else { + knowledgePanelWidgets = KnowledgePanelsBuilder( + setState: () => setState(() {}), + refreshProductCallback: _refreshProduct, + ).buildAll( + _product.knowledgePanels!, + context: context, + product: _product, + ); + } + return KnowledgePanelProductCards(knowledgePanelWidgets); } Future _editList() async {