Merge pull request #625 from cake-tech/CW-122-Rework-filter-on-the-transactions-list-screen

[CW-122] rework filter on the transactions list screen
This commit is contained in:
Omar Hatem 2022-12-28 20:50:17 +02:00 committed by GitHub
commit 9bd0de6d08
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
42 changed files with 314 additions and 284 deletions

View file

@ -24,6 +24,9 @@ class ExchangeProviderDescription extends EnumerableItem<int>
static const simpleSwap = static const simpleSwap =
ExchangeProviderDescription(title: 'SimpleSwap', raw: 4, image: 'assets/images/simpleSwap.png'); ExchangeProviderDescription(title: 'SimpleSwap', raw: 4, image: 'assets/images/simpleSwap.png');
static const all =
ExchangeProviderDescription(title: 'All trades', raw: 5, image:'');
static ExchangeProviderDescription deserialize({required int raw}) { static ExchangeProviderDescription deserialize({required int raw}) {
switch (raw) { switch (raw) {
case 0: case 0:
@ -36,6 +39,8 @@ class ExchangeProviderDescription extends EnumerableItem<int>
return sideShift; return sideShift;
case 4: case 4:
return simpleSwap; return simpleSwap;
case 5:
return all;
default: default:
throw Exception('Unexpected token: $raw for ExchangeProviderDescription deserialize'); throw Exception('Unexpected token: $raw for ExchangeProviderDescription deserialize');
} }

View file

@ -9,12 +9,7 @@ class FilterTile extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
width: double.infinity, width: double.infinity,
padding: EdgeInsets.only( padding: EdgeInsets.symmetric(vertical: 8.0, horizontal: 24.0),
top: 18,
bottom: 18,
left: 24,
right: 24
),
child: child, child: child,
); );
} }

View file

@ -1,25 +1,26 @@
import 'dart:ui'; import 'dart:ui';
import 'package:cake_wallet/palette.dart'; import 'package:cake_wallet/palette.dart';
import 'package:cake_wallet/src/screens/dashboard/widgets/filter_tile.dart'; import 'package:cake_wallet/src/screens/dashboard/widgets/filter_tile.dart';
import 'package:cake_wallet/src/widgets/section_divider.dart';
import 'package:cake_wallet/src/widgets/standard_checkbox.dart';
import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart'; import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:cake_wallet/src/widgets/alert_background.dart'; import 'package:cake_wallet/src/widgets/alert_background.dart';
import 'package:cake_wallet/src/widgets/alert_close_button.dart'; import 'package:cake_wallet/src/widgets/alert_close_button.dart';
import 'package:cake_wallet/src/widgets/checkbox_widget.dart';
import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/generated/i18n.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
//import 'package:date_range_picker/date_range_picker.dart' as date_rage_picker; //import 'package:date_range_picker/date_range_picker.dart' as date_rage_picker;
class FilterWidget extends StatelessWidget { class FilterWidget extends StatelessWidget {
FilterWidget({required this.dashboardViewModel}); FilterWidget({required this.dashboardViewModel});
final DashboardViewModel dashboardViewModel; final DashboardViewModel dashboardViewModel;
final backVector = Image.asset('assets/images/back_vector.png', final closeIcon = Image.asset('assets/images/close.png', color: Palette.darkBlueCraiola);
color: Palette.darkBlueCraiola
);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
const sectionDivider = const SectionDivider();
return AlertBackground( return AlertBackground(
child: Stack( child: Stack(
alignment: Alignment.center, alignment: Alignment.center,
@ -27,129 +28,82 @@ class FilterWidget extends StatelessWidget {
Column( Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: <Widget>[ children: <Widget>[
Text(
S.of(context).filters,
style: TextStyle(
color: Colors.white,
fontSize: 18,
fontWeight: FontWeight.bold,
fontFamily: 'Lato',
decoration: TextDecoration.none,
),
),
Padding( Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(left: 24, right: 24, top: 24),
left: 24,
right: 24,
top: 24
),
child: ClipRRect( child: ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(14)), borderRadius: BorderRadius.all(Radius.circular(24)),
child: Container( child: Container(
color: Theme.of(context).textTheme!.bodyText1!.decorationColor!, color: Theme.of(context).textTheme!.bodyText1!.decorationColor!,
child: ListView.separated( child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
shrinkWrap: true, Padding(
physics: const NeverScrollableScrollPhysics(), padding: EdgeInsets.all(24.0),
itemCount: dashboardViewModel.filterItems.length, child: Text(
separatorBuilder: (context, _) => Container( S.of(context).filter_by,
height: 1, style: TextStyle(
color: Theme.of(context).accentTextTheme!.subtitle1!.backgroundColor!, color: Theme.of(context).primaryTextTheme.overline!.color!,
fontSize: 16,
fontFamily: 'Lato',
decoration: TextDecoration.none,
),
),
), ),
itemBuilder: (_, index1) { sectionDivider,
final title = dashboardViewModel.filterItems.keys.elementAt(index1); ListView.separated(
final section = dashboardViewModel.filterItems.values.elementAt(index1); padding: EdgeInsets.zero,
shrinkWrap: true,
return Column( physics: const NeverScrollableScrollPhysics(),
crossAxisAlignment: CrossAxisAlignment.start, itemCount: dashboardViewModel.filterItems.length,
children: <Widget>[ separatorBuilder: (context, _) => sectionDivider,
Padding( itemBuilder: (_, index1) {
padding: EdgeInsets.only( final title = dashboardViewModel.filterItems.keys.elementAt(index1);
top: 20, final section = dashboardViewModel.filterItems.values.elementAt(index1);
left: 24, return Column(
right: 24 crossAxisAlignment: CrossAxisAlignment.start,
), children: <Widget>[
child: Text( Padding(
title, padding: EdgeInsets.only(top: 20, left: 24, right: 24),
style: TextStyle( child: Text(
color: Theme.of(context).accentTextTheme!.subtitle1!.color!, title,
fontSize: 16, style: TextStyle(
fontWeight: FontWeight.w500, color: Theme.of(context).primaryTextTheme!.headline6!.color!,
fontFamily: 'Lato', fontSize: 16,
decoration: TextDecoration.none fontFamily: 'Lato',
fontWeight: FontWeight.bold,
decoration: TextDecoration.none),
), ),
), ),
), ListView.builder(
ListView.separated( padding: EdgeInsets.symmetric(vertical: 8.0),
shrinkWrap: true, shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
itemCount: section.length, itemCount: section.length,
separatorBuilder: (context, _) => Container( itemBuilder: (_, index2) {
height: 1, final item = section[index2];
padding: EdgeInsets.only(left: 24), final content = Observer(
color: Theme.of(context).textTheme!.bodyText1!.decorationColor!, builder: (_) => StandardCheckbox(
child: Container( value: item.value(),
height: 1, caption: item.caption,
color: Theme.of(context).accentTextTheme!.subtitle1!.backgroundColor!, gradientBackground: true,
), borderColor: Theme.of(context).dividerColor,
), iconColor: Colors.white,
itemBuilder: (_, index2) { onChanged: (value) => item.onChanged(),
));
final item = section[index2]; return FilterTile(child: content);
final content = item.onChanged != null },
? CheckboxWidget( )
value: item.value(), ],
caption: item.caption, );
onChanged: item.onChanged },
) ),
: GestureDetector( ]),
onTap: () async {
//final List<DateTime> picked =
//await date_rage_picker.showDatePicker(
// context: context,
// initialFirstDate: DateTime.now()
// .subtract(Duration(days: 1)),
// initialLastDate: (DateTime.now()),
// firstDate: DateTime(2015),
// lastDate: DateTime.now()
// .add(Duration(days: 1)));
//if (picked != null && picked.length == 2) {
// dashboardViewModel.transactionFilterStore
// .changeStartDate(picked.first);
// dashboardViewModel.transactionFilterStore
// .changeEndDate(picked.last);
//}
},
child: Padding(
padding: EdgeInsets.only(left: 32),
child: Text(
item.caption,
style: TextStyle(
color: Theme.of(context).primaryTextTheme!.headline6!.color!,
fontSize: 18,
fontFamily: 'Lato',
fontWeight: FontWeight.w500,
decoration: TextDecoration.none
),
),
),
);
return FilterTile(child: content);
},
)
],
);
},
),
), ),
), ),
), ),
], ],
), ),
AlertCloseButton(image: backVector) AlertCloseButton(image: closeIcon)
], ],
), ),
); );
} }
} }

