import 'package:invoiceninja/constants.dart'; import 'package:invoiceninja/data/models/models.dart'; import 'package:built_value/built_value.dart'; import 'package:built_value/serializer.dart'; import 'package:built_collection/built_collection.dart'; import 'package:invoiceninja/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja/redux/ui/list_ui_state.dart'; part 'client_state.g.dart'; abstract class ClientState implements Built { @nullable int get lastUpdated; BuiltMap get map; BuiltList get list; factory ClientState() { return _$ClientState._( map: BuiltMap(), list: BuiltList(), ); } bool get isStale { if (! isLoaded) { return true; } return DateTime.now().millisecondsSinceEpoch - lastUpdated > kMillisecondsToRefreshData; } bool get isLoaded { return lastUpdated != null; } ClientState._(); static Serializer get serializer => _$clientStateSerializer; } abstract class ClientUIState extends Object with EntityUIState implements Built { @nullable ClientEntity get editing; @override bool get isCreatingNew => editing.isNew(); factory ClientUIState() { return _$ClientUIState._( listUIState: ListUIState(ClientFields.name), editing: ClientEntity(), dropdownFilter: '', ); } ClientUIState._(); static Serializer get serializer => _$clientUIStateSerializer; }