Skip to content

Commit

Permalink
Merge pull request #490 from lyskouski/RF-217
Browse files Browse the repository at this point in the history
[#217] [RF] Revise Architecture
  • Loading branch information
lyskouski authored Sep 13, 2024
2 parents 37c2739 + 7d0d765 commit a5462f9
Show file tree
Hide file tree
Showing 44 changed files with 131 additions and 100 deletions.
File renamed without changes.
20 changes: 1 addition & 19 deletions lib/_classes/storage/transaction_log.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,29 +7,11 @@ import 'dart:async';
import 'dart:math';
import 'package:app_finance/_classes/controller/encryption_handler.dart';
import 'package:app_finance/_classes/storage/app_data.dart';
import 'package:app_finance/_classes/structure/abstract_app_data.dart';
import 'package:app_finance/_classes/structure/account_app_data.dart';
import 'package:app_finance/_classes/structure/bill_app_data.dart';
import 'package:app_finance/_classes/structure/budget_app_data.dart';
import 'package:app_finance/_classes/structure/currency_app_data.dart';
import 'package:app_finance/_classes/structure/goal_app_data.dart';
import 'package:app_finance/_classes/structure/invoice_app_data.dart';
import 'package:app_finance/_classes/storage/app_preferences.dart';
import 'package:app_finance/_ext/data_ext.dart';
import 'package:path_provider/path_provider.dart';
import 'package:flutter/foundation.dart' show kIsWeb;

extension DataExt on String {
AbstractAppData? toDataObject(Map<String, dynamic> data, AppData store) => switch (this) {
'GoalAppData' => GoalAppData.fromJson(data),
'AccountAppData' => AccountAppData.fromJson(data),
'BillAppData' => BillAppData.fromJson(data)..setState(store),
'BudgetAppData' => BudgetAppData.fromJson(data)..setState(store),
'CurrencyAppData' => CurrencyAppData.fromJson(data),
'InvoiceAppData' => InvoiceAppData.fromJson(data)..setState(store),
_ => null,
};
}

class TransactionLog {
static int increment = 0;

Expand Down
4 changes: 1 addition & 3 deletions lib/_classes/storage/transaction_log/web_dav_data.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,5 @@ class WebDavData {
this.path = 'tmp.log',
});

bool isEmpty() {
return username.isEmpty || link.isEmpty || password.isEmpty || path.isEmpty;
}
bool isEmpty() => username.isEmpty || link.isEmpty || password.isEmpty || path.isEmpty;
}
2 changes: 1 addition & 1 deletion lib/_configs/custom_text_theme.dart
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ extension CustomTextTheme on TextTheme {
),
bodyMedium: GoogleFonts.abel(
fontSize: 14,
fontWeight: FontWeight.w600,
fontWeight: FontWeight.w400,
letterSpacing: letterSpacingOrNone(1.2),
),
bodySmall: GoogleFonts.abel(
Expand Down
23 changes: 23 additions & 0 deletions lib/_ext/data_ext.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// Copyright 2024 The terCAD team. All rights reserved.
// Use of this source code is governed by a CC BY-NC-ND 4.0 license that can be found in the LICENSE file.

import 'package:app_finance/_classes/storage/app_data.dart';
import 'package:app_finance/_classes/structure/abstract_app_data.dart';
import 'package:app_finance/_classes/structure/account_app_data.dart';
import 'package:app_finance/_classes/structure/bill_app_data.dart';
import 'package:app_finance/_classes/structure/budget_app_data.dart';
import 'package:app_finance/_classes/structure/currency_app_data.dart';
import 'package:app_finance/_classes/structure/goal_app_data.dart';
import 'package:app_finance/_classes/structure/invoice_app_data.dart';

extension DataExt on String {
AbstractAppData? toDataObject(Map<String, dynamic> data, AppData store) => switch (this) {
'GoalAppData' => GoalAppData.fromJson(data),
'AccountAppData' => AccountAppData.fromJson(data),
'BillAppData' => BillAppData.fromJson(data)..setState(store),
'BudgetAppData' => BudgetAppData.fromJson(data)..setState(store),
'CurrencyAppData' => CurrencyAppData.fromJson(data),
'InvoiceAppData' => InvoiceAppData.fromJson(data)..setState(store),
_ => null,
};
}
20 changes: 10 additions & 10 deletions lib/components/component_chart.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
// Use of this source code is governed by a CC BY-NC-ND 4.0 license that can be found in the LICENSE file.

import 'package:app_finance/_classes/herald/app_locale.dart';
import 'package:app_finance/components/component_account_flow.dart';
import 'package:app_finance/components/component_account_health.dart';
import 'package:app_finance/components/component_bill_ytd.dart';
import 'package:app_finance/components/component_budget_forecast.dart';
import 'package:app_finance/components/component_budget_ytd.dart';
import 'package:app_finance/components/widgets/account_flow_chart.dart';
import 'package:app_finance/components/widgets/account_health_chart.dart';
import 'package:app_finance/components/widgets/bill_ytd_chart.dart';
import 'package:app_finance/components/widgets/budget_forecast_chart.dart';
import 'package:app_finance/components/widgets/budget_ytd_chart.dart';
import 'package:app_finance/design/form/list_selector_item.dart';
import 'package:app_finance/_configs/theme_helper.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
Expand Down Expand Up @@ -36,11 +36,11 @@ class ComponentChart extends StatelessWidget {
return Container(
padding: EdgeInsets.all(ThemeHelper.getIndent()),
child: switch (widgetType) {
ComponentChartType.accountFlow => const ComponentAccountFlow(),
ComponentChartType.accountHealth => const ComponentAccountHealth(),
ComponentChartType.billYtd => const ComponentBillYtd(),
ComponentChartType.budgetForecast => const ComponentBudgetForecast(),
ComponentChartType.budgetYtd => const ComponentBudgetYtd(),
ComponentChartType.accountFlow => const AccountFlowChart(),
ComponentChartType.accountHealth => const AccountHealthChart(),
ComponentChartType.billYtd => const BillYtdChart(),
ComponentChartType.budgetForecast => const BudgetForecastChart(),
ComponentChartType.budgetYtd => const BudgetYtdChart(),
_ => ThemeHelper.emptyBox,
},
);
Expand Down
8 changes: 4 additions & 4 deletions lib/components/component_recent.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@
import 'package:app_finance/_classes/herald/app_locale.dart';
import 'package:app_finance/_classes/storage/app_data.dart';
import 'package:app_finance/_classes/structure/currency/exchange.dart';
import 'package:app_finance/design/form/list_selector_item.dart';
import 'package:app_finance/_classes/structure/navigation/app_route.dart';
import 'package:app_finance/_configs/theme_helper.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/_ext/string_ext.dart';
import 'package:app_finance/components/_core/component_data.dart';
import 'package:app_finance/pages/home/widgets/account_widget.dart';
import 'package:app_finance/pages/home/widgets/bill_widget.dart';
import 'package:app_finance/pages/home/widgets/budget_widget.dart';
import 'package:app_finance/components/widgets/account_widget.dart';
import 'package:app_finance/components/widgets/bill_widget.dart';
import 'package:app_finance/components/widgets/budget_widget.dart';
import 'package:app_finance/design/form/list_selector_item.dart';
import 'package:app_finance/design/form/list_selector.dart';
import 'package:app_finance/design/form/simple_input.dart';
import 'package:app_finance/design/generic/base_widget.dart';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ import 'package:app_finance/design/wrapper/text_wrapper.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class ComponentAccountFlow extends StatelessWidget {
const ComponentAccountFlow({super.key});
class AccountFlowChart extends StatelessWidget {
const AccountFlowChart({super.key});

List<OhlcData> getData(AppData store, List<AccountAppData> accounts, DateTime xMin) {
final exchange = Exchange(store: store);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ import 'package:app_finance/_configs/theme_helper.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/charts/gauge_linear_chart.dart';
import 'package:app_finance/charts/interface/ohlc_data.dart';
import 'package:app_finance/components/component_account_flow.dart';
import 'package:app_finance/components/widgets/account_flow_chart.dart';
import 'package:app_finance/design/wrapper/text_wrapper.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class ComponentAccountHealth extends ComponentAccountFlow {
const ComponentAccountHealth({super.key});
class AccountHealthChart extends AccountFlowChart {
const AccountHealthChart({super.key});

double getHealthData(List<OhlcData> data) {
double health = 0;
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ import 'package:app_finance/design/wrapper/text_wrapper.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class ComponentBillYtd extends StatelessWidget {
const ComponentBillYtd({super.key});
class BillYtdChart extends StatelessWidget {
const BillYtdChart({super.key});

List<ChartData> getData(AppData store) {
final currentYear = DateTime(DateTime.now().year);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/charts/data/data_handler.dart';
import 'package:app_finance/charts/forecast_chart.dart';
import 'package:app_finance/charts/interface/chart_data.dart';
import 'package:app_finance/components/component_account_flow.dart';
import 'package:app_finance/components/widgets/account_flow_chart.dart';
import 'package:app_finance/design/wrapper/row_widget.dart';
import 'package:app_finance/design/wrapper/text_wrapper.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class ComponentBudgetForecast extends ComponentAccountFlow {
const ComponentBudgetForecast({super.key});
class BudgetForecastChart extends AccountFlowChart {
const BudgetForecastChart({super.key});

@override
Widget build(BuildContext context) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import 'package:app_finance/_classes/structure/navigation/app_route.dart';
import 'package:app_finance/_classes/structure/budget_app_data.dart';
import 'package:app_finance/_configs/theme_helper.dart';
import 'package:app_finance/design/generic/base_swipe_widget.dart';
import 'package:app_finance/pages/home/widgets/account_widget.dart';
import 'package:app_finance/components/widgets/account_widget.dart';
import 'package:app_finance/design/generic/base_group_widget.dart';
import 'package:app_finance/design/generic/base_line_widget.dart';
import 'package:flutter/material.dart';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ import 'package:app_finance/design/wrapper/text_wrapper.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class ComponentBudgetYtd extends StatelessWidget {
const ComponentBudgetYtd({super.key});
class BudgetYtdChart extends StatelessWidget {
const BudgetYtdChart({super.key});

List<BudgetAppData> getBudgetHistory(AppData store) {
final current = DateTime(DateTime.now().year, DateTime.now().month);
Expand Down
8 changes: 7 additions & 1 deletion lib/design/form/list_selector_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@

import 'package:app_finance/_classes/herald/app_design.dart';
import 'package:app_finance/_classes/herald/app_locale.dart';
import 'package:app_finance/_configs/design_type.dart';
import 'package:app_finance/design/form/list_selector_item.dart';
import 'package:app_finance/_configs/theme_helper.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/_ext/color_ext.dart';
import 'package:app_finance/design/form/simple_input.dart';
import 'package:flutter/material.dart';
import 'package:flutter_grid_layout/flutter_grid_layout.dart';
import 'package:provider/provider.dart';

typedef FntSelectorCallback = Widget Function(
List<ListSelectorItem> options,
Expand Down Expand Up @@ -76,6 +78,10 @@ class ListSelectorPageState<T extends Object?> extends State<ListSelectorPage> {

@override
Widget build(BuildContext context) {
final design = Provider.of<AppDesign>(context, listen: false);
if (design.value == AppDesignType.germany) {
options.sort((a, b) => a.name.compareTo(b.name));
}
final indent = ThemeHelper.getIndent();
nav = Navigator.of(context);
return Directionality(
Expand Down Expand Up @@ -140,7 +146,7 @@ class ListSelectorPageState<T extends Object?> extends State<ListSelectorPage> {
child: IconButton(
tooltip: AppLocale.labels.clear,
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all<Color>(
backgroundColor: WidgetStateProperty.all<Color>(
context.colorScheme.surface.mesh(context.colorScheme.primary.withOpacity(1), 0.1),
),
),
Expand Down
2 changes: 1 addition & 1 deletion lib/design/generic/base_group_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ class BaseGroupWidget extends StatelessWidget {
final textTheme = context.textTheme;
final titleText = Text(
title,
style: textTheme.bodyMedium,
style: textTheme.headlineMedium,
overflow: TextOverflow.ellipsis,
);
final subTitle = Text(
Expand Down
2 changes: 1 addition & 1 deletion lib/design/generic/base_line_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ class BaseLineWidget extends StatelessWidget {
children: [
TextWrapper(
title,
style: textTheme.bodyMedium,
style: textTheme.headlineMedium,
),
TextWrapper(
description,
Expand Down
2 changes: 1 addition & 1 deletion lib/l10n/index.dart
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ const languageList = <LanguageDef>[

String languageDesign(String? value) => switch (value) {
'ar' => AppDesignType.rtlGeneral.name,
'ge' => AppDesignType.germany.name,
'de' => AppDesignType.germany.name,
'zh' => AppDesignType.asiaGeneral.name,
'fa' => AppDesignType.rtlGeneral.name,
_ => AppDesignType.global.name,
Expand Down
2 changes: 1 addition & 1 deletion lib/pages/about/widgets/member_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class MemberWidget extends StatelessWidget {
mainAxisAlignment: AppDesign.getAlignment<MainAxisAlignment>(),
crossAxisAlignment: AppDesign.getAlignment(),
children: [
TextWrapper(member.name, style: context.textTheme.bodyMedium),
TextWrapper(member.name, style: context.textTheme.headlineMedium),
Expanded(
child: ListView.builder(
scrollDirection: Axis.horizontal,
Expand Down
7 changes: 7 additions & 0 deletions lib/pages/account/account_page.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
// Copyright 2023 The terCAD team. All rights reserved.
// Use of this source code is governed by a CC BY-NC-ND 4.0 license that can be found in the LICENSE file.

import 'package:app_finance/_classes/herald/app_design.dart';
import 'package:app_finance/_classes/storage/app_data.dart';
import 'package:app_finance/_classes/herald/app_locale.dart';
import 'package:app_finance/_classes/structure/account_app_data.dart';
import 'package:app_finance/_classes/structure/currency/exchange.dart';
import 'package:app_finance/_configs/design_type.dart';
import 'package:app_finance/_configs/theme_helper.dart';
import 'package:app_finance/_classes/structure/navigation/app_route.dart';
import 'package:app_finance/design/wrapper/background_wrapper.dart';
Expand All @@ -15,6 +17,7 @@ import 'package:app_finance/design/generic/base_swipe_widget.dart';
import 'package:app_finance/design/wrapper/tap_widget.dart';
import 'package:app_finance/pages/account/widgets/header_widget.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class AccountPage extends StatefulWidget {
final String? search;
Expand Down Expand Up @@ -67,6 +70,10 @@ class AccountPageState extends AbstractPageState<AccountPage> {
@override
Widget buildContent(BuildContext context, BoxConstraints constraints) {
final items = _getItems();
final design = Provider.of<AppDesign>(context, listen: false);
if (design.value == AppDesignType.germany) {
items.list.sort((a, b) => a.title.compareTo(b.title));
}
final width = ThemeHelper.getWidth(context, 4, constraints);
final indent = ThemeHelper.getIndent();
final widthCount = ThemeHelper.getWidthCount(constraints, context);
Expand Down
2 changes: 1 addition & 1 deletion lib/pages/account/account_view_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ class AccountViewPageState extends AbstractPageState<AccountViewPage> {
children: [
TextWrapper(
item.title,
style: textTheme.bodyMedium,
style: textTheme.headlineMedium,
),
TextWrapper(
item.description,
Expand Down
8 changes: 4 additions & 4 deletions lib/pages/account/widgets/account_line_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,13 @@ class AccountLineWidget extends StatelessWidget {
Icon(item.icon, color: item.color, size: 20),
],
[
TextWrapper(item.title, style: textTheme.bodyMedium),
TextWrapper(item.title, style: textTheme.headlineMedium),
],
[
NumberWidget(item.description ?? '', colorScheme: context.colorScheme, style: textTheme.bodyMedium),
NumberWidget(item.description ?? '', colorScheme: context.colorScheme, style: textTheme.headlineMedium),
],
[
TextWrapper(AccountType.getLabel(item.type), style: textTheme.bodyMedium),
TextWrapper(AccountType.getLabel(item.type), style: textTheme.headlineMedium),
],
[
Row(
Expand Down Expand Up @@ -87,7 +87,7 @@ class AccountLineWidget extends StatelessWidget {
Icon(item.icon, color: item.color, size: 20),
],
[
TextWrapper(item.title, style: textTheme.bodyMedium),
TextWrapper(item.title, style: textTheme.headlineMedium),
],
[
Align(
Expand Down
2 changes: 1 addition & 1 deletion lib/pages/bill/widgets/bill_header_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class BillHeaderWidget extends StatelessWidget {
ThemeHelper.wIndent,
TextWrapper(
item.title,
style: textTheme.bodyMedium,
style: textTheme.headlineMedium,
),
],
),
Expand Down
8 changes: 4 additions & 4 deletions lib/pages/bill/widgets/bill_line_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -72,14 +72,14 @@ class BillLineWidget extends StatelessWidget {
[
Padding(
padding: EdgeInsets.only(top: indent),
child: TextWrapper(title, style: textTheme.bodyMedium),
child: TextWrapper(title, style: textTheme.headlineMedium),
),
],
[
TextWrapper(AppLocale.labels.account, style: textTheme.bodySmall),
TextWrapper(
description,
style: textTheme.bodyMedium?.copyWith(
style: textTheme.headlineMedium?.copyWith(
color: Color.alphaBlend(descriptionColor.withOpacity(0.4), context.colorScheme.secondary),
),
),
Expand All @@ -88,7 +88,7 @@ class BillLineWidget extends StatelessWidget {
TextWrapper(AppLocale.labels.budget, style: textTheme.bodySmall),
TextWrapper(
iconTooltip,
style: textTheme.bodyMedium?.copyWith(
style: textTheme.headlineMedium?.copyWith(
color: Color.alphaBlend(color.withOpacity(0.4), context.colorScheme.secondary),
),
),
Expand Down Expand Up @@ -126,7 +126,7 @@ class BillLineWidget extends StatelessWidget {
Column(
crossAxisAlignment: AppDesign.getAlignment(),
children: [
TextWrapper(title, style: textTheme.bodyMedium),
TextWrapper(title, style: textTheme.headlineMedium),
TextWrapper(
description,
style: textTheme.numberSmall.copyWith(
Expand Down
2 changes: 1 addition & 1 deletion lib/pages/budget/budget_add_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ class BudgetAddPageState<T extends BudgetAddPage> extends AbstractAddPageState<B
[
Text(
DateFormat.MMMM(AppLocale.code).format(DateTime(DateTime.now().year, e.key)),
style: textTheme.bodyMedium,
style: textTheme.headlineMedium,
),
],
[
Expand Down
Loading

0 comments on commit a5462f9

Please sign in to comment.