Skip to content

refactor: EWM-450. TonWalletOrdinaryTransactionWidget refactor to Elementary #877

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

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import 'package:app/feature/wallet/widgets/account_transactions_tab/widgets/ton_
import 'package:app/feature/wallet/widgets/account_transactions_tab/widgets/ton_wallet_multisig_expired_transaction/ton_wallet_multisig_expired_transaction_widget.dart';
import 'package:app/feature/wallet/widgets/account_transactions_tab/widgets/ton_wallet_multisig_ordinary_transaction_widget.dart';
import 'package:app/feature/wallet/widgets/account_transactions_tab/widgets/ton_wallet_multisig_pending_transaction_widget.dart';
import 'package:app/feature/wallet/widgets/account_transactions_tab/widgets/ton_wallet_ordinary_transaction_widget.dart';
import 'package:app/feature/wallet/widgets/account_transactions_tab/widgets/ton_wallet_ordinary_transaction/ton_wallet_ordinary_transaction_widget.dart';
import 'package:app/feature/wallet/widgets/account_transactions_tab/widgets/ton_wallet_pending_transaction_widget.dart';
import 'package:app/generated/generated.dart';
import 'package:app/utils/utils.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import 'package:app/feature/wallet/widgets/account_transactions_tab/widgets/ton_wallet_ordinary_transaction/ton_wallet_ordinary_transaction_widget_wm.dart';
import 'package:app/feature/wallet/widgets/account_transactions_tab/widgets/ton_wallet_transaction_status_body.dart';
import 'package:app/feature/wallet/widgets/account_transactions_tab/widgets/ton_wallet_transaction_widget.dart';
import 'package:elementary/elementary.dart';
import 'package:flutter/material.dart';
import 'package:lucide_icons_flutter/lucide_icons.dart';
import 'package:nekoton_repository/nekoton_repository.dart';

class TonWalletOrdinaryTransactionWidget
extends ElementaryWidget<TonWalletOrdinaryTransactionWidgetWidgetModel> {
TonWalletOrdinaryTransactionWidget({
required TonWalletOrdinaryTransaction transaction,
required bool isFirst,
required bool isLast,
required Fixed price,
super.key,
WidgetModelFactory<TonWalletOrdinaryTransactionWidgetWidgetModel>?
wmFactory,
}) : super(
wmFactory ??
(context) =>
defaultTonWalletOrdinaryTransactionWidgetWidgetModelFactory(
context,
transaction: transaction,
isFirst: isFirst,
isLast: isLast,
price: price,
),
);

@override
Widget build(TonWalletOrdinaryTransactionWidgetWidgetModel wm) {
return TonWalletTransactionWidget(
icon:
wm.isIncoming ? LucideIcons.arrowDownLeft : LucideIcons.arrowUpRight,
isFirst: wm.isFirst,
isLast: wm.isLast,
onPressed: wm.onPressed,
address: wm.address,
isIncoming: wm.isIncoming,
status: TonWalletTransactionStatus.completed,
transactionFee: wm.transactionFee,
transactionDateTime: wm.date,
transactionValue: wm.transactionValue,
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import 'package:app/feature/wallet/widgets/account_transactions_tab/widgets/ton_wallet_ordinary_transaction/ton_wallet_ordinary_transaction_widget.dart';
import 'package:elementary/elementary.dart';
import 'package:nekoton_repository/nekoton_repository.dart';

/// [ElementaryModel] for [TonWalletOrdinaryTransactionWidget]
class TonWalletOrdinaryTransactionWidgetModel extends ElementaryModel {
TonWalletOrdinaryTransactionWidgetModel(
ErrorHandler errorHandler,
this._nekotonRepository,
) : super(errorHandler: errorHandler);

final NekotonRepository _nekotonRepository;

late final ticker = _nekotonRepository.currentTransport.nativeTokenTicker;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import 'package:app/core/error_handler_factory.dart';
import 'package:app/core/wm/custom_wm.dart';
import 'package:app/di/di.dart';
import 'package:app/feature/wallet/widgets/account_transactions_tab/detail/ton_wallet_ordinary_transaction_details.dart';
import 'package:app/feature/wallet/widgets/account_transactions_tab/widgets/ton_wallet_ordinary_transaction/ton_wallet_ordinary_transaction_widget.dart';
import 'package:app/feature/wallet/widgets/account_transactions_tab/widgets/ton_wallet_ordinary_transaction/ton_wallet_ordinary_transaction_widget_model.dart';
import 'package:elementary/elementary.dart';
import 'package:flutter/material.dart';
import 'package:nekoton_repository/nekoton_repository.dart';

/// Factory method for creating [TonWalletOrdinaryTransactionWidgetWidgetModel]
TonWalletOrdinaryTransactionWidgetWidgetModel
defaultTonWalletOrdinaryTransactionWidgetWidgetModelFactory(
BuildContext context, {
required TonWalletOrdinaryTransaction transaction,
required bool isFirst,
required bool isLast,
required Fixed price,
}) {
return TonWalletOrdinaryTransactionWidgetWidgetModel(
TonWalletOrdinaryTransactionWidgetModel(
createPrimaryErrorHandler(context),
inject(),
),
transaction,
isFirst,
isLast,
price,
);
}

/// [WidgetModel] для [TonWalletOrdinaryTransactionWidget]
class TonWalletOrdinaryTransactionWidgetWidgetModel extends CustomWidgetModel<
TonWalletOrdinaryTransactionWidget,
TonWalletOrdinaryTransactionWidgetModel> {
TonWalletOrdinaryTransactionWidgetWidgetModel(
super.model,
this._transaction,
// ignore: avoid_positional_boolean_parameters
this.isFirst,
this.isLast,
this._price,
);

final TonWalletOrdinaryTransaction _transaction;
final bool isFirst;
final bool isLast;
final Fixed _price;

late final bool isIncoming = !_transaction.isOutgoing;
late final Address address = _transaction.address;
late final transactionFee = Money.fromBigIntWithCurrency(
_transaction.fees,
Currencies()[model.ticker]!,
);
late final transactionValue = Money.fromBigIntWithCurrency(
_transaction.value,
Currencies()[model.ticker]!,
);
late final date = _transaction.date;

void onPressed() => Navigator.of(context, rootNavigator: true).push(
MaterialPageRoute<void>(
builder: (_) => TonWalletOrdinaryTransactionDetailsPage(
transaction: _transaction,
price: _price,
),
),
);
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ export 'ton_wallet_expired_transaction_widget.dart';
export 'ton_wallet_multisig_expired_transaction/ton_wallet_multisig_expired_transaction_widget.dart';
export 'ton_wallet_multisig_ordinary_transaction_widget.dart';
export 'ton_wallet_multisig_pending_transaction_widget.dart';
export 'ton_wallet_ordinary_transaction_widget.dart';
export 'ton_wallet_ordinary_transaction/ton_wallet_ordinary_transaction_widget.dart';
export 'ton_wallet_pending_transaction_widget.dart';
export 'ton_wallet_transaction_status_body.dart';
export 'ton_wallet_transaction_widget.dart';
Loading