38 Commits

Author SHA1 Message Date
9829a10cc8 feat: 6591 - update OxF data with Prices data (#6667)
* feat: 6591 - update OxF data with Prices data

New file:
* `price_to_oxf.dart`: Tool to update OxF data from Prices data.

Impacted files:
* `background_task.dart`: unrelated minor refactoring
* `background_task_details.dart`: minor refactoring
* `background_task_price.dart`: now updating OxF products with Prices data
* `simple_input_page_helpers.dart`: minor refactoring

* merging

* format

* sorry about that, couldn't merge "develop"

* effing stupid dart format

* effing stupid dart format, again

---------

Co-authored-by: Pierre Slamich <pierre@openfoodfacts.org>
2025-07-14 16:34:01 +02:00
e3bc40fdf3 chore: Migration to Dart 3.8 (#6668)
* Migration to Dart 3.8

* New GA

* Fix dartdoc
2025-06-23 18:14:17 +02:00
dda75e283e feat: Flutter 3.32 (#6665)
* Migration to Flutter 3.32

* Temporary ignore dart formatter issues
2025-06-23 09:56:00 +02:00
b3b9ed8ad9 feat: 4679 - added a way to edit traces (#6495)
* feat: 4679 - added a way to edit traces

New file:
* `simple_input_page_trace_helper.dart`: Implementation for "Traces" of an AbstractSimpleInputPageHelper.

Impacted files:
* `analytics_helper.dart`: added an entry for "traces"
* `app_en.arb`: added labels for "traces"
* `background_task_details.dart`: added an entry for "traces"
* `edit_product_page.dart`: added a button for "traces"
* `product_query.dart`: added entries for "traces"
* `pubspec.lock`: wtf
* `pubspec.yaml`: upgraded to off-dart 3.21.0, where we can edit traces
* `simple_input_page_helpers.dart`: added a warning "TODO" about the file being too big
* `up_to_date_changes.dart`: added an entry for "traces"

* stupid formatter error

* my bad, this time
2025-04-13 12:05:45 +02:00
8306848574 fix: Only set the product language on addition (#6386)
* Only set the product language on addition

* TODO style
2025-02-17 15:15:18 +01:00
23288dfc44 feat: Less annoying floating spam (#6190)
* Less annoying floating spam

* Ooops, remove that test, Edouard

* No message for pictures

* Better edit product page banner
2025-01-13 14:17:00 +01:00
5a38f01f51 fix: 5864 - more verbose error message for details (#5892)
* fix: 5864 - more verbose error message for details

* off-dart 3.7.1 with product_type not included if null

* error AND status_verbose
2024-11-21 20:52:45 +01:00
3260024a56 fix: 5742 - centered tooltip after detail changes (#5751)
Impacted file:
* `background_task_details.dart`: centered instead of bottomCentered
2024-10-27 16:02:59 +01:00
69bb171a20 feat: 5405 - 3 queues for background tasks (fast, slow, long haul) (#5743)
New file:
* `background_task_queue.dart`: Queues for Background Tasks.

Impacted files:
* `background_task.dart`: now we add tasks to a specific queue
* `background_task_add_other_price.dart`: assigned to `BackgroundTaskQueue.fast`
* `background_task_add_price.dart`: assigned to `BackgroundTaskQueue.slow`
* `background_task_badge.dart`: minor refactoring
* `background_task_crop.dart`: assigned to `BackgroundTaskQueue.fast`
* `background_task_details.dart`: assigned to `BackgroundTaskQueue.fast`
* `background_task_download_products.dart`: assigned to `BackgroundTaskQueue.longHaul`
* `background_task_full_refresh.dart`: assigned to `BackgroundTaskQueue.longHaul`
* `background_task_hunger_games.dart`: assigned to `BackgroundTaskQueue.fast`
* `background_task_image.dart`: assigned to `BackgroundTaskQueue.slow`
* `background_task_language_refresh.dart`: assigned to `BackgroundTaskQueue.longHaul`
* `background_task_manager.dart`: now using new class `BackgroundTaskQueue` in order to use multiple queues
* `background_task_offline.dart`: assigned to `BackgroundTaskQueue.longHaul`
* `background_task_refresh_later.dart`: assigned to `BackgroundTaskQueue.fast`
* `background_task_top_barcodes.dart`: assigned to `BackgroundTaskQueue.longHaul`
* `background_task_unselect.dart`: assigned to `BackgroundTaskQueue.fast`
* `dao_string_list.dart`: added 2 queues
* `local_database.dart`: now running all queues
* `local_database_mock.dart`: minor refactoring
* `offline_tasks_page.dart`: now taking queues into account
* `up_to_date_mixin.dart`: now running all queues
* `user_preferences_page.dart`: now running all queues
2024-10-27 13:06:29 +01:00
899cb0f4ac feat: 5643 - edit of products of any product type (#5661)
Impacted files:
* `add_basic_details_page.dart`: added product type
* `add_new_product_page.dart`: added a "set product type page" for new products; added product type; minor refactoring
* `add_other_details_page.dart`: added product type
* `app_en.arb`: added 1 label per product type, and 4 labels for product type input
* `background_task_barcode.dart`: added product type
* `background_task_crop.dart`: added product type
* `background_task_details.dart`: added product type
* `background_task_hunger_games.dart`: added product type
* `background_task_image.dart`: added product type
* `background_task_refresh_later.dart`: added product type
* `background_task_unselect.dart`: added product type
* `background_task_upload.dart`: added product type
* `edit_new_packagings.dart`: added product type
* `edit_ocr_page.dart`: added product type
* `image_crop_page.dart`: added product type
* `nutrition_page_loaded.dart`: added product type
* `product_crop_helper.dart`: added product type
* `product_dialog_helper.dart`: removed irrelevant nutriscore and ecoscore logos for new found products, as we cannot say already if it's food
* `product_image_button.dart`: added product type
* `product_image_carousel_item.dart`: added product type
* `product_image_crop_button.dart`: added product type
* `product_image_gallery_view.dart`: added product type
* `product_image_local_button.dart`: added product type
* `product_image_unselect_button.dart`: added product type
* `product_image_viewer.dart`: added product type
* `product_query.dart`: localized labels for product type
* `simple_input_page.dart`: added product type
* `simple_input_page_helpers.dart`: added product type
* `up_to_date_changes.dart`: added product type
* `uploaded_image_gallery.dart`: added product type
2024-10-02 17:53:19 +02:00
a6569866d4 feat: Upgrade the Flutter version to 3.24 (#5613)
* Let's migrate the app to Flutter 3.24

* `openfoodfacts_flutter_lints` from the `main` branch

* A fix for `/// For the world view`
2024-09-26 16:48:01 +02:00
89cea10a42 feat: 4674 - immediate access to "other" pictures if possible (#4928)
New file:
* `background_task_product_change.dart`: Interface for background tasks that change a product.

Impacted files:
* `background_task_crop.dart`: minor refactoring
* `background_task_details.dart`: minor refactoring, implementing new interface `BackgroundTaskProductChange`
* `background_task_image.dart`: minor refactoring
* `background_task_unselected.dart`: minor refactoring, implementing new interface `BackgroundTaskProductChange`
* `background_task_upload.dart`: minor refactoring, implementing new interface `BackgroundTaskProductChange`
* `product_cards_helper.dart`: new method `getRawProductImages`
* `product_image_gallery_other_view.dart`: now we may have directly the raw images, and if needed we refresh the product instead of fetching specific image ids
* `product_image_gallery_view.dart`: minor refactoring
* `product_image_other_page.dart`: replaced deprecated method
* `product_image_server_button.dart`: now we may have directly the raw images, and if needed we refresh the product instead of fetching specific image ids
* `product_image_viewer.dart`: replaced deprecated method
* `pubspec.lock`: generated
* `pubspec.yaml`: upgraded to off-dart 3.3.0
* `uploaded_image_gallery.dart`: now using `List<ProductImage>` as input
2024-01-25 21:12:34 +01:00
28262ca1ce fix: 4663 - use the latest password for background tasks + refactoring (#4869)
* fix: 4663 - use the latest password for background tasks + refactoring

Impacted files:
* `background_task.dart`: use the latest password; now we compute user and country from that class, and language most of the time too
* `background_task_barcode.dart`: removed user and country parameters; replaced language
* `background_task_crop.dart`: removed user and country parameters; replaced language
* `background_task_details.dart`: removed user, language and country parameters
* `background_task_download_products.dart`: removed user, language and country parameters
* `background_task_full_refresh.dart`: removed user, language and country parameters
* `background_task_hunger_games.dart`: removed user, language and country parameters
* `background_task_image.dart`: removed user and country parameters; replaced language
* `background_task_offline.dart`: removed user, language and country parameters
* `background_task_paged.dart`: removed user, language and country parameters
* `background_task_progressing.dart`: removed user, language and country parameters
* `background_task_refresh_later.dart`: removed user, language and country parameters
* `background_task_top_barcodes.dart`: removed user, language and country parameters
* `background_task_unselect.dart`: removed user, language and country parameters
* `background_task_upload.dart`: removed user and country parameters; replaced language
* `paged_to_be_completed_product_query.dart`: minor refactoring
* `paged_user_product_query.dart`: minor refactoring

* fix: 4663 - lint fix

---------

Co-authored-by: Pierre Slamich <pierre@openfoodfacts.org>
2023-12-21 15:42:50 +01:00
408ef4935e fix: 4870 - more verbose error message for detail background tasks (#4877)
* fix: 4870 - more verbose error message for detail background tasks

* Update packages/smooth_app/lib/background/background_task_details.dart

Co-authored-by: Pierre Slamich <pierre.slamich@gmail.com>

* Update packages/smooth_app/lib/background/background_task_details.dart

Co-authored-by: Pierre Slamich <pierre.slamich@gmail.com>

---------

Co-authored-by: Pierre Slamich <pierre.slamich@gmail.com>
2023-12-08 12:50:26 +01:00
346c6e30c4 fix: 1815 - around context.mounted (#4768)
* fix: 1815 - around context.mounted

The PR is about two related topics:
* Removing all the `ignore: use_build_context_synchronously`
* Replacing all the `State<StatefulWidget> widget` by `BuildContext context`, now that it's possible in flutter

* Update packages/smooth_app/lib/pages/onboarding/permissions_page.dart

* format fix
2023-11-15 11:50:00 +01:00
8261f92e5b fix: 4637 - verbose exception with user data (#4741) 2023-10-31 08:27:59 +01:00
2b49c87daf chore: upgrade to off-dart 3.0.0 (#4686)
Impacted files:
* `background_task.dart`: minor refactoring
* `background_task_crop.dart`: added the `UriProductHelper` parameter
* `background_task_details.dart`: added the `UriProductHelper` parameter
* `background_task_download_products.dart`: added the `UriProductHelper` parameter
* `background_task_image.dart`: added the `UriProductHelper` parameter
* `background_task_top_barcodes.dart`: added the `UriProductHelper` parameter
* `background_task_unselect.dart`: added the `UriProductHelper` parameter
* `forgot_password_page.dart`: added the `UriProductHelper` parameter
* `ocr_ingredients_helper.dart`: added the `UriProductHelper` parameter
* `ocr_packaging_helper.dart`: added the `UriProductHelper` parameter
* `onboarding_data_product.dart`: added the `UriProductHelper` parameter
* `ordered_nutrients_cache.dart`: added the `UriProductHelper` parameter
* `paged_product_query.dart`: added the `UriProductHelper` parameter
* `product_cards_helper.dart`: now using an off-dart method
* `product_image_server_button.dart`: added the `UriProductHelper` parameter
* `product_list_import_export.dart`: added the `UriProductHelper` parameter
* `product_list_page.dart`: added the `UriProductHelper` parameter
* `product_query.dart`: added a static `UriProductHelper` that more or less replaces the `QueryType`; minor refactoring
* `product_refresher.dart`: added the `UriProductHelper` parameter
* `pubspec.lock`: wtf
* `pubspec.yaml`: upgraded off-dart to 3.0.0
* `random_questions_query.dart`: `countries` instead of `country`
* `sign_up_page.dart`: added the `UriProductHelper` parameter
* `temp_product_list_share_helper.dart`: now using a `UriProductHelper`
* `user_management_provider.dart`: added the `UriProductHelper` parameter
* `user_preferences_account.dart`: added the `UriProductHelper` parameter
* `user_preferences_dev_debug_info.dart`: minor refactoring
* `user_preferences_dev_mode.dart`: minor refactoring
2023-10-04 07:37:29 +02:00
d8042224f3 fix: 4575 - country is now always populated (#4591)
* fix: 4575 - country is now always populated

* Update packages/smooth_app/lib/query/product_query.dart

* fix: 4575 - reformatted
2023-08-26 17:11:53 +02:00
e3b4768d75 feat: Tweak the location of the floating messages (ex-Snackbar) (#4401)
* The location of the message is tweaked (sometimes at the top / sometimes at the bottom)

* Better way to catch record/pattern here
2023-07-31 17:13:09 +02:00
b03cf26833 feat: Allow to show a floating message (replacement for SnackBar) (#4382)
* Allow to show a floating message (replacement for `SnackBar`)

* Use `SmoothAnimationsDuration` instead of a hardcoded value
2023-07-29 19:20:10 +02:00
95c3a675a9 fix: 4066 - top n product download split in smaller robust parts (#4166)
* fix: 4066 - top n product download split in smaller robust parts

New files:
* `background_offline_barcodes.dart`: Background subtask about pre-downloading top n barcodes.
* `background_offline_products.dart`: Background subtask about downloading products.
* `dao_work_barcode.dart`: Work table that contains barcodes.

Impacted files:
* `background_task_offline.dart`: now we clean the new `DaoWorkBarcode` and we just call the new `BackgroundtaskOfflineBarcodes`
* `local_database.dart`: upgraded to version 3, with the new `DaoWorkBarcode`.
* `operation_type.dart: added the new 2 background tasks.

TODO
* `backgrount_task_manager.dart`: make it possible to actually chain tasks with immediate execution

* Penultimate step before un-drafting

New files:
* `background_task_paged.dart`: Abstract background task with paged actions.
* `background_task_progressing.dart`: Abstract background task with work in progress actions.

Impacted files:
* `background_task_crop.dart`: minor refactoring
* `background_task_details.dart`: minor refactoring
* `background_task_hunger_games.dart`: minor refactoring
* `background_task_image.dart`: minor refactoring
* `background_task_refresh_later.dart`: minor refactoring
* `background_task_unselect.dart`: minor refactoring
* `background_task_upload.dart`: minor refactoring
* `dao_work_barcode.dart`: minor refactoring
* `edit_product_page.dart`: minor refactoring
* `local_database.dart`: minor refactoring
* `new_product_page.dart`: minor refactoring
* `offline_tasks_page.dart`: minor refactoring; displays progress percentage
* `operation_type.dart`: moved file; minor refactoring for progress percentage
* `product_image_gallery_view.dart`: minor refactoring
* `up_to_date_changes.dart`: minor refactoring

Later:
* `background_task.dart`
* `background_task_download_products.dart`
* `background_task_full_refresh.dart`
* `background_task_manager.dart`
* `background_task_offline.dart`
* `background_task_top_barcodes.dart`
* `offline_data_page.dart`

* Final commit for main features.

Impacted files:
* `app_en.arb`: added a label for topN download with parameter
* `background_task.dart`: added a bool getter for immediate exec of the next task; minor refactoring
* `background_task_download_products.dart`: now as a _progressing_ background task, reused for top N, with KP and without KP
* `background_task_full_refresh.dart`: now as a _paged_ background task, that opens two progressing download tasks (one with KP, one without KP)
* `background_task_manager.dart`: now working as singleton; added a special case for immediate exec of the next task
* `background_task_offline.dart`: now as a _progressing_ background task
* `background_task_top_barcodes.dart`: now as a _progressing_ background task
* `dao_work_barcodes.dart`: fixed the bulk insert and delete for more than 1K products (actually, 1K SQL parameters)
* `offline_data_page.dart`: now using topN and pageSize parameters
* `offline_tasks_page.dart`: added a "work" label for the tasks
* `operation_type.dart`: now embeds the "work" in the task id

* Update packages/smooth_app/lib/background/background_task_download_products.dart

Co-authored-by: Pierre Slamich <pierre.slamich@gmail.com>

* Update packages/smooth_app/lib/background/background_task_download_products.dart

Co-authored-by: Pierre Slamich <pierre.slamich@gmail.com>

* Update packages/smooth_app/lib/background/background_task_progressing.dart

Co-authored-by: Pierre Slamich <pierre.slamich@gmail.com>

* Update packages/smooth_app/lib/background/background_task_progressing.dart

Co-authored-by: Pierre Slamich <pierre.slamich@gmail.com>

* fix: 4066 - localization

---------

Co-authored-by: Pierre Slamich <pierre.slamich@gmail.com>
2023-06-21 14:11:57 +02:00
55b4894edb fix: 4066 - predownload and top 1K download as background tasks (#4131)
Deleted file:
* `products_preload_helper.dart`

New files:
* `background_task.dart`: Abstract background task.
* `background_task_full_refresh.dart`: Background task about refreshing all the already downloaded products.
* `background_task_offline.dart`: Background task about pre-downloading top n products for offline usage.

Impacted files:
* `background_task_barcode.dart`
* `background_task_crop.dart`: refactored
* `background_task_details.dart`: refactored
* `background_task_hunger_games.dart`: refactored
* `background_task_image.dart`: refactored
* `background_task_manager.dart`
* `background_task_refresh_later.dart`: refactored
* `background_task_unselect.dart`: refactored
* `background_task_upload.dart`: refactored
* `offline_data_page.dart`: now using background task for offline and full refresh tasks
* `offline_tasks_page.dart`: dealing with the "no barcode" case
* `operation_type.dart`: added values `offline` and `fullRefresh`; added `processName` field; added a `BackgroundTask` constructor
* `product_refresher.dart`: bug fix
2023-06-13 23:45:37 +02:00
cb815b0cac feat: 4020 - instant answers for hunger games (#4099)
* feat: 4020 - instant answers for hunger games

New files:
* `background_task_hunger_games.dart`: Background task about answering a hunger games question.
* `random_questions_query.dart`: Robotoff questions helper, for random product questions.

Deleted file:
* `product_question_page.dart`

Impacted files:
* `abstract_background_task.dart`: added "hunger games"
* `background_task_crop.dart`: minor refactoring
* `background_task_details.dart`: minor refactoring
* `background_task_image.dart`: minor refactoring
* `background_task_manager.dart`: simplified the code, as we now always work on tasks with different stamps
* `background_task_refresh.dart`: minor refactoring
* `background_task_unselect.dart`: minor refactoring
* `new_product_page.dart`: minor refactoring
* `offline_data_page.dart`: minor refactoring
* `operation_type.dart`: added a type for "hunger games" background task
* `product_list_import_export.dart`: minor refactoring
* `product_list_page.dart`: minor refactoring
* `product_questions_query.dart`: pre-loads the product if relevant
* `product_questions_widget.dart`: minor refactoring
* `product_refresher.dart`: new standard configuration for product lists; new silent download of product lists; minor refactoring
* `question_card.dart`: now downloading the product only if not in the local database
* `question_page.dart`: now saving the answer with background tasks; refactored
* `questions_query.dart`: refactored as abstract, with code moved to new file `random_questions_query.dart`
* `robotoff_insight_helper.dart`: minor refactoring

* feat: 4020 - unrelated package upgrade

* fix: 4098 - new enum value from iOS 12
2023-06-08 18:13:48 +02:00
fe68ea5173 fix: 3042 - saving explicitly product name in the correct language (#3862)
* fix: 3042 - saving explicitly product name in the correct language

Impacted files:
* `add_basic_details_page.dart`: now setting the product name "in language"
* `background_task_details.dart`: added the `lang` to the "save product to server" calls; minor refactoring

* fix: 3042 - saving explicitly the current product language

Impacted file:
* `background_task_details.dart`: added the `lang` to the "save product to server" calls; minor refactoring
2023-04-20 10:16:48 +02:00
5b326cc34c fix: 3570 - background task order is now respected (#3591)
* fix: 3570 - background task order is now respected

Impacted files:
* `app_en.arb`: added a label for the "stop this task ASAP?" question and the corresponding task label
* `background_task_manager.dart`: fixed a bug where the task list was refreshed inappropriately; now it's possible to cancel a task; refactored
* `offline_tasks_page.dart`: now when you click on a task, you can stop it ASAP (for the record that does not mean immediately)

* fix: 3570 - better task cleaning when successful or dismissed

Impacted files:
* `abstract_background_task.dart`: added a "success?" parameter to `postExecute`
* `background_task_details.dart`: minor refactoring
* `background_task_image.dart`: made the distinction between a simple garbage collecting and a successful task run
* `background_task_manager.dart`: now we clean deeper when we remove a task
* `background_task_refresh_later.dart`: minor refactoring
2023-01-18 15:58:55 +01:00
8835f864ec fix: 3533 - added a "stamp" to background tasks, to identify similar tasks (#3548)
* fix: 3533 - added a "stamp" to background tasks, to identify similar tasks

Impacted files:
* `abstract_background_task.dart`: added a stamp; minor refactoring
* `add_basic_details_page.dart`: implemented the background stamp
* `add_other_details_page.dart`: implemented the background stamp
* `background_task_details.dart`: new `enum BackgroundTaskDetailsStamp`; added the background stamp
* `background_task_image.dart`: added the background stamp
* `background_task_manager.dart`: refactored the run queue; stops when there's not internet connection
* `background_task_refresh_later.dart`: added the background stamp
* `edit_ingredients_page.dart`: added the background stamp
* `edit_new_packagings.dart`: implemented the background stamp
* `local_database.dart`: unrelated removal of deprecated comment
* `main.dart`: slightly related fix of #3522, because we used to run background tasks before the language was set
* `nutrition_page_loaded.dart`: implemented the background stamp
* `ocr_helper.dart`: added a background stamp
* `ocr_ingredients_helper.dart`: implemented the background stamp
* `ocr_packaging_helper.dart`: implemented the background stamp
* `simple_input_page.dart`: added the background stamp; now we split the updates in as many minimum parts as possible
* `simple_input_page_helpers.dart`: added and implemented background stamps; unrelated fix (when the widget is not displayed, the data should be considered as "not changed")

* fix: 3533 - added a 5 second delay between runs

Impacted files:
* `background_task_details.dart`: more verbose tags for stamps
* `background_task_image.dart`: added language to stamp
* `background_task_manager.dart`: added a 5 second minimum delay between runs; added temporary debug prints
* `edit_product_page.dart`: added a task refresh
* `product_image_gallery_view.dart`: added a task refresh
2023-01-09 16:24:04 +01:00
994078bef1 feat: 3505 - packagingsComplete toggle and packagings edit bug fixes (#3513)
Impacted files:
* `app_en.arb`: added a label about "packaging complete"
* `background_task_details.dart`: added field `packagingComplete`
* `edit_new_packagings.dart`: added a `packagingComplete` editor; fixed a bug by populating the controllers at init time and not on demand; now disposes the controllers; aligned the titles
* `product_query.dart`: added field `PACKAGINGS_COMPLETE`
* `up_to_date_changes.dart`: added field `packagingComplete`
2023-01-04 11:53:25 +01:00
7e861f569e refactor: upgrade to off-dart 2.0.0 (#3495)
Impacted files:
* `paged_to_be_completed_product_query.dart`: renamed `State` as `ProductState`
* `paged_user_product_query.dart`: created local `UserSearchType` instead of deprecated off-dart `UserProductSearchType`; used `ProductSearchQueryConfiguration` instead of deprecated `UserProductSearchQueryConfiguration`
* `product_query.dart`: now that we use fully v3, we don't need the temporary field list for user-related queries with v2
* `pubspec.lock`: wtf
* `pubspec.yaml`: upgrade to off-dart 2.0.0
* `user_preferences_account.dart`: now using new local class `UserSearchType`
* and reduced all off-dart imports to a single `import 'package:openfoodfacts/openfoodfacts.dart';`
2023-01-02 16:10:52 +01:00
09a982a1f1 feat: 3430 - new packagings edit page based on api v3 (#3475)
* feat: 3430 - new packagings edit page based on api v3

New file:
* `edit_new_packagings.dart`: Edit display of a product packagings (the new api V3 version).

Impacted files:
* `background_task_details.dart`: added specific save method call for api V3
* `edit_product_page.dart`: added call to new page `EditNewPackagings`
* `ocr_packaging_helper.dart`: minor unrelated refactoring
* `paged_user_product_query.dart`: specific field list
* `product_query.dart`: upgraded to api V3; added field `PACKAGINGS`; added specific field list for user-related searches (they do not support `PACKAGINGS`)
* `product_refresher.dart`: upgraded to api V3
* `simple_input_page.dart`: minor refactoring
* `simple_input_widget.dart`: refactoring about making the autocomplete widget reusable
* `up_to_date_changes.dart`: added new field `packagings`; minor unrelated refactoring

* Update packages/smooth_app/lib/pages/product/edit_product_page.dart

Co-authored-by: Pierre Slamich <pierre.slamich@gmail.com>

* feat: 3430 - dart format

Co-authored-by: Pierre Slamich <pierre@openfoodfacts.org>
Co-authored-by: Pierre Slamich <pierre.slamich@gmail.com>
2022-12-27 22:05:59 +01:00
390f859782 refactor: integrating off-dart 1.30.1 (#3471)
* refactor: integrating off-dart 1.30.1

Impacted files:
* `background_task_details.dart`: minor refactoring
* `background_task_image.dart`: minor refactoring
* `background_task_refresh_later.dart`: minor refactoring
* `country_selector.dart`: minor refactoring
* `new_product_page.dart`: minor refactoring
* `ocr_packaging_helper.dart`: minor refactoring
* `offline_data_page.dart`: now using an explicit api version
* `ordered_nutrients_cache.dart`: minor refactoring
* `paged_search_product_query.dart`: now using an explicit api version
* `paged_to_be_completed_product_query.dart`: now using an explicit api version
* `Podfile.lock`: wtf
* `product_image_data.dart`: minor refactoring
* `product_list.dart`: minor refactoring
* `product_list_import_export.dart`: now using an explicit api version
* `product_list_page.dart`: now using an explicit api version
* `product_query.dart`: explicit api version
* `product_query_page.dart`: minor refactoring
* `product_refresher.dart`: now using an explicit api version
* `products_preload_helper.dart`: now using an explicit api version
* `app/pubspec.lock`: wtf
* `smooth_app/pubspec.lock`: wtf
* `pubspec.yaml`: upgraded off-dart version to 1.30.1
* `up_to_date_changes.dart`: minor refactoring

* refactor: fix 3470

Impacted file:
* `user_preferences_account.dart`: now logging error and displaying nothing if cannot count, and optimized the code
2022-12-27 08:15:53 +01:00
246436bef6 feat: 3380 - product refresh 10 minutes after image upload (#3381)
New file:
* `background_task_refresh_later.dart`: Background task that triggers a product refresh "a bit later".

Impacted files:
* `abstract_background_task.dart`: added method `mayRunNow`, added the new `BackgroundTaskRefreshLater` class, minor refactoring
* `background_task_details.dart`: minor refactoring
* `background_task_image.dart`: added a "refresh later" task at the end, minor refactoring
* `background_task_manager.dart`: introduced the concept of delayed tasks with new method `mayRunNow`
* `new_product_page.dart`: added a call to background tasks here, as the app's arguably most important page
* `operation_type.dart`: added a new operation type - "refresh later"
2022-11-29 11:01:24 +01:00
5304614c99 feat: 3263 - new BackgroundTaskManager that always works (#3339)
Deleted file:
* `background_task_helper.dart`

New files:
* `background_task_manager.dart`: Management of background tasks: single thread, block, restart, display.
* `dao_instant_string.dart`: Where we store strings that need INSTANT access (= not lazy, no await).

Impacted fles:
* `abstract_background_task.dart`: refactored
* `background_task_details.dart`: refactored around the changes in `AbstractBackgroundTask`
* `background_task_image.dart`: refactored around the changes in `AbstractBackgroundTask`
* `dao_string_list.dart`: refactoring around now managing several lists; removed unnecessary `await` for a non-lazy dao
* `local_database.dart`: added the new class `DaoInstantString`; relaunch the background task manager at every refresh
* `main.dart`: minor refactoring
* `new_crop_page.dart`: unrelated bug fix
* `offline_tasks_page.dart`: refactored around the new `BackgroundTaskManager`
* `operation_type.dart`: added helper methods
* `product_image_gallery_view.dart`: minor refactoring
* `product_image_viewer.dart`: unrelated bug fix - the product was not refreshed, and so wasn't the image even after a successful download
* `pubspec.lock`: wtf
* `pubspec.yaml`: removed `flutter_task_manager`
* `search_history_view.dart`: minor refactoring now that we have several lists in `DaoStringList`
* `search_page.dart`: minor refactoring now that we have several lists in `DaoStringList`
* `up_to_date_changes.dart`: minor refactoring
* `up_to_date_product_provider.dart`: minor refactoring
2022-11-25 17:31:25 +01:00
fba2851809 fix: 3018 - instant upload of images (#3329)
New files:
* `ocr_widget.dart`: Widget dedicated to OCR, with 3 actions: upload image, extract data, save. Used to be in `edit_ingredients_page.dart`
* `transient_file.dart`: Helper class about transient files (= not fully uploaded yet).

Impacted files:
* `add_basic_details_page.dart`: minor refactoring
* `add_new_product_page.dart`: refactored around the class image repository
* `app_en.arb`: added 1 label when OCR fails
* `app_fr.arb`: added 1 label when OCR fails
* `background_task_details.dart`: minor refactoring
* `background_task_image.dart`: immediate execution with just one try
* `confirm_and_upload_picture.dart`: minor refactoring with new private class `_OutlinedButton`
* `edit_ingredients_page.dart`: moved `OcrWidget` code to dedicated new dart file; fixed the extract button - that cannot be reached if the image is not uploaded yet
* `image_crop_page.dart`: refactored with more explicit method names
* `image_upload_card.dart`: refactored with `TransientFile`
* `new_product_page.dart`: minor refactoring
* `product_cards_helper.dart`: minor refactoring
* `product_image_carousel.dart`: minor refactoring
* `product_image_gallery_view.dart`: refactored with new method `confirmAndUploadNewPicture` and new class `TransientFile`
* `product_image_viewer.dart`: refactored with new class `TransientFile`
* `question_card.dart`: minor refactoring
* `smooth_product_image.dart`: refactored with new class `TransientFile`
2022-11-19 14:45:50 +01:00
3d944bbed1 fix: 3018 - now there's only one place where we upload pictures from (#3323)
Deleted file:
* `picture_capture_helper.dart`: moved code to `ConfirmAndUploadPicture`, that is now the only place where we upload images

Impacted files:
* `add_new_product_page.dart`: minor refactoring
* `background_task_details.dart`: minor refactoring
* `background_task_image.dart`: minor refactoring
* `confirm_and_upload_picture.dart`: minor refactoring; moved here code from `picture_capture_helper.dart`
* `edit_ingredients_page.dart`: replaced `uploadCapturedPicture` with a call to page `ConfirmAndUploadPicture`
* `image_crop_page.dart`: refactored into a single `startImageCropping` method
* `image_upload_page.dart`: replaced `uploadCapturedPicture` with a call to page `ConfirmAndUploadPicture`
* `new_crop_page.dart`: minor refactoring
* `product_image_gallery_view.dart`: replaced `uploadCapturedPicture` with a call to page `ConfirmAndUploadPicture`; refactoring around refresh
* `product_image_viewer.dart`: minor refactoring
* `up_to_date_product_provider.dart: removed old-fashioned code
2022-11-15 11:33:19 +01:00
4553468989 fix: 3018 - immediate local and server refresh for details (temporary) (#3308)
New files:
* `operation_type.dart`: Type of a transient operation.
* `up_to_date_changes.dart`: Sequence of minimalist product changes.

Impacted files:
* `abstract_background_task.dart`: minor refactoring
* `add_basic_details_page.dart`: refactored call to `AddTask`
* `add_new_product_page.dart`: now refreshed by detail tasks
* `background_task_details.dart`: temporary version - we run the task only once and rollback the change if it failed
* `edit_ingredients_page.dart`: now refreshed by detail tasks
* `edit_product_page.dart`: refactored; now refreshed by detail tasks
* `knowledge_panel_page.dart`: now refreshed by detail tasks
* `new_product_page.dart`: now refreshed by detail tasks
* `nutrition_page_loaded.dart`: refactored call to `AddTask`
* `product_dialog_helper.dart`: minor refactoring
* `product_list_item_simple.dart`: refactored
* `product_model.dart`: refactored
* `simple_input_page.dart`: refactored call to `AddTask`
* `simple_input_page_helpers.dart`: refactored the "language" helpers in order to get server refresh AND local refresh
* `smooth_product_card_not_found.dart`: minor refactoring
* `smooth_product_carousel.dart`: minor refactoring
* `summary_card.dart`: now refreshed by detail tasks
* `up_to_date_product_provider.dart`: added an `UpToDateChanges` field
2022-11-11 21:39:38 +01:00
24c1579038 fix: #3018 - new "interesting barcode" and "latest download" features (#3227)
Impacted files:
* `add_basic_details_page.dart`: new `addTask` parameter
* `add_new_product_page.dart`: added "interesting barcode" feature
* `background_task_details.dart`: new `addTask` parameter in order to embed snackbar
* `confirm_and_upload_picture.dart`: new `uploadCapturedPicture` parameter
* `edit_ingredients_page.dart`: new `uploadCapturedPicture` parameter; new `addTask` parameter; added "interesting barcode" feature
* `edit_product_page.dart`: added "interesting barcode" feature; new `fetchAndRefresh` parameters
* `image_upload_card.dart`: new `uploadCapturedPicture` parameter
* `knowledge_panel_page.dart`: added "interesting barcode" feature; new `fetchAndRefresh` parameters
* `new_product_page.dart`: added "interesting barcode" feature; new `fetchAndRefresh` parameters
* `nutrition_page_loaded.dart`: new `addTask` parameter
* `personalized_ranking_model.dart`: added "interesting barcode" feature; refactored around the new `LocalDatabase` field
* `personalized_ranking_page.dart`: refactored around the new `PersonalizedRankingModel` `LocalDatabase` field
* `picture_capture_helper.dart`: new `uploadCapturedPicture` parameter in order to embed snackbar
* `product_image_gallery_view.dart`: added "interesting barcode" feature; new `fetchAndRefresh` parameters; new `uploadCapturedPicture` parameter
* `product_list_item_simple.dart`: added "interesting barcode" feature
* `product_list_page.dart`: added "interesting barcode" / downloaded feature
* `product_model.dart`: refactored around the new `LocalDatabase` field; added "interesting barcode" / downloaded feature
* `product_refresher.dart`: new `fetchAndRefresh` parameters, in order to embed a snackbar
* `simple_input_page.dart`: new `addTask` parameter
* `summary_card.dart`: added "interesting barcode" feature; new `fetchAndRefresh` parameters
* `up_to_date_product_provider.dart`: added "interesting barcode" and "latest downloaded" features
2022-10-28 18:54:05 +02:00
2ca03cd5da refactor: backgroundTasks - around the new "upload" method (#3028)
Impacted files:
* `abstract_background_task.dart`: refactored around the `upload` method
* `background_task_details.dart`: now implements the new `upload` method
* `background_task_image.dart`: now implements the new `upload` method
* `product_refresher.dart`: removed now useless method `saveAndRefresh`

Co-authored-by: Aman Raj <57723319+AshAman999@users.noreply.github.com>
2022-09-17 15:37:34 +02:00
68b6939902 refactor: background tasks with classes (#2994)
New files:
* `abstract_background_task.dart`: Abstract background task.
* `background_task_details.dart`: Background task that changes product details (data, but no image upload).
* `background_task_image.dart`: Background task about product image upload.

Impacted files:
* `add_basic_details_page.dart`: refactored the call to background task; minor refactoring
* `background_task_helper.dart`: moved most of the code to new classes `AbstractBackgroundTask` and offsprings.
* `edit_ingredients_page.dart`: refactored the call to background task
* `nutrition_page_loaded.dart`: refactored the call to background task
* `picture_capture_helper.dart`: refactored the call to background task
* `simple_input_page.dart`: refactored the call to background task
* `simple_input_page_helpers.dart`: added and implemented method `getTask`
2022-09-10 22:12:51 +02:00