Skip to content

Commit 37749fa

Browse files
authored
Merge pull request #1464 from SatoshiPortal/develop
6.4.0
2 parents 4f572a8 + 98aa3a7 commit 37749fa

17 files changed

Lines changed: 6344 additions & 6139 deletions

File tree

.git_hooks/pre-commit

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/bin/sh
1+
#!/bin/bash
22
echo "Begin pre-commit hook"
33

44
# Prefer FVM Flutter if present; else try `fvm flutter`; else global flutter

android/app/build.gradle

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def flutterVersionName = localProperties.getProperty('flutter.versionName') ?: '
2525
android {
2626
compileSdk = 35
2727

28-
ndkVersion = "27.0.12077973"
28+
ndkVersion = "29.0.13113456"
2929
compileOptions {
3030
sourceCompatibility JavaVersion.VERSION_21
3131
targetCompatibility JavaVersion.VERSION_21
@@ -46,6 +46,12 @@ android {
4646
targetSdkVersion 35
4747
versionCode flutterVersionCode.toInteger()
4848
versionName flutterVersionName
49+
50+
externalNativeBuild {
51+
cmake {
52+
arguments "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
53+
}
54+
}
4955
}
5056

5157
signingConfigs {

android/gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
33
zipStoreBase=GRADLE_USER_HOME
44
zipStorePath=wrapper/dists
5-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip
5+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-all.zip

android/settings.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ pluginManagement {
1818

1919
plugins {
2020
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
21-
id "com.android.application" version "8.6.0" apply false
22-
id "org.jetbrains.kotlin.android" version "1.9.20" apply false
21+
id "com.android.application" version "8.12.2" apply false
22+
id "org.jetbrains.kotlin.android" version "2.2.10" apply false
2323
}
2424

2525
include ":app"

ios/Runner.xcodeproj/project.pbxproj

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -488,19 +488,19 @@
488488
buildSettings = {
489489
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
490490
CLANG_ENABLE_MODULES = YES;
491-
CURRENT_PROJECT_VERSION = 123;
491+
CURRENT_PROJECT_VERSION = 124;
492492
DEVELOPMENT_TEAM = BX99T32YGS;
493493
ENABLE_BITCODE = NO;
494-
FLUTTER_BUILD_NAME = 6.3.3;
495-
FLUTTER_BUILD_NUMBER = 123;
494+
FLUTTER_BUILD_NAME = 6.3.4;
495+
FLUTTER_BUILD_NUMBER = 124;
496496
INFOPLIST_FILE = Runner/Info.plist;
497497
INFOPLIST_KEY_CFBundleDisplayName = BULL;
498498
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.finance";
499499
LD_RUNPATH_SEARCH_PATHS = (
500500
"$(inherited)",
501501
"@executable_path/Frameworks",
502502
);
503-
MARKETING_VERSION = 6.3.3;
503+
MARKETING_VERSION = 6.3.4;
504504
PRODUCT_BUNDLE_IDENTIFIER = com.bullbitcoin.app;
505505
PRODUCT_NAME = "$(TARGET_NAME)";
506506
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@@ -678,19 +678,19 @@
678678
buildSettings = {
679679
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
680680
CLANG_ENABLE_MODULES = YES;
681-
CURRENT_PROJECT_VERSION = 123;
681+
CURRENT_PROJECT_VERSION = 124;
682682
DEVELOPMENT_TEAM = BX99T32YGS;
683683
ENABLE_BITCODE = NO;
684-
FLUTTER_BUILD_NAME = 6.3.3;
685-
FLUTTER_BUILD_NUMBER = 123;
684+
FLUTTER_BUILD_NAME = 6.3.4;
685+
FLUTTER_BUILD_NUMBER = 124;
686686
INFOPLIST_FILE = Runner/Info.plist;
687687
INFOPLIST_KEY_CFBundleDisplayName = BULL;
688688
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.finance";
689689
LD_RUNPATH_SEARCH_PATHS = (
690690
"$(inherited)",
691691
"@executable_path/Frameworks",
692692
);
693-
MARKETING_VERSION = 6.3.3;
693+
MARKETING_VERSION = 6.3.4;
694694
PRODUCT_BUNDLE_IDENTIFIER = com.bullbitcoin.app;
695695
PRODUCT_NAME = "$(TARGET_NAME)";
696696
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@@ -706,19 +706,19 @@
706706
buildSettings = {
707707
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
708708
CLANG_ENABLE_MODULES = YES;
709-
CURRENT_PROJECT_VERSION = 123;
709+
CURRENT_PROJECT_VERSION = 124;
710710
DEVELOPMENT_TEAM = BX99T32YGS;
711711
ENABLE_BITCODE = NO;
712-
FLUTTER_BUILD_NAME = 6.3.3;
713-
FLUTTER_BUILD_NUMBER = 123;
712+
FLUTTER_BUILD_NAME = 6.3.4;
713+
FLUTTER_BUILD_NUMBER = 124;
714714
INFOPLIST_FILE = Runner/Info.plist;
715715
INFOPLIST_KEY_CFBundleDisplayName = BULL;
716716
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.finance";
717717
LD_RUNPATH_SEARCH_PATHS = (
718718
"$(inherited)",
719719
"@executable_path/Frameworks",
720720
);
721-
MARKETING_VERSION = 6.3.3;
721+
MARKETING_VERSION = 6.3.4;
722722
PRODUCT_BUNDLE_IDENTIFIER = com.bullbitcoin.app;
723723
PRODUCT_NAME = "$(TARGET_NAME)";
724724
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";

lib/core/exchange/data/models/order_model.dart

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ class OrderModel {
4343
final String? securityAnswer;
4444
final String? paymentDescription;
4545
final double? unbatchedBuyOnchainFees;
46+
final String? referenceNumber;
47+
final String? originName;
48+
final String? originCedula;
4649

4750
OrderModel({
4851
required this.orderId,
@@ -87,6 +90,9 @@ class OrderModel {
8790
this.securityAnswer,
8891
this.paymentDescription,
8992
this.unbatchedBuyOnchainFees,
93+
this.referenceNumber,
94+
this.originName,
95+
this.originCedula,
9096
});
9197

9298
factory OrderModel.fromJson(Map<String, dynamic> json) {
@@ -134,6 +140,9 @@ class OrderModel {
134140
securityAnswer: json['securityAnswer'] as String?,
135141
paymentDescription: json['paymentDescription'] as String?,
136142
unbatchedBuyOnchainFees: json['unbatchedBuyOnchainFees'] as double?,
143+
referenceNumber: json['referenceNumber'] as String?,
144+
originName: json['originName'] as String?,
145+
originCedula: json['originCedula'] as String?,
137146
);
138147
}
139148

@@ -180,6 +189,9 @@ class OrderModel {
180189
'securityAnswer': securityAnswer,
181190
'paymentDescription': paymentDescription,
182191
'unbatchedBuyOnchainFees': unbatchedBuyOnchainFees,
192+
'referenceNumber': referenceNumber,
193+
'originName': originName,
194+
'originCedula': originCedula,
183195
};
184196

185197
Order toEntity({required bool isTestnet}) {
@@ -349,6 +361,9 @@ class OrderModel {
349361
indexRateAmount: indexRateAmount,
350362
indexRateCurrency: indexRateCurrency,
351363
isTestnet: isTestnet,
364+
referenceNumber: referenceNumber,
365+
originName: originName,
366+
originCedula: originCedula,
352367
);
353368
case OrderType.funding:
354369
return Order.funding(

lib/core/exchange/domain/entity/order.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,9 @@ sealed class Order with _$Order {
373373
double? indexRateAmount,
374374
String? indexRateCurrency,
375375
required bool isTestnet,
376+
String? referenceNumber,
377+
String? originName,
378+
String? originCedula,
376379
}) = FiatPaymentOrder;
377380

378381
const factory Order.funding({

lib/features/address_view/ui/screens/addresses_screen.dart

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:bb_mobile/core/themes/app_theme.dart';
2+
import 'package:bb_mobile/core/utils/build_context_x.dart';
23
import 'package:bb_mobile/core/widgets/coming_soon_bottom_sheet.dart';
34
import 'package:bb_mobile/core/widgets/segment/segmented_full.dart';
45
import 'package:bb_mobile/features/address_view/presentation/address_view_bloc.dart';
@@ -19,7 +20,19 @@ class AddressesScreen extends StatefulWidget {
1920
class _AddressesScreenState extends State<AddressesScreen> {
2021
late final ScrollController _scrollController;
2122
bool showChangeAddresses = false;
22-
String selectedTab = 'Receive';
23+
late String selectedTab;
24+
25+
@override
26+
void didChangeDependencies() {
27+
super.didChangeDependencies();
28+
// Initialize selectedTab after context is available
29+
if (!_initialized) {
30+
selectedTab = context.loc.addressViewReceiveType;
31+
_initialized = true;
32+
}
33+
}
34+
35+
bool _initialized = false;
2336

2437
@override
2538
void initState() {
@@ -52,7 +65,7 @@ class _AddressesScreenState extends State<AddressesScreen> {
5265
Widget build(BuildContext context) {
5366
return Scaffold(
5467
appBar: AppBar(
55-
title: const Text('Addresses'),
68+
title: Text(context.loc.addressViewAddressesTitle),
5669
scrolledUnderElevation: 0,
5770
backgroundColor: Colors.transparent,
5871
elevation: 0,
@@ -63,22 +76,22 @@ class _AddressesScreenState extends State<AddressesScreen> {
6376
Padding(
6477
padding: const EdgeInsets.all(16.0),
6578
child: BBSegmentFull(
66-
items: const {'Receive', 'Change'},
79+
items: {context.loc.addressViewReceiveType, context.loc.addressViewChangeType},
6780
initialValue: selectedTab,
6881
onSelected: (value) {
69-
if (value == 'Change') {
82+
if (value == context.loc.addressViewChangeType) {
7083
ComingSoonBottomSheet.show(
7184
context,
72-
description: 'Display wallet Change addresses',
85+
description: context.loc.addressViewChangeAddressesDescription,
7386
);
7487
setState(() {
75-
selectedTab = 'Change';
88+
selectedTab = context.loc.addressViewChangeType;
7689
showChangeAddresses = true;
7790
});
7891
return;
7992
}
8093
setState(() {
81-
selectedTab = 'Receive';
94+
selectedTab = context.loc.addressViewReceiveType;
8295
showChangeAddresses = false;
8396
});
8497
},
@@ -101,7 +114,7 @@ class _AddressesScreenState extends State<AddressesScreen> {
101114
} else if (state.error != null && addresses.isEmpty) {
102115
return Center(
103116
child: Text(
104-
'Error loading addresses: ${state.error!}',
117+
context.loc.addressViewErrorLoadingAddresses(state.error!.toString()),
105118
style: context.font.bodyMedium?.copyWith(
106119
color: context.colour.error,
107120
),
@@ -111,8 +124,8 @@ class _AddressesScreenState extends State<AddressesScreen> {
111124
return Center(
112125
child: Text(
113126
showChangeAddresses
114-
? 'Change addresses coming soon'
115-
: 'No addresses found',
127+
? context.loc.addressViewChangeAddressesComingSoon
128+
: context.loc.addressViewNoAddressesFound,
116129
style: context.font.bodyMedium?.copyWith(
117130
color: context.colour.onSurface,
118131
),
@@ -141,7 +154,7 @@ class _AddressesScreenState extends State<AddressesScreen> {
141154
index == addresses.length) {
142155
return Center(
143156
child: Text(
144-
'Error loading more addresses: ${state.error!}',
157+
context.loc.addressViewErrorLoadingMoreAddresses(state.error!.toString()),
145158
style: context.font.bodyMedium?.copyWith(
146159
color: context.colour.error,
147160
),

lib/features/address_view/ui/widgets/address_list_bottom_sheet.dart

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:bb_mobile/core/themes/app_theme.dart';
2+
import 'package:bb_mobile/core/utils/build_context_x.dart';
23
import 'package:bb_mobile/core/widgets/buttons/button.dart';
34
import 'package:bb_mobile/features/address_view/presentation/address_view_bloc.dart';
45
import 'package:bb_mobile/features/settings/ui/widgets/address_card.dart';
@@ -68,7 +69,7 @@ class _AddressListBottomSheetState extends State<AddressListBottomSheet> {
6869
),
6970
Center(
7071
child: Text(
71-
'Addresses',
72+
context.loc.addressViewAddressesTitle,
7273
style: context.font.headlineMedium?.copyWith(
7374
color: context.colour.secondary,
7475
),
@@ -92,7 +93,7 @@ class _AddressListBottomSheetState extends State<AddressListBottomSheet> {
9293
} else if (state.error != null && addresses.isEmpty) {
9394
return Center(
9495
child: Text(
95-
'Error loading addresses: ${state.error!}',
96+
context.loc.addressViewErrorLoadingAddresses(state.error!.toString()),
9697
style: context.font.bodyMedium?.copyWith(
9798
color: context.colour.error,
9899
),
@@ -101,7 +102,7 @@ class _AddressListBottomSheetState extends State<AddressListBottomSheet> {
101102
} else if (addresses.isEmpty) {
102103
return Center(
103104
child: Text(
104-
'No addresses found',
105+
context.loc.addressViewNoAddressesFound,
105106
style: context.font.bodyMedium?.copyWith(
106107
color: context.colour.onSurface,
107108
),
@@ -129,7 +130,7 @@ class _AddressListBottomSheetState extends State<AddressListBottomSheet> {
129130
if (state.error != null && index == addresses.length) {
130131
return Center(
131132
child: Text(
132-
'Error loading more addresses: ${state.error!}',
133+
context.loc.addressViewErrorLoadingMoreAddresses(state.error!.toString()),
133134
style: context.font.bodyMedium?.copyWith(
134135
color: context.colour.error,
135136
),
@@ -152,7 +153,7 @@ class _AddressListBottomSheetState extends State<AddressListBottomSheet> {
152153
children: [
153154
Expanded(
154155
child: BBButton.big(
155-
label: 'Receive',
156+
label: context.loc.addressViewReceiveType,
156157
bgColor: Colors.transparent,
157158
textColor: context.colour.secondary,
158159
outlined: true,
@@ -169,7 +170,7 @@ class _AddressListBottomSheetState extends State<AddressListBottomSheet> {
169170
child: BBButton.big(
170171
disabled:
171172
true, // TODO: implement change address list functionality
172-
label: 'Change',
173+
label: context.loc.addressViewChangeType,
173174
bgColor: context.colour.secondary,
174175
textColor: context.colour.onSecondary,
175176
onPressed: () {

0 commit comments

Comments
 (0)