Skip to content

PE-9075: Disable AO-dependent features for Ar.io Solana migration#2116

Open
vilenarios wants to merge 1 commit intodevfrom
PE-9075-disable-ao-for-solana-migration
Open

PE-9075: Disable AO-dependent features for Ar.io Solana migration#2116
vilenarios wants to merge 1 commit intodevfrom
PE-9075-disable-ao-for-solana-migration

Conversation

@vilenarios
Copy link
Copy Markdown
Collaborator

@vilenarios vilenarios commented Apr 28, 2026

Summary

  • Disable ARIO token balance fetching in user profile
  • Disable ArNS name assignment (details panel, file context menu, upload flow)
  • Remove ARIO on AO and ARIO on AO via ETH top-up options (ARIO on Base remains)
  • Add persistent Solana migration banner directing users to ar.io/solana-migration and arns.ar.io

What's preserved

  • ArNS primary name display (profile header)
  • GAR gateway fetching
  • ARIO on Base top-up
  • AR wallet balance
  • Existing ArNS name icons on files (read-only, local DB)

Notes

  • All disabled code tagged with // TODO(solana-migration): for easy re-enablement
  • Analyzer passes clean (0 issues)

Test plan

  • Verify profile card no longer shows ARIO token balance
  • Verify "Assign ArNS name" option is gone from file context menu
  • Verify ArNS name section is gone from file details panel
  • Verify "Assign an ArNS name" checkbox is gone from upload flow
  • Verify "Add ArNS Name" button is gone from manifest options in upload
  • Verify ARIO on AO and ARIO on AO (via Ethereum) are gone from crypto top-up token selection
  • Verify ARIO on Base still appears and works in crypto top-up
  • Verify Solana migration banner appears at top of app (desktop + mobile)
  • Verify "Learn More" link opens https://ar.io/solana-migration
  • Verify primary name still displays in profile header
  • Verify AR balance still displays in profile card

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added Solana migration announcement banner with educational link.
  • Bug Fixes

    • Improved upload failure handling to distinguish resumable failures.
  • Removals

    • Disabled ARIO/IO token balance displays.
    • Removed ArNS name assignment features from uploads and file management.
    • Removed ARIO token options from payment selections.
  • Documentation

    • Updated contributor guidelines with new Git hook requirements.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 28, 2026

Warning

Rate limit exceeded

@vilenarios has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 51 minutes and 15 seconds before requesting another review.

To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: a5431349-b69f-4579-b257-6805058f6b23

📥 Commits

Reviewing files that changed from the base of the PR and between 6ba8d3a and a76fefc.

📒 Files selected for processing (11)
  • CLAUDE.md
  • lib/app_shell.dart
  • lib/authentication/ardrive_auth.dart
  • lib/components/details_panel.dart
  • lib/components/profile_card.dart
  • lib/components/upload_form.dart
  • lib/core/upload/view/manifest_options/manifest_options.dart
  • lib/pages/drive_detail/components/drive_explorer_item_tile.dart
  • lib/turbo/topup/models/crypto_token.dart
  • lib/turbo/topup/views/crypto_topup/token_selection_view.dart
  • lib/turbo/topup/views/unified/inline_crypto_payment.dart
📝 Walkthrough

Walkthrough

The pull request disables AR.io-specific features during a migration to Solana: token balance updates, ArNS name assignment UI across multiple screens, and ARIO token selection in payment flows. A migration announcement banner is added to the app shell, and a Git hook requirement is documented.

Changes

