diff --git a/.github/workflows/flatpak.yml b/.github/workflows/flatpak.yml index 097241ae99..0baeedd44d 100644 --- a/.github/workflows/flatpak.yml +++ b/.github/workflows/flatpak.yml @@ -86,7 +86,7 @@ jobs: draft: false prerelease: false title: "Latest Release" - automatic_release_tag: "v5.0.160" + automatic_release_tag: "v5.0.161" files: | ${{ github.workspace }}/artifacts/Invoice-Ninja-Archive ${{ github.workspace }}/artifacts/Invoice-Ninja-Hash diff --git a/bump_version.sh b/bump_version.sh index ad6f4c2eda..5b0c74c60f 100644 --- a/bump_version.sh +++ b/bump_version.sh @@ -18,4 +18,4 @@ echo "const FLUTTER_VERSION = const " > lib/flutter_version.dart flutter --version --machine >> lib/flutter_version.dart echo ";" >> lib/flutter_version.dart sed -i "y/\"/'/" lib/flutter_version.dart -dart dartfmt lib \ No newline at end of file +dart format lib \ No newline at end of file diff --git a/flatpak/com.invoiceninja.InvoiceNinja.metainfo.xml b/flatpak/com.invoiceninja.InvoiceNinja.metainfo.xml index f63813c294..9d762bcb9d 100644 --- a/flatpak/com.invoiceninja.InvoiceNinja.metainfo.xml +++ b/flatpak/com.invoiceninja.InvoiceNinja.metainfo.xml @@ -50,6 +50,7 @@ + diff --git a/lib/constants.dart b/lib/constants.dart index ce92f30d78..2bf534ab25 100644 --- a/lib/constants.dart +++ b/lib/constants.dart @@ -6,7 +6,7 @@ class Constants { } // TODO remove version once #46609 is fixed -const String kClientVersion = '5.0.160'; +const String kClientVersion = '5.0.161'; const String kMinServerVersion = '5.0.4'; const String kAppName = 'Invoice Ninja'; @@ -610,6 +610,10 @@ const String kReminderScheduleAfterInvoiceDate = 'after_invoice_date'; const String kReminderScheduleBeforeDueDate = 'before_due_date'; const String kReminderScheduleAfterDueDate = 'after_due_date'; +const String kQuoteReminderScheduleAfterQuoteDate = 'after_quote_date'; +const String kQuoteReminderScheduleBeforeValidUntil = 'before_valid_until_date'; +const String kQuoteReminderScheduleAfterValidUntil = 'after_valid_until_date'; + const String kSettingsCompanyDetails = 'company_details'; const String kSettingsPaymentTerms = 'payment_terms'; const String kSettingsPaymentTermView = 'payment_term/view'; @@ -1131,3 +1135,4 @@ const String kActivityEmailPayment = '138'; const String kActivityExpenseNotificationSent = '139'; const String kActivityStatementSent = '140'; const String kActivityComment = '141'; +const String kActivityQuoteEmailReminder1 = '142'; diff --git a/lib/data/models/entities.dart b/lib/data/models/entities.dart index a5dbf8e28a..fdcff456c2 100644 --- a/lib/data/models/entities.dart +++ b/lib/data/models/entities.dart @@ -306,6 +306,7 @@ class EmailTemplate extends EnumClass { static const EmailTemplate reminder2 = _$reminder2_email; static const EmailTemplate reminder3 = _$reminder3_email; static const EmailTemplate reminder_endless = _$reminder_endless_email; + static const EmailTemplate quote_reminder1 = _$quote_reminder1_email; static const EmailTemplate custom1 = _$custom1_email; static const EmailTemplate custom2 = _$custom2_email; static const EmailTemplate custom3 = _$custom3_email; @@ -858,6 +859,7 @@ abstract class ActivityEntity kActivityDeleteQuote, kActivityRestoreQuote, kActivityApproveQuote, + kActivityQuoteEmailReminder1, ].contains(activityTypeId)) { return EntityType.quote; } else if ([ diff --git a/lib/data/models/entities.g.dart b/lib/data/models/entities.g.dart index 5eb6982e5a..16c7a1878a 100644 --- a/lib/data/models/entities.g.dart +++ b/lib/data/models/entities.g.dart @@ -247,6 +247,8 @@ const EmailTemplate _$reminder2_email = const EmailTemplate._('reminder2'); const EmailTemplate _$reminder3_email = const EmailTemplate._('reminder3'); const EmailTemplate _$reminder_endless_email = const EmailTemplate._('reminder_endless'); +const EmailTemplate _$quote_reminder1_email = + const EmailTemplate._('quote_reminder1'); const EmailTemplate _$custom1_email = const EmailTemplate._('custom1'); const EmailTemplate _$custom2_email = const EmailTemplate._('custom2'); const EmailTemplate _$custom3_email = const EmailTemplate._('custom3'); @@ -275,6 +277,8 @@ EmailTemplate _$templateValueOf(String name) { return _$reminder3_email; case 'reminder_endless': return _$reminder_endless_email; + case 'quote_reminder1': + return _$quote_reminder1_email; case 'custom1': return _$custom1_email; case 'custom2': @@ -299,6 +303,7 @@ final BuiltSet _$templateValues = _$reminder2_email, _$reminder3_email, _$reminder_endless_email, + _$quote_reminder1_email, _$custom1_email, _$custom2_email, _$custom3_email, diff --git a/lib/data/models/settings_model.dart b/lib/data/models/settings_model.dart index 522c608d9e..636b5b749f 100644 --- a/lib/data/models/settings_model.dart +++ b/lib/data/models/settings_model.dart @@ -840,6 +840,27 @@ abstract class SettingsEntity @BuiltValueField(wireName: 'task_round_to_nearest') int? get taskRoundToNearest; + @BuiltValueField(wireName: 'email_quote_template_reminder1') + String? get emailBodyQuoteReminder1; + + @BuiltValueField(wireName: 'email_quote_subject_reminder1') + String? get emailSubjectQuoteReminder1; + + @BuiltValueField(wireName: 'enable_quote_reminder1') + bool? get enableQuoteReminder1; + + @BuiltValueField(wireName: 'quote_num_days_reminder1') + int? get numDaysQuoteReminder1; + + @BuiltValueField(wireName: 'quote_schedule_reminder1') + String? get scheduleQuoteReminder1; + + @BuiltValueField(wireName: 'quote_late_fee_amount1') + double? get quoteLateFeeAmount1; + + @BuiltValueField(wireName: 'quote_late_fee_percent1') + double? get quoteLateFeePercent1; + bool? get taskRoundingEnabled => taskRoundToNearest == null ? null : taskRoundToNearest != 1; @@ -958,8 +979,10 @@ abstract class SettingsEntity return emailSubjectCustom3; case EmailTemplate.purchase_order: return emailSubjectPurchaseOrder; + case EmailTemplate.quote_reminder1: + return emailSubjectQuoteReminder1; default: - return 'Error: template not defined for $emailTemplate'; + return 'Error: subject template not defined for $emailTemplate'; } } @@ -993,8 +1016,10 @@ abstract class SettingsEntity return emailBodyCustom3; case EmailTemplate.purchase_order: return emailBodyPurchaseOrder; + case EmailTemplate.quote_reminder1: + return emailBodyQuoteReminder1; default: - return 'Error: template not defined for $template'; + return 'Error: body template not defined for $template'; } } diff --git a/lib/data/models/settings_model.g.dart b/lib/data/models/settings_model.g.dart index 927680e0ff..1d07164acf 100644 --- a/lib/data/models/settings_model.g.dart +++ b/lib/data/models/settings_model.g.dart @@ -1626,6 +1626,54 @@ class _$SettingsEntitySerializer ..add('task_round_to_nearest') ..add(serializers.serialize(value, specifiedType: const FullType(int))); } + value = object.emailBodyQuoteReminder1; + if (value != null) { + result + ..add('email_quote_template_reminder1') + ..add(serializers.serialize(value, + specifiedType: const FullType(String))); + } + value = object.emailSubjectQuoteReminder1; + if (value != null) { + result + ..add('email_quote_subject_reminder1') + ..add(serializers.serialize(value, + specifiedType: const FullType(String))); + } + value = object.enableQuoteReminder1; + if (value != null) { + result + ..add('enable_quote_reminder1') + ..add( + serializers.serialize(value, specifiedType: const FullType(bool))); + } + value = object.numDaysQuoteReminder1; + if (value != null) { + result + ..add('quote_num_days_reminder1') + ..add(serializers.serialize(value, specifiedType: const FullType(int))); + } + value = object.scheduleQuoteReminder1; + if (value != null) { + result + ..add('quote_schedule_reminder1') + ..add(serializers.serialize(value, + specifiedType: const FullType(String))); + } + value = object.quoteLateFeeAmount1; + if (value != null) { + result + ..add('quote_late_fee_amount1') + ..add(serializers.serialize(value, + specifiedType: const FullType(double))); + } + value = object.quoteLateFeePercent1; + if (value != null) { + result + ..add('quote_late_fee_percent1') + ..add(serializers.serialize(value, + specifiedType: const FullType(double))); + } return result; } @@ -2572,6 +2620,34 @@ class _$SettingsEntitySerializer result.taskRoundToNearest = serializers.deserialize(value, specifiedType: const FullType(int)) as int?; break; + case 'email_quote_template_reminder1': + result.emailBodyQuoteReminder1 = serializers.deserialize(value, + specifiedType: const FullType(String)) as String?; + break; + case 'email_quote_subject_reminder1': + result.emailSubjectQuoteReminder1 = serializers.deserialize(value, + specifiedType: const FullType(String)) as String?; + break; + case 'enable_quote_reminder1': + result.enableQuoteReminder1 = serializers.deserialize(value, + specifiedType: const FullType(bool)) as bool?; + break; + case 'quote_num_days_reminder1': + result.numDaysQuoteReminder1 = serializers.deserialize(value, + specifiedType: const FullType(int)) as int?; + break; + case 'quote_schedule_reminder1': + result.scheduleQuoteReminder1 = serializers.deserialize(value, + specifiedType: const FullType(String)) as String?; + break; + case 'quote_late_fee_amount1': + result.quoteLateFeeAmount1 = serializers.deserialize(value, + specifiedType: const FullType(double)) as double?; + break; + case 'quote_late_fee_percent1': + result.quoteLateFeePercent1 = serializers.deserialize(value, + specifiedType: const FullType(double)) as double?; + break; } } @@ -3113,6 +3189,20 @@ class _$SettingsEntity extends SettingsEntity { final bool? taskRoundUp; @override final int? taskRoundToNearest; + @override + final String? emailBodyQuoteReminder1; + @override + final String? emailSubjectQuoteReminder1; + @override + final bool? enableQuoteReminder1; + @override + final int? numDaysQuoteReminder1; + @override + final String? scheduleQuoteReminder1; + @override + final double? quoteLateFeeAmount1; + @override + final double? quoteLateFeePercent1; factory _$SettingsEntity([void Function(SettingsEntityBuilder)? updates]) => (new SettingsEntityBuilder()..update(updates))._build(); @@ -3348,7 +3438,14 @@ class _$SettingsEntity extends SettingsEntity { this.useUnappliedPayment, this.brevoSecret, this.taskRoundUp, - this.taskRoundToNearest}) + this.taskRoundToNearest, + this.emailBodyQuoteReminder1, + this.emailSubjectQuoteReminder1, + this.enableQuoteReminder1, + this.numDaysQuoteReminder1, + this.scheduleQuoteReminder1, + this.quoteLateFeeAmount1, + this.quoteLateFeePercent1}) : super._(); @override @@ -3598,7 +3695,14 @@ class _$SettingsEntity extends SettingsEntity { useUnappliedPayment == other.useUnappliedPayment && brevoSecret == other.brevoSecret && taskRoundUp == other.taskRoundUp && - taskRoundToNearest == other.taskRoundToNearest; + taskRoundToNearest == other.taskRoundToNearest && + emailBodyQuoteReminder1 == other.emailBodyQuoteReminder1 && + emailSubjectQuoteReminder1 == other.emailSubjectQuoteReminder1 && + enableQuoteReminder1 == other.enableQuoteReminder1 && + numDaysQuoteReminder1 == other.numDaysQuoteReminder1 && + scheduleQuoteReminder1 == other.scheduleQuoteReminder1 && + quoteLateFeeAmount1 == other.quoteLateFeeAmount1 && + quoteLateFeePercent1 == other.quoteLateFeePercent1; } int? __hashCode; @@ -3837,6 +3941,13 @@ class _$SettingsEntity extends SettingsEntity { _$hash = $jc(_$hash, brevoSecret.hashCode); _$hash = $jc(_$hash, taskRoundUp.hashCode); _$hash = $jc(_$hash, taskRoundToNearest.hashCode); + _$hash = $jc(_$hash, emailBodyQuoteReminder1.hashCode); + _$hash = $jc(_$hash, emailSubjectQuoteReminder1.hashCode); + _$hash = $jc(_$hash, enableQuoteReminder1.hashCode); + _$hash = $jc(_$hash, numDaysQuoteReminder1.hashCode); + _$hash = $jc(_$hash, scheduleQuoteReminder1.hashCode); + _$hash = $jc(_$hash, quoteLateFeeAmount1.hashCode); + _$hash = $jc(_$hash, quoteLateFeePercent1.hashCode); _$hash = $jf(_$hash); return __hashCode ??= _$hash; } @@ -4079,7 +4190,14 @@ class _$SettingsEntity extends SettingsEntity { ..add('useUnappliedPayment', useUnappliedPayment) ..add('brevoSecret', brevoSecret) ..add('taskRoundUp', taskRoundUp) - ..add('taskRoundToNearest', taskRoundToNearest)) + ..add('taskRoundToNearest', taskRoundToNearest) + ..add('emailBodyQuoteReminder1', emailBodyQuoteReminder1) + ..add('emailSubjectQuoteReminder1', emailSubjectQuoteReminder1) + ..add('enableQuoteReminder1', enableQuoteReminder1) + ..add('numDaysQuoteReminder1', numDaysQuoteReminder1) + ..add('scheduleQuoteReminder1', scheduleQuoteReminder1) + ..add('quoteLateFeeAmount1', quoteLateFeeAmount1) + ..add('quoteLateFeePercent1', quoteLateFeePercent1)) .toString(); } } @@ -5227,6 +5345,41 @@ class SettingsEntityBuilder set taskRoundToNearest(int? taskRoundToNearest) => _$this._taskRoundToNearest = taskRoundToNearest; + String? _emailBodyQuoteReminder1; + String? get emailBodyQuoteReminder1 => _$this._emailBodyQuoteReminder1; + set emailBodyQuoteReminder1(String? emailBodyQuoteReminder1) => + _$this._emailBodyQuoteReminder1 = emailBodyQuoteReminder1; + + String? _emailSubjectQuoteReminder1; + String? get emailSubjectQuoteReminder1 => _$this._emailSubjectQuoteReminder1; + set emailSubjectQuoteReminder1(String? emailSubjectQuoteReminder1) => + _$this._emailSubjectQuoteReminder1 = emailSubjectQuoteReminder1; + + bool? _enableQuoteReminder1; + bool? get enableQuoteReminder1 => _$this._enableQuoteReminder1; + set enableQuoteReminder1(bool? enableQuoteReminder1) => + _$this._enableQuoteReminder1 = enableQuoteReminder1; + + int? _numDaysQuoteReminder1; + int? get numDaysQuoteReminder1 => _$this._numDaysQuoteReminder1; + set numDaysQuoteReminder1(int? numDaysQuoteReminder1) => + _$this._numDaysQuoteReminder1 = numDaysQuoteReminder1; + + String? _scheduleQuoteReminder1; + String? get scheduleQuoteReminder1 => _$this._scheduleQuoteReminder1; + set scheduleQuoteReminder1(String? scheduleQuoteReminder1) => + _$this._scheduleQuoteReminder1 = scheduleQuoteReminder1; + + double? _quoteLateFeeAmount1; + double? get quoteLateFeeAmount1 => _$this._quoteLateFeeAmount1; + set quoteLateFeeAmount1(double? quoteLateFeeAmount1) => + _$this._quoteLateFeeAmount1 = quoteLateFeeAmount1; + + double? _quoteLateFeePercent1; + double? get quoteLateFeePercent1 => _$this._quoteLateFeePercent1; + set quoteLateFeePercent1(double? quoteLateFeePercent1) => + _$this._quoteLateFeePercent1 = quoteLateFeePercent1; + SettingsEntityBuilder(); SettingsEntityBuilder get _$this { @@ -5463,6 +5616,13 @@ class SettingsEntityBuilder _brevoSecret = $v.brevoSecret; _taskRoundUp = $v.taskRoundUp; _taskRoundToNearest = $v.taskRoundToNearest; + _emailBodyQuoteReminder1 = $v.emailBodyQuoteReminder1; + _emailSubjectQuoteReminder1 = $v.emailSubjectQuoteReminder1; + _enableQuoteReminder1 = $v.enableQuoteReminder1; + _numDaysQuoteReminder1 = $v.numDaysQuoteReminder1; + _scheduleQuoteReminder1 = $v.scheduleQuoteReminder1; + _quoteLateFeeAmount1 = $v.quoteLateFeeAmount1; + _quoteLateFeePercent1 = $v.quoteLateFeePercent1; _$v = null; } return this; @@ -5718,7 +5878,14 @@ class SettingsEntityBuilder useUnappliedPayment: useUnappliedPayment, brevoSecret: brevoSecret, taskRoundUp: taskRoundUp, - taskRoundToNearest: taskRoundToNearest); + taskRoundToNearest: taskRoundToNearest, + emailBodyQuoteReminder1: emailBodyQuoteReminder1, + emailSubjectQuoteReminder1: emailSubjectQuoteReminder1, + enableQuoteReminder1: enableQuoteReminder1, + numDaysQuoteReminder1: numDaysQuoteReminder1, + scheduleQuoteReminder1: scheduleQuoteReminder1, + quoteLateFeeAmount1: quoteLateFeeAmount1, + quoteLateFeePercent1: quoteLateFeePercent1); } catch (_) { late String _$failedField; try { diff --git a/lib/data/models/webhook_model.dart b/lib/data/models/webhook_model.dart index 083027c1e6..6ed0c7b852 100644 --- a/lib/data/models/webhook_model.dart +++ b/lib/data/models/webhook_model.dart @@ -136,6 +136,7 @@ abstract class WebhookEntity extends Object static const EVENT_SENT_QUOTE = '61'; static const EVENT_SENT_CREDIT = '62'; static const EVENT_SENT_PURCHASE_ORDER = '63'; + static const EVENT_REMIND_QUOTE = '64'; static const EVENT_MAP = { EVENT_CREATE_CLIENT: 'create_client', @@ -156,6 +157,7 @@ abstract class WebhookEntity extends Object EVENT_UPDATE_QUOTE: 'update_quote', EVENT_APPROVE_QUOTE: 'approve_quote', EVENT_EXPIRED_QUOTE: 'expired_quote', + EVENT_REMIND_QUOTE: 'remind_quote', EVENT_ARCHIVE_QUOTE: 'archive_quote', EVENT_RESTORE_QUOTE: 'restore_quote', EVENT_DELETE_QUOTE: 'delete_quote', diff --git a/lib/ui/settings/templates_and_reminders.dart b/lib/ui/settings/templates_and_reminders.dart index 28e39778cb..89ee2e8d1c 100644 --- a/lib/ui/settings/templates_and_reminders.dart +++ b/lib/ui/settings/templates_and_reminders.dart @@ -252,6 +252,10 @@ class _TemplatesAndRemindersState extends State settings = settings.rebuild((b) => b ..emailBodyPurchaseOrder = body ..emailSubjectPurchaseOrder = subject); + } else if (_selectedTemplate == EmailTemplate.quote_reminder1) { + settings = settings.rebuild((b) => b + ..emailBodyQuoteReminder1 = body + ..emailSubjectQuoteReminder1 = subject); } if (settings != widget.viewModel.settings) { @@ -372,7 +376,10 @@ class _TemplatesAndRemindersState extends State ].contains(value) && !company.isModuleEnabled(EntityType.invoice)) { return false; - } else if (value == EmailTemplate.quote && + } else if ([ + EmailTemplate.quote, + EmailTemplate.quote_reminder1, + ].contains(value) && !company.isModuleEnabled(EntityType.quote)) { return false; } else if (value == EmailTemplate.credit && @@ -483,6 +490,26 @@ class _TemplatesAndRemindersState extends State ..lateFeeAmount3 = feeAmount ..lateFeePercent3 = feePercent)); }), + if (template == EmailTemplate.quote_reminder1) + ReminderSettings( + key: ValueKey('__quote_reminder1_${template}__'), + isQuote: true, + viewModel: viewModel, + enabled: settings.enableQuoteReminder1, + numDays: settings.numDaysQuoteReminder1, + schedule: settings.scheduleQuoteReminder1, + feeAmount: settings.quoteLateFeeAmount1, + feePercent: settings.quoteLateFeePercent1, + onChanged: + (enabled, days, schedule, feeAmount, feePercent) { + _updateReminders = true; + viewModel.onSettingsChanged(settings.rebuild((b) => b + ..enableQuoteReminder1 = enabled + ..numDaysQuoteReminder1 = days + ..scheduleQuoteReminder1 = schedule + ..quoteLateFeeAmount1 = feeAmount + ..quoteLateFeePercent1 = feePercent)); + }), if (template == EmailTemplate.reminder_endless) FormCard( children: [ @@ -596,6 +623,7 @@ class ReminderSettings extends StatefulWidget { required this.numDays, required this.feeAmount, required this.feePercent, + this.isQuote = false, }) : super(key: key); final TemplatesAndRemindersVM viewModel; @@ -604,6 +632,7 @@ class ReminderSettings extends StatefulWidget { final double? feeAmount; final double? feePercent; final String? schedule; + final bool isQuote; final Function(bool?, int?, String?, double?, double?) onChanged; @override @@ -696,20 +725,35 @@ class _ReminderSettingsState extends State { _schedule = value; _onChanged(); }, - items: [ - DropdownMenuItem( - child: Text(localization.afterInvoiceDate), - value: kReminderScheduleAfterInvoiceDate, - ), - DropdownMenuItem( - child: Text(localization.beforeDueDate), - value: kReminderScheduleBeforeDueDate, - ), - DropdownMenuItem( - child: Text(localization.afterDueDate), - value: kReminderScheduleAfterDueDate, - ), - ], + items: widget.isQuote + ? [ + DropdownMenuItem( + child: Text(localization.afterQuoteDate), + value: kQuoteReminderScheduleAfterQuoteDate, + ), + DropdownMenuItem( + child: Text(localization.beforeValidUntil), + value: kQuoteReminderScheduleBeforeValidUntil, + ), + DropdownMenuItem( + child: Text(localization.afterValidUntil), + value: kQuoteReminderScheduleAfterValidUntil, + ), + ] + : [ + DropdownMenuItem( + child: Text(localization.afterInvoiceDate), + value: kReminderScheduleAfterInvoiceDate, + ), + DropdownMenuItem( + child: Text(localization.beforeDueDate), + value: kReminderScheduleBeforeDueDate, + ), + DropdownMenuItem( + child: Text(localization.afterDueDate), + value: kReminderScheduleAfterDueDate, + ), + ], ), Padding( padding: const EdgeInsets.symmetric(vertical: 10), diff --git a/lib/utils/i18n.dart b/lib/utils/i18n.dart index 31d5077e76..c65be9c294 100644 --- a/lib/utils/i18n.dart +++ b/lib/utils/i18n.dart @@ -18,8 +18,14 @@ mixin LocalizationsProvider on LocaleCodeAware { static final Map> _localizedValues = { 'en': { // STARTER: lang key - do not remove comment + 'quote_reminder1': 'First Quote Reminder', + 'before_valid_until': 'Before the valid until', + 'after_valid_until': 'After the valid until', + 'after_quote_date': 'After the quote date', + 'remind_quote': 'Remind Quote', 'task_assigned_notification': 'Task Assigned Notification', - 'task_assigned_notification_help': 'Send an email when a task is assigned', + 'task_assigned_notification_help': + 'Send an email when a task is assigned', 'invoices_locked_end_of_month': 'Invoices are locked at the end of the month', 'end_of_month': 'End of Month', @@ -115557,6 +115563,18 @@ mixin LocalizationsProvider on LocaleCodeAware { _localizedValues[localeCode]!['task_assigned_notification_help'] ?? _localizedValues['en']!['task_assigned_notification_help']!; + String get beforeValidUntil => + _localizedValues[localeCode]!['before_valid_until'] ?? + _localizedValues['en']!['before_valid_until']!; + + String get afterValidUntil => + _localizedValues[localeCode]!['after_valid_until'] ?? + _localizedValues['en']!['after_valid_until']!; + + String get afterQuoteDate => + _localizedValues[localeCode]!['after_quote_date'] ?? + _localizedValues['en']!['after_quote_date']!; + // STARTER: lang field - do not remove comment String lookup(String? key, {String? overrideLocaleCode}) { diff --git a/pubspec.foss.yaml b/pubspec.foss.yaml index cd6fcd9881..c483f21dbe 100644 --- a/pubspec.foss.yaml +++ b/pubspec.foss.yaml @@ -1,6 +1,6 @@ name: invoiceninja_flutter description: Client for Invoice Ninja -version: 5.0.160+160 +version: 5.0.161+161 homepage: https://invoiceninja.com documentation: https://invoiceninja.github.io publish_to: none diff --git a/pubspec.yaml b/pubspec.yaml index 5fcfbda009..f1effba48d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: invoiceninja_flutter description: Client for Invoice Ninja -version: 5.0.160+160 +version: 5.0.161+161 homepage: https://invoiceninja.com documentation: https://invoiceninja.github.io publish_to: none diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index a3cd879e0c..107e7f933f 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -1,5 +1,5 @@ name: invoiceninja -version: '5.0.160' +version: '5.0.161' summary: Create invoices, accept payments, track expenses & time tasks description: "### Note: if the app fails to run using `snap run invoiceninja` it may help to run `/snap/invoiceninja/current/bin/invoiceninja` instead diff --git a/starter.sh b/starter.sh index 2345572756..52b0761613 100644 --- a/starter.sh +++ b/starter.sh @@ -450,7 +450,7 @@ else flutter packages pub run build_runner build --delete-conflicting-outputs echo "Clean up" - flutter dartfmt lib + dart format lib fi echo "Successfully completed" \ No newline at end of file