Null safety

This commit is contained in:
Hillel Coren 2023-10-01 14:05:54 +03:00
parent b72967a3cf
commit 4adf979cb6
5 changed files with 69 additions and 66 deletions

View File

@ -15,18 +15,18 @@ import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart';
EntityUIState clientUIReducer(ClientUIState state, dynamic action) { EntityUIState clientUIReducer(ClientUIState state, dynamic action) {
return state.rebuild((b) => b return state.rebuild(
..listUIState.replace(clientListReducer(state.listUIState, action)) (b) => b
..editing.replace(editingReducer(state.editing, action)!) ..listUIState.replace(clientListReducer(state.listUIState, action))
..editingContact ..editing.replace(editingReducer(state.editing, action)!)
.replace(editingContactReducer(state.editingContact, action)!) ..editingContact
..selectedId = selectedIdReducer(state.selectedId, action) .replace(editingContactReducer(state.editingContact, action)!)
..forceSelected = forceSelectedReducer(state.forceSelected, action) ..selectedId = selectedIdReducer(state.selectedId, action)
..tabIndex = tabIndexReducer(state.tabIndex, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action)
..saveCompleter = saveCompleterReducer(state.saveCompleter, action) ..tabIndex = tabIndexReducer(state.tabIndex, action)
..cancelCompleter = cancelCompleterReducer( ..saveCompleter = saveCompleterReducer(state.saveCompleter, action)
state.cancelCompleter as Completer<SelectableEntity>?, action) ..cancelCompleter = cancelCompleterReducer(state.cancelCompleter, action),
as Completer<Null>?); );
} }
final forceSelectedReducer = combineReducers<bool?>([ final forceSelectedReducer = combineReducers<bool?>([
@ -55,9 +55,9 @@ final saveCompleterReducer = combineReducers<Completer<SelectableEntity>?>([
}), }),
]); ]);
final cancelCompleterReducer = combineReducers<Completer<SelectableEntity>?>([ final cancelCompleterReducer = combineReducers<Completer<Null>?>([
TypedReducer<Completer<SelectableEntity>?, EditClient>((completer, action) { TypedReducer<Completer<Null>?, EditClient>((completer, action) {
return action.cancelCompleter as Completer<SelectableEntity>?; return action.cancelCompleter as Completer<Null>?;
}), }),
]); ]);
@ -137,7 +137,8 @@ final editingReducer = combineReducers<ClientEntity?>([
}), }),
TypedReducer<ClientEntity?, UpdateContact>((client, action) { TypedReducer<ClientEntity?, UpdateContact>((client, action) {
return client!.rebuild((b) => b return client!.rebuild((b) => b
..contacts[action.index] = action.contact..isChanged = true); ..contacts[action.index] = action.contact
..isChanged = true);
}), }),
TypedReducer<ClientEntity?, ViewClient>((client, action) { TypedReducer<ClientEntity?, ViewClient>((client, action) {
return ClientEntity(); return ClientEntity();

View File

@ -15,15 +15,16 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart';
EntityUIState expenseCategoryUIReducer( EntityUIState expenseCategoryUIReducer(
ExpenseCategoryUIState state, dynamic action) { ExpenseCategoryUIState state, dynamic action) {
return state.rebuild((b) => b return state.rebuild(
..listUIState.replace(expenseCategoryListReducer(state.listUIState, action)) (b) => b
..editing.replace(editingReducer(state.editing, action)!) ..listUIState
..selectedId = selectedIdReducer(state.selectedId, action) .replace(expenseCategoryListReducer(state.listUIState, action))
..forceSelected = forceSelectedReducer(state.forceSelected, action) ..editing.replace(editingReducer(state.editing, action)!)
..saveCompleter = saveCompleterReducer(state.saveCompleter, action) ..selectedId = selectedIdReducer(state.selectedId, action)
..cancelCompleter = cancelCompleterReducer( ..forceSelected = forceSelectedReducer(state.forceSelected, action)
state.cancelCompleter as Completer<SelectableEntity>?, action) ..saveCompleter = saveCompleterReducer(state.saveCompleter, action)
as Completer<Null>?); ..cancelCompleter = cancelCompleterReducer(state.cancelCompleter, action),
);
} }
final saveCompleterReducer = combineReducers<Completer<SelectableEntity>?>([ final saveCompleterReducer = combineReducers<Completer<SelectableEntity>?>([
@ -33,10 +34,9 @@ final saveCompleterReducer = combineReducers<Completer<SelectableEntity>?>([
}), }),
]); ]);
final cancelCompleterReducer = combineReducers<Completer<SelectableEntity>?>([ final cancelCompleterReducer = combineReducers<Completer<Null>?>([
TypedReducer<Completer<SelectableEntity>?, EditExpenseCategory>( TypedReducer<Completer<Null>?, EditExpenseCategory>((completer, action) {
(completer, action) { return action.cancelCompleter as Completer<Null>?;
return action.cancelCompleter as Completer<SelectableEntity>?;
}), }),
]); ]);

View File

@ -16,16 +16,16 @@ import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart';
EntityUIState projectUIReducer(ProjectUIState state, dynamic action) { EntityUIState projectUIReducer(ProjectUIState state, dynamic action) {
return state.rebuild((b) => b return state.rebuild(
..listUIState.replace(projectListReducer(state.listUIState, action)) (b) => b
..editing.replace(editingReducer(state.editing, action)!) ..listUIState.replace(projectListReducer(state.listUIState, action))
..selectedId = selectedIdReducer(state.selectedId, action) ..editing.replace(editingReducer(state.editing, action)!)
..forceSelected = forceSelectedReducer(state.forceSelected, action) ..selectedId = selectedIdReducer(state.selectedId, action)
..tabIndex = tabIndexReducer(state.tabIndex, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action)
..saveCompleter = saveCompleterReducer(state.saveCompleter, action) ..tabIndex = tabIndexReducer(state.tabIndex, action)
..cancelCompleter = cancelCompleterReducer( ..saveCompleter = saveCompleterReducer(state.saveCompleter, action)
state.cancelCompleter as Completer<SelectableEntity>?, action) ..cancelCompleter = cancelCompleterReducer(state.cancelCompleter, action),
as Completer<Null>?); );
} }
final forceSelectedReducer = combineReducers<bool?>([ final forceSelectedReducer = combineReducers<bool?>([
@ -54,9 +54,9 @@ final saveCompleterReducer = combineReducers<Completer<SelectableEntity>?>([
}), }),
]); ]);
final cancelCompleterReducer = combineReducers<Completer<SelectableEntity>?>([ final cancelCompleterReducer = combineReducers<Completer<Null>?>([
TypedReducer<Completer<SelectableEntity>?, EditProject>((completer, action) { TypedReducer<Completer<Null>?, EditProject>((completer, action) {
return action.cancelCompleter as Completer<SelectableEntity>?; return action.cancelCompleter as Completer<Null>?;
}), }),
]); ]);

