From a7de25323e2d0818a2e2ca6e84d8d4467e117024 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 9 Nov 2023 18:54:21 +0200 Subject: [PATCH] Add designs templates --- lib/redux/product/product_actions.dart | 3 +- .../purchase_order_middleware.dart | 3 +- .../recurring_invoice_middleware.dart | 3 +- lib/ui/client/client_pdf.dart | 37 ++----- .../edit/client_edit_shipping_address.dart | 2 +- .../invoice/edit/invoice_edit_contacts.dart | 3 +- lib/ui/invoice/invoice_pdf.dart | 103 ++++++++---------- 7 files changed, 58 insertions(+), 96 deletions(-) diff --git a/lib/redux/product/product_actions.dart b/lib/redux/product/product_actions.dart index 4d9d27213..a9fb2dc35 100644 --- a/lib/redux/product/product_actions.dart +++ b/lib/redux/product/product_actions.dart @@ -14,14 +14,13 @@ import 'package:invoiceninja_flutter/constants.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/redux/app/app_actions.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart'; +import 'package:invoiceninja_flutter/redux/document/document_actions.dart'; import 'package:invoiceninja_flutter/redux/product/product_selectors.dart'; import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart'; import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; -import '../document/document_actions.dart'; - class ViewProductList implements PersistUI { ViewProductList({ this.force = false, diff --git a/lib/redux/purchase_order/purchase_order_middleware.dart b/lib/redux/purchase_order/purchase_order_middleware.dart index 3219d24e2..fce9a6d29 100644 --- a/lib/redux/purchase_order/purchase_order_middleware.dart +++ b/lib/redux/purchase_order/purchase_order_middleware.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:invoiceninja_flutter/constants.dart'; import 'package:invoiceninja_flutter/data/repositories/purchase_order_repository.dart'; +import 'package:invoiceninja_flutter/redux/document/document_actions.dart'; import 'package:invoiceninja_flutter/redux/expense/expense_actions.dart'; import 'package:invoiceninja_flutter/redux/purchase_order/purchase_order_actions.dart'; import 'package:invoiceninja_flutter/ui/purchase_order/edit/purchase_order_edit_vm.dart'; @@ -20,8 +21,6 @@ import 'package:invoiceninja_flutter/redux/app/app_actions.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/ui/ui_actions.dart'; -import '../document/document_actions.dart'; - List> createStorePurchaseOrdersMiddleware([ PurchaseOrderRepository repository = const PurchaseOrderRepository(), ]) { diff --git a/lib/redux/recurring_invoice/recurring_invoice_middleware.dart b/lib/redux/recurring_invoice/recurring_invoice_middleware.dart index c4e58525e..a756df161 100644 --- a/lib/redux/recurring_invoice/recurring_invoice_middleware.dart +++ b/lib/redux/recurring_invoice/recurring_invoice_middleware.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:invoiceninja_flutter/constants.dart'; +import 'package:invoiceninja_flutter/redux/document/document_actions.dart'; import 'package:invoiceninja_flutter/redux/payment/payment_actions.dart'; // Package imports: @@ -20,8 +21,6 @@ import 'package:invoiceninja_flutter/ui/recurring_invoice/recurring_invoice_pdf_ import 'package:invoiceninja_flutter/ui/recurring_invoice/recurring_invoice_screen.dart'; import 'package:invoiceninja_flutter/ui/recurring_invoice/view/recurring_invoice_view_vm.dart'; -import '../document/document_actions.dart'; - List> createStoreRecurringInvoicesMiddleware([ RecurringInvoiceRepository repository = const RecurringInvoiceRepository(), ]) { diff --git a/lib/ui/client/client_pdf.dart b/lib/ui/client/client_pdf.dart index 0efcc8679..38447cfe8 100644 --- a/lib/ui/client/client_pdf.dart +++ b/lib/ui/client/client_pdf.dart @@ -4,7 +4,6 @@ import 'dart:convert'; // Flutter imports: import 'package:built_collection/built_collection.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; // Package imports: @@ -15,6 +14,7 @@ import 'package:http/http.dart'; import 'package:invoiceninja_flutter/constants.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/main_app.dart'; +import 'package:invoiceninja_flutter/redux/design/design_selectors.dart'; import 'package:invoiceninja_flutter/redux/settings/settings_actions.dart'; import 'package:invoiceninja_flutter/ui/app/buttons/elevated_button.dart'; import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart'; @@ -40,11 +40,6 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; -import 'package:invoiceninja_flutter/utils/web_stub.dart' - if (dart.library.html) 'package:invoiceninja_flutter/utils/web.dart'; - -import '../../redux/design/design_selectors.dart'; - class ClientPdfView extends StatefulWidget { const ClientPdfView({ Key? key, @@ -70,7 +65,6 @@ class _ClientPdfViewState extends State { convertDateTimeToSqlDate(DateTime.now().subtract(Duration(days: 365))); String? _endDate = convertDateTimeToSqlDate(); String _status = kStatementStatusAll; - String? _pdfString; String? _designId; @override @@ -86,7 +80,6 @@ class _ClientPdfViewState extends State { } final localization = AppLocalization.of(context); - final state = widget.viewModel.state; setState(() { _isLoading = true; @@ -100,12 +93,6 @@ class _ClientPdfViewState extends State { } } else { _response = response; - - if (kIsWeb && state.prefState.enableNativeBrowser) { - _pdfString = 'data:application/pdf;base64,' + - base64Encode(response!.bodyBytes); - WebUtils.registerWebView(_pdfString); - } } _isLoading = false; @@ -501,19 +488,15 @@ class _ClientPdfViewState extends State { Expanded( child: _isLoading || _response == null ? LoadingIndicator() - : (kIsWeb && state.prefState.enableNativeBrowser) - ? HtmlElementView(viewType: _pdfString!) - : PdfPreview( - build: (format) => _response!.bodyBytes, - canChangeOrientation: false, - canChangePageFormat: false, - canDebug: false, - maxPageWidth: 600, - pdfFileName: localization.statement + - '_' + - client.number + - '.pdf', - ), + : PdfPreview( + build: (format) => _response!.bodyBytes, + canChangeOrientation: false, + canChangePageFormat: false, + canDebug: false, + maxPageWidth: 600, + pdfFileName: + localization.statement + '_' + client.number + '.pdf', + ), ), ], ), diff --git a/lib/ui/client/edit/client_edit_shipping_address.dart b/lib/ui/client/edit/client_edit_shipping_address.dart index 2bd16d0e8..1262ec3c1 100644 --- a/lib/ui/client/edit/client_edit_shipping_address.dart +++ b/lib/ui/client/edit/client_edit_shipping_address.dart @@ -7,11 +7,11 @@ import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/redux/static/static_selectors.dart'; import 'package:invoiceninja_flutter/ui/app/buttons/elevated_button.dart'; import 'package:invoiceninja_flutter/ui/app/entity_dropdown.dart'; +import 'package:invoiceninja_flutter/ui/app/form_card.dart'; import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart'; import 'package:invoiceninja_flutter/ui/client/edit/client_edit_vm.dart'; import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; -import '../../app/form_card.dart'; class ClientEditShippingAddress extends StatefulWidget { const ClientEditShippingAddress({ diff --git a/lib/ui/invoice/edit/invoice_edit_contacts.dart b/lib/ui/invoice/edit/invoice_edit_contacts.dart index 647baca97..e8c392756 100644 --- a/lib/ui/invoice/edit/invoice_edit_contacts.dart +++ b/lib/ui/invoice/edit/invoice_edit_contacts.dart @@ -6,14 +6,13 @@ import 'package:flutter_styled_toast/flutter_styled_toast.dart'; // Project imports: import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/ui/app/help_text.dart'; import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_contacts_vm.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; -import '../../../redux/app/app_state.dart'; - class InvoiceEditContacts extends StatelessWidget { const InvoiceEditContacts({ Key? key, diff --git a/lib/ui/invoice/invoice_pdf.dart b/lib/ui/invoice/invoice_pdf.dart index b021917e5..a2281f1cb 100644 --- a/lib/ui/invoice/invoice_pdf.dart +++ b/lib/ui/invoice/invoice_pdf.dart @@ -1,6 +1,5 @@ // Dart imports: import 'dart:async'; -import 'dart:convert'; // Flutter imports: import 'package:flutter/foundation.dart'; @@ -31,9 +30,6 @@ import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; -import 'package:invoiceninja_flutter/utils/web_stub.dart' - if (dart.library.html) 'package:invoiceninja_flutter/utils/web.dart'; - class InvoicePdfView extends StatefulWidget { const InvoicePdfView({ Key? key, @@ -53,7 +49,6 @@ class _InvoicePdfViewState extends State { bool _isDeliveryNote = false; String? _designId; String? _activityId; - String? _pdfString; http.Response? _response; //int _pageCount = 1; //int _currentPage = 1; @@ -75,7 +70,6 @@ class _InvoicePdfViewState extends State { void loadPdf() { final viewModel = widget.viewModel; final invoice = viewModel.invoice!; - final state = viewModel.state; if (invoice.invitations.isEmpty) { return; @@ -95,12 +89,6 @@ class _InvoicePdfViewState extends State { setState(() { _response = response; _isLoading = false; - - if (kIsWeb && state!.prefState.enableNativeBrowser) { - _pdfString = 'data:application/pdf;base64,' + - base64Encode(response!.bodyBytes); - WebUtils.registerWebView(_pdfString); - } }); }).catchError((Object error) { setState(() { @@ -144,42 +132,39 @@ class _InvoicePdfViewState extends State { ]; */ - final activityPicker = - _activityId == null || (kIsWeb && state.prefState.enableNativeBrowser) - ? SizedBox() - : Expanded( - child: Padding( - padding: const EdgeInsets.only(left: 17), - child: IgnorePointer( - ignoring: _isLoading, - child: AppDropdownButton( - value: _activityId, - onChanged: (dynamic activityId) { - setState(() { - _activityId = activityId; - loadPdf(); - }); - }, - items: invoice.balanceHistory - .map((history) => DropdownMenuItem( - child: Text(formatNumber( - history.amount, context, - clientId: invoice.clientId)! + - ' • ' + - formatDate( - convertTimestampToDateString( - history.createdAt), - context, - showTime: true)), - value: history.activityId, - )) - .toList()), - ), - ), - ); + final activityPicker = _activityId == null + ? SizedBox() + : Expanded( + child: Padding( + padding: const EdgeInsets.only(left: 17), + child: IgnorePointer( + ignoring: _isLoading, + child: AppDropdownButton( + value: _activityId, + onChanged: (dynamic activityId) { + setState(() { + _activityId = activityId; + loadPdf(); + }); + }, + items: invoice.balanceHistory + .map((history) => DropdownMenuItem( + child: Text(formatNumber(history.amount, context, + clientId: invoice.clientId)! + + ' • ' + + formatDate( + convertTimestampToDateString( + history.createdAt), + context, + showTime: true)), + value: history.activityId, + )) + .toList()), + ), + ), + ); final designPicker = _activityId != null || - (kIsWeb && state.prefState.enableNativeBrowser) || !hasDesignTemplatesForEntityType( state.designState.map, invoice.entityType!) ? SizedBox() @@ -289,20 +274,18 @@ class _InvoicePdfViewState extends State { Expanded( child: _isLoading || _response == null ? LoadingIndicator() - : (kIsWeb && state.prefState.enableNativeBrowser) - ? HtmlElementView(viewType: _pdfString!) - : PdfPreview( - build: (format) => _response!.bodyBytes, - canChangeOrientation: false, - canChangePageFormat: false, - canDebug: false, - maxPageWidth: 600, - pdfFileName: - localization.lookup(invoice.entityType!.snakeCase) + - '_' + - invoice.number + - '.pdf', - ), + : PdfPreview( + build: (format) => _response!.bodyBytes, + canChangeOrientation: false, + canChangePageFormat: false, + canDebug: false, + maxPageWidth: 600, + pdfFileName: + localization.lookup(invoice.entityType!.snakeCase) + + '_' + + invoice.number + + '.pdf', + ), ), ], ),