From 8c6dba446f6aedb4e3a69502fe3d638ce341dcdb Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Wed, 15 Jul 2020 14:32:57 +0300 Subject: [PATCH] Correct changing languages --- lib/data/repositories/auth_repository.dart | 10 +++++----- lib/redux/app/app_actions.dart | 2 ++ lib/redux/auth/auth_middleware.dart | 1 + lib/ui/settings/localization_vm.dart | 13 ++++++++++++- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/lib/data/repositories/auth_repository.dart b/lib/data/repositories/auth_repository.dart index 6b6bc6b0f..96264f701 100644 --- a/lib/data/repositories/auth_repository.dart +++ b/lib/data/repositories/auth_repository.dart @@ -100,16 +100,16 @@ class AuthRepository { } Future refresh( - {String url, String token, int updatedAt}) async { + {@required String url, + @required String token, + @required int updatedAt, + @required bool includeStatic}) async { url = formatApiUrl(url) + '/refresh'; - bool includeStatic = false; if (updatedAt > 0) { - // TODO re-enable this //url += '?updated_at=$updatedAt'; - - includeStatic = + includeStatic = includeStatic || DateTime.now().millisecondsSinceEpoch - (updatedAt * 1000) > kMillisecondsToRefreshStaticData; } else { diff --git a/lib/redux/app/app_actions.dart b/lib/redux/app/app_actions.dart index 08e98030f..a79a9356e 100644 --- a/lib/redux/app/app_actions.dart +++ b/lib/redux/app/app_actions.dart @@ -136,10 +136,12 @@ class RefreshData implements StartLoading { RefreshData({ this.completer, this.clearData = false, + this.includeStatic = false, }); final Completer completer; final bool clearData; + final bool includeStatic; } class ClearData {} diff --git a/lib/redux/auth/auth_middleware.dart b/lib/redux/auth/auth_middleware.dart index 3a66df2c2..edafab646 100644 --- a/lib/redux/auth/auth_middleware.dart +++ b/lib/redux/auth/auth_middleware.dart @@ -214,6 +214,7 @@ Middleware _createRefreshRequest(AuthRepository repository) { url: url, token: token, updatedAt: updatedAt - kUpdatedAtBufferSeconds, + includeStatic: action.includeStatic, ) .then((data) { if (action.clearData) { diff --git a/lib/ui/settings/localization_vm.dart b/lib/ui/settings/localization_vm.dart index 6ad016306..bc8dcd711 100644 --- a/lib/ui/settings/localization_vm.dart +++ b/lib/ui/settings/localization_vm.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_redux/flutter_redux.dart'; @@ -6,10 +8,12 @@ import 'package:invoiceninja_flutter/data/models/client_model.dart'; import 'package:invoiceninja_flutter/data/models/company_model.dart'; import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/data/models/group_model.dart'; +import 'package:invoiceninja_flutter/redux/app/app_actions.dart'; import 'package:invoiceninja_flutter/redux/client/client_actions.dart'; import 'package:invoiceninja_flutter/redux/company/company_actions.dart'; import 'package:invoiceninja_flutter/redux/group/group_actions.dart'; import 'package:invoiceninja_flutter/redux/settings/settings_actions.dart'; +import 'package:invoiceninja_flutter/ui/app/app_builder.dart'; import 'package:invoiceninja_flutter/ui/settings/localization_settings.dart'; import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; @@ -61,7 +65,14 @@ class LocalizationSettingsVM { switch (settingsUIState.entityType) { case EntityType.company: final completer = snackBarCompleter( - context, AppLocalization.of(context).savedSettings); + context, AppLocalization.of(context).savedSettings) + ..future.then((value) { + store.dispatch(RefreshData( + includeStatic: true, + completer: Completer() + ..future.then((dynamic value) => + AppBuilder.of(context).rebuild()))); + }); store.dispatch(SaveCompanyRequest( completer: completer, company: settingsUIState.company)); break;