From 9ebaf1ce9250b0ae9f1db17e5386f5a24f32222d Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 4 Aug 2020 10:20:35 +0300 Subject: [PATCH] Bug: archive group from group view screen/shows blank group --- lib/data/models/entities.dart | 2 +- lib/ui/app/blank_screen.dart | 24 +++++++++++++++++++++ lib/ui/app/entities/entity_state_title.dart | 10 ++++++--- lib/ui/app/main_screen.dart | 23 +------------------- lib/ui/app/view_scaffold.dart | 18 ++++++++++------ 5 files changed, 45 insertions(+), 32 deletions(-) create mode 100644 lib/ui/app/blank_screen.dart diff --git a/lib/data/models/entities.dart b/lib/data/models/entities.dart index 1fa2a61ea..e0b6044a6 100644 --- a/lib/data/models/entities.dart +++ b/lib/data/models/entities.dart @@ -254,7 +254,7 @@ abstract class BaseEntity implements SelectableEntity { String get entityKey => '__${entityType}__${id}__'; - bool get isNew => id == null || (int.tryParse(id) ?? 0) < 0; + bool get isNew => (id ?? '').isEmpty || (int.tryParse(id) ?? 0) < 0; bool get isOld => !isNew; diff --git a/lib/ui/app/blank_screen.dart b/lib/ui/app/blank_screen.dart new file mode 100644 index 000000000..708c6bbd8 --- /dev/null +++ b/lib/ui/app/blank_screen.dart @@ -0,0 +1,24 @@ +import 'package:flutter/material.dart'; +import 'package:invoiceninja_flutter/ui/app/help_text.dart'; +import 'package:invoiceninja_flutter/utils/platforms.dart'; + +class BlankScreen extends StatelessWidget { + const BlankScreen([this.message]); + + final String message; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + centerTitle: false, + automaticallyImplyLeading: isMobile(context), + ), + body: Container( + color: Theme.of(context).cardColor, + child: HelpText(message ?? ''), + ), + ); + } +} + diff --git a/lib/ui/app/entities/entity_state_title.dart b/lib/ui/app/entities/entity_state_title.dart index 919b68a7e..c32dee67b 100644 --- a/lib/ui/app/entities/entity_state_title.dart +++ b/lib/ui/app/entities/entity_state_title.dart @@ -10,9 +10,13 @@ class EntityStateTitle extends StatelessWidget { @override Widget build(BuildContext context) { final localization = AppLocalization.of(context); - final titleText = localization.lookup('${entity.entityType}') + - ' › ' + - entity.listDisplayName; + + String titleText = ''; + if (entity.isOld) { + titleText = localization.lookup('${entity.entityType}') + + ' › ' + + entity.listDisplayName; + } return Text( titleText, diff --git a/lib/ui/app/main_screen.dart b/lib/ui/app/main_screen.dart index 34b8b57ca..cc6e752e6 100644 --- a/lib/ui/app/main_screen.dart +++ b/lib/ui/app/main_screen.dart @@ -8,10 +8,10 @@ import 'package:invoiceninja_flutter/redux/dashboard/dashboard_actions.dart'; import 'package:invoiceninja_flutter/redux/reports/reports_actions.dart'; import 'package:invoiceninja_flutter/redux/settings/settings_actions.dart'; import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; +import 'package:invoiceninja_flutter/ui/app/blank_screen.dart'; import 'package:invoiceninja_flutter/ui/app/change_layout_banner.dart'; import 'package:invoiceninja_flutter/ui/app/history_drawer_vm.dart'; import 'package:invoiceninja_flutter/ui/app/menu_drawer_vm.dart'; -import 'package:invoiceninja_flutter/ui/app/help_text.dart'; import 'package:invoiceninja_flutter/ui/app/screen_imports.dart'; import 'package:invoiceninja_flutter/ui/credit/credit_email_vm.dart'; import 'package:invoiceninja_flutter/ui/credit/credit_screen.dart'; @@ -36,7 +36,6 @@ import 'package:invoiceninja_flutter/ui/webhook/edit/webhook_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/webhook/view/webhook_view_vm.dart'; import 'package:invoiceninja_flutter/ui/webhook/webhook_screen_vm.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; -import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:invoiceninja_flutter/ui/app/app_border.dart'; import 'package:redux/redux.dart'; @@ -629,26 +628,6 @@ class EntityScreens extends StatelessWidget { } } -class BlankScreen extends StatelessWidget { - const BlankScreen([this.message]); - - final String message; - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - centerTitle: false, - automaticallyImplyLeading: isMobile(context), - ), - body: Container( - color: Theme.of(context).cardColor, - child: HelpText(message ?? ''), - ), - ); - } -} - class _EntityFilter extends StatelessWidget { const _EntityFilter({@required this.show}); diff --git a/lib/ui/app/view_scaffold.dart b/lib/ui/app/view_scaffold.dart index 4db1036fa..662cad5e9 100644 --- a/lib/ui/app/view_scaffold.dart +++ b/lib/ui/app/view_scaffold.dart @@ -5,6 +5,7 @@ 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 'package:invoiceninja_flutter/ui/app/actions_menu_button.dart'; +import 'package:invoiceninja_flutter/ui/app/blank_screen.dart'; import 'package:invoiceninja_flutter/ui/app/entities/entity_state_title.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; @@ -37,12 +38,17 @@ class ViewScaffold extends StatelessWidget { final userCompany = state.userCompany; final isSettings = entity.entityType.isSetting; - String title = (entity.listDisplayName ?? '').isEmpty - ? localization.pending - : entity.listDisplayName; + String title; + if (entity.isNew) { + title = ''; + } else { + title = (entity.listDisplayName ?? '').isEmpty + ? localization.pending + : entity.listDisplayName; - if (!(isFilter ?? false)) { - title = localization.lookup('${entity.entityType}') + ' › ' + title; + if (!(isFilter ?? false)) { + title = localization.lookup('${entity.entityType}') + ' › ' + title; + } } Widget leading; @@ -107,7 +113,7 @@ class ViewScaffold extends StatelessWidget { ), ], ), - body: body, + body: entity.isNew ? BlankScreen(localization.noRecordSelected) : body, ), ); }