diff --git a/android/app/build.gradle.dev b/android/app/build.gradle.dev index 5cf193b971f..09bdac86256 100644 --- a/android/app/build.gradle.dev +++ b/android/app/build.gradle.dev @@ -45,7 +45,7 @@ android { defaultConfig { applicationId "com.invoiceninja.app" minSdkVersion 19 - targetSdkVersion 31 + targetSdkVersion 33 versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/android/app/build.gradle.prod b/android/app/build.gradle.prod index 2d92997eb87..bf0e56224c0 100644 --- a/android/app/build.gradle.prod +++ b/android/app/build.gradle.prod @@ -50,7 +50,7 @@ android { defaultConfig { applicationId "com.invoiceninja.app" minSdkVersion 19 - targetSdkVersion 31 + targetSdkVersion 33 versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/lib/redux/app/app_middleware.dart b/lib/redux/app/app_middleware.dart index 82a22a0051a..7779acc7c80 100644 --- a/lib/redux/app/app_middleware.dart +++ b/lib/redux/app/app_middleware.dart @@ -563,9 +563,10 @@ Middleware _createViewMainScreen() { final action = dynamicAction as ViewMainScreen; if (store.state.uiState.currentRoute == LoginScreen.route) { - store.dispatch(UpdateCurrentRoute(store.state.userCompany.canViewDashboard - ? DashboardScreenBuilder.route - : ClientScreen.route)); + store.dispatch(UpdateCurrentRoute( + store.state.userCompany.canViewDashboard || store.state.isDemo + ? DashboardScreenBuilder.route + : ClientScreen.route)); } while (navigatorKey.currentState.canPop()) { diff --git a/lib/ui/app/menu_drawer.dart b/lib/ui/app/menu_drawer.dart index c9831905212..43a1537453e 100644 --- a/lib/ui/app/menu_drawer.dart +++ b/lib/ui/app/menu_drawer.dart @@ -81,11 +81,12 @@ class _MenuDrawerState extends State { return Container(); } - Widget _companyLogo(CompanyEntity company) => company - .settings.companyLogo != - null && - company.settings.companyLogo.isNotEmpty - ? CachedImage( + Widget _companyLogo(CompanyEntity company) { + if (company.settings.companyLogo != null && + company.settings.companyLogo.isNotEmpty) { + if (state.isHosted && kIsWeb) { + // Fix for CORS error using 'object' subdomain + return CachedImage( width: MenuDrawer.LOGO_WIDTH, url: state.credentials.url + '/companies/' + company.id + '/logo', apiToken: state.userCompanyStates @@ -93,8 +94,18 @@ class _MenuDrawerState extends State { userCompanyState.company.id == company.id) .token .token, - ) - : Image.asset('assets/images/icon.png', width: MenuDrawer.LOGO_WIDTH); + ); + } else { + return CachedImage( + width: MenuDrawer.LOGO_WIDTH, + url: company.settings.companyLogo, + ); + } + } else { + return Image.asset('assets/images/icon.png', + width: MenuDrawer.LOGO_WIDTH); + } + } Widget _companyListItem( CompanyEntity company, { diff --git a/lib/ui/settings/company_details.dart b/lib/ui/settings/company_details.dart index 92bcafad0cf..e950aeeecc2 100644 --- a/lib/ui/settings/company_details.dart +++ b/lib/ui/settings/company_details.dart @@ -1,4 +1,5 @@ // Flutter imports: +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_redux/flutter_redux.dart'; import 'package:invoiceninja_flutter/constants.dart'; @@ -572,14 +573,20 @@ class _CompanyDetailsState extends State if ('${settings.companyLogo ?? ''}'.isNotEmpty) Padding( padding: const EdgeInsets.symmetric(vertical: 20), - child: CachedImage( - width: double.infinity, - url: state.credentials.url + - '/companies/' + - company.id + - '/logo', - apiToken: state.userCompany.token.token, - )), + // Fix for CORS error using 'object' subdomain + child: (state.isHosted && kIsWeb) + ? CachedImage( + width: double.infinity, + url: state.credentials.url + + '/companies/' + + company.id + + '/logo', + apiToken: state.userCompany.token.token, + ) + : CachedImage( + width: double.infinity, + url: company.settings.companyLogo, + )), ], ), ), diff --git a/lib/utils/i18n.dart b/lib/utils/i18n.dart index c52714d6c69..1c1eac83769 100644 --- a/lib/utils/i18n.dart +++ b/lib/utils/i18n.dart @@ -18,6 +18,8 @@ mixin LocalizationsProvider on LocaleCodeAware { static final Map> _localizedValues = { 'en': { // STARTER: lang key - do not remove comment + 'expense_status_4': 'Unpaid', + 'expense_status_5': 'Paid', 'recurring': 'Recurring', 'ziptax_help': 'Note: this feature requires a Zip-Tax API key to lookup US sales tax by address',