Skip to content

Commit b403b7e

Browse files
committed
Merge branch 'develop'
2 parents cd9634e + 78f50d3 commit b403b7e

24 files changed

+180
-52
lines changed

.github/workflows/flatpak.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ jobs:
8686
draft: false
8787
prerelease: false
8888
title: "Latest Release"
89-
automatic_release_tag: "v5.0.142"
89+
automatic_release_tag: "v5.0.143"
9090
files: |
9191
${{ github.workspace }}/artifacts/Invoice-Ninja-Archive
9292
${{ github.workspace }}/artifacts/Invoice-Ninja-Hash

flatpak/com.invoiceninja.InvoiceNinja.metainfo.xml

+1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
</screenshots>
5151
<content_rating type="oars-1.1"/>
5252
<releases>
53+
<release version="5.0.143" date="2023-11-30"/>
5354
<release version="5.0.142" date="2023-11-28"/>
5455
<release version="5.0.141" date="2023-11-17"/>
5556
<release version="5.0.140" date="2023-11-14"/>

ios/Runner/Info.plist

+2
Original file line numberDiff line numberDiff line change
@@ -70,5 +70,7 @@
7070
<true/>
7171
<key>UIApplicationSupportsIndirectInputEvents</key>
7272
<true/>
73+
<key>FLTEnableImpeller</key>
74+
<false/>
7375
</dict>
7476
</plist>

lib/constants.dart

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ class Constants {
44
}
55

66
// TODO remove version once #46609 is fixed
7-
const String kClientVersion = '5.0.142';
7+
const String kClientVersion = '5.0.143';
88
const String kMinServerVersion = '5.0.4';
99

1010
const String kAppName = 'Invoice Ninja';
@@ -488,6 +488,7 @@ const String kGatewayStripeConnect = 'd14dd26a47cecc30fdd65700bfb67b34';
488488
const String kGatewayAuthorizeNet = '3b6621f970ab18887c4f6dca78d3f8bb';
489489
const String kGatewayCheckoutCom = '3758e7f7c6f4cecf0f4f348b9a00f456';
490490
const String kGatewayPayPalExpress = '38f2c48af60c7dd69e04248cbb24c36e';
491+
const String kGatewayPayPalPlatform = '80af24a6a691230bbec33e930ab40666';
491492
const String kGatewayWePay = '8fdeed552015b3c7b44ed6c8ebd9e992';
492493
const String kGatewayCustom = '54faab2ab6e3223dbe848b1686490baa';
493494

lib/data/models/import_model.dart

