diff --git a/lib/domain/enums/chart_type.dart b/lib/domain/enums/chart_type.dart new file mode 100644 index 000000000..5df6dd87c --- /dev/null +++ b/lib/domain/enums/chart_type.dart @@ -0,0 +1,11 @@ +enum ChartType { + topFiveStarCharacterMostReruns, + topFiveStarWeaponMostReruns, + topFourStarCharacterMostReruns, + topFourStarWeaponMostReruns, + topFiveStarCharacterLeastReruns, + topFiveStarWeaponLeastReruns, + topFourStarCharacterLeastReruns, + topFourStarWeaponLeastReruns, + characterBirthdays, +} diff --git a/lib/domain/enums/enums.dart b/lib/domain/enums/enums.dart index ed1e6b9d8..2da2a7e85 100644 --- a/lib/domain/enums/enums.dart +++ b/lib/domain/enums/enums.dart @@ -16,6 +16,7 @@ export 'character_role_subtype.dart'; export 'character_role_type.dart'; export 'character_skill_ability_type.dart'; export 'character_skill_type.dart'; +export 'chart_type.dart'; export 'day_type.dart'; export 'element_type.dart'; export 'end_drawer_item_type.dart'; diff --git a/lib/domain/models/charts/chart_birthday_month_model.dart b/lib/domain/models/charts/chart_birthday_month_model.dart new file mode 100644 index 000000000..1ae219b0c --- /dev/null +++ b/lib/domain/models/charts/chart_birthday_month_model.dart @@ -0,0 +1,12 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:shiori/domain/models/items/item_common.dart'; + +part 'chart_birthday_month_model.freezed.dart'; + +@freezed +class ChartBirthdayMonthModel with _$ChartBirthdayMonthModel { + const factory ChartBirthdayMonthModel({ + required int month, + required List items, + }) = _ChartBirthdayMonthModel; +} diff --git a/lib/domain/models/charts/chart_element_item_model.dart b/lib/domain/models/charts/chart_element_item_model.dart new file mode 100644 index 000000000..acd58be71 --- /dev/null +++ b/lib/domain/models/charts/chart_element_item_model.dart @@ -0,0 +1,14 @@ +import 'dart:math'; + +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:shiori/domain/enums/enums.dart'; + +part 'chart_element_item_model.freezed.dart'; + +@freezed +class ChartElementItemModel with _$ChartElementItemModel { + const factory ChartElementItemModel({ + required ElementType type, + required List> points, + }) = _ChartElementItemModel; +} diff --git a/lib/domain/models/charts/chart_top_item_model.dart b/lib/domain/models/charts/chart_top_item_model.dart new file mode 100644 index 000000000..77d6dc10a --- /dev/null +++ b/lib/domain/models/charts/chart_top_item_model.dart @@ -0,0 +1,15 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:shiori/domain/enums/enums.dart'; + +part 'chart_top_item_model.freezed.dart'; + +@freezed +class ChartTopItemModel with _$ChartTopItemModel { + const factory ChartTopItemModel({ + required String key, + required ChartType type, + required String name, + required int value, + required double percentage, + }) = _ChartTopItemModel; +} diff --git a/lib/domain/models/models.dart b/lib/domain/models/models.dart index d9b9c2692..cdbe6c3b1 100644 --- a/lib/domain/models/models.dart +++ b/lib/domain/models/models.dart @@ -14,6 +14,9 @@ export 'characters/character_multi_talent_ascension_model.dart'; export 'characters/character_passive_talent_model.dart'; export 'characters/character_skill_card_model.dart'; export 'characters/character_talent_ascension_model.dart'; +export 'charts/chart_birthday_month_model.dart'; +export 'charts/chart_element_item_model.dart'; +export 'charts/chart_top_item_model.dart'; export 'custom_builds/custom_build_artifact_model.dart'; export 'custom_builds/custom_build_model.dart'; export 'custom_builds/custom_build_note_model.dart'; diff --git a/lib/domain/services/genshin_service.dart b/lib/domain/services/genshin_service.dart index 6f5b9e518..b1bee1bac 100644 --- a/lib/domain/services/genshin_service.dart +++ b/lib/domain/services/genshin_service.dart @@ -92,4 +92,8 @@ abstract class GenshinService { List getBannerHistory(BannerHistoryItemType type); List getBanners(double version); List getItemReleaseHistory(String itemKey); + + List getTopCharts(ChartType type); + List getCharacterBirthdaysForCharts(); + List getElementsForCharts(); } diff --git a/lib/domain/services/telemetry_service.dart b/lib/domain/services/telemetry_service.dart index c20f3a810..3b8cdb1c8 100644 --- a/lib/domain/services/telemetry_service.dart +++ b/lib/domain/services/telemetry_service.dart @@ -67,4 +67,6 @@ abstract class TelemetryService { Future trackBannerHistoryItemOpened(double version); Future trackItemReleaseHistoryOpened(String itemKey); + + Future trackChartsOpened(); }