Skip to content

fix: 6.11.1 hotfixes - #2258

Merged
ethicnology merged 7 commits into
mainfrom
hotfix/6.11.1
Jun 9, 2026
Merged

fix: 6.11.1 hotfixes#2258
ethicnology merged 7 commits into
mainfrom
hotfix/6.11.1

Conversation

@ethicnology

@ethicnology ethicnology commented Jun 8, 2026

Copy link
Copy Markdown
Member

@ethicnology

Copy link
Copy Markdown
Member Author

Hey @claude what's your opinion on this hotfix PR for 6.11.X?

@claude

claude Bot commented Jun 9, 2026

Copy link
Copy Markdown

Claude finished @ethicnology's task in 1m 55s —— View job


Opinion on the 6.11.1 hotfix PR

I read through the funding/error-handling changes, the new presentation layer, the backup card fix, the localization, and the version/CHANGELOG bumps. Overall this is a solid, well-scoped hotfix — it does what a .1 should do: tighten error handling and copy without introducing new surface area. CI ("Analyze and Test") is still running; my comments below are from reading the diff.

What I like 👍

  • log.severelog.warning for handled API errors (bullbitcoin_api_funding_gateway.dart). These are expected, user-facing API failures, not crashes — downgrading the severity is the right call and should cut Sentry noise meaningfully.
  • Parse failures now become a domain error instead of an opaque rethrow. The on FetchFundingDetailsFailed { rethrow } + catch → throw FetchFundingDetailsFailed('Could not parse details') pattern is clean, and since code is null the user still sees the localized generic message rather than the raw string. Good.
  • numTelefono key fallback (NUM TELEFONO / NUM_TELEFONO / PHONE NUMBER / phoneNumber) + num→String coercion is a pragmatic defense against inconsistent backend keying for COP/SINPE. Worth a one-line comment explaining why it exists, so it isn't "cleaned up" later.
  • backup_card.dart: swapping Spacer() for Expanded(child: Column) + crossAxisAlignment.start is the correct fix for title/subtitle overflow with long or RTL translations.
  • Error-code → localized copy mapping (FundExchangeApiErrorCopy) is tidy, and the displayTitle/displayMessage contract on the sealed FundExchangePresentationError keeps the widgets dumb. Nice that every subclass implements it.
  • Translations are actually provided for all locales (fr/hy/etc. carry real strings, not an English fallback).

Things worth a second look 🔍

  1. Behavior change: empty institution list is now an error. The gateway throws FetchInstitutionsFailed.emptyList() when result isn't a map or elements is empty (previously returned []), and the bloc independently throws emptyList() when result.institutions.isEmpty. The double-guard is harmless/defensive, but please confirm no jurisdiction can legitimately return zero institutions — otherwise a valid empty state now shows an error card.

  2. Raw backend messages reach the user for ERR_RCP_400 (returns backendMessage when non-empty) and ERR_ORD_COP400 (messageData?['error'] ?? backendMessage). That's fine if bb-exchange guarantees those strings are user-safe and localized server-side — just flagging that these bypass the app's localization.

  3. LoadInstitutionsFailed.message looks like dead code. It now takes a message field, but fromApplicationError only ever builds const LoadInstitutionsFailed() (the FetchInstitutionsFailed case maps to FundExchangeApiError instead). If nothing constructs it with a message, consider dropping the field to avoid confusion. Fix this →

  4. Localization formatting nit (cosmetic). In the non-en .arb files the new block has inconsistent indentation — e.g. app_fr.arb/app_hy.arb have an over-indented first key and a couple of flush-left keys ("fundExchangeErrorOrdPo404"). Valid JSON, so it won't break the build, but it reads as a copy/paste artifact. Fix this →

  5. Line length: the new fundingInstitutions: event.resetInstitutions ? null : state.fundingInstitutions, in fund_exchange_bloc.dart may exceed the 80-col format width — dart format/flutter analyze in CI will confirm.

Verdict

No blockers. Points 1 and 2 are the only ones I'd want a quick confirmation on before merging (they're product/backend-contract questions, not code bugs); 3–5 are minor cleanups that can ride along or wait. Good hotfix. ✅
· hotfix/6.11.1

@ethicnology ethicnology changed the title fix(6.11.0): hotfixes fix: 6.11.1 hotfixes Jun 9, 2026
@ethicnology
ethicnology merged commit 9093a62 into main Jun 9, 2026
1 check passed
@i5hi
i5hi deleted the hotfix/6.11.1 branch July 7, 2026 16:02
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.

3 participants