View file

@ -40,7 +40,6 @@ class ExchangePage extends BasePage {
final ExchangeViewModel exchangeViewModel; final ExchangeViewModel exchangeViewModel;
final depositKey = GlobalKey<ExchangeCardState>(); final depositKey = GlobalKey<ExchangeCardState>();
final receiveKey = GlobalKey<ExchangeCardState>(); final receiveKey = GlobalKey<ExchangeCardState>();
final checkBoxKey = GlobalKey<StandardCheckboxState>();
final _formKey = GlobalKey<FormState>(); final _formKey = GlobalKey<FormState>();
final _depositAmountFocus = FocusNode(); final _depositAmountFocus = FocusNode();
final _depositAddressFocus = FocusNode(); final _depositAddressFocus = FocusNode();
@ -339,7 +338,6 @@ class ExchangePage extends BasePage {
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
StandardCheckbox( StandardCheckbox(
key: checkBoxKey,
value: exchangeViewModel.isFixedRateMode, value: exchangeViewModel.isFixedRateMode,
caption: S.of(context).fixed_rate, caption: S.of(context).fixed_rate,
onChanged: (value) => onChanged: (value) =>
@ -682,12 +680,6 @@ class ExchangePage extends BasePage {
} }
}); });
reaction((_) => exchangeViewModel.isFixedRateMode, (bool value) {
if (checkBoxKey.currentState!.value != exchangeViewModel.isFixedRateMode) {
checkBoxKey.currentState!.value = exchangeViewModel.isFixedRateMode;
}
});
depositAddressController.addListener( depositAddressController.addListener(
() => exchangeViewModel.depositAddress = depositAddressController.text); () => exchangeViewModel.depositAddress = depositAddressController.text);

View file

@ -8,7 +8,7 @@ import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/core/execution_state.dart'; import 'package:cake_wallet/core/execution_state.dart';
import 'package:cake_wallet/src/screens/exchange_trade/information_page.dart'; import 'package:cake_wallet/src/screens/exchange_trade/information_page.dart';
import 'package:cake_wallet/src/screens/send/widgets/confirm_sending_alert.dart'; import 'package:cake_wallet/src/screens/send/widgets/confirm_sending_alert.dart';
import 'package:cake_wallet/src/widgets/standart_list_row.dart'; import 'package:cake_wallet/src/widgets/list_row.dart';
import 'package:cake_wallet/utils/show_bar.dart'; import 'package:cake_wallet/utils/show_bar.dart';
import 'package:cake_wallet/utils/show_pop_up.dart'; import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:cake_wallet/view_model/exchange/exchange_trade_view_model.dart'; import 'package:cake_wallet/view_model/exchange/exchange_trade_view_model.dart';
@ -194,7 +194,7 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
final item = widget.exchangeTradeViewModel.items[index]; final item = widget.exchangeTradeViewModel.items[index];
final value = item.data ?? fetchingLabel; final value = item.data ?? fetchingLabel;
final content = StandartListRow( final content = ListRow(
title: item.title, title: item.title,
value: value, value: value,
valueFontSize: 14, valueFontSize: 14,

View file

@ -1,4 +1,5 @@
import 'dart:ui'; import 'dart:ui';
import 'package:cake_wallet/src/widgets/section_divider.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter_mobx/flutter_mobx.dart';
@ -84,10 +85,7 @@ class MoneroAccountListPage extends StatelessWidget {
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
controller: controller, controller: controller,
separatorBuilder: (context, index) => separatorBuilder: (context, index) =>
Container( const SectionDivider(),
height: 1,
color: Theme.of(context).dividerColor,
),
itemCount: accounts.length ?? 0, itemCount: accounts.length ?? 0,
itemBuilder: (context, index) { itemBuilder: (context, index) {
final account = accounts[index]; final account = accounts[index];

View file

@ -7,7 +7,7 @@ import 'package:flutter/services.dart';
import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/src/widgets/standart_list_row.dart'; import 'package:cake_wallet/src/widgets/list_row.dart';
import 'package:cake_wallet/src/screens/trade_details/track_trade_list_item.dart'; import 'package:cake_wallet/src/screens/trade_details/track_trade_list_item.dart';
class OrderDetailsPage extends BasePage { class OrderDetailsPage extends BasePage {
@ -57,7 +57,7 @@ class OrderDetailsPageBodyState extends State<OrderDetailsPageBody> {
if (item is TrackTradeListItem) { if (item is TrackTradeListItem) {
return GestureDetector( return GestureDetector(
onTap: item.onTap, onTap: item.onTap,
child: StandartListRow( child: ListRow(
title: '${item.title}', value: '${item.value}')); title: '${item.title}', value: '${item.value}'));
} else { } else {
return GestureDetector( return GestureDetector(
@ -65,7 +65,7 @@ class OrderDetailsPageBodyState extends State<OrderDetailsPageBody> {
Clipboard.setData(ClipboardData(text: '${item.value}')); Clipboard.setData(ClipboardData(text: '${item.value}'));
showBar<void>(context, S.of(context).copied_to_clipboard); showBar<void>(context, S.of(context).copied_to_clipboard);
}, },
child: StandartListRow( child: ListRow(
title: '${item.title}', value: '${item.value}')); title: '${item.title}', value: '${item.value}'));
} }
}); });

View file

@ -1,4 +1,5 @@
import 'package:cake_wallet/src/widgets/keyboard_done_button.dart'; import 'package:cake_wallet/src/widgets/keyboard_done_button.dart';
import 'package:cake_wallet/src/widgets/section_divider.dart';
import 'package:cake_wallet/themes/theme_base.dart'; import 'package:cake_wallet/themes/theme_base.dart';
import 'package:cake_wallet/utils/show_pop_up.dart'; import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart'; import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart';
@ -135,8 +136,7 @@ class ReceivePage extends BasePage {
Observer( Observer(
builder: (_) => ListView.separated( builder: (_) => ListView.separated(
padding: EdgeInsets.all(0), padding: EdgeInsets.all(0),
separatorBuilder: (context, _) => Container( separatorBuilder: (context, _) => const SectionDivider(),
height: 1, color: Theme.of(context).dividerColor),
shrinkWrap: true, shrinkWrap: true,
physics: NeverScrollableScrollPhysics(), physics: NeverScrollableScrollPhysics(),
itemCount: addressListViewModel.items.length, itemCount: addressListViewModel.items.length,

View file

@ -1,4 +1,5 @@
import 'package:cake_wallet/src/widgets/cake_scrollbar.dart'; import 'package:cake_wallet/src/widgets/cake_scrollbar.dart';
import 'package:cake_wallet/src/widgets/section_divider.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:cake_wallet/src/widgets/base_alert_dialog.dart'; import 'package:cake_wallet/src/widgets/base_alert_dialog.dart';
@ -70,10 +71,7 @@ class ChooseYatAddressButtonsState extends State<ChooseYatAddressButtons> {
controller: controller, controller: controller,
padding: EdgeInsets.all(0), padding: EdgeInsets.all(0),
itemCount: itemCount, itemCount: itemCount,
separatorBuilder: (_, __) => Container( separatorBuilder: (_, __) => const SectionDivider(),
height: 1,
color: Theme.of(context).dividerColor,
),
itemBuilder: (context, index) { itemBuilder: (context, index) {
final address = addresses[index]; final address = addresses[index];

View file

@ -1,6 +1,6 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:cake_wallet/src/widgets/standard_list.dart'; import 'package:cake_wallet/src/widgets/standard_list.dart';
import 'package:cake_wallet/src/widgets/standart_switch.dart'; import 'package:cake_wallet/src/widgets/standard_switch.dart';
class SettingsSwitcherCell extends StandardListRow { class SettingsSwitcherCell extends StandardListRow {
SettingsSwitcherCell( SettingsSwitcherCell(
@ -11,6 +11,6 @@ class SettingsSwitcherCell extends StandardListRow {
final void Function(BuildContext context, bool value)? onValueChange; final void Function(BuildContext context, bool value)? onValueChange;
@override @override
Widget buildTrailing(BuildContext context) => StandartSwitch( Widget buildTrailing(BuildContext context) => StandardSwitch(
value: value, onTaped: () => onValueChange?.call(context, !value)); value: value, onTaped: () => onValueChange?.call(context, !value));
} }

View file

@ -1,6 +1,6 @@
import 'package:cake_wallet/src/widgets/standard_list.dart'; import 'package:cake_wallet/src/widgets/standard_list.dart';
import 'package:cake_wallet/src/widgets/standart_list_card.dart'; import 'package:cake_wallet/src/widgets/standard_list_card.dart';
import 'package:cake_wallet/src/widgets/standart_list_status_row.dart'; import 'package:cake_wallet/src/widgets/standard_list_status_row.dart';
import 'package:cake_wallet/utils/show_bar.dart'; import 'package:cake_wallet/utils/show_bar.dart';
import 'package:cake_wallet/view_model/trade_details_view_model.dart'; import 'package:cake_wallet/view_model/trade_details_view_model.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -9,7 +9,7 @@ import 'package:flutter/services.dart';
import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/src/widgets/standart_list_row.dart'; import 'package:cake_wallet/src/widgets/list_row.dart';
import 'package:cake_wallet/src/screens/trade_details/track_trade_list_item.dart'; import 'package:cake_wallet/src/screens/trade_details/track_trade_list_item.dart';
import 'package:cake_wallet/src/screens/trade_details/trade_details_list_card.dart'; import 'package:cake_wallet/src/screens/trade_details/trade_details_list_card.dart';
import 'package:cake_wallet/src/screens/trade_details/trade_details_status_item.dart'; import 'package:cake_wallet/src/screens/trade_details/trade_details_status_item.dart';
@ -62,18 +62,18 @@ class TradeDetailsPageBodyState extends State<TradeDetailsPageBody> {
if (item is TrackTradeListItem) { if (item is TrackTradeListItem) {
return GestureDetector( return GestureDetector(
onTap: item.onTap, onTap: item.onTap,
child: StandartListRow( child: ListRow(
title: '${item.title}', value: '${item.value}')); title: '${item.title}', value: '${item.value}'));
} }
if (item is DetailsListStatusItem) { if (item is DetailsListStatusItem) {
return StandartListStatusRow( return StandardListStatusRow(
title: item.title, title: item.title,
value: item.value); value: item.value);
} }
if (item is TradeDetailsListCardItem) { if (item is TradeDetailsListCardItem) {
return TradeDatailsStandartListCard( return TradeDetailsStandardListCard(
id: item.id, id: item.id,
create: item.createdAt, create: item.createdAt,
pair: item.pair, pair: item.pair,
@ -86,7 +86,7 @@ class TradeDetailsPageBodyState extends State<TradeDetailsPageBody> {
Clipboard.setData(ClipboardData(text: '${item.value}')); Clipboard.setData(ClipboardData(text: '${item.value}'));
showBar<void>(context, S.of(context).copied_to_clipboard); showBar<void>(context, S.of(context).copied_to_clipboard);
}, },
child: StandartListRow( child: ListRow(
title: '${item.title}', value: '${item.value}')); title: '${item.title}', value: '${item.value}'));
}); });
}); });

View file

@ -6,7 +6,7 @@ import 'package:cake_wallet/view_model/transaction_details_view_model.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/widgets/standart_list_row.dart'; import 'package:cake_wallet/src/widgets/list_row.dart';
import 'package:cake_wallet/src/screens/transaction_details/blockexplorer_list_item.dart'; import 'package:cake_wallet/src/screens/transaction_details/blockexplorer_list_item.dart';
import 'package:cake_wallet/src/screens/transaction_details/standart_list_item.dart'; import 'package:cake_wallet/src/screens/transaction_details/standart_list_item.dart';
import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/src/screens/base_page.dart';
@ -42,7 +42,7 @@ class TransactionDetailsPage extends BasePage {
S.of(context).transaction_details_copied(item.title)); S.of(context).transaction_details_copied(item.title));
}, },
child: child:
StandartListRow(title: '${item.title}:', value: item.value), ListRow(title: '${item.title}:', value: item.value),
); );
} }
@ -50,7 +50,7 @@ class TransactionDetailsPage extends BasePage {
return GestureDetector( return GestureDetector(
onTap: item.onTap, onTap: item.onTap,
child: child:
StandartListRow(title: '${item.title}:', value: item.value), ListRow(title: '${item.title}:', value: item.value),
); );
} }

