Make budgets work again
This commit is contained in:
parent
5dc474407c
commit
42b1bbd438
@ -26,3 +26,8 @@ linter:
|
|||||||
|
|
||||||
# Additional information about this file can be found at
|
# Additional information about this file can be found at
|
||||||
# https://dart.dev/guides/language/analysis-options
|
# https://dart.dev/guides/language/analysis-options
|
||||||
|
analyzer:
|
||||||
|
exclude:
|
||||||
|
- "**/*.g.dart"
|
||||||
|
- build/**
|
||||||
|
- .dart_tool/**
|
@ -56,9 +56,8 @@ class Budgets extends Table {
|
|||||||
|
|
||||||
class BudgetsDto {
|
class BudgetsDto {
|
||||||
final Budget budget;
|
final Budget budget;
|
||||||
final List<BudgetItemDto> budgetItems;
|
|
||||||
|
|
||||||
BudgetsDto({required this.budget, required this.budgetItems});
|
BudgetsDto({required this.budget});
|
||||||
}
|
}
|
||||||
|
|
||||||
class Loans extends Table {
|
class Loans extends Table {
|
||||||
@ -373,6 +372,12 @@ class ExpenseCategoriesDao extends DatabaseAccessor<OkaneDatabase>
|
|||||||
|
|
||||||
return select(expenseCategories).get();
|
return select(expenseCategories).get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<ExpenseCategory> upsertCategory(ExpenseCategoriesCompanion category) {
|
||||||
|
return into(
|
||||||
|
expenseCategories,
|
||||||
|
).insertReturning(category, mode: InsertMode.insertOrReplace);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@DriftAccessor(tables: [Budgets, BudgetItems])
|
@DriftAccessor(tables: [Budgets, BudgetItems])
|
||||||
@ -391,11 +396,7 @@ class BudgetsDao extends DatabaseAccessor<OkaneDatabase>
|
|||||||
.watch()
|
.watch()
|
||||||
.map((rows) {
|
.map((rows) {
|
||||||
return rows.map((row) {
|
return rows.map((row) {
|
||||||
return BudgetsDto(
|
return BudgetsDto(budget: row.readTable(budgets));
|
||||||
budget: row.readTable(budgets),
|
|
||||||
// TODO
|
|
||||||
budgetItems: List.empty(),
|
|
||||||
);
|
|
||||||
}).toList();
|
}).toList();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -405,20 +406,28 @@ class BudgetsDao extends DatabaseAccessor<OkaneDatabase>
|
|||||||
return Future.value(List.empty());
|
return Future.value(List.empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
return (select(budgets)..where((b) => b.accountId.equals(account.id)))
|
return (select(budgets)
|
||||||
|
..where((b) => b.accountId.equals(account.id))).get().then((rows) {
|
||||||
|
return rows.map((row) {
|
||||||
|
return BudgetsDto(budget: row);
|
||||||
|
}).toList();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Stream<List<BudgetItemDto>> watchBudgetItems(Budget budget) {
|
||||||
|
return (select(budgetItems)..where((b) => b.budgetId.equals(budget.id)))
|
||||||
.join([
|
.join([
|
||||||
leftOuterJoin(
|
leftOuterJoin(
|
||||||
budgetItems,
|
expenseCategories,
|
||||||
budgetItems.budgetId.equalsExp(budgets.id),
|
expenseCategories.id.equalsExp(budgetItems.expenseCategoryId),
|
||||||
),
|
),
|
||||||
])
|
])
|
||||||
.get()
|
.watch()
|
||||||
.then((rows) {
|
.map((rows) {
|
||||||
return rows.map((row) {
|
return rows.map((row) {
|
||||||
return BudgetsDto(
|
return BudgetItemDto(
|
||||||
budget: row.readTable(budgets),
|
expenseCategory: row.readTable(expenseCategories),
|
||||||
// TODO
|
item: row.readTable(budgetItems),
|
||||||
budgetItems: List.empty(),
|
|
||||||
);
|
);
|
||||||
}).toList();
|
}).toList();
|
||||||
});
|
});
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -80,7 +80,6 @@ class AccountBalanceGraphCard extends StatelessWidget {
|
|||||||
child: FutureBuilder(
|
child: FutureBuilder(
|
||||||
future: getAccountBalance(),
|
future: getAccountBalance(),
|
||||||
builder: (context, snapshot) {
|
builder: (context, snapshot) {
|
||||||
print("SNAPSHOT: ${snapshot.data}");
|
|
||||||
if (!snapshot.hasData) {
|
if (!snapshot.hasData) {
|
||||||
return CircularProgressIndicator();
|
return CircularProgressIndicator();
|
||||||
}
|
}
|
||||||
|
@ -9,11 +9,13 @@ import 'package:okane/ui/widgets/add_expense_category.dart';
|
|||||||
class AddBudgetItemPopup extends StatefulWidget {
|
class AddBudgetItemPopup extends StatefulWidget {
|
||||||
final VoidCallback onDone;
|
final VoidCallback onDone;
|
||||||
final BudgetsDto budget;
|
final BudgetsDto budget;
|
||||||
|
final List<BudgetItemDto> items;
|
||||||
|
|
||||||
const AddBudgetItemPopup({
|
const AddBudgetItemPopup({
|
||||||
super.key,
|
super.key,
|
||||||
required this.onDone,
|
required this.onDone,
|
||||||
required this.budget,
|
required this.budget,
|
||||||
|
required this.items,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -72,7 +74,7 @@ class AddBudgetItemState extends State<AddBudgetItemPopup> {
|
|||||||
_expenseCategory == null) {
|
_expenseCategory == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (widget.budget.budgetItems
|
if (widget.items
|
||||||
.where(
|
.where(
|
||||||
(i) =>
|
(i) =>
|
||||||
i.expenseCategory.name == _expenseCategory!.name,
|
i.expenseCategory.name == _expenseCategory!.name,
|
||||||
@ -84,10 +86,11 @@ class AddBudgetItemState extends State<AddBudgetItemPopup> {
|
|||||||
|
|
||||||
await GetIt.I.get<OkaneDatabase>().budgetsDao.upsertBudgetItem(
|
await GetIt.I.get<OkaneDatabase>().budgetsDao.upsertBudgetItem(
|
||||||
BudgetItemsCompanion(
|
BudgetItemsCompanion(
|
||||||
expenseCategoryId: Value(_expenseCategory!.id),
|
|
||||||
amount: Value(
|
amount: Value(
|
||||||
double.parse(_budgetItemAmountEditController.text),
|
double.parse(_budgetItemAmountEditController.text),
|
||||||
),
|
),
|
||||||
|
expenseCategoryId: Value(_expenseCategory!.id),
|
||||||
|
budgetId: Value(widget.budget.budget.id),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
widget.onDone();
|
widget.onDone();
|
||||||
|
@ -22,6 +22,7 @@ class BudgetDetailsPage extends StatelessWidget {
|
|||||||
builder:
|
builder:
|
||||||
(_) => AddBudgetItemPopup(
|
(_) => AddBudgetItemPopup(
|
||||||
budget: state.activeBudget!,
|
budget: state.activeBudget!,
|
||||||
|
items: state.budgetItems,
|
||||||
onDone: () {
|
onDone: () {
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
},
|
},
|
||||||
@ -55,7 +56,7 @@ class BudgetDetailsPage extends StatelessWidget {
|
|||||||
return Text(t.pages.budgets.details.noBudgetSelected);
|
return Text(t.pages.budgets.details.noBudgetSelected);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state.activeBudget!.budgetItems.isEmpty) {
|
if (state.budgetItems.isEmpty) {
|
||||||
return Row(
|
return Row(
|
||||||
children: [
|
children: [
|
||||||
Text(t.pages.budgets.details.noBudgetItems),
|
Text(t.pages.budgets.details.noBudgetItems),
|
||||||
@ -95,10 +96,9 @@ class BudgetDetailsPage extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
ListView.builder(
|
ListView.builder(
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
itemCount: state.activeBudget!.budgetItems.length,
|
itemCount: state.budgetItems.length,
|
||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
final item = state.activeBudget!.budgetItems
|
final item = state.budgetItems.elementAt(index);
|
||||||
.elementAt(index);
|
|
||||||
final amount = formatCurrency(item.item.amount);
|
final amount = formatCurrency(item.item.amount);
|
||||||
return ListTile(
|
return ListTile(
|
||||||
title: Text(
|
title: Text(
|
||||||
@ -120,7 +120,7 @@ class BudgetDetailsPage extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final categories =
|
final categories =
|
||||||
state.activeBudget!.budgetItems
|
state.budgetItems
|
||||||
// TODO
|
// TODO
|
||||||
//.map((i) => i.expenseCategory.value!.name)
|
//.map((i) => i.expenseCategory.value!.name)
|
||||||
.map((i) => "lol")
|
.map((i) => "lol")
|
||||||
@ -149,7 +149,7 @@ class BudgetDetailsPage extends StatelessWidget {
|
|||||||
spending.isEmpty
|
spending.isEmpty
|
||||||
? 0
|
? 0
|
||||||
: spending.values.reduce((acc, val) => acc + val);
|
: spending.values.reduce((acc, val) => acc + val);
|
||||||
final budgetTotal = state.activeBudget!.budgetItems
|
final budgetTotal = state.budgetItems
|
||||||
.map((i) => i.item.amount)
|
.map((i) => i.item.amount)
|
||||||
.reduce((acc, val) => acc + val);
|
.reduce((acc, val) => acc + val);
|
||||||
return Column(
|
return Column(
|
||||||
@ -271,7 +271,7 @@ class BudgetDetailsPage extends StatelessWidget {
|
|||||||
fallbackText: "",
|
fallbackText: "",
|
||||||
valueConverter: formatCurrency,
|
valueConverter: formatCurrency,
|
||||||
items:
|
items:
|
||||||
state.activeBudget!.budgetItems
|
state.budgetItems
|
||||||
.map(
|
.map(
|
||||||
(i) => (
|
(i) => (
|
||||||
title: i.expenseCategory.name,
|
title: i.expenseCategory.name,
|
||||||
@ -342,10 +342,9 @@ class BudgetDetailsPage extends StatelessWidget {
|
|||||||
padding: EdgeInsets.all(8),
|
padding: EdgeInsets.all(8),
|
||||||
child: ListView.builder(
|
child: ListView.builder(
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
itemCount: state.activeBudget!.budgetItems.length,
|
itemCount: state.budgetItems.length,
|
||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
final item = state.activeBudget!.budgetItems
|
final item = state.budgetItems.elementAt(index);
|
||||||
.elementAt(index);
|
|
||||||
final amount = formatCurrency(item.item.amount);
|
final amount = formatCurrency(item.item.amount);
|
||||||
final spent = spending[item.expenseCategory.name];
|
final spent = spending[item.expenseCategory.name];
|
||||||
final left =
|
final left =
|
||||||
|
@ -20,6 +20,7 @@ abstract class CoreState with _$CoreState {
|
|||||||
@Default([]) List<Beneficiary> beneficiaries,
|
@Default([]) List<Beneficiary> beneficiaries,
|
||||||
@Default([]) List<ExpenseCategory> expenseCategories,
|
@Default([]) List<ExpenseCategory> expenseCategories,
|
||||||
@Default([]) List<BudgetsDto> budgets,
|
@Default([]) List<BudgetsDto> budgets,
|
||||||
|
@Default([]) List<BudgetItemDto> budgetItems,
|
||||||
@Default(null) BudgetsDto? activeBudget,
|
@Default(null) BudgetsDto? activeBudget,
|
||||||
@Default([]) List<LoanDto> loans,
|
@Default([]) List<LoanDto> loans,
|
||||||
@Default(null) LoanDto? activeLoan,
|
@Default(null) LoanDto? activeLoan,
|
||||||
@ -37,6 +38,7 @@ class CoreCubit extends Cubit<CoreState> {
|
|||||||
StreamSubscription<void>? _beneficiariesStreamSubscription;
|
StreamSubscription<void>? _beneficiariesStreamSubscription;
|
||||||
StreamSubscription<void>? _expenseCategoryStreamSubscription;
|
StreamSubscription<void>? _expenseCategoryStreamSubscription;
|
||||||
StreamSubscription<void>? _budgetsStreamSubscription;
|
StreamSubscription<void>? _budgetsStreamSubscription;
|
||||||
|
StreamSubscription<void>? _budgetItemsStreamSubscription;
|
||||||
StreamSubscription<void>? _loanStreamSubscription;
|
StreamSubscription<void>? _loanStreamSubscription;
|
||||||
|
|
||||||
void setupAccountStream() {
|
void setupAccountStream() {
|
||||||
@ -179,7 +181,17 @@ class CoreCubit extends Cubit<CoreState> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setActiveBudget(BudgetsDto? budget) {
|
void setActiveBudget(BudgetsDto? budget) {
|
||||||
emit(state.copyWith(activeBudget: budget));
|
emit(state.copyWith(activeBudget: budget, budgetItems: []));
|
||||||
|
_budgetItemsStreamSubscription?.cancel();
|
||||||
|
if (budget != null) {
|
||||||
|
_budgetItemsStreamSubscription = GetIt.I
|
||||||
|
.get<OkaneDatabase>()
|
||||||
|
.budgetsDao
|
||||||
|
.watchBudgetItems(budget.budget)
|
||||||
|
.listen((items) {
|
||||||
|
emit(state.copyWith(budgetItems: items));
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> deleteAccount(Account account) async {
|
Future<void> deleteAccount(Account account) async {
|
||||||
|
@ -12,8 +12,7 @@ part of 'core.dart';
|
|||||||
T _$identity<T>(T value) => value;
|
T _$identity<T>(T value) => value;
|
||||||
|
|
||||||
final _privateConstructorUsedError = UnsupportedError(
|
final _privateConstructorUsedError = UnsupportedError(
|
||||||
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models',
|
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models');
|
||||||
);
|
|
||||||
|
|
||||||
/// @nodoc
|
/// @nodoc
|
||||||
mixin _$CoreState {
|
mixin _$CoreState {
|
||||||
@ -30,6 +29,7 @@ mixin _$CoreState {
|
|||||||
List<ExpenseCategory> get expenseCategories =>
|
List<ExpenseCategory> get expenseCategories =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
List<BudgetsDto> get budgets => throw _privateConstructorUsedError;
|
List<BudgetsDto> get budgets => throw _privateConstructorUsedError;
|
||||||
|
List<BudgetItemDto> get budgetItems => throw _privateConstructorUsedError;
|
||||||
BudgetsDto? get activeBudget => throw _privateConstructorUsedError;
|
BudgetsDto? get activeBudget => throw _privateConstructorUsedError;
|
||||||
List<LoanDto> get loans => throw _privateConstructorUsedError;
|
List<LoanDto> get loans => throw _privateConstructorUsedError;
|
||||||
LoanDto? get activeLoan => throw _privateConstructorUsedError;
|
LoanDto? get activeLoan => throw _privateConstructorUsedError;
|
||||||
@ -45,22 +45,22 @@ abstract class $CoreStateCopyWith<$Res> {
|
|||||||
factory $CoreStateCopyWith(CoreState value, $Res Function(CoreState) then) =
|
factory $CoreStateCopyWith(CoreState value, $Res Function(CoreState) then) =
|
||||||
_$CoreStateCopyWithImpl<$Res, CoreState>;
|
_$CoreStateCopyWithImpl<$Res, CoreState>;
|
||||||
@useResult
|
@useResult
|
||||||
$Res call({
|
$Res call(
|
||||||
OkanePage activePage,
|
{OkanePage activePage,
|
||||||
int? activeAccountIndex,
|
int? activeAccountIndex,
|
||||||
TransactionDto? activeTransaction,
|
TransactionDto? activeTransaction,
|
||||||
List<Account> accounts,
|
List<Account> accounts,
|
||||||
List<RecurringTransactionDto> recurringTransactions,
|
List<RecurringTransactionDto> recurringTransactions,
|
||||||
List<TransactionDto> transactions,
|
List<TransactionDto> transactions,
|
||||||
List<TransactionTemplateDto> transactionTemplates,
|
List<TransactionTemplateDto> transactionTemplates,
|
||||||
List<Beneficiary> beneficiaries,
|
List<Beneficiary> beneficiaries,
|
||||||
List<ExpenseCategory> expenseCategories,
|
List<ExpenseCategory> expenseCategories,
|
||||||
List<BudgetsDto> budgets,
|
List<BudgetsDto> budgets,
|
||||||
BudgetsDto? activeBudget,
|
List<BudgetItemDto> budgetItems,
|
||||||
List<LoanDto> loans,
|
BudgetsDto? activeBudget,
|
||||||
LoanDto? activeLoan,
|
List<LoanDto> loans,
|
||||||
bool isDeletingAccount,
|
LoanDto? activeLoan,
|
||||||
});
|
bool isDeletingAccount});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @nodoc
|
/// @nodoc
|
||||||
@ -86,86 +86,74 @@ class _$CoreStateCopyWithImpl<$Res, $Val extends CoreState>
|
|||||||
Object? beneficiaries = null,
|
Object? beneficiaries = null,
|
||||||
Object? expenseCategories = null,
|
Object? expenseCategories = null,
|
||||||
Object? budgets = null,
|
Object? budgets = null,
|
||||||
|
Object? budgetItems = null,
|
||||||
Object? activeBudget = freezed,
|
Object? activeBudget = freezed,
|
||||||
Object? loans = null,
|
Object? loans = null,
|
||||||
Object? activeLoan = freezed,
|
Object? activeLoan = freezed,
|
||||||
Object? isDeletingAccount = null,
|
Object? isDeletingAccount = null,
|
||||||
}) {
|
}) {
|
||||||
return _then(
|
return _then(_value.copyWith(
|
||||||
_value.copyWith(
|
activePage: null == activePage
|
||||||
activePage:
|
? _value.activePage
|
||||||
null == activePage
|
: activePage // ignore: cast_nullable_to_non_nullable
|
||||||
? _value.activePage
|
as OkanePage,
|
||||||
: activePage // ignore: cast_nullable_to_non_nullable
|
activeAccountIndex: freezed == activeAccountIndex
|
||||||
as OkanePage,
|
? _value.activeAccountIndex
|
||||||
activeAccountIndex:
|
: activeAccountIndex // ignore: cast_nullable_to_non_nullable
|
||||||
freezed == activeAccountIndex
|
as int?,
|
||||||
? _value.activeAccountIndex
|
activeTransaction: freezed == activeTransaction
|
||||||
: activeAccountIndex // ignore: cast_nullable_to_non_nullable
|
? _value.activeTransaction
|
||||||
as int?,
|
: activeTransaction // ignore: cast_nullable_to_non_nullable
|
||||||
activeTransaction:
|
as TransactionDto?,
|
||||||
freezed == activeTransaction
|
accounts: null == accounts
|
||||||
? _value.activeTransaction
|
? _value.accounts
|
||||||
: activeTransaction // ignore: cast_nullable_to_non_nullable
|
: accounts // ignore: cast_nullable_to_non_nullable
|
||||||
as TransactionDto?,
|
as List<Account>,
|
||||||
accounts:
|
recurringTransactions: null == recurringTransactions
|
||||||
null == accounts
|
? _value.recurringTransactions
|
||||||
? _value.accounts
|
: recurringTransactions // ignore: cast_nullable_to_non_nullable
|
||||||
: accounts // ignore: cast_nullable_to_non_nullable
|
as List<RecurringTransactionDto>,
|
||||||
as List<Account>,
|
transactions: null == transactions
|
||||||
recurringTransactions:
|
? _value.transactions
|
||||||
null == recurringTransactions
|
: transactions // ignore: cast_nullable_to_non_nullable
|
||||||
? _value.recurringTransactions
|
as List<TransactionDto>,
|
||||||
: recurringTransactions // ignore: cast_nullable_to_non_nullable
|
transactionTemplates: null == transactionTemplates
|
||||||
as List<RecurringTransactionDto>,
|
? _value.transactionTemplates
|
||||||
transactions:
|
: transactionTemplates // ignore: cast_nullable_to_non_nullable
|
||||||
null == transactions
|
as List<TransactionTemplateDto>,
|
||||||
? _value.transactions
|
beneficiaries: null == beneficiaries
|
||||||
: transactions // ignore: cast_nullable_to_non_nullable
|
? _value.beneficiaries
|
||||||
as List<TransactionDto>,
|
: beneficiaries // ignore: cast_nullable_to_non_nullable
|
||||||
transactionTemplates:
|
as List<Beneficiary>,
|
||||||
null == transactionTemplates
|
expenseCategories: null == expenseCategories
|
||||||
? _value.transactionTemplates
|
? _value.expenseCategories
|
||||||
: transactionTemplates // ignore: cast_nullable_to_non_nullable
|
: expenseCategories // ignore: cast_nullable_to_non_nullable
|
||||||
as List<TransactionTemplateDto>,
|
as List<ExpenseCategory>,
|
||||||
beneficiaries:
|
budgets: null == budgets
|
||||||
null == beneficiaries
|
? _value.budgets
|
||||||
? _value.beneficiaries
|
: budgets // ignore: cast_nullable_to_non_nullable
|
||||||
: beneficiaries // ignore: cast_nullable_to_non_nullable
|
as List<BudgetsDto>,
|
||||||
as List<Beneficiary>,
|
budgetItems: null == budgetItems
|
||||||
expenseCategories:
|
? _value.budgetItems
|
||||||
null == expenseCategories
|
: budgetItems // ignore: cast_nullable_to_non_nullable
|
||||||
? _value.expenseCategories
|
as List<BudgetItemDto>,
|
||||||
: expenseCategories // ignore: cast_nullable_to_non_nullable
|
activeBudget: freezed == activeBudget
|
||||||
as List<ExpenseCategory>,
|
? _value.activeBudget
|
||||||
budgets:
|
: activeBudget // ignore: cast_nullable_to_non_nullable
|
||||||
null == budgets
|
as BudgetsDto?,
|
||||||
? _value.budgets
|
loans: null == loans
|
||||||
: budgets // ignore: cast_nullable_to_non_nullable
|
? _value.loans
|
||||||
as List<BudgetsDto>,
|
: loans // ignore: cast_nullable_to_non_nullable
|
||||||
activeBudget:
|
as List<LoanDto>,
|
||||||
freezed == activeBudget
|
activeLoan: freezed == activeLoan
|
||||||
? _value.activeBudget
|
? _value.activeLoan
|
||||||
: activeBudget // ignore: cast_nullable_to_non_nullable
|
: activeLoan // ignore: cast_nullable_to_non_nullable
|
||||||
as BudgetsDto?,
|
as LoanDto?,
|
||||||
loans:
|
isDeletingAccount: null == isDeletingAccount
|
||||||
null == loans
|
? _value.isDeletingAccount
|
||||||
? _value.loans
|
: isDeletingAccount // ignore: cast_nullable_to_non_nullable
|
||||||
: loans // ignore: cast_nullable_to_non_nullable
|
as bool,
|
||||||
as List<LoanDto>,
|
) as $Val);
|
||||||
activeLoan:
|
|
||||||
freezed == activeLoan
|
|
||||||
? _value.activeLoan
|
|
||||||
: activeLoan // ignore: cast_nullable_to_non_nullable
|
|
||||||
as LoanDto?,
|
|
||||||
isDeletingAccount:
|
|
||||||
null == isDeletingAccount
|
|
||||||
? _value.isDeletingAccount
|
|
||||||
: isDeletingAccount // ignore: cast_nullable_to_non_nullable
|
|
||||||
as bool,
|
|
||||||
)
|
|
||||||
as $Val,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -173,27 +161,26 @@ class _$CoreStateCopyWithImpl<$Res, $Val extends CoreState>
|
|||||||
abstract class _$$CoreStateImplCopyWith<$Res>
|
abstract class _$$CoreStateImplCopyWith<$Res>
|
||||||
implements $CoreStateCopyWith<$Res> {
|
implements $CoreStateCopyWith<$Res> {
|
||||||
factory _$$CoreStateImplCopyWith(
|
factory _$$CoreStateImplCopyWith(
|
||||||
_$CoreStateImpl value,
|
_$CoreStateImpl value, $Res Function(_$CoreStateImpl) then) =
|
||||||
$Res Function(_$CoreStateImpl) then,
|
__$$CoreStateImplCopyWithImpl<$Res>;
|
||||||
) = __$$CoreStateImplCopyWithImpl<$Res>;
|
|
||||||
@override
|
@override
|
||||||
@useResult
|
@useResult
|
||||||
$Res call({
|
$Res call(
|
||||||
OkanePage activePage,
|
{OkanePage activePage,
|
||||||
int? activeAccountIndex,
|
int? activeAccountIndex,
|
||||||
TransactionDto? activeTransaction,
|
TransactionDto? activeTransaction,
|
||||||
List<Account> accounts,
|
List<Account> accounts,
|
||||||
List<RecurringTransactionDto> recurringTransactions,
|
List<RecurringTransactionDto> recurringTransactions,
|
||||||
List<TransactionDto> transactions,
|
List<TransactionDto> transactions,
|
||||||
List<TransactionTemplateDto> transactionTemplates,
|
List<TransactionTemplateDto> transactionTemplates,
|
||||||
List<Beneficiary> beneficiaries,
|
List<Beneficiary> beneficiaries,
|
||||||
List<ExpenseCategory> expenseCategories,
|
List<ExpenseCategory> expenseCategories,
|
||||||
List<BudgetsDto> budgets,
|
List<BudgetsDto> budgets,
|
||||||
BudgetsDto? activeBudget,
|
List<BudgetItemDto> budgetItems,
|
||||||
List<LoanDto> loans,
|
BudgetsDto? activeBudget,
|
||||||
LoanDto? activeLoan,
|
List<LoanDto> loans,
|
||||||
bool isDeletingAccount,
|
LoanDto? activeLoan,
|
||||||
});
|
bool isDeletingAccount});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @nodoc
|
/// @nodoc
|
||||||
@ -201,9 +188,8 @@ class __$$CoreStateImplCopyWithImpl<$Res>
|
|||||||
extends _$CoreStateCopyWithImpl<$Res, _$CoreStateImpl>
|
extends _$CoreStateCopyWithImpl<$Res, _$CoreStateImpl>
|
||||||
implements _$$CoreStateImplCopyWith<$Res> {
|
implements _$$CoreStateImplCopyWith<$Res> {
|
||||||
__$$CoreStateImplCopyWithImpl(
|
__$$CoreStateImplCopyWithImpl(
|
||||||
_$CoreStateImpl _value,
|
_$CoreStateImpl _value, $Res Function(_$CoreStateImpl) _then)
|
||||||
$Res Function(_$CoreStateImpl) _then,
|
: super(_value, _then);
|
||||||
) : super(_value, _then);
|
|
||||||
|
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
@ -218,114 +204,105 @@ class __$$CoreStateImplCopyWithImpl<$Res>
|
|||||||
Object? beneficiaries = null,
|
Object? beneficiaries = null,
|
||||||
Object? expenseCategories = null,
|
Object? expenseCategories = null,
|
||||||
Object? budgets = null,
|
Object? budgets = null,
|
||||||
|
Object? budgetItems = null,
|
||||||
Object? activeBudget = freezed,
|
Object? activeBudget = freezed,
|
||||||
Object? loans = null,
|
Object? loans = null,
|
||||||
Object? activeLoan = freezed,
|
Object? activeLoan = freezed,
|
||||||
Object? isDeletingAccount = null,
|
Object? isDeletingAccount = null,
|
||||||
}) {
|
}) {
|
||||||
return _then(
|
return _then(_$CoreStateImpl(
|
||||||
_$CoreStateImpl(
|
activePage: null == activePage
|
||||||
activePage:
|
? _value.activePage
|
||||||
null == activePage
|
: activePage // ignore: cast_nullable_to_non_nullable
|
||||||
? _value.activePage
|
as OkanePage,
|
||||||
: activePage // ignore: cast_nullable_to_non_nullable
|
activeAccountIndex: freezed == activeAccountIndex
|
||||||
as OkanePage,
|
? _value.activeAccountIndex
|
||||||
activeAccountIndex:
|
: activeAccountIndex // ignore: cast_nullable_to_non_nullable
|
||||||
freezed == activeAccountIndex
|
as int?,
|
||||||
? _value.activeAccountIndex
|
activeTransaction: freezed == activeTransaction
|
||||||
: activeAccountIndex // ignore: cast_nullable_to_non_nullable
|
? _value.activeTransaction
|
||||||
as int?,
|
: activeTransaction // ignore: cast_nullable_to_non_nullable
|
||||||
activeTransaction:
|
as TransactionDto?,
|
||||||
freezed == activeTransaction
|
accounts: null == accounts
|
||||||
? _value.activeTransaction
|
? _value._accounts
|
||||||
: activeTransaction // ignore: cast_nullable_to_non_nullable
|
: accounts // ignore: cast_nullable_to_non_nullable
|
||||||
as TransactionDto?,
|
as List<Account>,
|
||||||
accounts:
|
recurringTransactions: null == recurringTransactions
|
||||||
null == accounts
|
? _value._recurringTransactions
|
||||||
? _value._accounts
|
: recurringTransactions // ignore: cast_nullable_to_non_nullable
|
||||||
: accounts // ignore: cast_nullable_to_non_nullable
|
as List<RecurringTransactionDto>,
|
||||||
as List<Account>,
|
transactions: null == transactions
|
||||||
recurringTransactions:
|
? _value._transactions
|
||||||
null == recurringTransactions
|
: transactions // ignore: cast_nullable_to_non_nullable
|
||||||
? _value._recurringTransactions
|
as List<TransactionDto>,
|
||||||
: recurringTransactions // ignore: cast_nullable_to_non_nullable
|
transactionTemplates: null == transactionTemplates
|
||||||
as List<RecurringTransactionDto>,
|
? _value._transactionTemplates
|
||||||
transactions:
|
: transactionTemplates // ignore: cast_nullable_to_non_nullable
|
||||||
null == transactions
|
as List<TransactionTemplateDto>,
|
||||||
? _value._transactions
|
beneficiaries: null == beneficiaries
|
||||||
: transactions // ignore: cast_nullable_to_non_nullable
|
? _value._beneficiaries
|
||||||
as List<TransactionDto>,
|
: beneficiaries // ignore: cast_nullable_to_non_nullable
|
||||||
transactionTemplates:
|
as List<Beneficiary>,
|
||||||
null == transactionTemplates
|
expenseCategories: null == expenseCategories
|
||||||
? _value._transactionTemplates
|
? _value._expenseCategories
|
||||||
: transactionTemplates // ignore: cast_nullable_to_non_nullable
|
: expenseCategories // ignore: cast_nullable_to_non_nullable
|
||||||
as List<TransactionTemplateDto>,
|
as List<ExpenseCategory>,
|
||||||
beneficiaries:
|
budgets: null == budgets
|
||||||
null == beneficiaries
|
? _value._budgets
|
||||||
? _value._beneficiaries
|
: budgets // ignore: cast_nullable_to_non_nullable
|
||||||
: beneficiaries // ignore: cast_nullable_to_non_nullable
|
as List<BudgetsDto>,
|
||||||
as List<Beneficiary>,
|
budgetItems: null == budgetItems
|
||||||
expenseCategories:
|
? _value._budgetItems
|
||||||
null == expenseCategories
|
: budgetItems // ignore: cast_nullable_to_non_nullable
|
||||||
? _value._expenseCategories
|
as List<BudgetItemDto>,
|
||||||
: expenseCategories // ignore: cast_nullable_to_non_nullable
|
activeBudget: freezed == activeBudget
|
||||||
as List<ExpenseCategory>,
|
? _value.activeBudget
|
||||||
budgets:
|
: activeBudget // ignore: cast_nullable_to_non_nullable
|
||||||
null == budgets
|
as BudgetsDto?,
|
||||||
? _value._budgets
|
loans: null == loans
|
||||||
: budgets // ignore: cast_nullable_to_non_nullable
|
? _value._loans
|
||||||
as List<BudgetsDto>,
|
: loans // ignore: cast_nullable_to_non_nullable
|
||||||
activeBudget:
|
as List<LoanDto>,
|
||||||
freezed == activeBudget
|
activeLoan: freezed == activeLoan
|
||||||
? _value.activeBudget
|
? _value.activeLoan
|
||||||
: activeBudget // ignore: cast_nullable_to_non_nullable
|
: activeLoan // ignore: cast_nullable_to_non_nullable
|
||||||
as BudgetsDto?,
|
as LoanDto?,
|
||||||
loans:
|
isDeletingAccount: null == isDeletingAccount
|
||||||
null == loans
|
? _value.isDeletingAccount
|
||||||
? _value._loans
|
: isDeletingAccount // ignore: cast_nullable_to_non_nullable
|
||||||
: loans // ignore: cast_nullable_to_non_nullable
|
as bool,
|
||||||
as List<LoanDto>,
|
));
|
||||||
activeLoan:
|
|
||||||
freezed == activeLoan
|
|
||||||
? _value.activeLoan
|
|
||||||
: activeLoan // ignore: cast_nullable_to_non_nullable
|
|
||||||
as LoanDto?,
|
|
||||||
isDeletingAccount:
|
|
||||||
null == isDeletingAccount
|
|
||||||
? _value.isDeletingAccount
|
|
||||||
: isDeletingAccount // ignore: cast_nullable_to_non_nullable
|
|
||||||
as bool,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @nodoc
|
/// @nodoc
|
||||||
|
|
||||||
class _$CoreStateImpl implements _CoreState {
|
class _$CoreStateImpl implements _CoreState {
|
||||||
const _$CoreStateImpl({
|
const _$CoreStateImpl(
|
||||||
this.activePage = OkanePage.accounts,
|
{this.activePage = OkanePage.accounts,
|
||||||
this.activeAccountIndex,
|
this.activeAccountIndex,
|
||||||
this.activeTransaction = null,
|
this.activeTransaction = null,
|
||||||
final List<Account> accounts = const [],
|
final List<Account> accounts = const [],
|
||||||
final List<RecurringTransactionDto> recurringTransactions = const [],
|
final List<RecurringTransactionDto> recurringTransactions = const [],
|
||||||
final List<TransactionDto> transactions = const [],
|
final List<TransactionDto> transactions = const [],
|
||||||
final List<TransactionTemplateDto> transactionTemplates = const [],
|
final List<TransactionTemplateDto> transactionTemplates = const [],
|
||||||
final List<Beneficiary> beneficiaries = const [],
|
final List<Beneficiary> beneficiaries = const [],
|
||||||
final List<ExpenseCategory> expenseCategories = const [],
|
final List<ExpenseCategory> expenseCategories = const [],
|
||||||
final List<BudgetsDto> budgets = const [],
|
final List<BudgetsDto> budgets = const [],
|
||||||
this.activeBudget = null,
|
final List<BudgetItemDto> budgetItems = const [],
|
||||||
final List<LoanDto> loans = const [],
|
this.activeBudget = null,
|
||||||
this.activeLoan = null,
|
final List<LoanDto> loans = const [],
|
||||||
this.isDeletingAccount = false,
|
this.activeLoan = null,
|
||||||
}) : _accounts = accounts,
|
this.isDeletingAccount = false})
|
||||||
_recurringTransactions = recurringTransactions,
|
: _accounts = accounts,
|
||||||
_transactions = transactions,
|
_recurringTransactions = recurringTransactions,
|
||||||
_transactionTemplates = transactionTemplates,
|
_transactions = transactions,
|
||||||
_beneficiaries = beneficiaries,
|
_transactionTemplates = transactionTemplates,
|
||||||
_expenseCategories = expenseCategories,
|
_beneficiaries = beneficiaries,
|
||||||
_budgets = budgets,
|
_expenseCategories = expenseCategories,
|
||||||
_loans = loans;
|
_budgets = budgets,
|
||||||
|
_budgetItems = budgetItems,
|
||||||
|
_loans = loans;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@JsonKey()
|
@JsonKey()
|
||||||
@ -401,6 +378,15 @@ class _$CoreStateImpl implements _CoreState {
|
|||||||
return EqualUnmodifiableListView(_budgets);
|
return EqualUnmodifiableListView(_budgets);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final List<BudgetItemDto> _budgetItems;
|
||||||
|
@override
|
||||||
|
@JsonKey()
|
||||||
|
List<BudgetItemDto> get budgetItems {
|
||||||
|
if (_budgetItems is EqualUnmodifiableListView) return _budgetItems;
|
||||||
|
// ignore: implicit_dynamic_type
|
||||||
|
return EqualUnmodifiableListView(_budgetItems);
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@JsonKey()
|
@JsonKey()
|
||||||
final BudgetsDto? activeBudget;
|
final BudgetsDto? activeBudget;
|
||||||
@ -422,7 +408,7 @@ class _$CoreStateImpl implements _CoreState {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
return 'CoreState(activePage: $activePage, activeAccountIndex: $activeAccountIndex, activeTransaction: $activeTransaction, accounts: $accounts, recurringTransactions: $recurringTransactions, transactions: $transactions, transactionTemplates: $transactionTemplates, beneficiaries: $beneficiaries, expenseCategories: $expenseCategories, budgets: $budgets, activeBudget: $activeBudget, loans: $loans, activeLoan: $activeLoan, isDeletingAccount: $isDeletingAccount)';
|
return 'CoreState(activePage: $activePage, activeAccountIndex: $activeAccountIndex, activeTransaction: $activeTransaction, accounts: $accounts, recurringTransactions: $recurringTransactions, transactions: $transactions, transactionTemplates: $transactionTemplates, beneficiaries: $beneficiaries, expenseCategories: $expenseCategories, budgets: $budgets, budgetItems: $budgetItems, activeBudget: $activeBudget, loans: $loans, activeLoan: $activeLoan, isDeletingAccount: $isDeletingAccount)';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -437,27 +423,19 @@ class _$CoreStateImpl implements _CoreState {
|
|||||||
(identical(other.activeTransaction, activeTransaction) ||
|
(identical(other.activeTransaction, activeTransaction) ||
|
||||||
other.activeTransaction == activeTransaction) &&
|
other.activeTransaction == activeTransaction) &&
|
||||||
const DeepCollectionEquality().equals(other._accounts, _accounts) &&
|
const DeepCollectionEquality().equals(other._accounts, _accounts) &&
|
||||||
const DeepCollectionEquality().equals(
|
const DeepCollectionEquality()
|
||||||
other._recurringTransactions,
|
.equals(other._recurringTransactions, _recurringTransactions) &&
|
||||||
_recurringTransactions,
|
const DeepCollectionEquality()
|
||||||
) &&
|
.equals(other._transactions, _transactions) &&
|
||||||
const DeepCollectionEquality().equals(
|
const DeepCollectionEquality()
|
||||||
other._transactions,
|
.equals(other._transactionTemplates, _transactionTemplates) &&
|
||||||
_transactions,
|
const DeepCollectionEquality()
|
||||||
) &&
|
.equals(other._beneficiaries, _beneficiaries) &&
|
||||||
const DeepCollectionEquality().equals(
|
const DeepCollectionEquality()
|
||||||
other._transactionTemplates,
|
.equals(other._expenseCategories, _expenseCategories) &&
|
||||||
_transactionTemplates,
|
|
||||||
) &&
|
|
||||||
const DeepCollectionEquality().equals(
|
|
||||||
other._beneficiaries,
|
|
||||||
_beneficiaries,
|
|
||||||
) &&
|
|
||||||
const DeepCollectionEquality().equals(
|
|
||||||
other._expenseCategories,
|
|
||||||
_expenseCategories,
|
|
||||||
) &&
|
|
||||||
const DeepCollectionEquality().equals(other._budgets, _budgets) &&
|
const DeepCollectionEquality().equals(other._budgets, _budgets) &&
|
||||||
|
const DeepCollectionEquality()
|
||||||
|
.equals(other._budgetItems, _budgetItems) &&
|
||||||
(identical(other.activeBudget, activeBudget) ||
|
(identical(other.activeBudget, activeBudget) ||
|
||||||
other.activeBudget == activeBudget) &&
|
other.activeBudget == activeBudget) &&
|
||||||
const DeepCollectionEquality().equals(other._loans, _loans) &&
|
const DeepCollectionEquality().equals(other._loans, _loans) &&
|
||||||
@ -469,22 +447,22 @@ class _$CoreStateImpl implements _CoreState {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
int get hashCode => Object.hash(
|
int get hashCode => Object.hash(
|
||||||
runtimeType,
|
runtimeType,
|
||||||
activePage,
|
activePage,
|
||||||
activeAccountIndex,
|
activeAccountIndex,
|
||||||
activeTransaction,
|
activeTransaction,
|
||||||
const DeepCollectionEquality().hash(_accounts),
|
const DeepCollectionEquality().hash(_accounts),
|
||||||
const DeepCollectionEquality().hash(_recurringTransactions),
|
const DeepCollectionEquality().hash(_recurringTransactions),
|
||||||
const DeepCollectionEquality().hash(_transactions),
|
const DeepCollectionEquality().hash(_transactions),
|
||||||
const DeepCollectionEquality().hash(_transactionTemplates),
|
const DeepCollectionEquality().hash(_transactionTemplates),
|
||||||
const DeepCollectionEquality().hash(_beneficiaries),
|
const DeepCollectionEquality().hash(_beneficiaries),
|
||||||
const DeepCollectionEquality().hash(_expenseCategories),
|
const DeepCollectionEquality().hash(_expenseCategories),
|
||||||
const DeepCollectionEquality().hash(_budgets),
|
const DeepCollectionEquality().hash(_budgets),
|
||||||
activeBudget,
|
const DeepCollectionEquality().hash(_budgetItems),
|
||||||
const DeepCollectionEquality().hash(_loans),
|
activeBudget,
|
||||||
activeLoan,
|
const DeepCollectionEquality().hash(_loans),
|
||||||
isDeletingAccount,
|
activeLoan,
|
||||||
);
|
isDeletingAccount);
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(ignore: true)
|
||||||
@override
|
@override
|
||||||
@ -494,22 +472,22 @@ class _$CoreStateImpl implements _CoreState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
abstract class _CoreState implements CoreState {
|
abstract class _CoreState implements CoreState {
|
||||||
const factory _CoreState({
|
const factory _CoreState(
|
||||||
final OkanePage activePage,
|
{final OkanePage activePage,
|
||||||
final int? activeAccountIndex,
|
final int? activeAccountIndex,
|
||||||
final TransactionDto? activeTransaction,
|
final TransactionDto? activeTransaction,
|
||||||
final List<Account> accounts,
|
final List<Account> accounts,
|
||||||
final List<RecurringTransactionDto> recurringTransactions,
|
final List<RecurringTransactionDto> recurringTransactions,
|
||||||
final List<TransactionDto> transactions,
|
final List<TransactionDto> transactions,
|
||||||
final List<TransactionTemplateDto> transactionTemplates,
|
final List<TransactionTemplateDto> transactionTemplates,
|
||||||
final List<Beneficiary> beneficiaries,
|
final List<Beneficiary> beneficiaries,
|
||||||
final List<ExpenseCategory> expenseCategories,
|
final List<ExpenseCategory> expenseCategories,
|
||||||
final List<BudgetsDto> budgets,
|
final List<BudgetsDto> budgets,
|
||||||
final BudgetsDto? activeBudget,
|
final List<BudgetItemDto> budgetItems,
|
||||||
final List<LoanDto> loans,
|
final BudgetsDto? activeBudget,
|
||||||
final LoanDto? activeLoan,
|
final List<LoanDto> loans,
|
||||||
final bool isDeletingAccount,
|
final LoanDto? activeLoan,
|
||||||
}) = _$CoreStateImpl;
|
final bool isDeletingAccount}) = _$CoreStateImpl;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
OkanePage get activePage;
|
OkanePage get activePage;
|
||||||
@ -532,6 +510,8 @@ abstract class _CoreState implements CoreState {
|
|||||||
@override
|
@override
|
||||||
List<BudgetsDto> get budgets;
|
List<BudgetsDto> get budgets;
|
||||||
@override
|
@override
|
||||||
|
List<BudgetItemDto> get budgetItems;
|
||||||
|
@override
|
||||||
BudgetsDto? get activeBudget;
|
BudgetsDto? get activeBudget;
|
||||||
@override
|
@override
|
||||||
List<LoanDto> get loans;
|
List<LoanDto> get loans;
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
|
import 'package:drift/drift.dart' show Value;
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
import 'package:get_it/get_it.dart';
|
||||||
|
import 'package:okane/database/sqlite.dart';
|
||||||
import 'package:okane/i18n/strings.g.dart';
|
import 'package:okane/i18n/strings.g.dart';
|
||||||
import 'package:okane/ui/state/core.dart';
|
import 'package:okane/ui/state/core.dart';
|
||||||
|
|
||||||
@ -48,14 +51,16 @@ class AddExpenseCategoryState extends State<AddExpenseCategory> {
|
|||||||
Spacer(),
|
Spacer(),
|
||||||
OutlinedButton(
|
OutlinedButton(
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
// TODO
|
final category = await GetIt.I
|
||||||
/*
|
.get<OkaneDatabase>()
|
||||||
final category =
|
.expenseCategoriesDao
|
||||||
ExpenseCategory()
|
.upsertCategory(
|
||||||
..name = _categoryNameController.text;
|
ExpenseCategoriesCompanion(
|
||||||
await upsertExpenseCategory(category);
|
name: Value(_categoryNameController.text),
|
||||||
|
),
|
||||||
|
);
|
||||||
_categoryNameController.text = "";
|
_categoryNameController.text = "";
|
||||||
Navigator.of(context).pop(category);*/
|
Navigator.of(context).pop(category);
|
||||||
},
|
},
|
||||||
child: Text(t.modals.add),
|
child: Text(t.modals.add),
|
||||||
),
|
),
|
||||||
|
Loading…
Reference in New Issue
Block a user