diff --git a/lib/ui/app/menu_drawer.dart b/lib/ui/app/menu_drawer.dart index f3fdf5912..4a9d75a15 100644 --- a/lib/ui/app/menu_drawer.dart +++ b/lib/ui/app/menu_drawer.dart @@ -1406,25 +1406,8 @@ void _showAbout(BuildContext context) async { ), ]); } else { - final json = jsonEncode(WidgetData( - url: formatApiUrl(state.authState.url), - companyId: state.account.defaultCompanyId, - dateRanges: Map.fromIterable(DateRange.values, - key: (dynamic item) => toSnakeCase('$item'), - value: (dynamic item) => - localization.lookup('$item')), - companies: { - for (var userCompany in state.userCompanyStates - .where((state) => state.company.hasName)) - userCompany.company.id: - WidgetCompany.fromUserCompany( - userCompanyState: userCompany, - staticState: state.staticState, - ) - })); - + final json = jsonEncode(WidgetData.fromState(state, localization)); print('## Set Widget Data: $json'); - await UserDefaults.setString( 'widget_data', json, 'group.com.invoiceninja.app'); await WidgetKit.reloadAllTimelines(); diff --git a/lib/ui/app/window_manager.dart b/lib/ui/app/window_manager.dart index ea06ad2b1..ac3d65690 100644 --- a/lib/ui/app/window_manager.dart +++ b/lib/ui/app/window_manager.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_redux/flutter_redux.dart'; import 'package:invoiceninja_flutter/constants.dart'; import 'package:invoiceninja_flutter/data/models/company_model.dart'; +import 'package:invoiceninja_flutter/data/models/dashboard_model.dart'; import 'package:invoiceninja_flutter/data/models/static/currency_model.dart'; import 'package:invoiceninja_flutter/main_app.dart'; import 'package:invoiceninja_flutter/redux/app/app_actions.dart'; @@ -12,7 +13,9 @@ import 'package:invoiceninja_flutter/redux/company/company_selectors.dart'; import 'package:invoiceninja_flutter/redux/company/company_state.dart'; import 'package:invoiceninja_flutter/redux/static/static_state.dart'; 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/strings.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:widget_kit_plugin/user_defaults/user_defaults.dart'; import 'package:widget_kit_plugin/widget_kit/widget_kit.dart'; @@ -104,6 +107,22 @@ class WidgetData { this.dateRanges, }); + WidgetData.fromState(AppState state, AppLocalization localization) + : url = formatApiUrl(state.authState.url), + companyId = state.account.defaultCompanyId, + companies = { + for (var userCompany in state.userCompanyStates + .where((state) => state.company.hasName)) + userCompany.company.id: WidgetCompany.fromUserCompany( + userCompanyState: userCompany, + staticState: state.staticState, + ) + }, + dateRanges = Map.fromIterable( + DateRange.values.where((value) => value != DateRange.custom), + key: (dynamic item) => toSnakeCase('$item'), + value: (dynamic item) => localization.lookup('$item')); + WidgetData.fromJson(Map json) : url = json['url'], companyId = json['company_id'], diff --git a/macos/DashboardWidget/DashboardWidget.swift b/macos/DashboardWidget/DashboardWidget.swift index c620503fe..788992ec5 100644 --- a/macos/DashboardWidget/DashboardWidget.swift +++ b/macos/DashboardWidget/DashboardWidget.swift @@ -165,7 +165,9 @@ struct Provider: IntentTimelineProvider { var dateComponents = calendar.dateComponents([.year, .month, .day], from: Date()) - if (dateRange == "today") { + if (dateRange == "all") { + start = calendar.date(byAdding: .year, value: -100, to: Date())! + } else if (dateRange == "today") { start = calendar.startOfDay(for: Date()) } else if (dateRange == "yesterday") { start = calendar.date(byAdding: .day, value: -1, to: Date())!