Formatting

This commit is contained in:
Hillel Coren 2019-11-17 11:57:41 +02:00
parent c422ebd7bc
commit 758155131a
80 changed files with 230 additions and 225 deletions

View File

@ -424,4 +424,3 @@ const kPageSizes = [
'Letter',
'Tabloid',
];

View File

@ -46,8 +46,7 @@ class ClientRepository {
if (Config.DEMO_MODE) {
response = json.decode(kMockClients);
} else {
response =
await webClient.get(url, credentials.token);
response = await webClient.get(url, credentials.token);
}
final ClientListResponse clientResponse =

View File

@ -41,8 +41,7 @@ class DocumentRepository {
if (Config.DEMO_MODE) {
response = json.decode(kMockDocuments);
} else {
response =
await webClient.get(url, credentials.token);
response = await webClient.get(url, credentials.token);
}
final DocumentListResponse documentResponse =

View File

@ -43,8 +43,7 @@ class InvoiceRepository {
if (Config.DEMO_MODE) {
response = json.decode(kMockInvoices);
} else {
response =
await webClient.get(url, credentials.token);
response = await webClient.get(url, credentials.token);
}
final InvoiceListResponse invoiceResponse =

View File

@ -30,8 +30,7 @@ class PaymentRepository {
if (Config.DEMO_MODE) {
response = json.decode(kMockPayments);
} else {
response =
await webClient.get(url, credentials.token);
response = await webClient.get(url, credentials.token);
}
final PaymentListResponse paymentResponse =

View File

@ -120,7 +120,6 @@ Map<String, String> _getHeaders(String token) => {
};
void _checkResponse(http.Response response) {
if (Config.DEMO_MODE) {
throw 'Saving is not supported in the demo';
}

View File

@ -226,8 +226,7 @@ class InvoiceNinjaAppState extends State<InvoiceNinjaApp> {
final state = widget.store.state;
Intl.defaultLocale = localeSelector(state);
final localization = AppLocalization(Locale(Intl.defaultLocale));
final accentColor =
convertHexStringToColor(state.accentColor) ??
final accentColor = convertHexStringToColor(state.accentColor) ??
Colors.lightBlueAccent;
return MaterialApp(
supportedLocales: kLanguages

View File

@ -0,0 +1 @@

View File

@ -314,15 +314,18 @@ void handleClientAction(
break;
case EntityAction.restore:
store.dispatch(RestoreClientRequest(
snackBarCompleter<Null>(context, localization.restoredClient), clientIds));
snackBarCompleter<Null>(context, localization.restoredClient),
clientIds));
break;
case EntityAction.archive:
store.dispatch(ArchiveClientRequest(
snackBarCompleter<Null>(context, localization.archivedClient), clientIds));
snackBarCompleter<Null>(context, localization.archivedClient),
clientIds));
break;
case EntityAction.delete:
store.dispatch(DeleteClientRequest(
snackBarCompleter<Null>(context, localization.deletedClient), clientIds));
snackBarCompleter<Null>(context, localization.deletedClient),
clientIds));
break;
case EntityAction.toggleMultiselect:
if (!store.state.clientListState.isInMultiselect()) {

View File

@ -297,7 +297,8 @@ void handleExpenseAction(
break;
case EntityAction.delete:
store.dispatch(DeleteExpenseRequest(
snackBarCompleter<Null>(context, localization.deletedExpense), expenseIds));
snackBarCompleter<Null>(context, localization.deletedExpense),
expenseIds));
break;
case EntityAction.toggleMultiselect:
if (!store.state.expenseListState.isInMultiselect()) {

View File

@ -111,13 +111,12 @@ List<String> filteredExpensesSelector(
return list;
}
var memoizedExpenseStatsForVendor = memo2((String vendorId,
BuiltMap<String, ExpenseEntity> expenseMap) =>
var memoizedExpenseStatsForVendor = memo2(
(String vendorId, BuiltMap<String, ExpenseEntity> expenseMap) =>
expenseStatsForVendor(vendorId, expenseMap));
EntityStats expenseStatsForVendor(
String vendorId,
BuiltMap<String, ExpenseEntity> expenseMap) {
String vendorId, BuiltMap<String, ExpenseEntity> expenseMap) {
int countActive = 0;
int countArchived = 0;
expenseMap.forEach((expenseId, expense) {
@ -133,13 +132,12 @@ EntityStats expenseStatsForVendor(
return EntityStats(countActive: countActive, countArchived: countArchived);
}
var memoizedExpenseStatsForClient = memo2((String clientId,
BuiltMap<String, ExpenseEntity> expenseMap) =>
var memoizedExpenseStatsForClient = memo2(
(String clientId, BuiltMap<String, ExpenseEntity> expenseMap) =>
expenseStatsForClient(clientId, expenseMap));
EntityStats expenseStatsForClient(
String clientId,
BuiltMap<String, ExpenseEntity> expenseMap) {
String clientId, BuiltMap<String, ExpenseEntity> expenseMap) {
int countActive = 0;
int countArchived = 0;
expenseMap.forEach((expenseId, expense) {

View File

@ -242,7 +242,6 @@ class FilterGroupsByEntity implements PersistUI {
void handleGroupAction(
BuildContext context, List<BaseEntity> groups, EntityAction action) {
if (groups.isEmpty) {
return;
}
@ -267,15 +266,18 @@ void handleGroupAction(
break;
case EntityAction.restore:
store.dispatch(RestoreGroupRequest(
snackBarCompleter<Null>(context, localization.restoredGroup), groupIds));
snackBarCompleter<Null>(context, localization.restoredGroup),
groupIds));
break;
case EntityAction.archive:
store.dispatch(ArchiveGroupRequest(
snackBarCompleter<Null>(context, localization.archivedGroup), groupIds));
snackBarCompleter<Null>(context, localization.archivedGroup),
groupIds));
break;
case EntityAction.delete:
store.dispatch(DeleteGroupRequest(
snackBarCompleter<Null>(context, localization.deletedGroup), groupIds));
snackBarCompleter<Null>(context, localization.deletedGroup),
groupIds));
break;
case EntityAction.toggleMultiselect:
if (!store.state.groupListState.isInMultiselect()) {

View File

@ -67,8 +67,8 @@ var memoizedClientStatsForGroup = memo2(
(BuiltMap<String, ClientEntity> clientMap, String groupId) =>
clientStatsForGroup(clientMap, groupId));
EntityStats clientStatsForGroup(BuiltMap<String, ClientEntity> clientMap,
String groupId) {
EntityStats clientStatsForGroup(
BuiltMap<String, ClientEntity> clientMap, String groupId) {
int countActive = 0;
int countArchived = 0;
clientMap.forEach((clientId, client) {

View File

@ -381,7 +381,8 @@ void handleInvoiceAction(BuildContext context, List<BaseEntity> invoices,
break;
case EntityAction.sendEmail:
store.dispatch(ShowEmailInvoice(
completer: snackBarCompleter<Null>(context, localization.emailedInvoice),
completer:
snackBarCompleter<Null>(context, localization.emailedInvoice),
invoice: invoice,
context: context));
break;
@ -408,7 +409,8 @@ void handleInvoiceAction(BuildContext context, List<BaseEntity> invoices,
break;
case EntityAction.delete:
store.dispatch(DeleteInvoiceRequest(
snackBarCompleter<Null>(context, localization.deletedInvoice), invoiceIds));
snackBarCompleter<Null>(context, localization.deletedInvoice),
invoiceIds));
break;
case EntityAction.toggleMultiselect:
if (!store.state.invoiceListState.isInMultiselect()) {

View File

@ -19,7 +19,8 @@ EntityUIState invoiceUIReducer(InvoiceUIState state, dynamic action) {
final editingItemIndexReducer = combineReducers<int>([
TypedReducer<int, EditInvoice>((index, action) => action.invoiceItemIndex),
TypedReducer<int, EditInvoiceItem>((index, action) => action.invoiceItemIndex),
TypedReducer<int, EditInvoiceItem>(
(index, action) => action.invoiceItemIndex),
]);
Reducer<String> dropdownFilterReducer = combineReducers([

View File

@ -72,7 +72,6 @@ List<String> filteredInvoicesSelector(
}
}
if (!invoice.matchesStates(invoiceListState.stateFilters)) {
return false;
}
@ -102,13 +101,12 @@ List<String> filteredInvoicesSelector(
return list;
}
var memoizedInvoiceStatsForClient = memo2((String clientId,
BuiltMap<String, InvoiceEntity> invoiceMap) =>
var memoizedInvoiceStatsForClient = memo2(
(String clientId, BuiltMap<String, InvoiceEntity> invoiceMap) =>
invoiceStatsForClient(clientId, invoiceMap));
EntityStats invoiceStatsForClient(
String clientId,
BuiltMap<String, InvoiceEntity> invoiceMap) {
String clientId, BuiltMap<String, InvoiceEntity> invoiceMap) {
int countActive = 0;
int countArchived = 0;
invoiceMap.forEach((invoiceId, invoice) {
@ -124,13 +122,12 @@ EntityStats invoiceStatsForClient(
return EntityStats(countActive: countActive, countArchived: countArchived);
}
var memoizedInvoiceStatsForUser = memo2((String userId,
BuiltMap<String, InvoiceEntity> invoiceMap) =>
var memoizedInvoiceStatsForUser = memo2(
(String userId, BuiltMap<String, InvoiceEntity> invoiceMap) =>
invoiceStatsForUser(userId, invoiceMap));
EntityStats invoiceStatsForUser(
String userId,
BuiltMap<String, InvoiceEntity> invoiceMap) {
String userId, BuiltMap<String, InvoiceEntity> invoiceMap) {
int countActive = 0;
int countArchived = 0;
invoiceMap.forEach((invoiceId, invoice) {

View File

@ -278,7 +278,8 @@ void handlePaymentAction(
break;
case EntityAction.sendEmail:
store.dispatch(EmailPaymentRequest(
snackBarCompleter<Null>(context, localization.emailedPayment), payment));
snackBarCompleter<Null>(context, localization.emailedPayment),
payment));
break;
case EntityAction.restore:
store.dispatch(RestorePaymentRequest(
@ -292,7 +293,8 @@ void handlePaymentAction(
break;
case EntityAction.delete:
store.dispatch(DeletePaymentRequest(
snackBarCompleter<Null>(context, localization.deletedPayment), paymentIds));
snackBarCompleter<Null>(context, localization.deletedPayment),
paymentIds));
break;
case EntityAction.toggleMultiselect:
if (!store.state.paymentListState.isInMultiselect()) {

View File

@ -245,7 +245,8 @@ void handleProductAction(
break;
case EntityAction.delete:
store.dispatch(DeleteProductRequest(
snackBarCompleter<Null>(context, localization.deletedProduct), productIds));
snackBarCompleter<Null>(context, localization.deletedProduct),
productIds));
break;
case EntityAction.toggleMultiselect:
if (!store.state.productListState.isInMultiselect()) {

View File

@ -131,13 +131,12 @@ Duration taskDurationForProject(
return Duration(seconds: total);
}
var memoizedProjectStatsForClient = memo2((String clientId,
BuiltMap<String, ProjectEntity> projectMap) =>
var memoizedProjectStatsForClient = memo2(
(String clientId, BuiltMap<String, ProjectEntity> projectMap) =>
projectStatsForClient(clientId, projectMap));
EntityStats projectStatsForClient(
String clientId,
BuiltMap<String, ProjectEntity> projectMap) {
String clientId, BuiltMap<String, ProjectEntity> projectMap) {
int countActive = 0;
int countArchived = 0;
projectMap.forEach((projectId, project) {

View File

@ -409,7 +409,8 @@ Future handleQuoteAction(
break;
case EntityAction.sendEmail:
store.dispatch(ShowEmailQuote(
completer: snackBarCompleter<Null>(context, localization.emailedQuote),
completer:
snackBarCompleter<Null>(context, localization.emailedQuote),
quote: quote,
context: context));
break;
@ -422,15 +423,18 @@ Future handleQuoteAction(
break;
case EntityAction.restore:
store.dispatch(RestoreQuoteRequest(
snackBarCompleter<Null>(context, localization.restoredQuote), quoteIds));
snackBarCompleter<Null>(context, localization.restoredQuote),
quoteIds));
break;
case EntityAction.archive:
store.dispatch(ArchiveQuoteRequest(
snackBarCompleter<Null>(context, localization.archivedQuote), quoteIds));
snackBarCompleter<Null>(context, localization.archivedQuote),
quoteIds));
break;
case EntityAction.delete:
store.dispatch(DeleteQuoteRequest(
snackBarCompleter<Null>(context, localization.deletedQuote), quoteIds));
snackBarCompleter<Null>(context, localization.deletedQuote),
quoteIds));
break;
case EntityAction.toggleMultiselect:
if (!store.state.quoteListState.isInMultiselect()) {

View File

@ -24,7 +24,6 @@ List<String> filteredQuotesSelector(
final client =
clientMap[quote.clientId] ?? ClientEntity(id: quote.clientId);
if (quoteListState.filterEntityType == EntityType.client) {
if (!quoteListState.entityMatchesFilter(client)) {
return false;
@ -70,13 +69,12 @@ List<String> filteredQuotesSelector(
return list;
}
var memoizedQuoteStatsForClient = memo2((String clientId,
BuiltMap<String, InvoiceEntity> quoteMap) =>
var memoizedQuoteStatsForClient = memo2(
(String clientId, BuiltMap<String, InvoiceEntity> quoteMap) =>
quoteStatsForClient(clientId, quoteMap));
EntityStats quoteStatsForClient(
String clientId,
BuiltMap<String, InvoiceEntity> quoteMap) {
String clientId, BuiltMap<String, InvoiceEntity> quoteMap) {
int countActive = 0;
int countArchived = 0;
quoteMap.forEach((quoteId, quote) {
@ -92,13 +90,14 @@ EntityStats quoteStatsForClient(
return EntityStats(countActive: countActive, countArchived: countArchived);
}
var memoizedQuoteStatsForUser = memo2((String userId,
BuiltMap<String, InvoiceEntity> quoteMap) =>
var memoizedQuoteStatsForUser = memo2(
(String userId, BuiltMap<String, InvoiceEntity> quoteMap) =>
quoteStatsForUser(userId, quoteMap));
EntityStats quoteStatsForUser(
String userId,
BuiltMap<String, InvoiceEntity> quoteMap,) {
BuiltMap<String, InvoiceEntity> quoteMap,
) {
int countActive = 0;
int countArchived = 0;
quoteMap.forEach((quoteId, quote) {

View File

@ -345,11 +345,13 @@ void handleTaskAction(
break;
case EntityAction.restore:
store.dispatch(RestoreTaskRequest(
snackBarCompleter<Null>(context, localization.restoredTask), taskIds));
snackBarCompleter<Null>(context, localization.restoredTask),
taskIds));
break;
case EntityAction.archive:
store.dispatch(ArchiveTaskRequest(
snackBarCompleter<Null>(context, localization.archivedTask), taskIds));
snackBarCompleter<Null>(context, localization.archivedTask),
taskIds));
break;
case EntityAction.delete:
store.dispatch(DeleteTaskRequest(

View File

@ -273,7 +273,8 @@ void handleTaxRateAction(
break;
case EntityAction.delete:
store.dispatch(DeleteTaxRateRequest(
snackBarCompleter<Null>(context, localization.deletedTaxRate), taxRateIds));
snackBarCompleter<Null>(context, localization.deletedTaxRate),
taxRateIds));
break;
case EntityAction.toggleMultiselect:
if (!store.state.taxRateListState.isInMultiselect()) {

View File

@ -122,6 +122,4 @@ abstract class UIState implements Built<UIState, UIStateBuilder> {
}
bool get isEditing => currentRoute.endsWith('edit');
}

View File

@ -244,7 +244,6 @@ class FilterUsersByEntity implements PersistUI {
void handleUserAction(
BuildContext context, List<BaseEntity> users, EntityAction action) {
if (users.isEmpty) {
return;
}
@ -261,11 +260,13 @@ void handleUserAction(
break;
case EntityAction.restore:
store.dispatch(RestoreUserRequest(
snackBarCompleter<Null>(context, localization.restoredUser), userIds));
snackBarCompleter<Null>(context, localization.restoredUser),
userIds));
break;
case EntityAction.archive:
store.dispatch(ArchiveUserRequest(
snackBarCompleter<Null>(context, localization.archivedUser), userIds));
snackBarCompleter<Null>(context, localization.archivedUser),
userIds));
break;
case EntityAction.delete:
store.dispatch(DeleteUserRequest(

View File

@ -300,15 +300,18 @@ void handleVendorAction(
break;
case EntityAction.restore:
store.dispatch(RestoreVendorRequest(
snackBarCompleter<Null>(context, localization.restoredVendor), vendorIds));
snackBarCompleter<Null>(context, localization.restoredVendor),
vendorIds));
break;
case EntityAction.archive:
store.dispatch(ArchiveVendorRequest(
snackBarCompleter<Null>(context, localization.archivedVendor), vendorIds));
snackBarCompleter<Null>(context, localization.archivedVendor),
vendorIds));
break;
case EntityAction.delete:
store.dispatch(DeleteVendorRequest(
snackBarCompleter<Null>(context, localization.deletedVendor), vendorIds));
snackBarCompleter<Null>(context, localization.deletedVendor),
vendorIds));
break;
case EntityAction.toggleMultiselect:
if (!store.state.vendorListState.isInMultiselect()) {

View File

@ -29,7 +29,9 @@ class FormCard extends StatelessWidget {
child: Padding(
padding: const EdgeInsets.only(
left: 16.0, top: 16.0, right: 16.0, bottom: 20.0),
child: child != null ? child : Container(
child: child != null
? child
: Container(
width: double.infinity,
child: Column(
mainAxisSize: MainAxisSize.max,

View File

@ -97,10 +97,12 @@ class ListScaffold extends StatelessWidget {
builder: (context) => IconButton(
icon: Icon(Icons.menu),
onPressed: () {
if (isMobile(context) || state.prefState.isHistoryFloated) {
if (isMobile(context) ||
state.prefState.isHistoryFloated) {
Scaffold.of(context).openEndDrawer();
} else {
store.dispatch(UserSettingsChanged(sidebar: AppSidebar.history));
store.dispatch(
UserSettingsChanged(sidebar: AppSidebar.history));
}
},
),

View File

@ -74,7 +74,9 @@ class ClientList extends StatelessWidget {
onTap: () =>
viewModel.onClientTap(context, client),
onLongPress: () async {
final longPressIsSelection = store.state.prefState
final longPressIsSelection = store
.state
.prefState
.longPressSelectionIsDefault ??
true;
if (longPressIsSelection && !isInMultiselect) {

View File

@ -90,9 +90,7 @@ class ClientScreen extends StatelessWidget {
.toList();
await showEntityActionsDialog(
entities: clients,
context: context,
multiselect: true);
entities: clients, context: context, multiselect: true);
store.dispatch(ClearClientMultiselect(context: context));
},
),

View File

@ -103,10 +103,10 @@ class ClientEditNotesState extends State<ClientEditNotes> {
labelText: localization.size,
items: memoizedSizeList(state.staticState.sizeMap)
.map((sizeId) => DropdownMenuItem(
child: Text(
state.staticState.sizeMap[sizeId].name),
child: Text(state.staticState.sizeMap[sizeId].name),
value: sizeId,
)).toList(),
))
.toList(),
onChanged: (dynamic sizeId) => viewModel.onChanged(
client.rebuild((b) => b..sizeId = sizeId),
),

View File

@ -118,8 +118,8 @@ class ClientEditVM {
Navigator.of(context).pop(savedClient);
}
} else {
store.dispatch(
ViewClient(context: context, clientId: savedClient.id, force: true));
store.dispatch(ViewClient(
context: context, clientId: savedClient.id, force: true));
}
}).catchError((Object error) {
showDialog<ErrorDialog>(

View File

@ -32,9 +32,7 @@ class ClientOverview extends StatelessWidget {
final localization = AppLocalization.of(context);
final client = viewModel.client;
final company = viewModel.company;
final state = StoreProvider
.of<AppState>(context)
.state;
final state = StoreProvider.of<AppState>(context).state;
final statics = state.staticState;
final fields = <String, String>{};
final group = client.hasGroup ? state.groupState.map[client.groupId] : null;
@ -73,9 +71,7 @@ class ClientOverview extends StatelessWidget {
: Container(),
if (client.hasGroup) ...[
Material(
color: Theme
.of(context)
.canvasColor,
color: Theme.of(context).canvasColor,
child: ListTile(
title: EntityStateTitle(entity: group),
leading: Icon(getEntityIcon(EntityType.group), size: 18.0),
@ -167,7 +163,8 @@ class ClientOverview extends StatelessWidget {
}
class EntityListTile extends StatelessWidget {
const EntityListTile({this.icon,
const EntityListTile(
{this.icon,
this.onTap,
this.onLongPress,
this.title,
@ -186,9 +183,7 @@ class EntityListTile extends StatelessWidget {
return Column(
children: <Widget>[
Material(
color: Theme
.of(context)
.canvasColor,
color: Theme.of(context).canvasColor,
child: ListTile(
title: Text(title),
subtitle: Text(subtitle),

View File

@ -110,8 +110,7 @@ class ClientViewVM {
if (longPress && client.isActive) {
store.dispatch(EditQuote(
context: context,
quote: InvoiceEntity(
company: state.company, isQuote: true)));
quote: InvoiceEntity(company: state.company, isQuote: true)));
store.dispatch(UpdateQuoteClient(client: client));
} else {
store.dispatch(FilterQuotesByEntity(

View File

@ -59,7 +59,9 @@ class CompanyGatewayListItem extends StatelessWidget {
? () => onEntityAction(EntityAction.toggleMultiselect)
: onTap,
onLongPress: onLongPress,
trailing: onRemovePressed == null ? null : FlatButton(
trailing: onRemovePressed == null
? null
: FlatButton(
child: Text(AppLocalization.of(context).remove),
onPressed: onRemovePressed,
),

View File

@ -184,12 +184,8 @@ class DashboardPanels extends StatelessWidget {
final isLoaded = viewModel.state.invoiceState.isLoaded;
final settings = viewModel.dashboardUIState;
final state = viewModel.state;
final currentData = memoizedChartInvoices(
state.staticState.currencyMap,
state.company,
settings,
state.invoiceState.map,
state.clientState.map);
final currentData = memoizedChartInvoices(state.staticState.currencyMap,
state.company, settings, state.invoiceState.map, state.clientState.map);
List<ChartDataGroup> previousData;
if (settings.enableComparison) {
@ -244,12 +240,8 @@ class DashboardPanels extends StatelessWidget {
final settings = viewModel.dashboardUIState;
final state = viewModel.state;
final isLoaded = state.quoteState.isLoaded;
final currentData = memoizedChartQuotes(
state.staticState.currencyMap,
state.company,
settings,
state.quoteState.map,
state.clientState.map);
final currentData = memoizedChartQuotes(state.staticState.currencyMap,
state.company, settings, state.quoteState.map, state.clientState.map);
List<ChartDataGroup> previousData;
if (settings.enableComparison) {

View File

@ -70,8 +70,8 @@ class _DashboardScreenState extends State<DashboardScreen>
? null
: IconButton(
icon: Icon(Icons.menu),
onPressed: () =>
store.dispatch(UserSettingsChanged(sidebar: AppSidebar.menu)),
onPressed: () => store
.dispatch(UserSettingsChanged(sidebar: AppSidebar.menu)),
),
title: ListFilter(
title: AppLocalization.of(context).dashboard,
@ -96,7 +96,8 @@ class _DashboardScreenState extends State<DashboardScreen>
if (isMobile(context) || state.prefState.isHistoryFloated) {
Scaffold.of(context).openEndDrawer();
} else {
store.dispatch(UserSettingsChanged(sidebar: AppSidebar.history));
store.dispatch(
UserSettingsChanged(sidebar: AppSidebar.history));
}
},
),

View File

@ -80,8 +80,7 @@ class DashboardVM {
onCurrencyChanged: (currencyId) =>
store.dispatch(UpdateDashboardSettings(currencyId: currencyId)),
filter: filter,
filteredList:
memoizedFilteredSelector(filter, state.userCompanyState),
filteredList: memoizedFilteredSelector(filter, state.userCompanyState),
);
}

View File

@ -71,7 +71,9 @@ class DocumentList extends StatelessWidget {
}
},
onLongPress: () async {
final longPressIsSelection = store.state.prefState
final longPressIsSelection = store
.state
.prefState
.longPressSelectionIsDefault ??
true;
if (longPressIsSelection && !isInMultiselect) {

View File

@ -82,7 +82,8 @@ class DocumentEditVM {
Navigator.of(context).pop(savedDocument);
}
} else {
store.dispatch(ViewDocument(context: context, documentId: savedDocument.id, force: true));
store.dispatch(ViewDocument(
context: context, documentId: savedDocument.id, force: true));
}
}).catchError((Object error) {
showDialog<ErrorDialog>(

View File

@ -86,8 +86,8 @@ class GroupEditVM {
Navigator.of(context).pop(savedGroup);
}
} else {
store.dispatch(
ViewGroup(context: context, groupId: savedGroup.id, force: true));
store.dispatch(ViewGroup(
context: context, groupId: savedGroup.id, force: true));
}
}).catchError((Object error) {
showDialog<ErrorDialog>(

View File

@ -68,7 +68,9 @@ class GroupList extends StatelessWidget {
}
},
onLongPress: () async {
final longPressIsSelection = store.state.prefState
final longPressIsSelection = store
.state
.prefState
.longPressSelectionIsDefault ??
true;
if (longPressIsSelection && !isInMultiselect) {

View File

@ -93,9 +93,7 @@ class GroupSettingsScreen extends StatelessWidget {
.toList();
await showEntityActionsDialog(
entities: groups,
context: context,
multiselect: true);
entities: groups, context: context, multiselect: true);
store.dispatch(ClearGroupMultiselect(context: context));
},
),

View File

@ -281,10 +281,8 @@ class SettingsViewer extends StatelessWidget {
settings.requireInvoiceSignature?.toString(),
localization.requireQuoteSignature:
settings.requireQuoteSignature?.toString(),
localization.allPagesHeader:
settings.allPagesHeader?.toString(),
localization.allPagesFooter:
settings.allPagesFooter?.toString(),
localization.allPagesHeader: settings.allPagesHeader?.toString(),
localization.allPagesFooter: settings.allPagesFooter?.toString(),
//localization.enableReminder1: settings.enableReminder1,
//localization.enableReminder2: settings.enableReminder2,
//localization.enableReminder3: settings.enableReminder3,

View File

@ -166,8 +166,8 @@ class InvoiceEditDetailsState extends State<InvoiceEditDetails> {
),
UserPicker(
userId: invoice.assignedUserId,
onChanged: (userId) => viewModel
.onChanged(invoice.rebuild((b) => b..assignedUserId = userId)),
onChanged: (userId) => viewModel.onChanged(
invoice.rebuild((b) => b..assignedUserId = userId)),
),
DatePicker(
validator: (String val) => val.trim().isEmpty

View File

@ -69,7 +69,8 @@ class _InvoiceItemSelectorState extends State<InvoiceItemSelector>
items.add(
convertProductToInvoiceItem(product: product, context: context));
} else {
items.add(InvoiceItemEntity(productKey: product.productKey, quantity: 1));
items.add(
InvoiceItemEntity(productKey: product.productKey, quantity: 1));
}
} else if (entity.entityType == EntityType.task) {
final task = entity as TaskEntity;

View File

@ -80,8 +80,8 @@ class InvoiceList extends StatelessWidget {
}
},
onLongPress: () async {
final longPressIsSelection =
state.prefState.longPressSelectionIsDefault ??
final longPressIsSelection = state.prefState
.longPressSelectionIsDefault ??
true;
if (longPressIsSelection && !isInMultiselect) {
handleInvoiceAction(context, [invoice],

View File

@ -160,7 +160,8 @@ class InvoiceOverview extends StatelessWidget {
invoice: invoice,
invoiceItem: invoiceItem,
onTap: () => userCompany.canEditEntity(invoice)
? viewModel.onEditPressed(context, invoice.lineItems.indexOf(invoiceItem))
? viewModel.onEditPressed(
context, invoice.lineItems.indexOf(invoiceItem))
: null,
);
},

View File

@ -76,8 +76,8 @@ class PaymentList extends StatelessWidget {
}
},
onLongPress: () async {
final longPressIsSelection =
state.prefState.longPressSelectionIsDefault ??
final longPressIsSelection = state.prefState
.longPressSelectionIsDefault ??
true;
if (longPressIsSelection && !isInMultiselect) {
handlePaymentAction(context, [payment],

View File

@ -77,7 +77,9 @@ class ProjectList extends StatelessWidget {
}
},
onLongPress: () async {
final longPressIsSelection = store.state.prefState
final longPressIsSelection = store
.state
.prefState
.longPressSelectionIsDefault ??
true;
if (longPressIsSelection && !isInMultiselect) {

View File

@ -82,7 +82,8 @@ class ProjectViewVM {
if (longPress) {
showEntityActionsDialog(
context: context,
entities: [client],);
entities: [client],
);
} else {
store.dispatch(ViewClient(clientId: client.id, context: context));
}
@ -103,8 +104,8 @@ class ProjectViewVM {
},
onAddTaskPressed: (context) => store.dispatch(EditTask(
context: context,
task:
TaskEntity(isRunning: state.prefState.autoStartTasks).rebuild((b) => b
task: TaskEntity(isRunning: state.prefState.autoStartTasks)
.rebuild((b) => b
..projectId = project.id
..clientId = project.clientId),
force: true,

View File

@ -126,8 +126,8 @@ class _ClientPortalState extends State<ClientPortal>
AppDropdownButton(
labelText: localization.portalMode,
value: viewModel.company.portalMode,
onChanged: (dynamic value) => viewModel.onCompanyChanged(viewModel
.company
onChanged: (dynamic value) => viewModel.onCompanyChanged(
viewModel.company
.rebuild((b) => b..portalMode = value)),
items: [
DropdownMenuItem(

View File

@ -292,7 +292,8 @@ class _CompanyDetailsState extends State<CompanyDetails>
child: Text(
state.staticState.sizeMap[sizeId].name),
value: sizeId,
)).toList(),
))
.toList(),
onChanged: (dynamic sizeId) => viewModel.onCompanyChanged(
company.rebuild((b) => b..sizeId = sizeId),
),

View File

@ -140,7 +140,8 @@ class _EmailSettingsState extends State<EmailSettings>
label: localization.enableMarkup,
helpLabel: localization.enableMarkupHelp,
value: settings.enableEmailMarkup,
iconData: kIsWeb ? Icons.email : FontAwesomeIcons.solidEnvelope,
iconData:
kIsWeb ? Icons.email : FontAwesomeIcons.solidEnvelope,
onChanged: (value) => viewModel.onSettingsChanged(
settings.rebuild((b) => b..enableEmailMarkup = value)),
),

View File

@ -158,8 +158,9 @@ class _GeneratedNumbersState extends State<GeneratedNumbers>
AppDropdownButton(
labelText: localization.resetCounter,
value: settings.resetCounterFrequencyId,
onChanged: (dynamic value) => viewModel.onSettingsChanged(settings
.rebuild((b) => b..resetCounterFrequencyId = value)),
onChanged: (dynamic value) => viewModel.onSettingsChanged(
settings.rebuild(
(b) => b..resetCounterFrequencyId = value)),
items: [
DropdownMenuItem<String>(
child: Text(localization.never),

View File

@ -83,7 +83,8 @@ class _InvoiceDesignState extends State<InvoiceDesign>
AppDropdownButton(
labelText: localization.invoiceDesign,
value: settings.defaultInvoiceDesignId,
onChanged: (dynamic value) => viewModel.onSettingsChanged(settings
onChanged: (dynamic value) => viewModel.onSettingsChanged(
settings
.rebuild((b) => b..defaultInvoiceDesignId = value)),
items: designs
.map((designId) => DropdownMenuItem<String>(

View File

@ -25,9 +25,7 @@ class SettingsScreenBuilder extends StatelessWidget {
}
class SettingsScreenVM {
SettingsScreenVM({
@required this.state
});
SettingsScreenVM({@required this.state});
final AppState state;
static SettingsScreenVM fromStore(Store<AppState> store) {

View File

@ -315,8 +315,8 @@ class _TemplatesAndRemindersState extends State<TemplatesAndReminders>
AppDropdownButton(
labelText: localization.frequency,
value: settings.endlessReminderFrequencyId,
onChanged: (dynamic value) => viewModel.onSettingsChanged(
settings.rebuild(
onChanged: (dynamic value) =>
viewModel.onSettingsChanged(settings.rebuild(
(b) => b..endlessReminderFrequencyId = value)),
items: kFrequencies
.map((id, frequency) =>

View File

@ -75,8 +75,8 @@ class TaskList extends StatelessWidget {
}
},
onLongPress: () async {
final longPressIsSelection =
state.prefState.longPressSelectionIsDefault ??
final longPressIsSelection = state.prefState
.longPressSelectionIsDefault ??
true;
if (longPressIsSelection && !isInMultiselect) {
handleTaskAction(context, [task],

View File

@ -90,9 +90,7 @@ class TaskScreen extends StatelessWidget {
.toList();
await showEntityActionsDialog(
entities: tasks,
context: context,
multiselect: true);
entities: tasks, context: context, multiselect: true);
store.dispatch(ClearTaskMultiselect(context: context));
},
),

View File

@ -63,7 +63,9 @@ class TaxRateList extends StatelessWidget {
}
},
onLongPress: () async {
final longPressIsSelection = store.state.prefState
final longPressIsSelection = store
.state
.prefState
.longPressSelectionIsDefault ??
true;
if (longPressIsSelection && !isInMultiselect) {

View File

@ -94,9 +94,7 @@ class UserScreen extends StatelessWidget {
.toList();
await showEntityActionsDialog(
entities: users,
context: context,
multiselect: true);
entities: users, context: context, multiselect: true);
store.dispatch(ClearUserMultiselect(context: context));
},
),

View File

@ -109,8 +109,7 @@ class UserViewVM {
if (longPress && user.isActive) {
store.dispatch(EditQuote(
context: context,
quote: InvoiceEntity(
company: state.company, isQuote: true)));
quote: InvoiceEntity(company: state.company, isQuote: true)));
} else {
store.dispatch(FilterQuotesByEntity(
entityId: user.id, entityType: EntityType.user));

View File

@ -100,8 +100,8 @@ class VendorEditVM {
Navigator.of(context).pop(savedVendor);
}
} else {
store.dispatch(
ViewVendor(context: context, vendorId: savedVendor.id, force: true));
store.dispatch(ViewVendor(
context: context, vendorId: savedVendor.id, force: true));
}
}).catchError((Object error) {
showDialog<ErrorDialog>(

View File

@ -62,7 +62,9 @@ class VendorList extends StatelessWidget {
}
},
onLongPress: () async {
final longPressIsSelection = store.state.prefState
final longPressIsSelection = store
.state
.prefState
.longPressSelectionIsDefault ??
true;
if (longPressIsSelection && !isInMultiselect) {

View File

@ -95,8 +95,8 @@ class VendorViewVM {
if (longPress && vendor.isActive) {
store.dispatch(EditExpense(
context: context,
expense: ExpenseEntity(
company: state.company, vendor: vendor)));
expense:
ExpenseEntity(company: state.company, vendor: vendor)));
} else {
store.dispatch(FilterExpensesByEntity(
entityId: vendor.id, entityType: EntityType.vendor));

View File

@ -64,8 +64,7 @@ String formatNumber(
final state = StoreProvider.of<AppState>(context).state;
final CompanyEntity company = state.company;
final ClientEntity client =
state.userCompanyState.clientState.map[clientId];
final ClientEntity client = state.userCompanyState.clientState.map[clientId];
String countryId;

View File

@ -81,7 +81,6 @@ IconData getEntityIcon(EntityType entityType) {
}
}
switch (entityType) {
case EntityType.product:
return FontAwesomeIcons.cube;