View file

@ -5,7 +5,7 @@ import 'package:cake_wallet/src/widgets/standard_list.dart';
import 'package:cake_wallet/view_model/unspent_coins/unspent_coins_details_view_model.dart'; import 'package:cake_wallet/view_model/unspent_coins/unspent_coins_details_view_model.dart';
import 'package:cake_wallet/view_model/unspent_coins/unspent_coins_switch_item.dart'; import 'package:cake_wallet/view_model/unspent_coins/unspent_coins_switch_item.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:cake_wallet/src/widgets/standart_list_row.dart'; import 'package:cake_wallet/src/widgets/list_row.dart';
import 'package:cake_wallet/src/screens/transaction_details/standart_list_item.dart'; import 'package:cake_wallet/src/screens/transaction_details/standart_list_item.dart';
import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter_mobx/flutter_mobx.dart';
@ -30,7 +30,7 @@ class UnspentCoinsDetailsPage extends BasePage {
final item = unspentCoinsDetailsViewModel.items[index]; final item = unspentCoinsDetailsViewModel.items[index];
if (item is StandartListItem) { if (item is StandartListItem) {
return StandartListRow( return ListRow(
title: '${item.title}:', title: '${item.title}:',
value: item.value); value: item.value);
} }

View file

@ -1,4 +1,4 @@
import 'package:cake_wallet/src/widgets/standart_switch.dart'; import 'package:cake_wallet/src/widgets/standard_switch.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class UnspentCoinsSwitchRow extends StatelessWidget { class UnspentCoinsSwitchRow extends StatelessWidget {
@ -33,7 +33,7 @@ class UnspentCoinsSwitchRow extends StatelessWidget {
textAlign: TextAlign.left), textAlign: TextAlign.left),
Padding( Padding(
padding: EdgeInsets.only(top: 12), padding: EdgeInsets.only(top: 12),
child: StandartSwitch( child: StandardSwitch(
value: switchValue, value: switchValue,
onTaped: () => onSwitchValueChange(!switchValue)) onTaped: () => onSwitchValueChange(!switchValue))
) )

View file