View File

@ -15,18 +15,18 @@ import 'package:invoiceninja_flutter/redux/vendor/vendor_actions.dart';
import 'package:invoiceninja_flutter/redux/vendor/vendor_state.dart'; import 'package:invoiceninja_flutter/redux/vendor/vendor_state.dart';
EntityUIState vendorUIReducer(VendorUIState state, dynamic action) { EntityUIState vendorUIReducer(VendorUIState state, dynamic action) {
return state.rebuild((b) => b return state.rebuild(
..listUIState.replace(vendorListReducer(state.listUIState, action)) (b) => b
..editing.replace(editingReducer(state.editing, action)!) ..listUIState.replace(vendorListReducer(state.listUIState, action))
..editingContact ..editing.replace(editingReducer(state.editing, action)!)
.replace(editingVendorContactReducer(state.editingContact, action)!) ..editingContact
..selectedId = selectedIdReducer(state.selectedId, action) .replace(editingVendorContactReducer(state.editingContact, action)!)
..forceSelected = forceSelectedReducer(state.forceSelected, action) ..selectedId = selectedIdReducer(state.selectedId, action)
..tabIndex = tabIndexReducer(state.tabIndex, action) ..forceSelected = forceSelectedReducer(state.forceSelected, action)
..saveCompleter = saveCompleterReducer(state.saveCompleter, action) ..tabIndex = tabIndexReducer(state.tabIndex, action)
..cancelCompleter = cancelCompleterReducer( ..saveCompleter = saveCompleterReducer(state.saveCompleter, action)
state.cancelCompleter as Completer<SelectableEntity>?, action) ..cancelCompleter = cancelCompleterReducer(state.cancelCompleter, action),
as Completer<Null>?); );
} }
final forceSelectedReducer = combineReducers<bool?>([ final forceSelectedReducer = combineReducers<bool?>([
@ -55,9 +55,9 @@ final saveCompleterReducer = combineReducers<Completer<SelectableEntity>?>([
}), }),
]); ]);
final cancelCompleterReducer = combineReducers<Completer<SelectableEntity>?>([ final cancelCompleterReducer = combineReducers<Completer<Null>?>([
TypedReducer<Completer<SelectableEntity>?, EditVendor>((completer, action) { TypedReducer<Completer<Null>?, EditVendor>((completer, action) {
return action.cancelCompleter as Completer<SelectableEntity>?; return action.cancelCompleter as Completer<Null>?;
}), }),
]); ]);
@ -141,7 +141,8 @@ VendorEntity _removeContact(VendorEntity? vendor, DeleteVendorContact action) {
VendorEntity _updateContact(VendorEntity? vendor, UpdateVendorContact action) { VendorEntity _updateContact(VendorEntity? vendor, UpdateVendorContact action) {
return vendor!.rebuild((b) => b return vendor!.rebuild((b) => b
..contacts[action.index] = action.contact..isChanged = true); ..contacts[action.index] = action.contact
..isChanged = true);
} }
final vendorListReducer = combineReducers<ListUIState>([ final vendorListReducer = combineReducers<ListUIState>([

View File

@ -126,14 +126,15 @@ class InvoiceEditDetailsVM extends EntityEditDetailsVM {
}, },
onAddClientPressed: (context, completer) { onAddClientPressed: (context, completer) {
createEntity( createEntity(
context: context, context: context,
entity: ClientEntity(state: state), entity: ClientEntity(state: state),
force: true, force: true,
completer: completer, completer: completer,
cancelCompleter: Completer<Null>() cancelCompleter: Completer<Null>()
..future.then<Null>((_) { ..future.then<Null>((_) {
store.dispatch(UpdateCurrentRoute(InvoiceEditScreen.route)); store.dispatch(UpdateCurrentRoute(InvoiceEditScreen.route));
})); }),
);
completer.future.then((SelectableEntity client) { completer.future.then((SelectableEntity client) {
store.dispatch(UpdateCurrentRoute(InvoiceEditScreen.route)); store.dispatch(UpdateCurrentRoute(InvoiceEditScreen.route));
}); });