Added quote expiry-aware flows with auto-refresh #211

Open
protuberanets wants to merge 3 commits from SEND021 into main
Collaborator
No description provided.
protuberanets added 1 commit 2025-12-29 15:42:09 +00:00
protuberanets self-assigned this 2025-12-29 15:42:36 +00:00
tech requested changes 2025-12-29 22:36:44 +00:00
@@ -76,3 +69,3 @@
}
PaymentQuote? get quotation => _quotation.data;
PaymentQuote? get quotation => hasQuoteForCurrentIntent ? _quotation.data : null;
Owner

ваще-то при hasQuoteForCurrentIntent _quotation.data железобетонно должно быть null. Реально флажок этот нужен?

ваще-то при hasQuoteForCurrentIntent _quotation.data железобетонно должно быть null. Реально флажок этот нужен?
Author
Collaborator

_lastRequestSignature ставится только когда успешный ответ получен, но само поле _quotation.data потом может стать null (например, при ошибке обновления котировки мы делаем copyWith(data: null, error: e) и _lastRequestSignature остаётся прежним)

_lastRequestSignature ставится только когда успешный ответ получен, но само поле _quotation.data потом может стать null (например, при ошибке обновления котировки мы делаем copyWith(data: null, error: e) и _lastRequestSignature остаётся прежним)
@@ -85,0 +84,4 @@
return _lastRequestSignature == _signature(_pendingIntent!);
}
bool get hasLiveQuote =>
Owner

часть выражения можно заменить галкой isReady и не повторять ее содержимое внутри этой галки

часть выражения можно заменить галкой isReady и не повторять ее содержимое внутри этой галки
@@ -171,0 +336,4 @@
return DateTime.fromMillisecondsSinceEpoch(expiresAt, isUtc: true);
}
String _signature(PaymentIntent intent) {
Owner

а почему так? разве toDTO может выбрасывать исключения? Если может - то это скорее ошибка программирования где-то.

а почему так? разве toDTO может выбрасывать исключения? Если может - то это скорее ошибка программирования где-то.
Author
Collaborator

Перехват в _signature нужен, чтобы падение intent.toDTO().toJson() не убило провайдер и всё равно дать подпись. В норме toDTO кидать не должен. Могу еще добавить лог

Перехват в _signature нужен, чтобы падение intent.toDTO().toJson() не убило провайдер и всё равно дать подпись. В норме toDTO кидать не должен. Могу еще добавить лог
@@ -59,0 +64,4 @@
void _handleFocusChange() {
if (_focusNode.hasFocus) return;
final quotationProvider = context.read<QuotationProvider>();
if (quotationProvider.canRequestQuote) {
Owner

У тебя canRequestQuote всегда соседствует с вызовом refreshNow. Это означает, что последний должен включать в себя проверку первого, чтобы просто не копипастить код.

У тебя canRequestQuote всегда соседствует с вызовом refreshNow. Это означает, что последний должен включать в себя проверку первого, чтобы просто не копипастить код.
@@ -86,0 +92,4 @@
if (quotationProvider.canRequestQuote) {
quotationProvider.refreshNow();
}
ScaffoldMessenger.of(context).showSnackBar(
Owner

нужно это сообщение? Да еще в snackbar?

нужно это сообщение? Да еще в snackbar?
@@ -0,0 +33,4 @@
Expanded(
child: SwitchListTile.adaptive(
contentPadding: EdgeInsets.zero,
value: autoRefreshEnabled,
Owner

проверь, плиз, новшество на deprecation

проверь, плиз, новшество на deprecation
Author
Collaborator

Все гуд

Все гуд
@@ -0,0 +95,4 @@
}
}
if (provider.hasQuoteForCurrentIntent) {
Owner

логику не улавливаю. expired, когда есть котировка для текущего платежа?

логику не улавливаю. expired, когда есть котировка для текущего платежа?
Author
Collaborator

quoteExpired показывается, когда для текущего платежа котировка есть, но её срок уже истёк. Пока котировка свежая — видишь таймер quoteExpiresIn, время вышло - quoteExpired

quoteExpired показывается, когда для текущего платежа котировка есть, но её срок уже истёк. Пока котировка свежая — видишь таймер quoteExpiresIn, время вышло - quoteExpired
@@ -12,0 +13,4 @@
const SendButton({
super.key,
required this.onPressed,
this.state = ButtonState.enabled,
Owner

а кнопка из провайдера не может состояние свое прочитать? нужно управление снаружи?

а кнопка из провайдера не может состояние свое прочитать? нужно управление снаружи?
protuberanets added 1 commit 2025-12-30 14:56:22 +00:00
protuberanets added 1 commit 2025-12-30 16:09:00 +00:00
This pull request has changes conflicting with the target branch.
  • frontend/pshared/lib/provider/payment/quotation.dart
  • frontend/pweb/lib/l10n/en.arb
  • frontend/pweb/lib/l10n/ru.arb
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin SEND021:SEND021
git checkout SEND021
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tech/sendico#211