@ -1,4 +1,5 @@
import 'package:auto_size_text/auto_size_text.dart'; import 'package:auto_size_text/auto_size_text.dart';
import 'package:cake_wallet/src/widgets/section_divider.dart';
import 'package:cake_wallet/utils/show_bar.dart'; import 'package:cake_wallet/utils/show_bar.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
@ -6,7 +7,7 @@ import 'package:flutter/services.dart';
import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/src/widgets/standart_list_row.dart'; import 'package:cake_wallet/src/widgets/list_row.dart';
import 'package:cake_wallet/view_model/wallet_keys_view_model.dart'; import 'package:cake_wallet/view_model/wallet_keys_view_model.dart';
class WalletKeysPage extends BasePage { class WalletKeysPage extends BasePage {
@ -57,10 +58,7 @@ class WalletKeysPage extends BasePage {
height: 1, height: 1,
padding: EdgeInsets.only(left: 24), padding: EdgeInsets.only(left: 24),
color: Theme.of(context).accentTextTheme!.headline6!.backgroundColor!, color: Theme.of(context).accentTextTheme!.headline6!.backgroundColor!,
child: Container( child: const SectionDivider(),
height: 1,
color: Theme.of(context).dividerColor,
),
), ),
itemCount: walletKeysViewModel.items.length, itemCount: walletKeysViewModel.items.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
@ -71,7 +69,7 @@ class WalletKeysPage extends BasePage {
Clipboard.setData(ClipboardData(text: item.value)); Clipboard.setData(ClipboardData(text: item.value));
showBar<void>(context, S.of(context).copied_key_to_clipboard(item.title)); showBar<void>(context, S.of(context).copied_key_to_clipboard(item.title));
}, },
child: StandartListRow( child: ListRow(
title: item.title + ':', title: item.title + ':',
value: item.value, value: item.value,
), ),

View file

@ -1,4 +1,5 @@
import 'dart:ui'; import 'dart:ui';
import 'package:cake_wallet/src/widgets/section_divider.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:cake_wallet/palette.dart'; import 'package:cake_wallet/palette.dart';
@ -76,10 +77,7 @@ class BaseAlertDialog extends StatelessWidget {
), ),
)), )),
), ),
Container( const SectionDivider(),
width: 1,
color: Theme.of(context).dividerColor,
),
Expanded( Expanded(
child: TextButton( child: TextButton(
onPressed: actionRight, onPressed: actionRight,
@ -140,10 +138,7 @@ class BaseAlertDialog extends StatelessWidget {
isDividerExists isDividerExists
? Padding( ? Padding(
padding: EdgeInsets.only(top: 16, bottom: 8), padding: EdgeInsets.only(top: 16, bottom: 8),
child: Container( child: const SectionDivider(),
height: 1,
color: Theme.of(context).dividerColor,
),
) )
: Offstage(), : Offstage(),
Padding( Padding(
@ -152,10 +147,7 @@ class BaseAlertDialog extends StatelessWidget {
) )
], ],
), ),
Container( const SectionDivider(),
height: 1,
color: Theme.of(context).dividerColor,
),
actionButtons(context) actionButtons(context)
], ],
), ),

View file

