Not working -> Working?#350
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughReplace slang helpers with a new bridge and plural helper; normalize translation placeholders to named ICU variables across locales; update imports and many UI widgets; improve provider reactivity and APK selection; tweak app sources; and adjust CI/workflow and dependency configuration. ChangesLocalization and App Infrastructure Upgrade
Estimated code review effort 🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
✨ Finishing Touches🧪 Generate unit tests (beta)
|
Review Summary by QodoComprehensive refactoring with translation system overhaul, APK handling improvements, and locale fixes
WalkthroughsDescription• **Standardized translation system**: Replaced custom slang-converter with new slang_converter
service featuring helper functions (t() and plural()) for improved translation handling across
all 40+ language files
• **Enhanced APK handling**: Implemented XAPK manifest validation, device density bucket mapping,
and improved ABI pattern matching with regex for more precise APK selection
• **Improved progress indicators**: Replaced custom CircularProgressIndicatorM3E and
LinearProgressIndicatorM3E with standard Flutter components throughout the app
• **Fixed locale codes**: Corrected Indonesian locale from 'in' to 'id' and Kurdish from 'kmr'
to 'en', 'KMR' (proper ISO 639-1 compliance)
• **Enhanced reactivity**: Changed LogsProvider from Provider to ChangeNotifierProvider with
notifyListeners() calls for reactive updates
• **Improved app sources**: Refactored F-Droid metadata extraction with HTML parsing, replaced
GitHub dependency in Codeberg with native implementation, and updated WhatsApp APK fallback URL
• **Added features**: APK file size display, "Installed Apps" quick-select button, dynamic form
field defaults, and native showLicensePage() for open-source packages
• **Standardized translation placeholders**: Updated all 40+ translation files to use semantic named
placeholders ({count}, {error}, {app}) instead of generic {}
• **Updated dependencies**: Android Gradle plugin to 9.2.1, multiple Flutter packages, and added
loading_indicator_m3e dependency
• **Configuration improvements**: Added analyzer lint rule exceptions, Git user configuration for
automated fixes, and error handling for edge-to-edge mode setup
Diagramflowchart LR
A["slang-converter<br/>old system"] -->|"replaced with"| B["slang_converter<br/>new service"]
B --> C["t() function<br/>translations"]
B --> D["plural() function<br/>smart mapping"]
E["Custom Progress<br/>Indicators"] -->|"replaced with"| F["Standard Flutter<br/>Components"]
G["XAPK Processing"] -->|"enhanced with"| H["Manifest Validation<br/>& Density Filtering"]
I["Locale Codes"] -->|"fixed to"| J["ISO 639-1<br/>Compliance"]
K["Translation Files<br/>40+ languages"] -->|"standardized"| L["Semantic Named<br/>Placeholders"]
File Changes1. lib/pages/app.dart
|
Code Review by Qodo
1. Codeberg infinite recursion
|
There was a problem hiding this comment.
Code Review
This pull request updates translation files to use named placeholders instead of positional ones, renames the slang-converter service, and introduces features like display density filtering for split APKs, fetching APK file sizes, and pre-filling URLs from installed apps. Several critical issues were identified in the review, including infinite recursion in the Codeberg class, a compilation error in the Slider widget due to an invalid parameter, potential runtime errors when accessing views.first or context.read without proper safety checks, a non-direct APK URL for WhatsApp, and regex matching bugs that could lead to incorrect ABI selection.
There was a problem hiding this comment.
🚫 CI Build Failed
The automated build process failed. Please review the build logs and fix the issues before requesting another review.
Next steps:
- Check the build logs for specific errors
- Fix the identified issues
- Push your fixes to this branch
- The CI will automatically re-run
Once the build passes, this review will be dismissed automatically.
There was a problem hiding this comment.
Actionable comments posted: 17
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
lib/providers/apps_provider.dart (1)
1184-1253:⚠️ Potential issue | 🔴 Critical | ⚡ Quick winKeep the base APK in the fallback split set.
filterApksByArchitecture()currently returns only ABI-tagged files once it finds a match, and it returns before density filtering when no ABI-tagged files exist. In the fallback paths ofselectApksForInstallation(), that can either drop the base APK entirely or leave all density splits in place, soinstallApkDir()may try to install an invalid split set. Preserve non-config APKs in the result and run density selection on the combined set instead of the ABI matches alone.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@lib/providers/apps_provider.dart` around lines 1184 - 1253, filterApksByArchitecture currently returns only ABI-tagged APKs and can drop the base (non-config) APK; change it so that when ABI matches are found you also include the base/non-config APK(s) from the original apkFiles (i.e., files that are not ABI or density/split tagged) before applying density filtering, and then run _filterByDensity on this combined set (not just the ABI matches); update filterApksByArchitecture to collect matchingApks + baseApks and pass that to _filterByDensity so callers like selectApksForInstallation/installApkDir receive a valid split set including the base APK.
🧹 Nitpick comments (2)
lib/providers/native_provider.dart (1)
17-21: 💤 Low valueConsider renaming the flag to clarify non-loading semantics.
Setting
_systemFontLoaded = trueon non-Android platforms is semantically misleading—the flag name suggests the font was loaded, but here it means "skip future attempts." This works correctly but could confuse future maintainers.Consider renaming to
_systemFontAttemptedor_systemFontInitialized, or add a clarifying comment.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@lib/providers/native_provider.dart` around lines 17 - 21, The flag _systemFontLoaded is misleading because it’s set to true to indicate “don’t try loading on non-Android” rather than an actual load; rename the flag to something clearer like _systemFontAttempted or _systemFontInitialized and update all references (e.g., checks and assignments around Platform.isAndroid and any places that read _systemFontLoaded) to use the new name, and add a brief comment where it’s set explaining that true means “no further load attempts required” (update declarations, the conditional that sets it when !Platform.isAndroid, and any related logic in this class/method).analysis_options.yaml (1)
10-14: ⚡ Quick winAvoid globally disabling naming/file lints.
This globally suppresses high-signal lint rules and can hide new regressions. Prefer targeted
// ignore_for_fileor local suppressions where exceptions are intentional.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@analysis_options.yaml` around lines 10 - 14, Remove the global suppressions under the analyzer.errors map (constant_identifier_names, file_names, non_constant_identifier_names) and instead apply targeted ignores only in the files that need them by adding `// ignore_for_file: constant_identifier_names` (or the specific lint name) at the top of those individual Dart files; update analysis_options.yaml to stop ignoring these lints globally so regressions are visible and keep any true exceptions confined to the specific files referenced.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/gitguardian.yaml:
- Line 15: The workflow step currently references the mutable tag "uses:
GitGuardian/ggshield/actions/secret@v1.51.0"; replace that tag with the
corresponding immutable commit SHA for that release (e.g. "uses:
GitGuardian/ggshield/actions/secret@<COMMIT_SHA>") to pin the action, confirm
the SHA matches the v1.51.0 release in the GitGuardian/ggshield repo, and run
the workflow to verify the action still executes correctly.
In `@android/settings.gradle.kts`:
- Line 22: The AGP bump in android/settings.gradle.kts
(id("com.android.application") version "9.2.1") plus KGP 2.3.21 conflicts with
the pinned Flutter 3.38.9 in codeql.yml; either update the pinned Flutter
version in codeql.yml to one that supports AGP 9.x / KGP 2.3.x / Gradle 9.x, or
revert the AGP/KGP/Gradle versions back to the Flutter‑3.38 compatible stack
(e.g., AGP 8.11.1, KGP <=2.2.20, Gradle 8.14) in android/settings.gradle.kts and
the Gradle wrapper; after making the chosen change, run flutter analyze
--suggestions and a full Android Gradle build with the pinned Flutter to verify
the toolchain works.
In `@assets/translations/bs.json`:
- Around line 426-429: The plural form for minutes is missing the count
placeholder: update the "minute.other" translation entry to include the {count}
token (e.g., change "min." to include "{count}"), so both "minute.one" and
"minute.other" display the numeric value; modify the "minute.other" key in the
translations JSON (the "minute" object) to include {count} in the string.
- Around line 450-453: The Bosnian translations for the key
"xAndNMoreUpdatesFailed" were left in English; update the values for the "one"
and "other" variants under the xAndNMoreUpdatesFailed object to Bosnian (e.g.,
change "Failed to update {app} and 1 more app." and "Failed to update {app} and
{count} more apps." to their Bosnian equivalents) so the bs.json locale remains
consistent; locate the xAndNMoreUpdatesFailed entry and replace the two string
values accordingly.
In `@assets/translations/en.json`:
- Line 107: Replace the inconsistent locale key "appAuthor" with the canonical
key "author" in the translations (or add an "author" entry mirroring
"appAuthor") so key parity is restored; update the "appAuthor" entry in
assets/translations/en.json to use the exact key name "author" (or duplicate the
value under "author" and remove "appAuthor") to match other locale files.
In `@assets/translations/he.json`:
- Line 419: The Hebrew translation for the retry message has a malformed
placeholder "{count}}" (extra closing brace) in the "other" string; update that
translation string so the placeholder is "{count}" (remove the extra brace) to
restore correct interpolation for the retry message key "other".
In `@assets/translations/nl.json`:
- Around line 455-456: Fix the typo in the Dutch translation string: replace
"bijgwerkt" with the correct "bijgewerkt" in the translation entry where the
plural key "other" (and verify "one" if needed) contains "{app} en nog {count}
apps zijn mogelijk bijgwerkt."; update that "other" value to "{app} en nog
{count} apps zijn mogelijk bijgewerkt." to correct the spelling.
In `@assets/translations/ug.json`:
- Around line 411-412: The translation entries for plural forms ("one" and
"other") use the wrong interpolation token `{error}`; update both values to use
`{count}` so the retry minutes display correctly (change the strings for the
"one" and "other" keys in the translations object to replace `{error}` with
`{count}`).
In `@assets/translations/uk.json`:
- Around line 411-412: The retry-delay placeholder in the background update
error translation is wrong: replace the '{error}' placeholder with the
pluralization/count placeholder '{count}' in both the "one" and "other" strings
for the background update error message (the two lines currently starting with
"Помилка перевірки оновлень у фоновому режимі - спробую знову через {error}
...") so the retry minute(s) render correctly.
In `@assets/translations/vi.json`:
- Line 452: The Vietnamese failure message string under the "other" key contains
a typo: replace "thảnh công" with the correct "thành công" in the value "{app}
và {count} ứng dụng khác đã cập nhật không thảnh công." so it reads "{app} và
{count} ứng dụng khác đã cập nhật không thành công."; update the "other" value
in assets/translations/vi.json accordingly.
In `@lib/app_sources/codeberg.dart`:
- Around line 8-11: The Codeberg class is instantiating itself (using
Codeberg()) in its constructor and delegating to
Codeberg().getLatestAPKDetails(...), causing infinite recursion; replace those
self-instantiations with calls to the base-class/default implementations (e.g.,
use super.additionalSourceAppSpecificSettingFormItems or a shared/static
defaults provider instead of Codeberg() for
additionalSourceAppSpecificSettingFormItems, searchQuerySettingFormItems and
canSearch) and change the delegation in getLatestAPKDetails to call
super.getLatestAPKDetails(...) (or a non-recursive static helper) so the class
uses the parent/default logic rather than constructing a new Codeberg instance.
- Around line 47-64: The search currently treats the API response as HTML and
regexes hrefs; update the logic that builds urls (around requestUrl and res
handling using sourceRequest) to jsonDecode(res.body) and extract owner/name
from the JSON structure (e.g., iterate over response['data'] items to get
repository owner and name), then construct fullUrl and populate the urls map
accordingly; keep the existing error path that throws getUpdatiumHttpError(res)
when res.statusCode != 200.
In `@lib/app_sources/fdroid.dart`:
- Around line 83-104: The enrichment currently parses res.body even on
non-successful HTTP responses; update the FDroid enrichment to first check the
response status (e.g., res.statusCode) and only parse/assign values when the
status indicates success (200 or 2xx) for both the author parsing block that
uses sourceRequest('https://$host/packages/$appId') and the changelog/GitLab
metadata block that uses
sourceRequest('https://gitlab.com/fdroid/fdroiddata/-/raw/master/metadata/$appId.yml');
if the status is not successful, skip parsing and leave details.names.author and
changelog fallback untouched to avoid overwriting with error pages.
In `@lib/app_sources/whatsapp.dart`:
- Around line 45-46: The fallback that sets apkUrl to
'https://www.whatsapp.com/android' returns HTML not an APK and causes later
failure; instead, when no .apk link is found, stop and surface an error
immediately rather than building APKDetails. In the code path that computes
apkUrl (the variable named apkUrl) before constructing APKDetails, check whether
the discovered URL ends with '.apk' (or was actually found); if not, throw or
return a descriptive error (e.g., "No APK link found for WhatsApp") so callers
can handle the missing artifact instead of attempting to download HTML. Ensure
the error is raised where apkUrl is finalized so APKDetails is only created with
a real APK URL.
In `@lib/pages/add_app.dart`:
- Around line 909-913: The installed-app selection call to changeUserInput
currently passes (app.packageName ?? '', true, false) which leaves
updateUrlInput false and fails to bump the form key; change the third argument
to true (i.e., call changeUserInput(app.packageName ?? '', true, true)) so
updateUrlInput is enabled and the URL input is updated/refreshed when an
installed app is selected.
In `@lib/providers/native_provider.dart`:
- Around line 22-33: When loadSystemFont() fails or fontFilePath is null the
code currently leaves _systemFontLoaded false causing endless retries; update
the null branch and the catch handler in the FontLoader block so that after
detecting fontFilePath == null or catching an exception you set
_systemFontLoaded = true (or another "attempted" flag) and still log the failure
(debugPrint) — locate the FontLoader usage and AndroidSystemFont().getFilePath()
call and set _systemFontLoaded in both the null path and the catch block to
prevent repeated attempts.
In `@README.md`:
- Line 40: The README uses image link syntax `` in the localization
sentence ("Updatium currently supports 38 locales...") which renders
incorrectly; change that token to a normal markdown link by replacing
``
with
`[here](https://github.com/omeritzics/Updatium/tree/main/assets/translations)`
so the inline reference to the translations folder displays as a clickable link.
---
Outside diff comments:
In `@lib/providers/apps_provider.dart`:
- Around line 1184-1253: filterApksByArchitecture currently returns only
ABI-tagged APKs and can drop the base (non-config) APK; change it so that when
ABI matches are found you also include the base/non-config APK(s) from the
original apkFiles (i.e., files that are not ABI or density/split tagged) before
applying density filtering, and then run _filterByDensity on this combined set
(not just the ABI matches); update filterApksByArchitecture to collect
matchingApks + baseApks and pass that to _filterByDensity so callers like
selectApksForInstallation/installApkDir receive a valid split set including the
base APK.
---
Nitpick comments:
In `@analysis_options.yaml`:
- Around line 10-14: Remove the global suppressions under the analyzer.errors
map (constant_identifier_names, file_names, non_constant_identifier_names) and
instead apply targeted ignores only in the files that need them by adding `//
ignore_for_file: constant_identifier_names` (or the specific lint name) at the
top of those individual Dart files; update analysis_options.yaml to stop
ignoring these lints globally so regressions are visible and keep any true
exceptions confined to the specific files referenced.
In `@lib/providers/native_provider.dart`:
- Around line 17-21: The flag _systemFontLoaded is misleading because it’s set
to true to indicate “don’t try loading on non-Android” rather than an actual
load; rename the flag to something clearer like _systemFontAttempted or
_systemFontInitialized and update all references (e.g., checks and assignments
around Platform.isAndroid and any places that read _systemFontLoaded) to use the
new name, and add a brief comment where it’s set explaining that true means “no
further load attempts required” (update declarations, the conditional that sets
it when !Platform.isAndroid, and any related logic in this class/method).
🪄 Autofix (Beta)
✅ Autofix completed
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: d87bffd2-22e1-4a0c-a379-417d3ac82c38
⛔ Files ignored due to path filters (2)
assets/graphics/icon-foreground.pngis excluded by!**/*.pngpubspec.lockis excluded by!**/*.lock
📒 Files selected for processing (88)
.github/workflows/ci.yml.github/workflows/gitguardian.yaml.github/workflows/nightly.yml.github/workflows/release.yml.gitignoreREADME.mdanalysis_options.yamlandroid/settings.gradle.ktsassets/translations/ar.jsonassets/translations/bg.jsonassets/translations/bn.jsonassets/translations/bs.jsonassets/translations/ca.jsonassets/translations/cs.jsonassets/translations/da.jsonassets/translations/de.jsonassets/translations/en-EO.jsonassets/translations/en-KMR.jsonassets/translations/en.jsonassets/translations/es.jsonassets/translations/et.jsonassets/translations/fa.jsonassets/translations/fr.jsonassets/translations/gl.jsonassets/translations/he.jsonassets/translations/hi.jsonassets/translations/hu.jsonassets/translations/hy.jsonassets/translations/id.jsonassets/translations/it.jsonassets/translations/ja.jsonassets/translations/ko.jsonassets/translations/ml.jsonassets/translations/ms.jsonassets/translations/nl.jsonassets/translations/pl.jsonassets/translations/pt-BR.jsonassets/translations/pt.jsonassets/translations/ro.jsonassets/translations/ru.jsonassets/translations/sv.jsonassets/translations/tr.jsonassets/translations/ug.jsonassets/translations/uk.jsonassets/translations/vi.jsonassets/translations/zh-TW.jsonassets/translations/zh.jsonlib/app_sources/apkcombo.dartlib/app_sources/aptoide.dartlib/app_sources/bitbucket.dartlib/app_sources/codeberg.dartlib/app_sources/directAPKLink.dartlib/app_sources/fdroid.dartlib/app_sources/fdroidrepo.dartlib/app_sources/gitea.dartlib/app_sources/github.dartlib/app_sources/gitlab.dartlib/app_sources/html.dartlib/app_sources/huaweiappgallery.dartlib/app_sources/rustore.dartlib/app_sources/sourcehut.dartlib/app_sources/telegramapp.dartlib/app_sources/tencent.dartlib/app_sources/uptodown.dartlib/app_sources/vivoappstore.dartlib/app_sources/whatsapp.dartlib/components/category_chip.dartlib/components/generated_form.dartlib/main.dartlib/pages/add_app.dartlib/pages/app.dartlib/pages/apps.dartlib/pages/home.dartlib/pages/import_export.dartlib/pages/safe_mode_dialog.dartlib/pages/security_disclaimer.dartlib/pages/settings.dartlib/providers/apps_provider.dartlib/providers/logs_provider.dartlib/providers/native_provider.dartlib/providers/notifications_provider.dartlib/providers/settings_provider.dartlib/providers/source_provider.dartlib/services/github_star_prompt.dartlib/services/githubstars.dartlib/services/slang-converter.dartlib/services/slang_converter.dartpubspec.yaml
💤 Files with no reviewable changes (3)
- lib/services/slang-converter.dart
- .github/workflows/ci.yml
- .github/workflows/release.yml
|
Note Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it. Fixes Applied SuccessfullyFixed 2 file(s) based on 1 unresolved review comment. A stacked PR containing fixes has been created.
Time taken: |
✅ CI Build Passed - Automatically dismissing previous rejection as the build now succeeds.
|
/describe |
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
|
/improve |
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
|
/describe |
There was a problem hiding this comment.
Actionable comments posted: 2
♻️ Duplicate comments (2)
lib/app_sources/codeberg.dart (1)
48-63:⚠️ Potential issue | 🟠 Major | ⚡ Quick winParse Codeberg search response as JSON, not HTML links.
Line 50 calls
api/v1/repos/search, but Line 53-57 treats the payload as HTML and regexeshref="...". This can yield empty search results.#!/bin/bash set -euo pipefail curl -sSI "https://codeberg.org/api/v1/repos/search?q=updatium" | sed -n '1,20p' echo curl -s "https://codeberg.org/api/v1/repos/search?q=updatium" | head -c 300 echo echo "If response is JSON, search logic should jsonDecode(res.body) and iterate response['data']."🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@lib/app_sources/codeberg.dart` around lines 48 - 63, The code builds requestUrl and calls sourceRequest but treats res.body as HTML using linkReg and href regex; instead parse the JSON response (jsonDecode(res.body)), iterate the top-level list (response['data'] or the appropriate field returned by the API), extract repository path/name from each item to construct fullUrl and name, and populate the urls map; update the logic around requestUrl, sourceRequest result handling, and remove the href regex usage to use JSON fields from each repo item.lib/app_sources/fdroid.dart (1)
134-137:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winGuard raw changelog overwrite behind a successful status code.
Line 134-137 assigns
details.changeLogfrom the raw URL response body without checking status, so an error page/body can still replace the fallback changelog.🔧 Suggested fix
if ((isGitHub || isGitLab) && (details.changeLog?.indexOf('/blob/') ?? -1) >= 0) { try { - details.changeLog = (await sourceRequest( + final rawRes = await sourceRequest( details.changeLog!.replaceFirst('/blob/', '/raw/'), additionalSettings, - )).body; + ); + if (rawRes.statusCode >= 200 && + rawRes.statusCode < 300 && + rawRes.body.isNotEmpty) { + details.changeLog = rawRes.body; + } } catch (e) { // Fail silently } }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@lib/app_sources/fdroid.dart` around lines 134 - 137, The code assigns details.changeLog from the result of sourceRequest without checking the HTTP status; update the logic around the sourceRequest call (the block that sets details.changeLog) to first capture the response (e.g., let resp = await sourceRequest(...)) and only set details.changeLog = resp.body when the response indicates success (status code 200 OK or equivalent); otherwise leave details.changeLog unchanged to preserve the fallback. Ensure you reference the existing symbols details.changeLog and sourceRequest when making the change.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@lib/providers/source_provider.dart`:
- Around line 627-633: The ABI regex allows false positives because it uses an
optional left separator '[-_\.]?' and requires a separator on the right, so
tokens like "myx86tool" match; update the pattern construction (the abiPattern
variable and its suffix logic) to require a proper token boundary by replacing
the left optional group with a non-capturing alternation for start-or-separator
and make the right boundary allow end-or-separator, e.g. use '(?:^|[-_.])' +
RegExp.escape(abi) + suffix + '(?:$|[-_.])' (adjusting existing suffix handling
for x86/armeabi accordingly) so only full ABI tokens are matched.
In `@README.md`:
- Line 40: The link text "here" is not descriptive; update the markdown at the
sentence containing the translations link so the anchor uses descriptive text
(e.g., "translation files on GitHub" or "Updatium translation files") instead of
"here" and keep the same URL to
https://github.com/omeritzics/Updatium/tree/main/assets/translations so screen
readers and readers skimming the README understand the destination.
---
Duplicate comments:
In `@lib/app_sources/codeberg.dart`:
- Around line 48-63: The code builds requestUrl and calls sourceRequest but
treats res.body as HTML using linkReg and href regex; instead parse the JSON
response (jsonDecode(res.body)), iterate the top-level list (response['data'] or
the appropriate field returned by the API), extract repository path/name from
each item to construct fullUrl and name, and populate the urls map; update the
logic around requestUrl, sourceRequest result handling, and remove the href
regex usage to use JSON fields from each repo item.
In `@lib/app_sources/fdroid.dart`:
- Around line 134-137: The code assigns details.changeLog from the result of
sourceRequest without checking the HTTP status; update the logic around the
sourceRequest call (the block that sets details.changeLog) to first capture the
response (e.g., let resp = await sourceRequest(...)) and only set
details.changeLog = resp.body when the response indicates success (status code
200 OK or equivalent); otherwise leave details.changeLog unchanged to preserve
the fallback. Ensure you reference the existing symbols details.changeLog and
sourceRequest when making the change.
🪄 Autofix (Beta)
❌ Autofix failed (check again to retry)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: e50cc271-a870-4a71-b1bf-9268c7213817
📒 Files selected for processing (18)
README.mdassets/translations/bs.jsonassets/translations/en.jsonassets/translations/he.jsonassets/translations/nl.jsonassets/translations/ug.jsonassets/translations/uk.jsonassets/translations/vi.jsonlib/app_sources/codeberg.dartlib/app_sources/fdroid.dartlib/app_sources/whatsapp.dartlib/pages/add_app.dartlib/pages/app.dartlib/pages/settings.dartlib/providers/apps_provider.dartlib/providers/native_provider.dartlib/providers/source_provider.dartpubspec.yaml
💤 Files with no reviewable changes (1)
- lib/pages/settings.dart
🚧 Files skipped from review as they are similar to previous changes (9)
- lib/app_sources/whatsapp.dart
- assets/translations/ug.json
- assets/translations/uk.json
- assets/translations/en.json
- assets/translations/bs.json
- lib/pages/app.dart
- assets/translations/nl.json
- lib/providers/apps_provider.dart
- assets/translations/vi.json
|
@gemini-code-assist Is the Pull Request ready to merge? |
|
Hi @omeritzics, thank you for reaching out! While I cannot directly perform a merge or approve the pull request, I can provide a status update based on the current state of the PR. Looking at the recent activity, there are some identified issues (such as the recursion in Once you have verified that these fixes are implemented and the build is passing, you should be in a good position to merge. If you need help with a specific piece of code or have questions about the remaining tasks, feel free to ask! |
|
/review |
|
Note Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it. Autofix skipped. No unresolved CodeRabbit review comments with fix instructions found. |
411daea to
33d29b8
Compare
Another step towards Slang
style: auto-fix linting and formatting issues Co-Authored-By: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
style: auto-fix linting and formatting issues
Remove duplicate appAuthor field
This reverts commit bce78bb.
Update lib/providers/source_provider.dart Update README.md Fix critical errors style: auto-fix linting and formatting issues Another step towards Slang style: auto-fix linting and formatting issues Update plugin com.android.application to v9 (#343) Update pluralization for minutes in bs.json Update assets/translations/uk.json Update assets/translations/vi.json Update assets/translations/ug.json Update assets/translations/nl.json Update assets/translations/he.json Update assets/translations/en.json Update lib/pages/add_app.dart Update lib/providers/native_provider.dart Some fixes * style: auto-fix linting and formatting issues * Should fix "Pick export directory" * Fix app won't open * Remove prepare job from release workflow Removed the prepare job and its associated steps from the release workflow. * style: auto-fix linting and formatting issues * Update nightly.yml * Update GitGuardian/ggshield action to v1.51.0 (#347) Co-authored-by: Omer I.S. <137101815+omeritzics@users.noreply.github.com> * Update F-Droid source * Commit * Add APK file size to app.dart * Add "Installed Apps" list * style: auto-fix linting and formatting issues * Update email configuration for GitHub Actions * style: auto-fix linting and formatting issues * Add Kurdish support * Add Kurdish localization package import * Kurdish support * Fix * Update lib/providers/settings_provider.dart * Update lib/pages/add_app.dart Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Change provider access from watch to read * Refactor author fetching logic from GitLab * Update pubspec.yaml * fix: apply CodeRabbit auto-fixes Fixed 2 file(s) based on 1 unresolved review comment. * Change provider access from watch to read * Update analysis_options.yaml * Improve fdroid.dart * Update * Remove prepare job from CI workflow Removed the prepare job and its associated steps from the CI workflow. * Some quality fixes * Revert "Refactor author fetching logic from GitLab" This reverts commit e44254e. --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: CodeRabbit <noreply@coderabbit.ai> Refactor Codeberg to extend Gitea functionality Update lib/app_sources/codeberg.dart Update lib/pages/settings.dart Update lib/providers/apps_provider.dart Update lib/providers/apps_provider.dart Update lib/providers/source_provider.dart Update lib/app_sources/whatsapp.dart Update lib/pages/app.dart style: auto-fix linting and formatting issues style: auto-fix linting and formatting issues Update GitGuardian/ggshield action to v1.51.0 (#348) * style: auto-fix linting and formatting issues * Should fix "Pick export directory" * Fix app won't open * Update GitGuardian/ggshield action to v1.51.0 * Remove prepare job from release workflow Removed the prepare job and its associated steps from the release workflow. * style: auto-fix linting and formatting issues * Update nightly.yml * Update F-Droid source * Commit * Add APK file size to app.dart * Add "Installed Apps" list * style: auto-fix linting and formatting issues --------- style: auto-fix linting and formatting issues Co-Authored-By: omeritzics <137101815+omeritzics@users.noreply.github.com> Co-Authored-By: Omer I.S. <omeritzicschwartz@gmail.com> Co-Authored-By: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-Authored-By: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-Authored-By: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-Authored-By: CodeRabbit <noreply@coderabbit.ai>
This reverts commit aa1334f.
Summary by CodeRabbit
New Features
Improvements
Bug Fixes
Documentation