Cohort / File(s) Summary
Git Hook Configuration
CLAUDE.md
Added pre-commit validation requirement to ensure expected Flutter version is installed.
Migration Announcement Banner
lib/app_shell.dart
Added "Ar.io is migrating to Solana" banner widget in desktop and mobile layouts with clickable "Learn More" link opening migration URL.
Token Balance Feature Removal
lib/authentication/ardrive_auth.dart
Disabled ARIO/IO token balance retrieval and error tracking in _updateBalance() and refreshBalance() methods.
ArNS Name Feature Removal
lib/components/details_panel.dart, profile_card.dart, lib/core/upload/view/manifest_options/manifest_options.dart, lib/pages/drive_detail/components/drive_explorer_item_tile.dart
Disabled ArNS name assignment and display UI across file details, profile card, manifest options, and file actions; commented out related conditional renderings and added ignore directives.
Upload Flow Changes
lib/components/upload_form.dart
Removed automatic LoadAnts() dispatch, disabled ArNS name assignment checkbox, and enhanced upload failure modal to detect resumable failures with updated messaging.
ARIO Token Selection Removal
lib/turbo/topup/models/crypto_token.dart, lib/turbo/topup/views/crypto_topup/token_selection_view.dart, lib/turbo/topup/views/unified/inline_crypto_payment.dart
Removed ARIO token options (AO and Ethereum variants) from token selection UI in topup flows; added migration TODOs for future re-enablement.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • atticusofsparta

Poem

🐰 With hop and skip, we clear the way,
Old features rest, now rest they may,
A banner bright shows all the path,
To Solana's realm, migration's path,
ArNS and tokens tucked away—
We're hopping forward, come what may! 🌟

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title clearly and specifically summarizes the main objective: disabling AO-dependent features as part of the Ar.io Solana migration, which is the primary theme across all file changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch PE-9075-disable-ao-for-solana-migration

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

- stop fetching ARIO token balance in user profile
- disable ArNS name assignment in details panel, file context menu, and upload flow
- disable ArNS name fetching (LoadAnts) during upload
- remove ARIO on AO and ARIO on AO via ETH top-up options (keep ARIO on Base)
- add persistent solana migration banner with link to ar.io/solana-migration
- add pre-commit flutter version check hook note to CLAUDE.md

all disabled code tagged with // TODO(solana-migration): for easy re-enablement.
preserves: primary name display, GAR fetching, ARIO on Base top-up, AR balance.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@lib/app_shell.dart`:
- Around line 595-601: Replace the hardcoded English strings in the TextSpan
nodes with localized values from AppLocalizations: remove the literal text in
the two TextSpan instances and call AppLocalizations.of(context) to fetch keys
(e.g., bannerMessage and bannerLearnMore or similarly named keys you add) so the
banner copy is localized; ensure the surrounding build method has an available
BuildContext, import the generated AppLocalizations, and keep the existing style
reference (typography) on the "Learn More" TextSpan.

In `@lib/components/upload_form.dart`:
- Around line 2408-2426: Replace the hardcoded UI strings in the upload failure
modal with localized strings: change the title values ('Upload Interrupted' /
'Problem with Upload'), the action titles ('Dismiss' / 'Do Not Fix' and 'Resume
Upload' / 'Re-Upload') and any other newly added hardcoded text in the same
block to use appLocalizationsOf(context).<...> accessors; add corresponding
entries to the generated AppLocalizations (e.g., uploadInterrupted,
uploadProblem, dismiss, doNotFix, resumeUpload, reupload) and then reference
them from the modal/title/action constructors and from _failedUploadList where
applicable so all new user-facing text uses the localization helper.
🪄 Autofix (Beta)

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: de248106-0af9-402e-99ed-9cab6c5a3d0e

📥 Commits

Reviewing files that changed from the base of the PR and between c597151 and 6ba8d3a.

📒 Files selected for processing (11)
  • CLAUDE.md
  • lib/app_shell.dart
  • lib/authentication/ardrive_auth.dart
  • lib/components/details_panel.dart
  • lib/components/profile_card.dart
  • lib/components/upload_form.dart
  • lib/core/upload/view/manifest_options/manifest_options.dart
  • lib/pages/drive_detail/components/drive_explorer_item_tile.dart
  • lib/turbo/topup/models/crypto_token.dart
  • lib/turbo/topup/views/crypto_topup/token_selection_view.dart
  • lib/turbo/topup/views/unified/inline_crypto_payment.dart

Comment thread lib/app_shell.dart
Comment on lines +595 to +601
const TextSpan(
text:
'Ar.io is migrating to Solana! Register before the May 15, 2026 snapshot! Manage your ArNS names at arns.ar.io. ',
),
TextSpan(
text: 'Learn More',
style: typography
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Localize the new banner copy instead of hardcoded text.

Line 597 and Line 600 introduce user-facing English strings directly, so they won’t be translated.

🌐 Suggested change
- const TextSpan(
-   text:
-       'Ar.io is migrating to Solana! Register before the May 15, 2026 snapshot! Manage your ArNS names at arns.ar.io. ',
- ),
+ TextSpan(
+   text: appLocalizationsOf(context).solanaMigrationBannerMessage,
+ ),

- text: 'Learn More',
+ text: appLocalizationsOf(context).learnMore,

As per coding guidelines, "Access localized strings via Flutter's generated AppLocalizations class".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@lib/app_shell.dart` around lines 595 - 601, Replace the hardcoded English
strings in the TextSpan nodes with localized values from AppLocalizations:
remove the literal text in the two TextSpan instances and call
AppLocalizations.of(context) to fetch keys (e.g., bannerMessage and
bannerLearnMore or similarly named keys you add) so the banner copy is
localized; ensure the surrounding build method has an available BuildContext,
import the generated AppLocalizations, and keep the existing style reference
(typography) on the "Learn More" TextSpan.

