-
-
Notifications
You must be signed in to change notification settings - Fork 380
feat: Add infinite scrolling to the various Open Prices ListViews. #6561
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Add infinite scrolling to the various Open Prices ListViews. #6561
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #6561 +/- ##
==========================================
- Coverage 9.54% 5.74% -3.80%
==========================================
Files 325 511 +186
Lines 16411 30331 +13920
==========================================
+ Hits 1567 1744 +177
- Misses 14844 28587 +13743 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have no strong opinion against your code, that seems to work. Possibly minor comments here and there.
The thing is that for the Prices (in a broad sense) we need different objects with a "load more" feature: prices (with this PR), proofs, contributors, locations and products.
Do you feel confident enough in your OOP skills? If so you should refactor your current code with generic concepts like:
- a loading class
- with a load method that has the page number as a parameter
- returning a list of items, a number of items, a number of pages
- an item display class that takes an item as a parameter and displays it
- a "load by page" class that displays items by page, with a "loader" and an "item display" in the constructor
I'm sure there are Design Patterns around those common features.
What do you think about that?
…ntribution using generic class.
@monsieurtanuki, I tried to implement what you suggested—looking forward to your feedback! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @AshutoshKhadse23!
Good job!
Please have a look at my comments, though, for code simplification.
packages/smooth_app/lib/pages/prices/generic_infinite_scroll.dart
Outdated
Show resolved
Hide resolved
packages/smooth_app/lib/pages/prices/generic_infinite_scroll.dart
Outdated
Show resolved
Hide resolved
packages/smooth_app/lib/pages/prices/generic_infinite_scroll.dart
Outdated
Show resolved
Hide resolved
packages/smooth_app/lib/pages/prices/prices_locations_page.dart
Outdated
Show resolved
Hide resolved
packages/smooth_app/lib/pages/prices/generic_infinite_scroll.dart
Outdated
Show resolved
Hide resolved
packages/smooth_app/lib/pages/prices/generic_infinite_scroll.dart
Outdated
Show resolved
Hide resolved
packages/smooth_app/lib/pages/prices/generic_infinite_scroll.dart
Outdated
Show resolved
Hide resolved
packages/smooth_app/lib/pages/prices/generic_infinite_scroll.dart
Outdated
Show resolved
Hide resolved
packages/smooth_app/lib/pages/prices/generic_infinite_scroll.dart
Outdated
Show resolved
Hide resolved
Hello @monsieurtanuki , |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @AshutoshKhadse23!
Obviously something wrong in your latest push, as we have twice the same class.
The idea was to get rid of parameters that are ALWAYS the same, and that's not was you pushed.
packages/smooth_app/lib/pages/prices/infinite_scroll_controller.dart
Outdated
Show resolved
Hide resolved
@monsieurtanuki, changed the code according to the comment. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @AshutoshKhadse23!
Please have a look at my comments.
packages/smooth_app/lib/pages/prices/infinite_scroll_controller.dart
Outdated
Show resolved
Hide resolved
packages/smooth_app/lib/pages/prices/product_price_refresher.dart
Outdated
Show resolved
Hide resolved
packages/smooth_app/lib/pages/prices/infinite_scroll_controller.dart
Outdated
Show resolved
Hide resolved
@monsieurtanuki, |
@AshutoshKhadse23 I would say it's good enough. A bit surprised by the "All 3 proofs" on top, referring specifically to "proof" when it's supposed to be generic. |
@monsieurtanuki, issue.6478.proof.updated.ui.mp4 |
That was before I made the change, in that I just want to ask about the UI from the grid to list. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @AshutoshKhadse23!
Besides minor UI comments that I don't want you to work on, there's something wrong with the bearerToken:
- you never use
fetchInit
- it's precisely for the bearerToken thatfetchInit
was introduced - you dismissed the test of the error when retrieving the bearerToken - you should not dismiss error tests
- you compute the bearerToken for every page - the bearerToken is to be computed only once for all pages
int? get totalPages => _totalPages; | ||
|
||
@protected | ||
Future<void> fetchInit() async {} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So now it's never used, right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Right!
Hello @monsieurtanuki, |
@AshutoshKhadse23 It has nothing to do with consistency. |
@monsieurtanuki, class _InfiniteScrollProofManager extends InfiniteScrollManager<Proof> {
_InfiniteScrollProofManager({
required this.selectProof,
});
static const int _pageSize = 10;
final bool selectProof;
String? _bearerToken;
@override
Future<void> fetchInit() async {
final User user = ProductQuery.getWriteUser();
final MaybeError<String> token =
await OpenPricesAPIClient.getAuthenticationToken(
username: user.userId,
password: user.password,
uriHelper: ProductQuery.uriPricesHelper,
);
if (token.isError) {
throw MaybeError<GetProofsResult>.error(
error: token.error ?? 'Could not authenticate with the server',
statusCode: token.statusCode ?? 500,
);
}
_bearerToken = token.value;
}
@override
Future<void> fetchData(final int pageNumber) async {
if (_bearerToken == null) {
await fetchInit();
if (_bearerToken == null) {
throw MaybeError<GetProofsResult>.error(
error: 'Failed to obtain authentication token',
statusCode: 500,
);
}
}
final User user = ProductQuery.getWriteUser();
final MaybeError<GetProofsResult> result =
await OpenPricesAPIClient.getProofs(
GetProofsParameters()
..orderBy = <OrderBy<GetProofsOrderField>>[
const OrderBy<GetProofsOrderField>(
field: GetProofsOrderField.created,
ascending: false,
),
]
..owner = user.userId
..pageSize = _pageSize
..pageNumber = pageNumber,
uriHelper: ProductQuery.uriPricesHelper,
bearerToken: _bearerToken!,
);
await OpenPricesAPIClient.deleteUserSession(
uriHelper: ProductQuery.uriPricesHelper,
bearerToken: _bearerToken!,
);
if (result.isError) {
throw result.detailError;
}
final GetProofsResult value = result.value;
updateItems(
newItems: value.items,
pageNumber: value.pageNumber,
totalItems: value.total,
totalPages: value.numberOfPages,
);
} |
|
How about this? I just wanna to complete work perfectly so if you have time could you check it? class _InfiniteScrollProofManager extends InfiniteScrollManager<Proof> {
_InfiniteScrollProofManager({
required this.selectProof,
});
static const int _pageSize = 10;
final bool selectProof;
String? _bearerToken;
@override
Future<void> fetchInit() async {
final User user = ProductQuery.getWriteUser();
final MaybeError<String> token =
await OpenPricesAPIClient.getAuthenticationToken(
username: user.userId,
password: user.password,
uriHelper: ProductQuery.uriPricesHelper,
);
if (token.isError) {
throw Exception(token.error ?? 'Could not authenticate with the server');
}
_bearerToken = token.value;
}
@override
Future<void> fetchData(final int pageNumber) async {
if (_bearerToken == null) {
await fetchInit();
}
final User user = ProductQuery.getWriteUser();
final MaybeError<GetProofsResult> result =
await OpenPricesAPIClient.getProofs(
GetProofsParameters()
..orderBy = <OrderBy<GetProofsOrderField>>[
const OrderBy<GetProofsOrderField>(
field: GetProofsOrderField.created,
ascending: false,
),
]
..owner = user.userId
..pageSize = _pageSize
..pageNumber = pageNumber,
uriHelper: ProductQuery.uriPricesHelper,
bearerToken: _bearerToken!,
);
if (result.isError) {
throw Exception(result.error ?? 'Failed to fetch proofs');
}
final GetProofsResult value = result.value;
updateItems(
newItems: value.items,
pageNumber: value.pageNumber,
totalItems: value.total,
totalPages: value.numberOfPages,
);
}
/// Properly dispose of the session when the manager is no longer needed
void dispose() {
if (_bearerToken != null) {
OpenPricesAPIClient.deleteUserSession(
uriHelper: ProductQuery.uriPricesHelper,
bearerToken: _bearerToken!,
);
}
}
@override
Widget buildItem({
required BuildContext context,
required Proof item,
}) {
if (item.filePath == null) {
return const SizedBox.shrink();
}
return SmoothCard(
child: InkWell(
onTap: () async {
if (selectProof) {
Navigator.of(context).pop(item);
return;
}
return Navigator.push<void>(
context,
MaterialPageRoute<void>(
builder: (BuildContext context) => PriceProofPage(item),
),
);
},
child: _PriceProofListItem(item),
),
);
}
} |
@AshutoshKhadse23 That's the general idea. But if you want your code to be reviewed, you have to push it, not comment. Besides, |
@monsieurtanuki, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you @AshutoshKhadse23!
I do believe the code looks better that way, what do you think? 😉
@monsieurtanuki, |
commit 6155ae2 Author: qq3173732005 <[email protected]> Date: Sat May 10 22:02:16 2025 -0400 popup menu with edit option in product gallery view commit 924c3c0 Merge: 1f53375 3e91178 Author: qq3173732005 <[email protected]> Date: Fri May 9 16:17:17 2025 -0400 Merge branch 'openfoodfacts:develop' into sz-6119 commit 3e91178 Author: Ashutosh Khadse <[email protected]> Date: Thu May 8 18:45:48 2025 +0530 feat: Add infinite scrolling to the various Open Prices ListViews. (openfoodfacts#6561) * feat: Add infinite scrolling to the various Open Prices ListViews. * feat: Add infinite scrolling to the various Open Prices ListViews. * feat: Add infinite scrolling to the proofs,location,prices,product,contribution using generic class. * fix: resolve code comment issue * fix: resolve code comment issue * fix: resolve code comment issue * fix: resolve conflict * fix: resolve conflict * fix: resolve code comment issue * fix: resolve code comment issue * fix: resolve code comment issue * fix: resolve code issue * fix: resolve code comment issue * fix: resolve code comment issue * fix: change code according to concept of OOP Java * fix: resolve code comment issue * fix: resolve code comment issue * fix: resolve code comment issue * fix: resolve code comment issue * fix: changed proofs page from grid to list with infinite scroll list * Update packages/smooth_app/lib/pages/prices/product_prices_list.dart * Update packages/smooth_app/lib/pages/prices/prices_proofs_page.dart * Update packages/smooth_app/lib/pages/prices/prices_proofs_page.dart * Update packages/smooth_app/lib/pages/prices/prices_proofs_page.dart * fix: resolve code comment issue --------- Co-authored-by: monsieurtanuki <[email protected]> commit f1820a8 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed May 7 17:39:07 2025 +0200 chore(deps): bump actions/checkout from 3 to 4 (openfoodfacts#6584) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> commit 6450b6d Author: Edouard Marquez <[email protected]> Date: Wed May 7 17:38:47 2025 +0200 chore: UI/UX for Robotoff suggestions improved (openfoodfacts#6585) * CW * Iteration commit 23c4abd Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue May 6 11:53:17 2025 +0200 chore(deps): bump fastlane in /packages/smooth_app/android (openfoodfacts#6583) Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.227.1 to 2.227.2. - [Release notes](https://github.com/fastlane/fastlane/releases) - [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md) - [Commits](fastlane/fastlane@fastlane/2.227.1...fastlane/2.227.2) --- updated-dependencies: - dependency-name: fastlane dependency-version: 2.227.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Pierre Slamich <[email protected]> commit bed4d8b Author: monsieurtanuki <[email protected]> Date: Tue May 6 11:46:37 2025 +0200 fix: 6560 - explicit readyForPriceTagValidation parameter for proof upload (openfoodfacts#6573) * fix: 6560 - explicit readyForPriceTagValidation parameter for proof upload Impacted files: * `background_task_add_price.dart`: added explicit `readyForPriceTagValidation` parameter for proof upload * `pubspec.lock`: wtf * `pubspec.yaml`: upgraded `openfoodfacts` to `3.22.0` * upgraded PricesStatsPage too to openfoodfacts 3.22.0 commit 0e8aecb Author: Pierre Slamich <[email protected]> Date: Tue May 6 11:18:51 2025 +0200 ci: Create one-check.yml (openfoodfacts#6570) * ci: Create one-check.yml * fix: Update one-check.yml * Potential fix for code scanning alert no. 29: Workflow does not contain permissions Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> * fix: Update app_fr.arb * Update app_he.arb * Update app_pl.arb * fix: Update app_da.arb * fix: Update app_ro.arb * Update .github/workflows/one-check.yml --------- Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> commit 2b558dc Author: Edouard Marquez <[email protected]> Date: Tue May 6 10:22:30 2025 +0200 UI improvements (openfoodfacts#6581) commit 6ca6a0b Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue May 6 10:16:51 2025 +0200 chore(deps): bump fastlane in /packages/smooth_app/ios (openfoodfacts#6582) Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.227.1 to 2.227.2. - [Release notes](https://github.com/fastlane/fastlane/releases) - [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md) - [Commits](fastlane/fastlane@fastlane/2.227.1...fastlane/2.227.2) --- updated-dependencies: - dependency-name: fastlane dependency-version: 2.227.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> commit 453ccf5 Author: Edouard Marquez <[email protected]> Date: Mon May 5 19:23:01 2025 +0200 feat: Improvements for Robotoff questions in Edit mode (openfoodfacts#6579) * Improve robotoff questions in edit mode * SmoothImage for the proof * Remove print statement commit a031602 Author: Cherish <[email protected]> Date: Mon May 5 18:37:39 2025 +0530 feat: add packaging photo access in packaging components screen (openfoodfacts#6452) commit 9a23a8c Author: Cherish <[email protected]> Date: Mon May 5 04:35:51 2025 +0530 feat: add properties (Folksonomy Engine) button to navbar (openfoodfacts#6505) Co-authored-by: Edouard Marquez <[email protected]> commit f0340fc Author: vinay chavhan <[email protected]> Date: Mon May 5 03:15:44 2025 +0530 fix: UI padding for better layout (openfoodfacts#6509) Co-authored-by: Edouard Marquez <[email protected]> commit d1ba3f8 Author: Ashutosh Khadse <[email protected]> Date: Sun May 4 12:42:05 2025 +0530 fix: dark mode issue in feedback page (openfoodfacts#6576) * fix: dark mode issue in feedback page * fix: dark mode issue in feedback page * fix: dark mode issue in feedback page * fix: dark mode issue in feedback page * fix: dark mode issue in feedback page commit 44e4e5a Author: Abhishek-P0207 <[email protected]> Date: Sat May 3 00:12:29 2025 +0530 fix: Removed the option to add an item through barcode from Add a Price page (openfoodfacts#6525) * Fixed the add the item * refactor * fix-1:condition on usage of add an item * refactor * fix-2:add extra condition * Fix : Changed acc. to suggestion * Fix : Changed acc. to suggestion and formatted * suggested changes made * formatted * fixed formatting issues * format * small correction * changed acc. to suggestion * changed acc. to suggestion commit c68b4d1 Author: Pierre Slamich <[email protected]> Date: Fri May 2 19:42:03 2025 +0200 ci: Update mkdocs.yml commit 1ad9e9f Author: Pierre Slamich <[email protected]> Date: Fri May 2 19:34:56 2025 +0200 fix: Update dartdoc.yml commit b94a8e9 Author: Pierre Slamich <[email protected]> Date: Fri May 2 19:32:15 2025 +0200 ci: Update dartdoc.yml commit 8ed470b Author: Open Food Facts Bot <[email protected]> Date: Wed Apr 30 20:49:26 2025 +0200 chore: New translations to review and merge (openfoodfacts#6534) * New translations app_en.arb (Maltese) * New translations app_en.arb (Welsh) * New translations app_en.arb (Faroese) * New translations app_en.arb (Esperanto) * New translations app_en.arb (Uyghur) * New translations app_en.arb (Luxembourgish) * New translations app_en.arb (Chinese Traditional, Hong Kong) * New translations app_en.arb (Tatar) * New translations app_en.arb (Malayalam) * New translations app_en.arb (Breton) * New translations app_en.arb (Romansh) * New translations app_en.arb (Tibetan) * New translations app_en.arb (Latin) * New translations app_en.arb (Bosnian) * New translations app_en.arb (Sinhala) * New translations app_en.arb (Cornish) * New translations app_en.arb (Uzbek) * New translations app_en.arb (Kannada) * New translations app_en.arb (Akan) * New translations app_en.arb (Assamese) * New translations app_en.arb (Scottish Gaelic) * New translations app_en.arb (Wolof) * New translations app_en.arb (Southern Ndebele) * New translations app_en.arb (Walloon) * New translations app_en.arb (Malagasy) * New translations app_en.arb (Swahili) * New translations app_en.arb (Odia) * New translations app_en.arb (Norwegian Bokmal) * New translations app_en.arb (Occitan) * New translations app_en.arb (Serbian (Latin)) * New translations app_en.arb (Amharic) * New translations app_en.arb (Nepali) * New translations app_en.arb (Montenegrin (Cyrillic)) * New translations app_en.arb (Dutch, Belgium) * New translations app_en.arb (Tahitian) * New translations app_en.arb (Hausa) * New translations app_en.arb (Chuvash) * New translations app_en.arb (Tajik) * New translations app_en.arb (Lao) * New translations app_en.arb (Quechua) * New translations app_en.arb (Somali) * New translations app_en.arb (Yoruba) * New translations app_en.arb (Afar) * New translations app_en.arb (Bambara) * New translations app_en.arb (Chechen) * New translations app_en.arb (Corsican) * New translations app_en.arb (Haitian Creole) * New translations app_en.arb (Sichuan Yi) * New translations app_en.arb (Inuktitut) * New translations app_en.arb (Javanese) * New translations app_en.arb (Sardinian) * New translations app_en.arb (Sindhi) * New translations app_en.arb (Sango) * New translations app_en.arb (Shona) * New translations app_en.arb (Tigrinya) * New translations app_en.arb (Sanskrit) * New translations app_en.arb (Akan, Twi) * New translations app_en.arb (Urdu (India)) * New translations app_en.arb (Karakalpak) * New translations app_en.arb (German) * New translations app_en.arb (Hebrew) * New translations app_en.arb (Greek) * New translations app_en.arb (Ukrainian) * New translations app_en.arb (Spanish) * New translations app_en.arb (Chinese Simplified) * New translations app_en.arb (Chinese Traditional) * New translations app_en.arb (Chinese Traditional, Hong Kong) * New translations infoplist.strings (Chinese Traditional) * New translations infoplist.strings (Chinese Traditional, Hong Kong) * New translations app_en.arb (Danish) * New translations app_en.arb (Danish) * New translations app_en.arb (Danish) * New translations app_en.arb (Dutch) * New translations app_en.arb (Danish) * New translations app_en.arb (Slovak) * New translations app_en.arb (Danish) * New translations app_en.arb (Slovak) * New translations app_en.arb (Portuguese) * New translations app_en.arb (Slovak) * New translations app_en.arb (Serbian (Cyrillic)) * New translations app_en.arb (Chinese Simplified) * New translations app_en.arb (Chinese Traditional) * New translations app_en.arb (Portuguese, Brazilian) * New translations app_en.arb (English, Australia) * New translations app_en.arb (English, United Kingdom) * New translations app_en.arb (Chinese Traditional, Hong Kong) * New translations app_en.arb (Serbian (Latin)) * New translations app_en.arb (Montenegrin (Cyrillic)) * New translations app_en.arb (Dutch, Belgium) * New translations infoplist.strings (Slovak) * New translations app_en.arb (Danish) * New translations app_en.arb (Chinese Simplified) * New translations app_en.arb (Danish) * New translations app_en.arb (Slovak) * New translations app_en.arb (Slovak) * New translations app_en.arb (Slovak) * New translations app_en.arb (Slovak) * New translations app_en.arb (Slovak) * Delete packages/smooth_app/lib/l10n/app_kaa.arb * New translations app_en.arb (Greek) * New translations app_en.arb (Greek) * New translations app_en.arb (Romanian) * New translations app_en.arb (French) * New translations app_en.arb (Spanish) * New translations app_en.arb (Arabic) * New translations app_en.arb (Belarusian) * New translations app_en.arb (Bulgarian) * New translations app_en.arb (Catalan) * New translations app_en.arb (Czech) * New translations app_en.arb (Danish) * New translations app_en.arb (German) * New translations app_en.arb (Greek) * New translations app_en.arb (Basque) * New translations app_en.arb (Finnish) * New translations app_en.arb (Irish) * New translations app_en.arb (Gujarati) * New translations app_en.arb (Hebrew) * New translations app_en.arb (Hungarian) * New translations app_en.arb (Armenian) * New translations app_en.arb (Italian) * New translations app_en.arb (Japanese) * New translations app_en.arb (Georgian) * New translations app_en.arb (Korean) * New translations app_en.arb (Kurdish) * New translations app_en.arb (Lithuanian) * New translations app_en.arb (Mongolian) * New translations app_en.arb (Dutch) * New translations app_en.arb (Norwegian) * New translations app_en.arb (Punjabi) * New translations app_en.arb (Polish) * New translations app_en.arb (Portuguese) * New translations app_en.arb (Russian) * New translations app_en.arb (Slovak) * New translations app_en.arb (Slovenian) * New translations app_en.arb (Albanian) * New translations app_en.arb (Serbian (Cyrillic)) * New translations app_en.arb (Swati) * New translations app_en.arb (Southern Sotho) * New translations app_en.arb (Swedish) * New translations app_en.arb (Tswana) * New translations app_en.arb (Turkish) * New translations app_en.arb (Tsonga) * New translations app_en.arb (Ukrainian) * New translations app_en.arb (Venda) * New translations app_en.arb (Xhosa) * New translations app_en.arb (Chinese Simplified) * New translations app_en.arb (Chinese Traditional) * New translations app_en.arb (Zulu) * New translations app_en.arb (English) * New translations app_en.arb (Vietnamese) * New translations app_en.arb (Galician) * New translations app_en.arb (Icelandic) * New translations app_en.arb (Portuguese, Brazilian) * New translations app_en.arb (Indonesian) * New translations app_en.arb (Persian) * New translations app_en.arb (Khmer) * New translations app_en.arb (Tamil) * New translations app_en.arb (Bengali) * New translations app_en.arb (Marathi) * New translations app_en.arb (Thai) * New translations app_en.arb (Croatian) * New translations app_en.arb (Norwegian Nynorsk) * New translations app_en.arb (Kazakh) * New translations app_en.arb (Estonian) * New translations app_en.arb (Latvian) * New translations app_en.arb (Azerbaijani) * New translations app_en.arb (Hindi) * New translations app_en.arb (Kyrgyz) * New translations app_en.arb (Malay) * New translations app_en.arb (Maori) * New translations app_en.arb (Telugu) * New translations app_en.arb (English, Australia) * New translations app_en.arb (English, United Kingdom) * New translations app_en.arb (Tagalog) * New translations app_en.arb (Burmese) * New translations app_en.arb (Yiddish) * New translations app_en.arb (Maltese) * New translations app_en.arb (Welsh) * New translations app_en.arb (Faroese) * New translations app_en.arb (Esperanto) * New translations app_en.arb (Uyghur) * New translations app_en.arb (Luxembourgish) * New translations app_en.arb (Chinese Traditional, Hong Kong) * New translations app_en.arb (Tatar) * New translations app_en.arb (Malayalam) * New translations app_en.arb (Breton) * New translations app_en.arb (Romansh) * New translations app_en.arb (Tibetan) * New translations app_en.arb (Latin) * New translations app_en.arb (Bosnian) * New translations app_en.arb (Sinhala) * New translations app_en.arb (Cornish) * New translations app_en.arb (Uzbek) * New translations app_en.arb (Kannada) * New translations app_en.arb (Akan) * New translations app_en.arb (Assamese) * New translations app_en.arb (Scottish Gaelic) * New translations app_en.arb (Wolof) * New translations app_en.arb (Southern Ndebele) * New translations app_en.arb (Walloon) * New translations app_en.arb (Malagasy) * New translations app_en.arb (Swahili) * New translations app_en.arb (Odia) * New translations app_en.arb (Norwegian Bokmal) * New translations app_en.arb (Occitan) * New translations app_en.arb (Serbian (Latin)) * New translations app_en.arb (Amharic) * New translations app_en.arb (Nepali) * New translations app_en.arb (Montenegrin (Cyrillic)) * New translations app_en.arb (Dutch, Belgium) * New translations app_en.arb (Tahitian) * New translations app_en.arb (Hausa) * New translations app_en.arb (Chuvash) * New translations app_en.arb (Tajik) * New translations app_en.arb (Lao) * New translations app_en.arb (Quechua) * New translations app_en.arb (Somali) * New translations app_en.arb (Yoruba) * New translations app_en.arb (Afar) * New translations app_en.arb (Bambara) * New translations app_en.arb (Chechen) * New translations app_en.arb (Corsican) * New translations app_en.arb (Haitian Creole) * New translations app_en.arb (Sichuan Yi) * New translations app_en.arb (Inuktitut) * New translations app_en.arb (Javanese) * New translations app_en.arb (Sardinian) * New translations app_en.arb (Sindhi) * New translations app_en.arb (Sango) * New translations app_en.arb (Shona) * New translations app_en.arb (Tigrinya) * New translations app_en.arb (Sanskrit) * New translations app_en.arb (Akan, Twi) * New translations app_en.arb (Urdu (India)) * New translations app_en.arb (Karakalpak) * New translations app_en.arb (German) * New translations app_en.arb (Dutch) * New translations app_en.arb (Danish) * New translations app_en.arb (Ukrainian) * New translations app_en.arb (Danish) * New translations app_en.arb (Danish) * New translations app_en.arb (Chinese Traditional) * New translations app_en.arb (English, Australia) * New translations app_en.arb (English, United Kingdom) * New translations infoplist.strings (Chinese Traditional) * New translations app_en.arb (Hungarian) * New translations app_en.arb (Dutch, Belgium) * New translations app_en.arb (Slovak) * Delete packages/smooth_app/lib/l10n/app_kaa.arb --------- Co-authored-by: Pierre Slamich <[email protected]> commit 11bf06d Author: Lore <[email protected]> Date: Wed Apr 30 16:10:24 2025 +0200 fix: Move Hunger Games to a real view instead of overlay (openfoodfacts#4681) (openfoodfacts#6555) * Fix openfoodfacts#4681: Move Hunger Games to a real view instead of overlay Committer: Lorenzo Mascia <[email protected]> Changes : modified: packages/smooth_app/lib/pages/hunger_games/question_card.dart modified: packages/smooth_app/lib/pages/hunger_games/question_page.dart modified: packages/smooth_app/lib/pages/preferences/user_preferences_contribute.dart modified: packages/smooth_app/lib/pages/product/product_questions_widget.dart * Fixes after code review Committer: Lorenzo Mascia <[email protected]> Changes: modified: packages/smooth_app/lib/pages/hunger_games/question_card.dart modified: packages/smooth_app/lib/pages/hunger_games/question_image_thumbnail.dart modified: packages/smooth_app/lib/pages/hunger_games/question_page.dart modified: packages/smooth_app/lib/pages/preferences/user_preferences_contribute.dart modified: packages/smooth_app/lib/pages/product/product_questions_widget.dart * Fixes after second review Committer: Lorenzo Mascia <[email protected]> Changes: modified: packages/smooth_app/lib/pages/hunger_games/question_image_thumbnail.dart modified: packages/smooth_app/lib/pages/hunger_games/question_page.dart modified: packages/smooth_app/lib/pages/preferences/user_preferences_contribute.dart modified: packages/smooth_app/lib/pages/product/product_questions_widget.dart * Update packages/smooth_app/lib/pages/hunger_games/question_card.dart Co-authored-by: monsieurtanuki <[email protected]> * Fixes after third review Committer: Lorenzo Mascia <[email protected]> Changes: modified: lib/pages/hunger_games/question_image_thumbnail.dart modified: lib/pages/hunger_games/question_page.dart --------- Co-authored-by: Lorenzo Mascia <[email protected]> Co-authored-by: monsieurtanuki <[email protected]> commit 943db63 Author: Pierre Slamich <[email protected]> Date: Wed Apr 30 14:48:34 2025 +0200 ci: Update mkdocs.yml by adding edit button commit 913d888 Author: Pierre Slamich <[email protected]> Date: Sun Apr 27 12:19:27 2025 +0200 fix: Update dartdoc.yml commit dcf31fa Author: Pierre Slamich <[email protected]> Date: Sun Apr 27 12:16:13 2025 +0200 fix: Update dartdoc.yml commit 7897374 Author: Pierre Slamich <[email protected]> Date: Sun Apr 27 12:10:00 2025 +0200 fix: Update README.md commit aca2b47 Author: Pierre Slamich <[email protected]> Date: Sun Apr 27 11:51:46 2025 +0200 fix: Update dartdoc.yml commit 4049d8f Author: Pierre Slamich <[email protected]> Date: Sun Apr 27 11:47:01 2025 +0200 fix: Update dartdoc.yml commit cdd93b9 Author: Pierre Slamich <[email protected]> Date: Sun Apr 27 11:44:05 2025 +0200 fix: Update dartdoc.yml commit df0343e Author: Pierre Slamich <[email protected]> Date: Sun Apr 27 11:36:46 2025 +0200 fix: Update dartdoc.yml commit 8ca9d82 Author: Pierre Slamich <[email protected]> Date: Sun Apr 27 11:30:55 2025 +0200 ci: dartdoc + mkdocs (openfoodfacts#5717) * ci: dartdoc + mkdocs commit f6284e0 Author: Primaël Quémerais <[email protected]> Date: Sat Apr 26 16:58:02 2025 +0200 feat: Adding Robotoff Questions to product edition (openfoodfacts#6407) * feat: adds robotoff questions to SimpleInputPage * feat: add localization for Robotoff question answered message * fix: remove unused import * Added missing type annotation * feat: redesigned Robotoff questions integration. * fix: update state change notification mechanism in AbstractSimpleInputPageHelper * feat: improve layout and padding in SimpleInputWidget and SmoothIconButton * feat: implement SmoothBooleanButton for enhanced boolean selection UI * fix: take into account multiple questions * Merging translations * Update packages/smooth_app/lib/pages/product/simple_input_page.dart Co-authored-by: monsieurtanuki <[email protected]> --------- Co-authored-by: monsieurtanuki <[email protected]> commit 1d895ff Author: Primaël Quémerais <[email protected]> Date: Sat Apr 26 16:11:54 2025 +0200 fix: Update plural formatting in localization files for Greek and Dutch (openfoodfacts#6564) commit 4cf4c65 Author: Pierre Slamich <[email protected]> Date: Sat Apr 26 14:38:52 2025 +0200 fix: Update .gitignore with kaa.arb commit 15d374d Author: Pierre Slamich <[email protected]> Date: Sat Apr 26 12:06:27 2025 +0200 ci: Update config.yaml commit a0917eb Author: Pierre Slamich <[email protected]> Date: Sat Apr 26 11:28:11 2025 +0200 docs: Update config.yaml commit d23b07a Author: Pierre Slamich <[email protected]> Date: Sat Apr 26 10:49:52 2025 +0200 ci: Update android-release-to-org-openfoodfacts-scanner.yml commit f943f18 Author: Pierre Slamich <[email protected]> Date: Sat Apr 26 10:44:28 2025 +0200 ci: Update xcversion in fastfile commit ea22089 Author: Pierre Slamich <[email protected]> Date: Fri Apr 25 16:54:13 2025 +0200 fix: design promo (openfoodfacts#6563) commit 048d144 Author: Pierre Slamich <[email protected]> Date: Tue Apr 22 13:33:25 2025 +0200 ci: Update github-projects-ventilation.yml commit 1f53375 Merge: c04254d 4e8b6f3 Author: qq3173732005 <[email protected]> Date: Mon Apr 21 12:49:07 2025 -0400 Merge branch 'openfoodfacts:develop' into sz-6119 commit 4e8b6f3 Author: Ashutosh Khadse <[email protected]> Date: Sun Apr 20 14:57:07 2025 +0530 feat: Added stats view to the prices (openfoodfacts#6553) * add: Stats view to the prices * add: Stats view to the prices * feat: Add stats view to prices with refactored structure and full localization support * feat: Add stats view to prices with refactored structure and full localization support * feat: Add stats view to prices with simplified structure * feat: Add stats view to prices with simplified structure * feat: resolve code comment issue * feat: resolve code comment issue commit bc306ae Author: vinay chavhan <[email protected]> Date: Sun Apr 20 14:50:04 2025 +0530 feat : add shortcut to GDPR requests Wikipage in Prices screen (openfoodfacts#6558) commit 6ce17c3 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat Apr 19 12:39:17 2025 +0200 chore(deps): bump flutter_svg from 2.0.17 to 2.1.0 in /packages/scanner/shared (openfoodfacts#6557) * chore(deps): bump flutter_svg in /packages/scanner/shared Bumps [flutter_svg](https://github.com/flutter/packages/tree/main/third_party/packages) from 2.0.17 to 2.1.0. - [Release notes](https://github.com/flutter/packages/releases) - [Commits](https://github.com/flutter/packages/commits/flutter_svg-v2.1.0/third_party/packages) --- updated-dependencies: - dependency-name: flutter_svg dependency-version: 2.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> * upgraded both flutter_svg --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Cirrus CI <[email protected]> commit c04254d Merge: c914a89 120d810 Author: qq3173732005 <[email protected]> Date: Sun Apr 6 13:08:15 2025 -0400 Merge branch 'develop' into sz-6119 commit c914a89 Author: qq3173732005 <[email protected]> Date: Sun Apr 6 13:06:37 2025 -0400 Removed hardcoded strings for ImageField commit b316b40 Author: qq3173732005 <[email protected]> Date: Sun Mar 30 23:57:20 2025 -0400 Added edit shortcut to gallery screens
Closes: #6478
I added infinite scrolling to open the prices list view.
This is how the solution looks :
issue.6478.new.mp4