This commit is contained in:
Hillel Coren 2019-10-06 16:12:52 +03:00
parent 635377cf5a
commit 141866fb89
9 changed files with 104 additions and 104 deletions

View File

@ -4,6 +4,7 @@ import 'package:invoiceninja_flutter/ui/app/form_card.dart';
import 'package:invoiceninja_flutter/ui/group/edit/group_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/group/edit/group_edit_vm.dart';
import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart'; import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
class GroupEdit extends StatefulWidget { class GroupEdit extends StatefulWidget {
const GroupEdit({ const GroupEdit({
@ -26,7 +27,6 @@ class _GroupEditState extends State<GroupEdit> {
@override @override
void didChangeDependencies() { void didChangeDependencies() {
_controllers = [ _controllers = [
// STARTER: array - do not remove comment // STARTER: array - do not remove comment
]; ];
@ -72,8 +72,8 @@ class _GroupEditState extends State<GroupEdit> {
return true; return true;
}, },
child: Scaffold( child: Scaffold(
automaticallyImplyLeading: isMobile(context),
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: isMobile(context),
title: Text(viewModel.group.isNew title: Text(viewModel.group.isNew
? localization.newGroup ? localization.newGroup
: localization.editGroup), : localization.editGroup),
@ -113,8 +113,7 @@ class _GroupEditState extends State<GroupEdit> {
), ),
], ],
); );
}) })),
),
), ),
); );
} }

View File