Comment thread lib/components/upload_form.dart Outdated
Comment on lines 2408 to 2426
title: isResumable ? 'Upload Interrupted' : 'Problem with Upload',
description: appLocalizationsOf(context).yourUploadFailed,
content: state.failedTasks != null
? _failedUploadList(state.failedTasks!)
? _failedUploadList(state.failedTasks!,
isResumable: isResumable)
: null,
actions: state.failedTasks == null
? null
: [
ModalAction(
action: () => Navigator.of(context).pop(false),
title: 'Do Not Fix',
title: isResumable ? 'Dismiss' : 'Do Not Fix',
),
ModalAction(
action: () {
context.read<UploadCubit>().retryUploads();
},
title: 'Re-Upload',
title: isResumable ? 'Resume Upload' : 'Re-Upload',
),
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Localize the newly added resumable-failure UI strings.

Line 2408, Line 2419, Line 2425, and Line 2449 introduce new user-facing hardcoded text. Please move these into generated localizations and access via appLocalizationsOf(context) to keep i18n behavior consistent.

Suggested direction
+ final l10n = appLocalizationsOf(context);

- title: isResumable ? 'Upload Interrupted' : 'Problem with Upload',
+ title: isResumable ? l10n.uploadInterrupted : l10n.problemWithUpload,

- title: isResumable ? 'Dismiss' : 'Do Not Fix',
+ title: isResumable ? l10n.dismissEmphasized : l10n.doNotFixUpload,

- title: isResumable ? 'Resume Upload' : 'Re-Upload',
+ title: isResumable ? l10n.resumeUpload : l10n.reuploadEmphasized,

- isResumable ? 'Your upload was interrupted ...' : 'It seems there was a partial failure ...'
+ isResumable ? l10n.uploadInterruptedResumableDescription : l10n.partialUploadFailureDescription

As per coding guidelines: **/*.dart: Access localized strings via Flutter's generated AppLocalizations class.

Also applies to: 2448-2451

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@lib/components/upload_form.dart` around lines 2408 - 2426, Replace the
hardcoded UI strings in the upload failure modal with localized strings: change
the title values ('Upload Interrupted' / 'Problem with Upload'), the action
titles ('Dismiss' / 'Do Not Fix' and 'Resume Upload' / 'Re-Upload') and any
other newly added hardcoded text in the same block to use
appLocalizationsOf(context).<...> accessors; add corresponding entries to the
generated AppLocalizations (e.g., uploadInterrupted, uploadProblem, dismiss,
doNotFix, resumeUpload, reupload) and then reference them from the
modal/title/action constructors and from _failedUploadList where applicable so
all new user-facing text uses the localization helper.

@vilenarios vilenarios force-pushed the PE-9075-disable-ao-for-solana-migration branch from 6ba8d3a to a76fefc Compare April 28, 2026 20:20
@github-actions
Copy link
Copy Markdown

Visit the preview URL for this PR (updated for commit a76fefc):

https://ardrive-web--pr2116-pe-9075-disable-ao-f-ggic4a21.web.app

(expires Tue, 05 May 2026 20:34:59 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: a224ebaee2f0939e7665e7630e7d3d6cd7d0f8b0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant