import 'package:built_collection/built_collection.dart'; import 'package:built_value/built_value.dart'; import 'package:built_value/serializer.dart'; import 'package:invoiceninja_flutter/data/models/company_model.dart'; import 'package:invoiceninja_flutter/redux/client/client_state.dart'; import 'package:invoiceninja_flutter/redux/dashboard/dashboard_state.dart'; import 'package:invoiceninja_flutter/redux/invoice/invoice_state.dart'; import 'package:invoiceninja_flutter/redux/product/product_state.dart'; import 'package:invoiceninja_flutter/ui/auth/login_vm.dart'; // STARTER: import - do not remove comment import 'package:invoiceninja_flutter/redux/document/document_state.dart'; import 'package:invoiceninja_flutter/redux/expense/expense_state.dart'; import 'package:invoiceninja_flutter/redux/vendor/vendor_state.dart'; import 'package:invoiceninja_flutter/redux/task/task_state.dart'; import 'package:invoiceninja_flutter/redux/project/project_state.dart'; import 'package:invoiceninja_flutter/redux/payment/payment_state.dart'; import 'package:invoiceninja_flutter/redux/quote/quote_state.dart'; part 'ui_state.g.dart'; abstract class UIState implements Built { factory UIState(CompanyEntity company, {bool enableDarkMode, bool requireAuthentication, AppLayout layout}) { return _$UIState._( selectedCompanyIndex: 0, layout: layout ?? AppLayout.mobile, currentRoute: LoginScreen.route, enableDarkMode: enableDarkMode ?? false, requireAuthentication: requireAuthentication ?? false, emailPayment: false, autoStartTasks: false, addDocumentsToInvoice: false, dashboardUIState: DashboardUIState(), productUIState: ProductUIState(), clientUIState: ClientUIState(), invoiceUIState: InvoiceUIState(), // STARTER: constructor - do not remove comment documentUIState: DocumentUIState(), expenseUIState: ExpenseUIState(), vendorUIState: VendorUIState(), taskUIState: TaskUIState(), projectUIState: ProjectUIState(), paymentUIState: PaymentUIState(), quoteUIState: QuoteUIState(), ); } UIState._(); AppLayout get layout; int get selectedCompanyIndex; String get currentRoute; bool get enableDarkMode; bool get requireAuthentication; bool get emailPayment; bool get autoStartTasks; bool get addDocumentsToInvoice; @nullable String get filter; DashboardUIState get dashboardUIState; ProductUIState get productUIState; ClientUIState get clientUIState; InvoiceUIState get invoiceUIState; // STARTER: properties - do not remove comment DocumentUIState get documentUIState; ExpenseUIState get expenseUIState; VendorUIState get vendorUIState; TaskUIState get taskUIState; ProjectUIState get projectUIState; PaymentUIState get paymentUIState; QuoteUIState get quoteUIState; static Serializer get serializer => _$uIStateSerializer; bool containsRoute(String route) => currentRoute.contains(route); } class AppLayout extends EnumClass { const AppLayout._(String name) : super(name); static Serializer get serializer => _$appLayoutSerializer; static const AppLayout mobile = _$mobile; static const AppLayout tablet = _$tablet; static const AppLayout desktop = _$desktop; static BuiltSet get values => _$values; static AppLayout valueOf(String name) => _$valueOf(name); }