+8
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,14 @@ class ExportType extends EnumClass {
201201
static const ExportType products = _$products;
202202
static const ExportType tasks = _$tasks;
203203
static const ExportType profitloss = _$profitloss;
204+
static const ExportType aged_receivable_detailed_report =
205+
_$aged_receivable_detailed_report;
206+
static const ExportType aged_receivable_summary_report =
207+
_$aged_receivable_summary_report;
208+
static const ExportType client_balance_report = _$client_balance_report;
209+
static const ExportType client_sales_report = _$client_sales_report;
210+
static const ExportType tax_summary_report = _$tax_summary_report;
211+
static const ExportType user_sales_report = _$user_sales_report;
204212

205213
static BuiltSet<ExportType> get values => _$exportValues;
206214

lib/data/models/import_model.g.dart

+29
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/data/models/settings_model.dart

+3
Original file line numberDiff line numberDiff line change
@@ -811,6 +811,9 @@ abstract class SettingsEntity
811811

812812
String? get classification;
813813

814+
@BuiltValueField(wireName: 'payment_email_all_contacts')
815+
bool? get paymentEmailAllContacts;
816+
814817
bool get hasAddress => address1 != null && address1!.isNotEmpty;
815818

816819
bool get hasLogo => companyLogo != null && companyLogo!.isNotEmpty;

lib/data/models/settings_model.g.dart

+28-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/redux/invoice/invoice_actions.dart

+5-1
Original file line numberDiff line numberDiff line change
@@ -172,9 +172,13 @@ class RemoveInvoiceContact implements PersistUI {
172172
}
173173

174174
class AddInvoiceItem implements PersistUI {
175-
AddInvoiceItem({this.invoiceItem});
175+
AddInvoiceItem({
176+
this.invoiceItem,
177+
this.index,
178+
});
176179

177180
final InvoiceItemEntity? invoiceItem;
181+
final int? index;
178182
}
179183

180184
class MoveInvoiceItem implements PersistUI {

lib/redux/invoice/invoice_reducer.dart

+5-1
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,11 @@ InvoiceEntity _updateEditing(InvoiceEntity? invoice, dynamic action) {
165165

166166
InvoiceEntity _addInvoiceItem(InvoiceEntity? invoice, AddInvoiceItem action) {
167167
final item = action.invoiceItem ?? InvoiceItemEntity();
168-
return invoice!.rebuild((b) => b..lineItems.add(item));
168+
if (action.index == null) {
169+
return invoice!.rebuild((b) => b..lineItems.add(item));
170+
} else {
171+
return invoice!.rebuild((b) => b..lineItems.insert(action.index!, item));
172+
}
169173
}
170174

171175
InvoiceEntity _addInvoiceItems(InvoiceEntity? invoice, AddInvoiceItems action) {

lib/ui/app/app_bottom_bar.dart

+7-10
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,7 @@ class _AppBottomBarState extends State<AppBottomBar> {
143143
if (closeBottomSheet() == kFilterStatePanel) {
144144
return;
145145
}
146-
_filterStateController =
147-
Scaffold.of(context).showBottomSheet<StoreConnector>((context) {
146+
_filterStateController = Scaffold.of(context).showBottomSheet((context) {
148147
return StoreConnector<AppState, BuiltList<EntityState>>(
149148
converter: (Store<AppState> store) =>
150149
store.state.getListState(widget.entityType).stateFilters,
@@ -185,8 +184,7 @@ class _AppBottomBarState extends State<AppBottomBar> {
185184
return;
186185
}
187186

188-
_filterStatusController =
189-
Scaffold.of(context).showBottomSheet<StoreConnector>((context) {
187+
_filterStatusController = Scaffold.of(context).showBottomSheet((context) {
190188
return StoreConnector<AppState, BuiltList<EntityStatus>>(
191189
converter: (Store<AppState> store) =>
192190
store.state.getListState(widget.entityType).statusFilters,
@@ -226,8 +224,7 @@ class _AppBottomBarState extends State<AppBottomBar> {
226224
return;
227225
}
228226

229-
_sortController =
230-
Scaffold.of(context).showBottomSheet<StoreConnector>((context) {
227+
_sortController = Scaffold.of(context).showBottomSheet((context) {
231228
return StoreConnector<AppState, ListUIState>(
232229
//distinct: true,
233230
converter: (Store<AppState> store) =>
@@ -284,7 +281,7 @@ class _AppBottomBarState extends State<AppBottomBar> {
284281
}
285282

286283
_filterCustom1Controller =
287-
Scaffold.of(context).showBottomSheet<StoreConnector>((context) {
284+
Scaffold.of(context).showBottomSheet((context) {
288285
return CustomFieldSelector(
289286
customNumber: 1,
290287
entityType: widget.entityType,
@@ -304,7 +301,7 @@ class _AppBottomBarState extends State<AppBottomBar> {
304301
return;
305302
}
306303
_filterCustom2Controller =
307-
Scaffold.of(context).showBottomSheet<StoreConnector>((context) {
304+
Scaffold.of(context).showBottomSheet((context) {
308305
return CustomFieldSelector(
309306
customNumber: 2,
310307
entityType: widget.entityType,
@@ -325,7 +322,7 @@ class _AppBottomBarState extends State<AppBottomBar> {
325322
}
326323

327324
_filterCustom3Controller =
328-
Scaffold.of(context).showBottomSheet<StoreConnector>((context) {
325+
Scaffold.of(context).showBottomSheet((context) {
329326
return CustomFieldSelector(
330327
customNumber: 3,
331328
entityType: widget.entityType,
@@ -346,7 +343,7 @@ class _AppBottomBarState extends State<AppBottomBar> {
346343
}
347344

348345
_filterCustom4Controller =
349-
Scaffold.of(context).showBottomSheet<StoreConnector>((context) {
346+
Scaffold.of(context).showBottomSheet((context) {
350347
return CustomFieldSelector(
351348
customNumber: 4,
352349
entityType: widget.entityType,

lib/ui/app/edit_scaffold.dart

+20-22
Original file line numberDiff line numberDiff line change
@@ -433,30 +433,28 @@ class EditScaffold extends StatelessWidget {
433433
//size: iconSize,
434434
//color: color,
435435
),
436-
itemBuilder: (BuildContext context) =>
437-
<PopupMenuEntry<EntityAction>>[
436+
itemBuilder: (BuildContext context) => [
438437
...actions!
439-
.map((action) => action == null
440-
? PopupMenuDivider()
441-
: PopupMenuItem<EntityAction>(
442-
child: Row(
443-
children: <Widget>[
444-
Icon(
445-
getEntityActionIcon(action),
446-
color: Theme.of(context)
447-
.colorScheme
448-
.secondary,
449-
),
450-
SizedBox(width: 16.0),
451-
Text(AppLocalization.of(
452-
context)!
453-
.lookup(action.toString())),
454-
],
438+
.map((action) => action == null
439+
? PopupMenuDivider()
440+
: PopupMenuItem<EntityAction>(
441+
child: Row(
442+
children: <Widget>[
443+
Icon(
444+
getEntityActionIcon(action),
445+
color: Theme.of(context)
446+
.colorScheme
447+
.secondary,
455448
),
456-
value: action,
457-
))
458-
.toList()
459-
as Iterable<PopupMenuEntry<EntityAction>>
449+
SizedBox(width: 16.0),
450+
Text(AppLocalization.of(context)!
451+
.lookup(action.toString())),
452+
],
453+
),
454+
value: action,
455+
))
456+
.whereType<PopupMenuEntry<EntityAction>>()
457+
.toList()
460458
],
461459
onSelected: (action) =>
462460
onActionPressed!(context, action),

lib/ui/company_gateway/edit/company_gateway_edit.dart

+1
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ class _CompanyGatewayEditState extends State<CompanyGatewayEdit>
104104
final connectGateways = [
105105
kGatewayStripeConnect,
106106
kGatewayWePay,
107+
kGatewayPayPalPlatform,
107108
];
108109

109110
final disableSave = (connectGateways.contains(companyGateway.gatewayId) &&

lib/ui/company_gateway/edit/company_gateway_edit_vm.dart

+4
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,10 @@ class CompanyGatewayEditVM {
153153
launchUrl(Uri.parse(
154154
'${cleanApiUrl(credentials.url)}/wepay/signup/${response['hash']}'));
155155
break;
156+
case kGatewayPayPalPlatform:
157+
launchUrl(Uri.parse(
158+
'${cleanApiUrl(credentials.url)}/paypal/signup/${response['hash']}'));
159+
break;
156160
}
157161
}).catchError((dynamic error) {
158162
store.dispatch(StopSaving());

0 commit comments

Comments
 (0)