2021-03-12 21:04:37 +02:00
|
|
|
import 'package:cake_wallet/src/screens/dashboard/widgets/order_row.dart';
|
|
|
|
import 'package:cake_wallet/view_model/dashboard/order_list_item.dart';
|
2020-07-23 15:20:52 +03:00
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart';
|
|
|
|
import 'package:flutter_mobx/flutter_mobx.dart';
|
|
|
|
import 'package:cake_wallet/src/screens/dashboard/widgets/header_row.dart';
|
|
|
|
import 'package:cake_wallet/src/screens/dashboard/widgets/date_section_raw.dart';
|
|
|
|
import 'package:cake_wallet/src/screens/dashboard/widgets/trade_row.dart';
|
|
|
|
import 'package:cake_wallet/src/screens/dashboard/widgets/transaction_raw.dart';
|
|
|
|
import 'package:cake_wallet/view_model/dashboard/trade_list_item.dart';
|
|
|
|
import 'package:cake_wallet/view_model/dashboard/transaction_list_item.dart';
|
|
|
|
import 'package:cake_wallet/view_model/dashboard/date_section_item.dart';
|
|
|
|
import 'package:intl/intl.dart';
|
|
|
|
import 'package:cake_wallet/routes.dart';
|
|
|
|
import 'package:cake_wallet/generated/i18n.dart';
|
|
|
|
|
|
|
|
class TransactionsPage extends StatelessWidget {
|
2022-10-12 13:09:57 -04:00
|
|
|
TransactionsPage({required this.dashboardViewModel});
|
2020-07-23 15:20:52 +03:00
|
|
|
|
|
|
|
final DashboardViewModel dashboardViewModel;
|
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
return Container(
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
top: 24,
|
|
|
|
bottom: 24
|
|
|
|
),
|
|
|
|
child: Column(
|
|
|
|
children: <Widget>[
|
|
|
|
HeaderRow(dashboardViewModel: dashboardViewModel),
|
|
|
|
Expanded(
|
|
|
|
child: Observer(
|
|
|
|
builder: (_) {
|
|
|
|
final items = dashboardViewModel.items;
|
|
|
|
|
|
|
|
return items?.isNotEmpty ?? false
|
|
|
|
? ListView.builder(
|
|
|
|
itemCount: items.length,
|
|
|
|
itemBuilder: (context, index) {
|
|
|
|
|
|
|
|
final item = items[index];
|
|
|
|
|
|
|
|
if (item is DateSectionItem) {
|
|
|
|
return DateSectionRaw(date: item.date);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (item is TransactionListItem) {
|
|
|
|
final transaction = item.transaction;
|
|
|
|
|
2020-12-15 18:29:10 +02:00
|
|
|
return Observer(
|
|
|
|
builder: (_) => TransactionRow(
|
2020-07-23 15:20:52 +03:00
|
|
|
onTap: () => Navigator.of(context).pushNamed(
|
|
|
|
Routes.transactionDetails,
|
|
|
|
arguments: transaction),
|
|
|
|
direction: transaction.direction,
|
|
|
|
formattedDate: DateFormat('HH:mm')
|
|
|
|
.format(transaction.date),
|
|
|
|
formattedAmount: item.formattedCryptoAmount,
|
2022-11-04 13:58:04 +02:00
|
|
|
formattedFiatAmount:
|
2022-12-07 22:07:32 +02:00
|
|
|
dashboardViewModel.balanceViewModel.isFiatDisabled
|
2022-11-04 13:58:04 +02:00
|
|
|
? '' : item.formattedFiatAmount,
|
2023-02-08 18:47:12 +02:00
|
|
|
isPending: transaction.isPending,
|
|
|
|
title: item.formattedTitle + item.formattedStatus));
|
2020-07-23 15:20:52 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if (item is TradeListItem) {
|
|
|
|
final trade = item.trade;
|
|
|
|
|
2021-03-31 20:22:41 +03:00
|
|
|
return Observer(builder: (_) => TradeRow(
|
2020-07-23 15:20:52 +03:00
|
|
|
onTap: () => Navigator.of(context).pushNamed(
|
|
|
|
Routes.tradeDetails,
|
|
|
|
arguments: trade),
|
|
|
|
provider: trade.provider,
|
|
|
|
from: trade.from,
|
|
|
|
to: trade.to,
|
|
|
|
createdAtFormattedDate:
|
2022-10-12 13:09:57 -04:00
|
|
|
trade.createdAt != null
|
|
|
|
? DateFormat('HH:mm').format(trade.createdAt!)
|
|
|
|
: null,
|
2020-07-23 15:20:52 +03:00
|
|
|
formattedAmount: item.tradeFormattedAmount
|
2021-03-31 20:22:41 +03:00
|
|
|
));
|
2020-07-23 15:20:52 +03:00
|
|
|
}
|
|
|
|
|
2021-03-12 21:04:37 +02:00
|
|
|
if (item is OrderListItem) {
|
|
|
|
final order = item.order;
|
|
|
|
|
2021-03-31 20:22:41 +03:00
|
|
|
return Observer(builder: (_) => OrderRow(
|
2021-03-12 21:04:37 +02:00
|
|
|
onTap: () => Navigator.of(context).pushNamed(
|
|
|
|
Routes.orderDetails,
|
|
|
|
arguments: order),
|
2021-04-13 21:40:44 +03:00
|
|
|
provider: order.provider,
|
2022-10-12 13:09:57 -04:00
|
|
|
from: order.from!,
|
|
|
|
to: order.to!,
|
2021-03-12 21:04:37 +02:00
|
|
|
createdAtFormattedDate:
|
|
|
|
DateFormat('HH:mm').format(order.createdAt),
|
|
|
|
formattedAmount: item.orderFormattedAmount,
|
2021-03-31 20:22:41 +03:00
|
|
|
));
|
2021-03-12 21:04:37 +02:00
|
|
|
}
|
|
|
|
|
2020-07-23 15:20:52 +03:00
|
|
|
return Container(
|
2020-08-19 20:57:06 +03:00
|
|
|
color: Colors.transparent,
|
2020-07-23 15:20:52 +03:00
|
|
|
height: 1);
|
|
|
|
}
|
|
|
|
)
|
|
|
|
: Center(
|
|
|
|
child: Text(
|
|
|
|
S.of(context).placeholder_transactions,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14,
|
2022-10-12 13:09:57 -04:00
|
|
|
color: Theme.of(context).primaryTextTheme!
|
|
|
|
.overline!.decorationColor!
|
2020-07-23 15:20:52 +03:00
|
|
|
),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
)
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|