@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_redux/flutter_redux.dart'; import 'package:flutter_redux/flutter_redux.dart';
import 'package:invoiceninja_flutter/redux/ui/ui_actions.dart'; import 'package:invoiceninja_flutter/redux/ui/ui_actions.dart';
import 'package:invoiceninja_flutter/ui/group/group_screen.dart'; import 'package:invoiceninja_flutter/ui/group/group_screen.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart'; import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart';
@ -62,12 +63,13 @@ class GroupEditVM {
}, },
onBackPressed: () { onBackPressed: () {
if (state.uiState.currentRoute.contains(GroupScreen.route)) { if (state.uiState.currentRoute.contains(GroupScreen.route)) {
store.dispatch(UpdateCurrentRoute(group.isNew ? GroupScreen.route : GroupViewScreen.route)); store.dispatch(UpdateCurrentRoute(
group.isNew ? GroupScreen.route : GroupViewScreen.route));
} }
}, },
onCancelPressed: (BuildContext context) { onCancelPressed: (BuildContext context) {
store.dispatch(EditGroup( store.dispatch(
group: GroupEntity(), context: context, force: true)); EditGroup(group: GroupEntity(), context: context, force: true));
store.dispatch(UpdateCurrentRoute(state.uiState.previousRoute)); store.dispatch(UpdateCurrentRoute(state.uiState.previousRoute));
}, },
onSavePressed: (BuildContext context) { onSavePressed: (BuildContext context) {

View File

@ -2,12 +2,11 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart'; import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart';
import 'package:invoiceninja_flutter/ui/app/help_text.dart';
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart'; import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart'; import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
import 'package:invoiceninja_flutter/ui/group/group_list_item.dart'; import 'package:invoiceninja_flutter/ui/group/group_list_item.dart';
import 'package:invoiceninja_flutter/ui/group/group_list_vm.dart'; import 'package:invoiceninja_flutter/ui/group/group_list_vm.dart';
import 'package:invoiceninja_flutter/utils/icons.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class GroupList extends StatelessWidget { class GroupList extends StatelessWidget {
@ -30,7 +29,6 @@ class GroupList extends StatelessWidget {
return Column( return Column(
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: !viewModel.isLoaded child: !viewModel.isLoaded
? (viewModel.isLoading ? LoadingIndicator() : SizedBox()) ? (viewModel.isLoading ? LoadingIndicator() : SizedBox())
@ -53,13 +51,11 @@ class GroupList extends StatelessWidget {
user: user, user: user,
onEntityAction: viewModel.onEntityAction); onEntityAction: viewModel.onEntityAction);
return GroupListItem( return GroupListItem(
user: viewModel.user, user: viewModel.user,
filter: viewModel.filter, filter: viewModel.filter,
group: group, group: group,
onTap: () => onTap: () => viewModel.onGroupTap(context, group),
viewModel.onGroupTap(context, group),
onEntityAction: (EntityAction action) { onEntityAction: (EntityAction action) {
if (action == EntityAction.more) { if (action == EntityAction.more) {
showDialog(); showDialog();
@ -68,15 +64,13 @@ class GroupList extends StatelessWidget {
context, group, action); context, group, action);
} }
}, },
onLongPress: () => onLongPress: () => showDialog(),
showDialog(),
); );
}, },
), ),
), ),
), ),
/* /*
filteredClient != null filteredClient != null
? Material( ? Material(

View File

@ -1,4 +1,5 @@
import 'dart:async'; import 'dart:async';
import 'package:invoiceninja_flutter/data/models/group_model.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
@ -63,18 +64,16 @@ class GroupListVM {
return GroupListVM( return GroupListVM(
user: state.user, user: state.user,
listState: state.groupListState, listState: state.groupListState,
groupList: memoizedFilteredGroupList(state.groupState.map, groupList: memoizedFilteredGroupList(
state.groupState.list, state.groupListState), state.groupState.map, state.groupState.list, state.groupListState),
groupMap: state.groupState.map, groupMap: state.groupState.map,
isLoading: state.isLoading, isLoading: state.isLoading,
isLoaded: state.groupState.isLoaded, isLoaded: state.groupState.isLoaded,
filter: state.groupUIState.listUIState.filter, filter: state.groupUIState.listUIState.filter,
onClearEntityFilterPressed: () => onClearEntityFilterPressed: () => store.dispatch(FilterGroupsByEntity()),
store.dispatch(FilterGroupsByEntity()),
onViewEntityFilterPressed: (BuildContext context) => store.dispatch( onViewEntityFilterPressed: (BuildContext context) => store.dispatch(
ViewClient( ViewClient(
clientId: state.groupListState.filterEntityId, clientId: state.groupListState.filterEntityId, context: context)),
context: context)),
onGroupTap: (context, group) { onGroupTap: (context, group) {
store.dispatch(ViewGroup(groupId: group.id, context: context)); store.dispatch(ViewGroup(groupId: group.id, context: context));
}, },
@ -97,5 +96,4 @@ class GroupListVM {
final Function(BuildContext, GroupEntity, EntityAction) onEntityAction; final Function(BuildContext, GroupEntity, EntityAction) onEntityAction;
final Function onClearEntityFilterPressed; final Function onClearEntityFilterPressed;
final Function(BuildContext) onViewEntityFilterPressed; final Function(BuildContext) onViewEntityFilterPressed;
} }

View File

@ -15,6 +15,7 @@ mixin LocalizationsProvider on LocaleCodeAware {
static final Map<String, Map<String, String>> _localizedValues = { static final Map<String, Map<String, String>> _localizedValues = {
'en': { 'en': {
'new_group': 'New Group', 'new_group': 'New Group',
'edit_group': 'Edit Group',
'created_group': 'Successfully created group', 'created_group': 'Successfully created group',
'updated_group': 'Successfully updated group', 'updated_group': 'Successfully updated group',
'archived_group': 'Successfully archived group', 'archived_group': 'Successfully archived group',
@ -14706,6 +14707,8 @@ mixin LocalizationsProvider on LocaleCodeAware {
String get restoredGroup => _localizedValues[localeCode]['restored_group']; String get restoredGroup => _localizedValues[localeCode]['restored_group'];
String get editGroup => _localizedValues[localeCode]['edit_group'];
String lookup(String key) { String lookup(String key) {
final lookupKey = toSnakeCase(key); final lookupKey = toSnakeCase(key);
return _localizedValues[localeCode][lookupKey] ?? return _localizedValues[localeCode][lookupKey] ??

View File

@ -4,6 +4,7 @@ import 'package:invoiceninja_flutter/ui/app/form_card.dart';
import 'package:invoiceninja_flutter/ui/stub/edit/stub_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/stub/edit/stub_edit_vm.dart';
import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart'; import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
class StubEdit extends StatefulWidget { class StubEdit extends StatefulWidget {
const StubEdit({ const StubEdit({
@ -72,8 +73,8 @@ class _StubEditState extends State<StubEdit> {
return true; return true;
}, },
child: Scaffold( child: Scaffold(
automaticallyImplyLeading: isMobile(context),
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: isMobile(context),
title: Text(viewModel.stub.isNew title: Text(viewModel.stub.isNew
? localization.newStub ? localization.newStub
: localization.editStub), : localization.editStub),

View File

@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_redux/flutter_redux.dart'; import 'package:flutter_redux/flutter_redux.dart';
import 'package:invoiceninja_flutter/redux/ui/ui_actions.dart'; import 'package:invoiceninja_flutter/redux/ui/ui_actions.dart';
import 'package:invoiceninja_flutter/ui/stub/stub_screen.dart'; import 'package:invoiceninja_flutter/ui/stub/stub_screen.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart'; import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart';

View File

@ -4,6 +4,7 @@ import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart'; import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart';
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart'; import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart'; import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
import 'package:invoiceninja_flutter/ui/app/help_text.dart';
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart'; import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
import 'package:invoiceninja_flutter/ui/stub/stub_list_item.dart'; import 'package:invoiceninja_flutter/ui/stub/stub_list_item.dart';
import 'package:invoiceninja_flutter/ui/stub/stub_list_vm.dart'; import 'package:invoiceninja_flutter/ui/stub/stub_list_vm.dart';

View File

@ -1,4 +1,5 @@
import 'dart:async'; import 'dart:async';
import 'package:invoiceninja_flutter/data/models/stub_model.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';