@ -1,8 +1,8 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class StandartListRow extends StatelessWidget { class ListRow extends StatelessWidget {
StandartListRow( ListRow(
{required this.title, {required this.title,
required this.value, required this.value,
this.titleFontSize = 14, this.titleFontSize = 14,

View file

@ -0,0 +1,13 @@
import 'package:flutter/material.dart';
class SectionDivider extends StatelessWidget {
const SectionDivider();
@override
Widget build(BuildContext context) {
return Container(
height: 1,
color: Theme.of(context).dividerColor,
);
}
}

View file

@ -2,42 +2,42 @@ import 'dart:ui';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class StandardCheckbox extends StatefulWidget { class StandardCheckbox extends StatelessWidget {
StandardCheckbox({ StandardCheckbox(
Key? key, {required this.value,
required this.value, this.caption = '',
this.caption = '', this.gradientBackground = false,
required this.onChanged}) this.borderColor,
: super(key: key); this.iconColor,
required this.onChanged});
final bool value; final bool value;
final String caption; final String caption;
final bool gradientBackground;
final Color? borderColor;
final Color? iconColor;
final Function(bool) onChanged; final Function(bool) onChanged;
@override
StandardCheckboxState createState() =>
StandardCheckboxState(value, caption, onChanged);
}
class StandardCheckboxState extends State<StandardCheckbox> {
StandardCheckboxState(this.value, this.caption, this.onChanged);
bool value;
String caption;
Function(bool) onChanged;
void changeValue(bool newValue) {
setState(() => value = newValue);
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final baseGradient = LinearGradient(colors: [
Theme.of(context).primaryTextTheme.subtitle1!.color!,
Theme.of(context).primaryTextTheme.subtitle1!.decorationColor!,
], begin: Alignment.centerLeft, end: Alignment.centerRight);
final boxBorder = Border.all(
color: borderColor ?? Theme.of(context).primaryTextTheme.caption!.color!, width: 1.0);
final checkedBoxDecoration = BoxDecoration(
gradient: gradientBackground ? baseGradient : null,
border: gradientBackground ? null : boxBorder,
borderRadius: BorderRadius.all(Radius.circular(8.0)));
final uncheckedBoxDecoration =
BoxDecoration(border: boxBorder, borderRadius: BorderRadius.all(Radius.circular(8.0)));
return GestureDetector( return GestureDetector(
onTap: () { onTap: () => onChanged(!value),
value = !value;
onChanged(value);
setState(() {});
},
child: Row( child: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
@ -45,38 +45,25 @@ class StandardCheckboxState extends State<StandardCheckbox> {
Container( Container(
height: 24.0, height: 24.0,
width: 24.0, width: 24.0,
decoration: BoxDecoration( decoration: value ? checkedBoxDecoration : uncheckedBoxDecoration,
border: Border.all(
color: Theme.of(context)
.primaryTextTheme!
.caption!
.color!,
width: 1.0),
borderRadius: BorderRadius.all(
Radius.circular(8.0)),
color: Theme.of(context).backgroundColor),
child: value child: value
? Icon( ? Icon(
Icons.check, Icons.check,
color: Colors.blue, color: iconColor ?? Colors.blue,
size: 20.0, size: 20.0,
) )
: Offstage(), : Offstage(),
), ),
if (caption.isNotEmpty) Padding( if (caption.isNotEmpty)
padding: EdgeInsets.only(left: 10), Padding(
child: Text( padding: EdgeInsets.only(left: 10),
caption, child: Text(
style: TextStyle( caption,
fontSize: 16.0, style: TextStyle(
color: Theme.of(context) fontSize: 16.0, color: Theme.of(context).primaryTextTheme!.headline6!.color!),
.primaryTextTheme! ))
.headline6!
.color!),
)
)
], ],
), ),
); );
} }
} }

View file

@ -1,6 +1,6 @@
import 'package:cake_wallet/palette.dart'; import 'package:cake_wallet/palette.dart';
import 'package:cake_wallet/src/widgets/standart_list_card.dart'; import 'package:cake_wallet/src/widgets/standard_list_card.dart';
import 'package:cake_wallet/src/widgets/standart_list_status_row.dart'; import 'package:cake_wallet/src/widgets/standard_list_status_row.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class StandardListRow extends StatelessWidget { class StandardListRow extends StatelessWidget {
@ -217,7 +217,7 @@ class SectionStandardList extends StatelessWidget {
return Container(); return Container();
} }
if (row is StandartListStatusRow || row is TradeDatailsStandartListCard) { if (row is StandardListStatusRow || row is TradeDetailsStandardListCard) {
return Container(); return Container();
} }

View file

@ -2,8 +2,8 @@ import 'package:cake_wallet/palette.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:cake_wallet/themes/theme_base.dart'; import 'package:cake_wallet/themes/theme_base.dart';
class TradeDatailsStandartListCard extends StatelessWidget { class TradeDetailsStandardListCard extends StatelessWidget {
TradeDatailsStandartListCard( TradeDetailsStandardListCard(
{required this.id, {required this.id,
required this.create, required this.create,
required this.pair, required this.pair,

View file

@ -3,8 +3,8 @@ import 'package:cake_wallet/src/screens/dashboard/widgets/sync_indicator_icon.da
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class StandartListStatusRow extends StatelessWidget { class StandardListStatusRow extends StatelessWidget {
StandartListStatusRow({required this.title, required this.value}); StandardListStatusRow({required this.title, required this.value});
final String title; final String title;
final String value; final String value;

View file

@ -1,17 +1,17 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class StandartSwitch extends StatefulWidget { class StandardSwitch extends StatefulWidget {
const StandartSwitch({required this.value, required this.onTaped}); const StandardSwitch({required this.value, required this.onTaped});
final bool value; final bool value;
final VoidCallback onTaped; final VoidCallback onTaped;
@override @override
StandartSwitchState createState() => StandartSwitchState(); StandardSwitchState createState() => StandardSwitchState();
} }
class StandartSwitchState extends State<StandartSwitch> { class StandardSwitchState extends State<StandardSwitch> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return GestureDetector( return GestureDetector(

View file

@ -8,12 +8,11 @@ part'trade_filter_store.g.dart';
class TradeFilterStore = TradeFilterStoreBase with _$TradeFilterStore; class TradeFilterStore = TradeFilterStoreBase with _$TradeFilterStore;
abstract class TradeFilterStoreBase with Store { abstract class TradeFilterStoreBase with Store {
TradeFilterStoreBase( TradeFilterStoreBase() : displayXMRTO = true,
{this.displayXMRTO = true, displayChangeNow = true,
this.displayChangeNow = true, displaySideShift = true,
this.displayMorphToken = true, displayMorphToken = true,
this.displaySimpleSwap = true, displaySimpleSwap = true;
});
@observable @observable
bool displayXMRTO; bool displayXMRTO;
@ -21,26 +20,50 @@ abstract class TradeFilterStoreBase with Store {
@observable @observable
bool displayChangeNow; bool displayChangeNow;
@observable
bool displaySideShift;
@observable @observable
bool displayMorphToken; bool displayMorphToken;
@observable @observable
bool displaySimpleSwap; bool displaySimpleSwap;
@computed
bool get displayAllTrades => displayChangeNow && displaySideShift && displaySimpleSwap;
@action @action
void toggleDisplayExchange(ExchangeProviderDescription provider) { void toggleDisplayExchange(ExchangeProviderDescription provider) {
switch (provider) { switch (provider) {
case ExchangeProviderDescription.changeNow: case ExchangeProviderDescription.changeNow:
displayChangeNow = !displayChangeNow; displayChangeNow = !displayChangeNow;
break; break;
case ExchangeProviderDescription.sideShift:
displaySideShift = !displaySideShift;
break;
case ExchangeProviderDescription.simpleSwap:
displaySimpleSwap = !displaySimpleSwap;
break;
case ExchangeProviderDescription.xmrto: case ExchangeProviderDescription.xmrto:
displayXMRTO = !displayXMRTO; displayXMRTO = !displayXMRTO;
break; break;
case ExchangeProviderDescription.morphToken: case ExchangeProviderDescription.morphToken:
displayMorphToken = !displayMorphToken; displayMorphToken = !displayMorphToken;
break; break;
case ExchangeProviderDescription.simpleSwap: case ExchangeProviderDescription.all:
displaySimpleSwap = !displaySimpleSwap; if (displayAllTrades) {
displayChangeNow = false;
displaySideShift = false;
displayXMRTO = false;
displayMorphToken = false;
displaySimpleSwap = false;
} else {
displayChangeNow = true;
displaySideShift = true;
displayXMRTO = true;
displayMorphToken = true;
displaySimpleSwap = true;
}
break; break;
} }
} }
@ -48,13 +71,15 @@ abstract class TradeFilterStoreBase with Store {
List<TradeListItem> filtered({required List<TradeListItem> trades, required WalletBase wallet}) { List<TradeListItem> filtered({required List<TradeListItem> trades, required WalletBase wallet}) {
final _trades = final _trades =
trades.where((item) => item.trade.walletId == wallet.id).toList(); trades.where((item) => item.trade.walletId == wallet.id).toList();
final needToFilter = !displayChangeNow || !displayXMRTO || !displayMorphToken || !displaySimpleSwap; final needToFilter = !displayAllTrades;
return needToFilter return needToFilter
? _trades ? _trades
.where((item) => .where((item) =>
(displayXMRTO && (displayXMRTO &&
item.trade.provider == ExchangeProviderDescription.xmrto) || item.trade.provider == ExchangeProviderDescription.xmrto) ||
(displaySideShift &&
item.trade.provider == ExchangeProviderDescription.sideShift) ||
(displayChangeNow && (displayChangeNow &&
item.trade.provider == item.trade.provider ==
ExchangeProviderDescription.changeNow) || ExchangeProviderDescription.changeNow) ||

View file

@ -1,6 +1,8 @@
import 'package:mobx/mobx.dart'; import 'package:mobx/mobx.dart';
import 'package:cw_core/transaction_direction.dart'; import 'package:cw_core/transaction_direction.dart';
import 'package:cake_wallet/view_model/dashboard/transaction_list_item.dart'; import 'package:cake_wallet/view_model/dashboard/transaction_list_item.dart';
import 'package:cake_wallet/view_model/dashboard/filter_item.dart';
import 'package:cake_wallet/generated/i18n.dart';
part 'transaction_filter_store.g.dart'; part 'transaction_filter_store.g.dart';
@ -8,8 +10,8 @@ class TransactionFilterStore = TransactionFilterStoreBase
with _$TransactionFilterStore; with _$TransactionFilterStore;
abstract class TransactionFilterStoreBase with Store { abstract class TransactionFilterStoreBase with Store {
TransactionFilterStoreBase( TransactionFilterStoreBase() : displayIncoming = true,
{this.displayIncoming = true, this.displayOutgoing = true}); displayOutgoing = true;
@observable @observable
bool displayIncoming; bool displayIncoming;
@ -23,11 +25,31 @@ abstract class TransactionFilterStoreBase with Store {
@observable @observable
DateTime? endDate; DateTime? endDate;
@action @computed
void toggleIncoming() => displayIncoming = !displayIncoming; bool get displayAll => displayIncoming && displayOutgoing;
@action @action
void toggleOutgoing() => displayOutgoing = !displayOutgoing; void toggleAll() {
if (displayAll) {
displayOutgoing = false;
displayIncoming = false;
} else {
displayOutgoing = true;
displayIncoming = true;
}
}
@action
void toggleIncoming() {
displayIncoming = !displayIncoming;
}
@action
void toggleOutgoing() {
displayOutgoing = !displayOutgoing;
}
@action @action
void changeStartDate(DateTime date) => startDate = date; void changeStartDate(DateTime date) => startDate = date;
@ -37,8 +59,7 @@ abstract class TransactionFilterStoreBase with Store {
List<TransactionListItem> filtered({required List<TransactionListItem> transactions}) { List<TransactionListItem> filtered({required List<TransactionListItem> transactions}) {
var _transactions = <TransactionListItem>[]; var _transactions = <TransactionListItem>[];
final needToFilter = !displayOutgoing || final needToFilter = !displayAll ||
!displayIncoming ||
(startDate != null && endDate != null); (startDate != null && endDate != null);
if (needToFilter) { if (needToFilter) {
@ -50,7 +71,7 @@ abstract class TransactionFilterStoreBase with Store {
&& (endDate?.isAfter(item.transaction.date) ?? false); && (endDate?.isAfter(item.transaction.date) ?? false);
} }
if (allowed && (!displayOutgoing || !displayIncoming)) { if (allowed && (!displayAll)) {
allowed = (displayOutgoing && allowed = (displayOutgoing &&
item.transaction.direction == item.transaction.direction ==
TransactionDirection.outgoing) || TransactionDirection.outgoing) ||

View file

@ -58,25 +58,44 @@ abstract class DashboardViewModelBase with Store {
isShowThirdYatIntroduction = false, isShowThirdYatIntroduction = false,
filterItems = { filterItems = {
S.current.transactions: [ S.current.transactions: [
FilterItem(
value: () => transactionFilterStore.displayAll,
caption: S.current.all_transactions,
onChanged: transactionFilterStore.toggleAll),
FilterItem( FilterItem(
value: () => transactionFilterStore.displayIncoming, value: () => transactionFilterStore.displayIncoming,
caption: S.current.incoming, caption: S.current.incoming,
onChanged: (value) => transactionFilterStore.toggleIncoming()), onChanged:transactionFilterStore.toggleIncoming),
FilterItem( FilterItem(
value: () => transactionFilterStore.displayOutgoing, value: () => transactionFilterStore.displayOutgoing,
caption: S.current.outgoing, caption: S.current.outgoing,
onChanged: (value) => transactionFilterStore.toggleOutgoing()), onChanged: transactionFilterStore.toggleOutgoing),
// FilterItem( // FilterItem(
// value: () => false, // value: () => false,
// caption: S.current.transactions_by_date, // caption: S.current.transactions_by_date,
// onChanged: null), // onChanged: null),
], ],
S.current.trades: [ S.current.trades: [
FilterItem(
value: () => tradeFilterStore.displayAllTrades,
caption: S.current.all_trades,
onChanged: () => tradeFilterStore
.toggleDisplayExchange(ExchangeProviderDescription.all)),
FilterItem( FilterItem(
value: () => tradeFilterStore.displayChangeNow, value: () => tradeFilterStore.displayChangeNow,
caption: 'Change.NOW', caption: ExchangeProviderDescription.changeNow.title,
onChanged: (value) => tradeFilterStore onChanged: () => tradeFilterStore
.toggleDisplayExchange(ExchangeProviderDescription.changeNow)), .toggleDisplayExchange(ExchangeProviderDescription.changeNow)),
FilterItem(
value: () => tradeFilterStore.displaySideShift,
caption: ExchangeProviderDescription.sideShift.title,
onChanged: () => tradeFilterStore
.toggleDisplayExchange(ExchangeProviderDescription.sideShift)),
FilterItem(
value: () => tradeFilterStore.displaySimpleSwap,
caption: ExchangeProviderDescription.simpleSwap.title,
onChanged: () => tradeFilterStore
.toggleDisplayExchange(ExchangeProviderDescription.simpleSwap)),
] ]
}, },
subname = '', subname = '',

View file

@ -1,3 +1,5 @@
import 'package:mobx/mobx.dart';
class FilterItem { class FilterItem {
FilterItem({ FilterItem({
required this.value, required this.value,
@ -6,5 +8,5 @@ class FilterItem {
bool Function() value; bool Function() value;
String caption; String caption;
Function(bool) onChanged; Function onChanged;
} }

View file

@ -48,7 +48,7 @@
"outgoing" : "Ausgehend", "outgoing" : "Ausgehend",
"transactions_by_date" : "Transaktionen nach Datum", "transactions_by_date" : "Transaktionen nach Datum",
"trades" : "Börsen", "trades" : "Börsen",
"filters" : "Filter", "filter_by": "Filtern nach",
"today" : "Heute", "today" : "Heute",
"yesterday" : "Gestern", "yesterday" : "Gestern",
"received" : "Empfangen", "received" : "Empfangen",
@ -656,6 +656,8 @@
"use_suggested": "Vorgeschlagen verwenden", "use_suggested": "Vorgeschlagen verwenden",
"do_not_share_warning_text" : "Teilen Sie diese nicht mit anderen, einschließlich Support.\n\nIhr Geld kann und wird gestohlen werden!", "do_not_share_warning_text" : "Teilen Sie diese nicht mit anderen, einschließlich Support.\n\nIhr Geld kann und wird gestohlen werden!",
"help": "hilfe", "help": "hilfe",
"all_transactions": "Alle Transaktionen",
"all_trades": "Alle Gewerke",
"connection_sync": "Verbindung und Synchronisierung", "connection_sync": "Verbindung und Synchronisierung",
"security_and_backup": "Sicherheit und Datensicherung", "security_and_backup": "Sicherheit und Datensicherung",
"create_backup": "Backup erstellen", "create_backup": "Backup erstellen",

View file

@ -48,7 +48,7 @@
"outgoing" : "Outgoing", "outgoing" : "Outgoing",
"transactions_by_date" : "Transactions by date", "transactions_by_date" : "Transactions by date",
"trades" : "Trades", "trades" : "Trades",
"filters" : "Filter", "filter_by": "Filter by",
"today" : "Today", "today" : "Today",
"yesterday" : "Yesterday", "yesterday" : "Yesterday",
"received" : "Received", "received" : "Received",
@ -656,6 +656,8 @@
"use_suggested": "Use Suggested", "use_suggested": "Use Suggested",
"do_not_share_warning_text" : "Do not share these with anyone else, including support.\n\nYour funds can and will be stolen!", "do_not_share_warning_text" : "Do not share these with anyone else, including support.\n\nYour funds can and will be stolen!",
"help": "help", "help": "help",
"all_transactions": "All transactions",
"all_trades": "All trades",
"connection_sync": "Connection and sync", "connection_sync": "Connection and sync",
"security_and_backup": "Security and backup", "security_and_backup": "Security and backup",
"create_backup": "Create backup", "create_backup": "Create backup",

View file

@ -48,7 +48,7 @@
"outgoing" : "Saliente", "outgoing" : "Saliente",
"transactions_by_date" : "Transacciones por fecha", "transactions_by_date" : "Transacciones por fecha",
"trades" : "Cambios", "trades" : "Cambios",
"filters" : "Filtrar", "filter_by": "Filtrado por",
"today" : "Hoy", "today" : "Hoy",
"yesterday" : "Ayer", "yesterday" : "Ayer",
"received" : "Recibido", "received" : "Recibido",
@ -656,6 +656,8 @@
"use_suggested": "Usar sugerido", "use_suggested": "Usar sugerido",
"do_not_share_warning_text" : "No comparta estos con nadie más, incluido el soporte.\n\n¡Sus fondos pueden ser y serán robados!", "do_not_share_warning_text" : "No comparta estos con nadie más, incluido el soporte.\n\n¡Sus fondos pueden ser y serán robados!",
"help": "ayuda", "help": "ayuda",
"all_transactions": "Todas las transacciones",
"all_trades": "Todos los oficios",
"connection_sync": "Conexión y sincronización", "connection_sync": "Conexión y sincronización",
"security_and_backup": "Seguridad y respaldo", "security_and_backup": "Seguridad y respaldo",
"create_backup": "Crear copia de seguridad", "create_backup": "Crear copia de seguridad",

View file

@ -46,7 +46,7 @@
"outgoing" : "Sortantes", "outgoing" : "Sortantes",
"transactions_by_date" : "Transactions par date", "transactions_by_date" : "Transactions par date",
"trades" : "Échanges", "trades" : "Échanges",
"filters" : "Filtre", "filter_by": "Filtrer par",
"today" : "Aujourd'hui", "today" : "Aujourd'hui",
"yesterday" : "Hier", "yesterday" : "Hier",
"received" : "Reçus", "received" : "Reçus",
@ -654,6 +654,8 @@
"use_suggested": "Utilisation suggérée", "use_suggested": "Utilisation suggérée",
"do_not_share_warning_text" : "Ne les partagez avec personne d'autre, y compris avec l'assistance.\n\nVos fonds peuvent et seront volés!", "do_not_share_warning_text" : "Ne les partagez avec personne d'autre, y compris avec l'assistance.\n\nVos fonds peuvent et seront volés!",
"help": "aider", "help": "aider",
"all_transactions": "Toutes transactions",
"all_trades": "Tous métiers",
"connection_sync": "Connexion et synchronisation", "connection_sync": "Connexion et synchronisation",
"security_and_backup": "Sécurité et sauvegarde", "security_and_backup": "Sécurité et sauvegarde",
"create_backup": "Créer une sauvegarde", "create_backup": "Créer une sauvegarde",

View file

@ -48,7 +48,7 @@
"outgoing" : "निवर्तमान", "outgoing" : "निवर्तमान",
"transactions_by_date" : "तारीख से लेन-देन", "transactions_by_date" : "तारीख से लेन-देन",
"trades" : "ट्रेडों", "trades" : "ट्रेडों",
"filters" : "फ़िल्टर", "filter_by": "के द्वारा छनित",
"today" : "आज", "today" : "आज",
"yesterday" : "बिता कल", "yesterday" : "बिता कल",
"received" : "प्राप्त किया", "received" : "प्राप्त किया",
@ -656,6 +656,8 @@
"use_suggested": "सुझाए गए का प्रयोग करें", "use_suggested": "सुझाए गए का प्रयोग करें",
"do_not_share_warning_text" : "समर्थन सहित, इन्हें किसी और के साथ साझा न करें।\n\nआपके धन की चोरी हो सकती है और होगी!", "do_not_share_warning_text" : "समर्थन सहित, इन्हें किसी और के साथ साझा न करें।\n\nआपके धन की चोरी हो सकती है और होगी!",
"help": "मदद करना", "help": "मदद करना",
"all_transactions": "सभी लेन - देन",
"all_trades": "सभी व्यापार",
"connection_sync": "कनेक्शन और सिंक", "connection_sync": "कनेक्शन और सिंक",
"security_and_backup": "सुरक्षा और बैकअप", "security_and_backup": "सुरक्षा और बैकअप",
"create_backup": "बैकअप बनाएँ", "create_backup": "बैकअप बनाएँ",
@ -670,6 +672,7 @@
"advanced_privacy_settings": "उन्नत गोपनीयता सेटिंग्स", "advanced_privacy_settings": "उन्नत गोपनीयता सेटिंग्स",
"settings_can_be_changed_later": "इन सेटिंग्स को बाद में ऐप सेटिंग में बदला जा सकता है", "settings_can_be_changed_later": "इन सेटिंग्स को बाद में ऐप सेटिंग में बदला जा सकता है",
"add_custom_node": "नया कस्टम नोड जोड़ें", "add_custom_node": "नया कस्टम नोड जोड़ें",
"disable_fiat": "िएट को अक्षम करें",
"fiat_api": "फिएट पैसे API", "fiat_api": "फिएट पैसे API",
"disabled": "अक्षम", "disabled": "अक्षम",
"enabled": "सक्रिय", "enabled": "सक्रिय",

View file

@ -48,7 +48,7 @@
"outgoing" : "Odlazno", "outgoing" : "Odlazno",
"transactions_by_date" : "Transakcije prema datumu", "transactions_by_date" : "Transakcije prema datumu",
"trades" : "Razmjene", "trades" : "Razmjene",
"filters" : "Filter", "filter_by": "Filtrirati po",
"today" : "Danas", "today" : "Danas",
"yesterday" : "Jučer", "yesterday" : "Jučer",
"received" : "Primljeno", "received" : "Primljeno",
@ -656,6 +656,8 @@
"use_suggested": "Koristite predloženo", "use_suggested": "Koristite predloženo",
"do_not_share_warning_text" : "Nemojte ih dijeliti ni s kim, uključujući podršku.\n\nVaša sredstva mogu i bit će ukradena!", "do_not_share_warning_text" : "Nemojte ih dijeliti ni s kim, uključujući podršku.\n\nVaša sredstva mogu i bit će ukradena!",
"help": "pomozite", "help": "pomozite",
"all_transactions": "Sve transakcije",
"all_trades": "Svi obrti",
"connection_sync": "Povezivanje i sinkronizacija", "connection_sync": "Povezivanje i sinkronizacija",
"security_and_backup": "Sigurnost i sigurnosna kopija", "security_and_backup": "Sigurnost i sigurnosna kopija",
"create_backup": "Stvori sigurnosnu kopiju", "create_backup": "Stvori sigurnosnu kopiju",

View file

@ -48,7 +48,7 @@
"outgoing" : "In uscita", "outgoing" : "In uscita",
"transactions_by_date" : "Transazioni per data", "transactions_by_date" : "Transazioni per data",
"trades" : "Scambi", "trades" : "Scambi",
"filters" : "Filtri", "filter_by": "Filtrirati po",
"today" : "Oggi", "today" : "Oggi",
"yesterday" : "Ieri", "yesterday" : "Ieri",
"received" : "Ricevuto", "received" : "Ricevuto",
@ -656,6 +656,8 @@
"use_suggested": "Usa suggerito", "use_suggested": "Usa suggerito",
"do_not_share_warning_text" : "Non condividerli con nessun altro, incluso il supporto.\n\nI tuoi fondi possono e saranno rubati!", "do_not_share_warning_text" : "Non condividerli con nessun altro, incluso il supporto.\n\nI tuoi fondi possono e saranno rubati!",
"help": "aiuto", "help": "aiuto",
"all_transactions": "Sve transakcije",
"all_trades": "Svi obrti",
"connection_sync": "Connessione e sincronizzazione", "connection_sync": "Connessione e sincronizzazione",
"security_and_backup": "Sicurezza e backup", "security_and_backup": "Sicurezza e backup",
"create_backup": "Crea backup", "create_backup": "Crea backup",

View file

@ -48,7 +48,7 @@
"outgoing" : "発信", "outgoing" : "発信",
"transactions_by_date" : "日付ごとの取引", "transactions_by_date" : "日付ごとの取引",
"trades" : "取引", "trades" : "取引",
"filters" : "フィルタ", "filter_by": "でフィルタリング",
"today" : "今日", "today" : "今日",
"yesterday" : "昨日", "yesterday" : "昨日",
"received" : "受け取った", "received" : "受け取った",
@ -656,6 +656,8 @@
"use_suggested": "推奨を使用", "use_suggested": "推奨を使用",
"do_not_share_warning_text" : "サポートを含め、これらを他の誰とも共有しないでください。\n\nあなたの資金は盗まれる可能性があります!", "do_not_share_warning_text" : "サポートを含め、これらを他の誰とも共有しないでください。\n\nあなたの資金は盗まれる可能性があります!",
"help": "ヘルプ", "help": "ヘルプ",
"all_transactions": "全取引",
"all_trades": "すべての取引",
"connection_sync": "接続と同期", "connection_sync": "接続と同期",
"security_and_backup": "セキュリティとバックアップ", "security_and_backup": "セキュリティとバックアップ",
"create_backup": "バックアップを作成", "create_backup": "バックアップを作成",

View file

@ -48,7 +48,7 @@
"outgoing" : "나가는", "outgoing" : "나가는",
"transactions_by_date" : "날짜 별 거래", "transactions_by_date" : "날짜 별 거래",
"trades" : "거래", "trades" : "거래",
"filters" : "필터", "filter_by": "필터링 기준",
"today" : "오늘", "today" : "오늘",
"yesterday" : "어제", "yesterday" : "어제",
"received" : "받았습니다", "received" : "받았습니다",
@ -656,6 +656,8 @@
"use_suggested": "추천 사용", "use_suggested": "추천 사용",
"do_not_share_warning_text" : "지원을 포함하여 다른 사람과 이러한 정보를 공유하지 마십시오.\n\n귀하의 자금은 도난당할 수 있고 도난당할 수 있습니다!", "do_not_share_warning_text" : "지원을 포함하여 다른 사람과 이러한 정보를 공유하지 마십시오.\n\n귀하의 자금은 도난당할 수 있고 도난당할 수 있습니다!",
"help": "돕다", "help": "돕다",
"all_transactions": "모든 거래 창구",
"all_trades": "A모든 거래",
"connection_sync": "연결 및 동기화", "connection_sync": "연결 및 동기화",
"security_and_backup": "보안 및 백업", "security_and_backup": "보안 및 백업",
"create_backup": "백업 생성", "create_backup": "백업 생성",

View file

@ -48,7 +48,7 @@
"outgoing" : "Uitgaande", "outgoing" : "Uitgaande",
"transactions_by_date" : "Transacties op datum", "transactions_by_date" : "Transacties op datum",
"trades" : "Trades", "trades" : "Trades",
"filters" : "Filter", "filter_by": "Filteren op",
"today" : "Vandaag", "today" : "Vandaag",
"yesterday" : "Gisteren", "yesterday" : "Gisteren",
"received" : "Ontvangen", "received" : "Ontvangen",
@ -656,6 +656,8 @@
"use_suggested": "Gebruik aanbevolen", "use_suggested": "Gebruik aanbevolen",
"do_not_share_warning_text" : "Deel deze met niemand anders, ook niet met support.\n\nUw geld kan en zal worden gestolen!", "do_not_share_warning_text" : "Deel deze met niemand anders, ook niet met support.\n\nUw geld kan en zal worden gestolen!",
"help": "helpen", "help": "helpen",
"all_transactions": "Alle transacties",
"all_trades": "Alle transacties",
"connection_sync": "Verbinding en synchronisatie", "connection_sync": "Verbinding en synchronisatie",
"security_and_backup": "Beveiliging en back-up", "security_and_backup": "Beveiliging en back-up",
"create_backup": "Maak een back-up", "create_backup": "Maak een back-up",

View file

@ -48,7 +48,7 @@
"outgoing" : "Towarzyski", "outgoing" : "Towarzyski",
"transactions_by_date" : "Transakcje według daty", "transactions_by_date" : "Transakcje według daty",
"trades" : "Transakcje", "trades" : "Transakcje",
"filters" : "Filtr", "filter_by": "Filtruj według",
"today" : "Dzisiaj", "today" : "Dzisiaj",
"yesterday" : "Wczoraj", "yesterday" : "Wczoraj",
"received" : "Odebrane", "received" : "Odebrane",
@ -656,6 +656,8 @@
"use_suggested": "Użyj sugerowane", "use_suggested": "Użyj sugerowane",
"do_not_share_warning_text" : "Nie udostępniaj ich nikomu innemu, w tym pomocy.\n\nTwoje środki mogą i zostaną skradzione!", "do_not_share_warning_text" : "Nie udostępniaj ich nikomu innemu, w tym pomocy.\n\nTwoje środki mogą i zostaną skradzione!",
"help": "pomoc", "help": "pomoc",
"all_transactions": "Wszystkie transakcje",
"all_trades": "Wszystkie operacje",
"connection_sync": "Połączenie i synchronizacja", "connection_sync": "Połączenie i synchronizacja",
"security_and_backup": "Bezpieczeństwo i kopia zapasowa", "security_and_backup": "Bezpieczeństwo i kopia zapasowa",
"create_backup": "Utwórz kopię zapasową", "create_backup": "Utwórz kopię zapasową",

View file

@ -48,7 +48,7 @@
"outgoing" : "Enviadas", "outgoing" : "Enviadas",
"transactions_by_date" : "Transações por data", "transactions_by_date" : "Transações por data",
"trades" : "Trocas", "trades" : "Trocas",
"filters" : "Filtro", "filter_by": "Filtrar por",
"today" : "Hoje", "today" : "Hoje",
"yesterday" : "Ontem", "yesterday" : "Ontem",
"received" : "Recebida", "received" : "Recebida",
@ -655,6 +655,8 @@
"use_suggested": "Uso sugerido", "use_suggested": "Uso sugerido",
"do_not_share_warning_text" : "Não os compartilhe com mais ninguém, incluindo suporte.\n\nSeus fundos podem e serão roubados!", "do_not_share_warning_text" : "Não os compartilhe com mais ninguém, incluindo suporte.\n\nSeus fundos podem e serão roubados!",
"help": "ajuda", "help": "ajuda",
"all_transactions": "Todas as transacções",
"all_trades": "Todas as negociações",
"connection_sync": "Conexão e sincronização", "connection_sync": "Conexão e sincronização",
"security_and_backup": "Segurança e backup", "security_and_backup": "Segurança e backup",
"create_backup": "Criar backup", "create_backup": "Criar backup",

View file

@ -48,7 +48,7 @@
"outgoing" : "Исходящие", "outgoing" : "Исходящие",
"transactions_by_date" : "Сортировать по дате", "transactions_by_date" : "Сортировать по дате",
"trades" : "Сделки", "trades" : "Сделки",
"filters" : "Фильтр", "filter_by": "Фильтровать по",
"today" : "Сегодня", "today" : "Сегодня",
"yesterday" : "Вчера", "yesterday" : "Вчера",
"received" : "Полученные", "received" : "Полученные",
@ -656,6 +656,8 @@
"use_suggested": "Использовать предложенный", "use_suggested": "Использовать предложенный",
"do_not_share_warning_text" : "Не сообщайте их никому, включая техподдержку.\n\nВаши средства могут и будут украдены!", "do_not_share_warning_text" : "Не сообщайте их никому, включая техподдержку.\n\nВаши средства могут и будут украдены!",
"help": "помощь", "help": "помощь",
"all_transactions": "Все транзакции",
"all_trades": "Все сделки",
"connection_sync": "Подключение и синхронизация", "connection_sync": "Подключение и синхронизация",
"security_and_backup": "Безопасность и резервное копирование", "security_and_backup": "Безопасность и резервное копирование",
"create_backup": "Создать резервную копию", "create_backup": "Создать резервную копию",

View file

@ -48,7 +48,7 @@
"outgoing" : "Вихідні", "outgoing" : "Вихідні",
"transactions_by_date" : "Сортувати по даті", "transactions_by_date" : "Сортувати по даті",
"trades" : "Торгові операції", "trades" : "Торгові операції",
"filters" : "Фільтр", "filter_by": "Фільтрувати по",
"today" : "Сьогодні", "today" : "Сьогодні",
"yesterday" : "Вчора", "yesterday" : "Вчора",
"received" : "Отримані", "received" : "Отримані",
@ -655,6 +655,8 @@
"use_suggested": "Використати запропоноване", "use_suggested": "Використати запропоноване",
"do_not_share_warning_text" : "Не діліться цим нікому, включно зі службою підтримки.\n\nВаші кошти можуть і будуть вкрадені!", "do_not_share_warning_text" : "Не діліться цим нікому, включно зі службою підтримки.\n\nВаші кошти можуть і будуть вкрадені!",
"help": "допомога", "help": "допомога",
"all_transactions": "Всі транзакції",
"all_trades": "Всі операції",
"connection_sync": "Підключення та синхронізація", "connection_sync": "Підключення та синхронізація",
"security_and_backup": "Безпека та резервне копіювання", "security_and_backup": "Безпека та резервне копіювання",
"create_backup": "Створити резервну копію", "create_backup": "Створити резервну копію",

View file

@ -48,7 +48,7 @@
"outgoing" : "发送", "outgoing" : "发送",
"transactions_by_date" : "按日期交易", "transactions_by_date" : "按日期交易",
"trades" : "交易", "trades" : "交易",
"filters" : "过滤", "filter_by": "过滤",
"today" : "今天", "today" : "今天",
"yesterday" : "昨天", "yesterday" : "昨天",
"received" : "已收到", "received" : "已收到",
@ -654,6 +654,8 @@
"use_suggested": "使用建议", "use_suggested": "使用建议",
"do_not_share_warning_text" : "请勿与其他任何人分享这些信息,包括支持人员。\n\n您的资金可能而且将会被盗", "do_not_share_warning_text" : "请勿与其他任何人分享这些信息,包括支持人员。\n\n您的资金可能而且将会被盗",
"help": "帮助", "help": "帮助",
"all_transactions": "所有交易",
"all_trades": "所有的变化",
"connection_sync": "连接和同步", "connection_sync": "连接和同步",
"security_and_backup": "安全和备份", "security_and_backup": "安全和备份",
"create_backup": "创建备份", "create_backup": "创建备份",