From f69c2b72c59b03416b6eb25c724e78c2047dce6a Mon Sep 17 00:00:00 2001 From: Efrain Date: Sat, 30 Jan 2021 20:38:28 -0500 Subject: [PATCH] Better code architecture and typo fixes --- .gitignore | 2 +- assets/db/characters.json | 128 +++++------ assets/db/weapons.json | 210 +++++++++--------- .../artifact_details_bloc.dart | 21 +- .../artifact_details_event.dart | 0 .../artifact_details_state.dart | 0 .../artifacts/artifacts_bloc.dart | 9 +- .../artifacts/artifacts_event.dart | 0 .../artifacts/artifacts_state.dart | 0 lib/{bloc => application}/bloc.dart | 0 .../calculator_asc_materials_bloc.dart | 78 +++---- .../calculator_asc_materials_event.dart | 0 .../calculator_asc_materials_state.dart | 2 +- .../calculator_asc_materials_item_bloc.dart | 9 +- .../calculator_asc_materials_item_event.dart | 0 .../calculator_asc_materials_item_state.dart | 0 .../character/character_bloc.dart | 33 ++- .../character/character_event.dart | 0 .../character/character_state.dart | 6 +- .../characters/characters_bloc.dart | 13 +- .../characters/characters_event.dart | 0 .../characters/characters_state.dart | 0 .../elements/elements_bloc.dart | 6 +- .../elements/elements_event.dart | 0 .../elements/elements_state.dart | 0 lib/{bloc => application}/home/home_bloc.dart | 5 +- .../home/home_event.dart | 0 .../home/home_state.dart | 4 +- lib/{bloc => application}/main/main_bloc.dart | 48 +--- .../main/main_event.dart | 0 .../main/main_state.dart | 6 +- .../main_tab/main_tab_bloc.dart | 0 .../main_tab/main_tab_event.dart | 0 .../main_tab/main_tab_state.dart | 0 .../materials/materials_bloc.dart | 17 +- .../materials/materials_event.dart | 0 .../materials/materials_state.dart | 4 +- .../settings/settings_bloc.dart | 6 +- .../settings/settings_event.dart | 0 .../settings/settings_state.dart | 0 .../url_page/url_page_bloc.dart | 11 +- .../url_page/url_page_event.dart | 0 .../url_page/url_page_state.dart | 0 .../utils/app_path_utils.dart | 0 .../weapon/weapon_bloc.dart | 21 +- .../weapon/weapon_event.dart | 0 .../weapon/weapon_state.dart | 2 +- .../weapons/weapons_bloc.dart | 12 +- .../weapons/weapons_event.dart | 0 .../weapons/weapons_state.dart | 0 lib/{common => domain}/app_constants.dart | 0 lib/{common => domain}/assets.dart | 8 +- .../enums/app_accent_color_type.dart | 0 .../enums/app_language_type.dart | 0 .../enums/app_theme_type.dart | 0 .../enums/artifact_filter_type.dart | 0 .../enums/artifact_type.dart | 0 .../ascension_material_summary_type.dart | 0 .../enums/character_filter_type.dart | 0 .../enums/character_skill_ability_type.dart | 0 .../enums/character_skill_type.dart | 0 .../enums/character_type.dart | 0 lib/{common => domain}/enums/day_type.dart | 0 .../enums/element_type.dart | 0 lib/domain/enums/enums.dart | 20 ++ .../enums/item_location_type.dart | 0 .../enums/item_status_type.dart | 0 .../enums/material_type.dart | 0 lib/{common => domain}/enums/region_type.dart | 0 .../enums/sort_direction_type.dart | 0 lib/{common => domain}/enums/stat_type.dart | 0 .../enums/weapon_filter_type.dart | 0 lib/{common => domain}/enums/weapon_type.dart | 0 .../extensions/iterable_extensions.dart | 0 .../extensions/string_extensions.dart | 0 .../extensions/weapon_type_extensions.dart | 0 .../models/artifacts/artifact_card_model.dart | 0 .../ascension_materials_summary.dart} | 4 +- .../character_skill.dart | 0 .../item_ascension_materials.dart | 32 +++ .../character_ascension_model.dart} | 8 +- .../character_build_card_model.dart | 0 .../characters/character_card_model.dart | 4 +- .../character_constellation_model.dart | 0 .../character_passive_talent_model.dart | 0 .../character_skill_card_model.dart | 4 +- .../character_talent_ascension_model.dart | 12 + .../db/artifacts/artifact_file_model.dart | 2 +- .../models/db/artifacts/artifacts_file.dart | 0 .../db/characters/character_file_model.dart | 70 +++--- .../models/db/characters/characters_file.dart | 0 .../elements/element_debuff_file_model.dart | 2 +- .../elements/element_reaction_file_model.dart | 2 +- .../models/db/elements/elements_file.dart | 0 .../db/materials/material_file_model.dart | 4 +- .../models/db/materials/materials_file.dart | 0 .../translation_artifact_file.dart | 0 .../translation_character_file.dart | 0 .../translation_element_file.dart | 0 .../db/translations/translation_file.dart | 0 .../translation_material_file.dart | 0 .../translations/translation_weapon_file.dart | 0 .../models/db/weapons/weapon_file_model.dart | 23 +- .../models/db/weapons/weapons_file.dart | 0 .../models/elements/element_card_model.dart | 0 .../elements/element_reaction_card_model.dart | 0 ...today_char_ascension_materials_model.dart} | 6 +- ...oday_weapon_ascension_material_model.dart} | 4 +- .../items/item_ascension_material_model.dart | 23 ++ lib/{ => domain}/models/models.dart | 17 +- .../models/settings/app_settings.dart | 6 +- .../weapons/weapon_ascension_model.dart | 13 ++ .../models/weapons/weapon_card_model.dart | 4 +- .../weapons/weapon_file_refinement_model.dart | 0 lib/domain/services/genshin_service.dart | 40 ++++ lib/domain/services/logging_service.dart | 7 + lib/domain/services/network_service.dart | 3 + lib/domain/services/settings_service.dart | 26 +++ lib/domain/services/telemetry_service.dart | 26 +++ lib/generated/intl/messages_en.dart | 2 +- lib/generated/intl/messages_es_ES.dart | 7 + lib/generated/l10n.dart | 4 +- .../genshin_service.dart} | 109 +++------ .../logging_service.dart | 21 +- .../network_service.dart | 5 +- .../settings_service.dart | 40 +--- .../telemetry}/flutter_appcenter_bundle.dart | 0 .../telemetry/telemetry_service.dart | 73 ++++++ lib/injection.dart | 22 +- lib/l10n/intl_en.arb | 2 +- lib/l10n/intl_es_ES.arb | 6 +- lib/l10n/intl_fr.arb | 18 +- lib/main.dart | 67 ++---- .../item_ascention_materials.dart | 34 --- .../character_talent_ascention_model.dart | 12 - .../items/item_ascention_material_model.dart | 23 -- .../weapons/weapon_ascention_model.dart | 13 -- lib/presentation/app_widget.dart | 59 +++++ .../artifact}/artifact_details_page.dart | 25 +-- .../artifacts}/artifacts_page.dart | 22 +- .../widgets}/artifact_bottom_sheet.dart | 21 +- .../artifacts/widgets}/artifact_card.dart | 14 +- .../widgets}/artifact_info_card.dart | 15 +- .../artifacts/widgets}/artifact_stats.dart | 5 +- .../calculator_ascension_materials_page.dart} | 43 ++-- .../widgets}/add_edit_item_bottom_sheet.dart | 16 +- .../widgets}/ascension_materials_summary.dart | 18 +- .../widgets}/item_card.dart | 12 +- .../widgets}/material_item.dart | 5 +- .../widgets}/skill_item.dart | 8 +- .../character}/character_page.dart | 7 +- .../character/widgets}/character_detail.dart | 4 +- ...cter_detail_ascension_materials_card.dart} | 33 ++- .../widgets}/character_detail_bottom.dart | 30 +-- .../character_detail_constellations_card.dart | 15 +- .../character_detail_general_card.dart | 24 +- .../character_detail_passive_card.dart | 15 +- .../character_detail_skills_card.dart | 25 +-- ...tail_talent_ascension_materials_card.dart} | 55 ++--- .../widgets}/character_detail_top.dart | 12 +- .../characters}/characters_page.dart | 20 +- .../character_ascension_materials.dart} | 8 +- .../widgets}/character_bottom_sheet.dart | 29 ++- .../widgets}/character_build_card.dart | 27 ++- .../characters/widgets}/character_card.dart | 25 +-- ...cter_card_ascension_materials_bottom.dart} | 20 +- .../elements}/elements_page.dart | 10 +- .../widgets}/element_debuff_card.dart | 5 +- .../widgets}/element_reaction_card.dart | 5 +- .../widgets}/sliver_element_debuffs.dart | 4 +- .../widgets}/sliver_element_reactions.dart | 4 +- .../widgets}/sliver_element_resonances.dart | 4 +- .../home}/home_page.dart | 20 +- .../char_card_ascension_material.dart} | 15 +- .../widgets}/sliver_calculators_card.dart | 4 +- .../home/widgets}/sliver_card_item.dart | 3 +- .../home/widgets}/sliver_elements_card.dart | 7 +- .../home/widgets}/sliver_settings_card.dart | 7 +- ...liver_today_char_ascension_materials.dart} | 11 +- .../sliver_today_weapon_materials.dart | 9 +- .../widgets}/sliver_wish_simulator_card.dart | 9 +- .../weapon_card_ascension_material.dart} | 15 +- .../pages => presentation}/main_tab_page.dart | 45 ++-- .../pages => presentation/map}/map_page.dart | 9 +- .../settings}/settings_page.dart | 14 +- .../widgets}/about_settings_card.dart | 12 +- .../widgets}/accent_color_settings_card.dart | 13 +- .../widgets}/language_settings_card.dart | 12 +- .../settings/widgets}/other_settings.dart | 12 +- .../settings/widgets}/settings_card.dart | 3 +- .../widgets}/theme_settings_card.dart | 12 +- .../shared}/app_fab.dart | 2 +- .../shared}/bottom_sheet_title.dart | 2 +- .../shared}/bullet_list.dart | 4 +- .../shared}/circle_character.dart | 5 +- .../shared}/comingsoon_new_avatar.dart | 3 +- .../shared}/common_bottom_sheet.dart | 4 +- .../shared}/element_image.dart | 6 +- .../shared}/elements_button_bar.dart | 8 +- .../extensions/app_theme_type_extensions.dart | 3 +- .../extensions/element_type_extensions.dart | 4 +- .../shared}/extensions/i18n_extensions.dart | 20 +- .../shared}/extensions/rarity_extensions.dart | 0 .../scroll_controller_extensions.dart | 0 .../shared}/genshin_db_icons.dart | 0 .../shared}/gradient_card.dart | 0 .../shared}/image_widget_placeholder.dart | 0 .../shared}/increment_button.dart | 2 +- .../shared}/item_counter.dart | 0 .../shared}/item_description.dart | 2 +- .../shared}/item_description_card.dart | 4 +- .../shared}/item_description_detail.dart | 5 +- .../shared}/item_expansion_panel.dart | 2 +- .../shared}/item_popupmenu_filter.dart | 0 .../shared}/loading.dart | 3 +- .../shared}/modal_sheet_separator.dart | 0 .../shared}/nothing_found.dart | 3 +- .../shared}/nothing_found_column.dart | 0 .../shared}/page_message.dart | 0 .../shared}/primogem_icon.dart | 3 +- .../shared}/rarity.dart | 0 .../shared}/rarity_rating.dart | 0 .../shared}/search_box.dart | 3 +- .../shared}/sliver_loading.dart | 0 .../shared}/sliver_nothing_found.dart | 0 .../shared}/sliver_page_filter.dart | 2 +- .../shared}/sliver_row_grid.dart | 0 .../shared}/sliver_scaffold_with_fab.dart | 2 +- .../sort_direction_popupmenu_filter.dart | 6 +- .../shared}/styles.dart | 0 .../shared}/weapons_button_bar.dart | 8 +- .../shared/wrapped_ascension_material.dart} | 4 +- .../splash}/splash_page.dart | 3 +- .../today_materials}/materials_page.dart | 16 +- ...sliver_character_ascension_materials.dart} | 15 +- .../sliver_weapon_ascension_materials.dart} | 15 +- .../weapon}/weapon_page.dart | 40 ++-- ...apon_detail_ascension_materials_card.dart} | 26 +-- .../weapon_detail_refinements_card.dart | 9 +- .../weapons}/weapons_page.dart | 21 +- .../weapons/widgets}/weapon_bottom_sheet.dart | 24 +- .../weapons/widgets}/weapon_card.dart | 22 +- .../wish_simulator}/wish_simulator_page.dart | 9 +- lib/telemetry.dart | 62 ------ 244 files changed, 1324 insertions(+), 1405 deletions(-) rename lib/{bloc => application}/artifact_details/artifact_details_bloc.dart (67%) rename lib/{bloc => application}/artifact_details/artifact_details_event.dart (100%) rename lib/{bloc => application}/artifact_details/artifact_details_state.dart (100%) rename lib/{bloc => application}/artifacts/artifacts_bloc.dart (95%) rename lib/{bloc => application}/artifacts/artifacts_event.dart (100%) rename lib/{bloc => application}/artifacts/artifacts_state.dart (100%) rename lib/{bloc => application}/bloc.dart (100%) rename lib/{bloc => application}/calculator_asc_materials/calculator_asc_materials_bloc.dart (76%) rename lib/{bloc => application}/calculator_asc_materials/calculator_asc_materials_event.dart (100%) rename lib/{bloc => application}/calculator_asc_materials/calculator_asc_materials_state.dart (84%) rename lib/{bloc => application}/calculator_asc_materials_item/calculator_asc_materials_item_bloc.dart (96%) rename lib/{bloc => application}/calculator_asc_materials_item/calculator_asc_materials_item_event.dart (100%) rename lib/{bloc => application}/calculator_asc_materials_item/calculator_asc_materials_item_state.dart (100%) rename lib/{bloc => application}/character/character_bloc.dart (80%) rename lib/{bloc => application}/character/character_event.dart (100%) rename lib/{bloc => application}/character/character_state.dart (76%) rename lib/{bloc => application}/characters/characters_bloc.dart (94%) rename lib/{bloc => application}/characters/characters_event.dart (100%) rename lib/{bloc => application}/characters/characters_state.dart (100%) rename lib/{bloc => application}/elements/elements_bloc.dart (87%) rename lib/{bloc => application}/elements/elements_event.dart (100%) rename lib/{bloc => application}/elements/elements_state.dart (100%) rename lib/{bloc => application}/home/home_bloc.dart (87%) rename lib/{bloc => application}/home/home_event.dart (100%) rename lib/{bloc => application}/home/home_state.dart (61%) rename lib/{bloc => application}/main/main_bloc.dart (71%) rename lib/{bloc => application}/main/main_event.dart (100%) rename lib/{bloc => application}/main/main_state.dart (82%) rename lib/{bloc => application}/main_tab/main_tab_bloc.dart (100%) rename lib/{bloc => application}/main_tab/main_tab_event.dart (100%) rename lib/{bloc => application}/main_tab/main_tab_state.dart (100%) rename lib/{bloc => application}/materials/materials_bloc.dart (74%) rename lib/{bloc => application}/materials/materials_event.dart (100%) rename lib/{bloc => application}/materials/materials_state.dart (64%) rename lib/{bloc => application}/settings/settings_bloc.dart (92%) rename lib/{bloc => application}/settings/settings_event.dart (100%) rename lib/{bloc => application}/settings/settings_state.dart (100%) rename lib/{bloc => application}/url_page/url_page_bloc.dart (70%) rename lib/{bloc => application}/url_page/url_page_event.dart (100%) rename lib/{bloc => application}/url_page/url_page_state.dart (100%) rename lib/{common => application}/utils/app_path_utils.dart (100%) rename lib/{bloc => application}/weapon/weapon_bloc.dart (76%) rename lib/{bloc => application}/weapon/weapon_event.dart (100%) rename lib/{bloc => application}/weapon/weapon_state.dart (90%) rename lib/{bloc => application}/weapons/weapons_bloc.dart (94%) rename lib/{bloc => application}/weapons/weapons_event.dart (100%) rename lib/{bloc => application}/weapons/weapons_state.dart (100%) rename lib/{common => domain}/app_constants.dart (100%) rename lib/{common => domain}/assets.dart (96%) rename lib/{common => domain}/enums/app_accent_color_type.dart (100%) rename lib/{common => domain}/enums/app_language_type.dart (100%) rename lib/{common => domain}/enums/app_theme_type.dart (100%) rename lib/{common => domain}/enums/artifact_filter_type.dart (100%) rename lib/{common => domain}/enums/artifact_type.dart (100%) rename lib/{common => domain}/enums/ascension_material_summary_type.dart (100%) rename lib/{common => domain}/enums/character_filter_type.dart (100%) rename lib/{common => domain}/enums/character_skill_ability_type.dart (100%) rename lib/{common => domain}/enums/character_skill_type.dart (100%) rename lib/{common => domain}/enums/character_type.dart (100%) rename lib/{common => domain}/enums/day_type.dart (100%) rename lib/{common => domain}/enums/element_type.dart (100%) create mode 100644 lib/domain/enums/enums.dart rename lib/{common => domain}/enums/item_location_type.dart (100%) rename lib/{common => domain}/enums/item_status_type.dart (100%) rename lib/{common => domain}/enums/material_type.dart (100%) rename lib/{common => domain}/enums/region_type.dart (100%) rename lib/{common => domain}/enums/sort_direction_type.dart (100%) rename lib/{common => domain}/enums/stat_type.dart (100%) rename lib/{common => domain}/enums/weapon_filter_type.dart (100%) rename lib/{common => domain}/enums/weapon_type.dart (100%) rename lib/{common => domain}/extensions/iterable_extensions.dart (100%) rename lib/{common => domain}/extensions/string_extensions.dart (100%) rename lib/{common => domain}/extensions/weapon_type_extensions.dart (100%) rename lib/{ => domain}/models/artifacts/artifact_card_model.dart (100%) rename lib/{models/calculator_asc_materials/ascention_materials_summary.dart => domain/models/calculator_asc_materials/ascension_materials_summary.dart} (90%) rename lib/{ => domain}/models/calculator_asc_materials/character_skill.dart (100%) create mode 100644 lib/domain/models/calculator_asc_materials/item_ascension_materials.dart rename lib/{models/characters/character_ascention_model.dart => domain/models/characters/character_ascension_model.dart} (50%) rename lib/{ => domain}/models/characters/character_build_card_model.dart (100%) rename lib/{ => domain}/models/characters/character_card_model.dart (86%) rename lib/{ => domain}/models/characters/character_constellation_model.dart (100%) rename lib/{ => domain}/models/characters/character_passive_talent_model.dart (100%) rename lib/{ => domain}/models/characters/character_skill_card_model.dart (86%) create mode 100644 lib/domain/models/characters/character_talent_ascension_model.dart rename lib/{ => domain}/models/db/artifacts/artifact_file_model.dart (96%) rename lib/{ => domain}/models/db/artifacts/artifacts_file.dart (100%) rename lib/{ => domain}/models/db/characters/character_file_model.dart (66%) rename lib/{ => domain}/models/db/characters/characters_file.dart (100%) rename lib/{ => domain}/models/db/elements/element_debuff_file_model.dart (93%) rename lib/{ => domain}/models/db/elements/element_reaction_file_model.dart (95%) rename lib/{ => domain}/models/db/elements/elements_file.dart (100%) rename lib/{ => domain}/models/db/materials/material_file_model.dart (88%) rename lib/{ => domain}/models/db/materials/materials_file.dart (100%) rename lib/{ => domain}/models/db/translations/translation_artifact_file.dart (100%) rename lib/{ => domain}/models/db/translations/translation_character_file.dart (100%) rename lib/{ => domain}/models/db/translations/translation_element_file.dart (100%) rename lib/{ => domain}/models/db/translations/translation_file.dart (100%) rename lib/{ => domain}/models/db/translations/translation_material_file.dart (100%) rename lib/{ => domain}/models/db/translations/translation_weapon_file.dart (100%) rename lib/{ => domain}/models/db/weapons/weapon_file_model.dart (64%) rename lib/{ => domain}/models/db/weapons/weapons_file.dart (100%) rename lib/{ => domain}/models/elements/element_card_model.dart (100%) rename lib/{ => domain}/models/elements/element_reaction_card_model.dart (100%) rename lib/{models/home/today_char_ascention_materials_model.dart => domain/models/home/today_char_ascension_materials_model.dart} (79%) rename lib/{models/home/today_weapon_ascention_material_model.dart => domain/models/home/today_weapon_ascension_material_model.dart} (75%) create mode 100644 lib/domain/models/items/item_ascension_material_model.dart rename lib/{ => domain}/models/models.dart (76%) rename lib/{ => domain}/models/settings/app_settings.dart (81%) create mode 100644 lib/domain/models/weapons/weapon_ascension_model.dart rename lib/{ => domain}/models/weapons/weapon_card_model.dart (84%) rename lib/{ => domain}/models/weapons/weapon_file_refinement_model.dart (100%) create mode 100644 lib/domain/services/genshin_service.dart create mode 100644 lib/domain/services/logging_service.dart create mode 100644 lib/domain/services/network_service.dart create mode 100644 lib/domain/services/settings_service.dart create mode 100644 lib/domain/services/telemetry_service.dart rename lib/{services/genshing_service.dart => infrastructure/genshin_service.dart} (75%) rename lib/{services => infrastructure}/logging_service.dart (81%) rename lib/{services => infrastructure}/network_service.dart (78%) rename lib/{services => infrastructure}/settings_service.dart (81%) rename lib/{ => infrastructure/telemetry}/flutter_appcenter_bundle.dart (100%) create mode 100644 lib/infrastructure/telemetry/telemetry_service.dart delete mode 100644 lib/models/calculator_asc_materials/item_ascention_materials.dart delete mode 100644 lib/models/characters/character_talent_ascention_model.dart delete mode 100644 lib/models/items/item_ascention_material_model.dart delete mode 100644 lib/models/weapons/weapon_ascention_model.dart create mode 100644 lib/presentation/app_widget.dart rename lib/{ui/pages => presentation/artifact}/artifact_details_page.dart (86%) rename lib/{ui/pages => presentation/artifacts}/artifacts_page.dart (80%) rename lib/{ui/widgets/artifacts => presentation/artifacts/widgets}/artifact_bottom_sheet.dart (75%) rename lib/{ui/widgets/artifacts => presentation/artifacts/widgets}/artifact_card.dart (84%) rename lib/{ui/widgets/artifacts => presentation/artifacts/widgets}/artifact_info_card.dart (86%) rename lib/{ui/widgets/artifacts => presentation/artifacts/widgets}/artifact_stats.dart (91%) rename lib/{ui/pages/calculator_ascention_materials_page.dart => presentation/calculator_asc_materials/calculator_ascension_materials_page.dart} (79%) rename lib/{ui/widgets/ascension_materials => presentation/calculator_asc_materials/widgets}/add_edit_item_bottom_sheet.dart (90%) rename lib/{ui/widgets/ascension_materials => presentation/calculator_asc_materials/widgets}/ascension_materials_summary.dart (79%) rename lib/{ui/widgets/ascension_materials => presentation/calculator_asc_materials/widgets}/item_card.dart (93%) rename lib/{ui/widgets/ascension_materials => presentation/calculator_asc_materials/widgets}/material_item.dart (86%) rename lib/{ui/widgets/ascension_materials => presentation/calculator_asc_materials/widgets}/skill_item.dart (93%) rename lib/{ui/pages => presentation/character}/character_page.dart (85%) rename lib/{ui/widgets/characters => presentation/character/widgets}/character_detail.dart (72%) rename lib/{ui/widgets/characters/character_detail_ascention_materials_card.dart => presentation/character/widgets/character_detail_ascension_materials_card.dart} (71%) rename lib/{ui/widgets/characters => presentation/character/widgets}/character_detail_bottom.dart (71%) rename lib/{ui/widgets/characters => presentation/character/widgets}/character_detail_constellations_card.dart (85%) rename lib/{ui/widgets/characters => presentation/character/widgets}/character_detail_general_card.dart (77%) rename lib/{ui/widgets/characters => presentation/character/widgets}/character_detail_passive_card.dart (83%) rename lib/{ui/widgets/characters => presentation/character/widgets}/character_detail_skills_card.dart (81%) rename lib/{ui/widgets/characters/character_detail_talent_ascention_materials_card.dart => presentation/character/widgets/character_detail_talent_ascension_materials_card.dart} (57%) rename lib/{ui/widgets/characters => presentation/character/widgets}/character_detail_top.dart (87%) rename lib/{ui/pages => presentation/characters}/characters_page.dart (83%) rename lib/{ui/widgets/characters/character_ascention_materials.dart => presentation/characters/widgets/character_ascension_materials.dart} (83%) rename lib/{ui/widgets/characters => presentation/characters/widgets}/character_bottom_sheet.dart (76%) rename lib/{ui/widgets/characters => presentation/characters/widgets}/character_build_card.dart (86%) rename lib/{ui/widgets/characters => presentation/characters/widgets}/character_card.dart (83%) rename lib/{ui/widgets/characters/character_card_ascention_materials_bottom.dart => presentation/characters/widgets/character_card_ascension_materials_bottom.dart} (73%) rename lib/{ui/pages => presentation/elements}/elements_page.dart (89%) rename lib/{ui/widgets/elements => presentation/elements/widgets}/element_debuff_card.dart (88%) rename lib/{ui/widgets/elements => presentation/elements/widgets}/element_reaction_card.dart (94%) rename lib/{ui/widgets/elements => presentation/elements/widgets}/sliver_element_debuffs.dart (93%) rename lib/{ui/widgets/elements => presentation/elements/widgets}/sliver_element_reactions.dart (90%) rename lib/{ui/widgets/elements => presentation/elements/widgets}/sliver_element_resonances.dart (92%) rename lib/{ui/pages => presentation/home}/home_page.dart (84%) rename lib/{ui/widgets/home/char_card_ascention_material.dart => presentation/home/widgets/char_card_ascension_material.dart} (85%) rename lib/{ui/widgets/home => presentation/home/widgets}/sliver_calculators_card.dart (84%) rename lib/{ui/widgets/home => presentation/home/widgets}/sliver_card_item.dart (96%) rename lib/{ui/widgets/home => presentation/home/widgets}/sliver_elements_card.dart (87%) rename lib/{ui/widgets/home => presentation/home/widgets}/sliver_settings_card.dart (89%) rename lib/{ui/widgets/home/sliver_today_char_ascention_materials.dart => presentation/home/widgets/sliver_today_char_ascension_materials.dart} (51%) rename lib/{ui/widgets/home => presentation/home/widgets}/sliver_today_weapon_materials.dart (60%) rename lib/{ui/widgets/home => presentation/home/widgets}/sliver_wish_simulator_card.dart (86%) rename lib/{ui/widgets/home/weapon_card_ascention_material.dart => presentation/home/widgets/weapon_card_ascension_material.dart} (86%) rename lib/{ui/pages => presentation}/main_tab_page.dart (78%) rename lib/{ui/pages => presentation/map}/map_page.dart (93%) rename lib/{ui/pages => presentation/settings}/settings_page.dart (62%) rename lib/{ui/widgets/settings => presentation/settings/widgets}/about_settings_card.dart (94%) rename lib/{ui/widgets/settings => presentation/settings/widgets}/accent_color_settings_card.dart (83%) rename lib/{ui/widgets/settings => presentation/settings/widgets}/language_settings_card.dart (88%) rename lib/{ui/widgets/settings => presentation/settings/widgets}/other_settings.dart (80%) rename lib/{ui/widgets/settings => presentation/settings/widgets}/settings_card.dart (89%) rename lib/{ui/widgets/settings => presentation/settings/widgets}/theme_settings_card.dart (86%) rename lib/{ui/widgets/common => presentation/shared}/app_fab.dart (91%) rename lib/{ui/widgets/common => presentation/shared}/bottom_sheet_title.dart (95%) rename lib/{ui/widgets/common => presentation/shared}/bullet_list.dart (92%) rename lib/{ui/widgets/common => presentation/shared}/circle_character.dart (88%) rename lib/{ui/widgets/common => presentation/shared}/comingsoon_new_avatar.dart (95%) rename lib/{ui/widgets/common => presentation/shared}/common_bottom_sheet.dart (95%) rename lib/{ui/widgets/common => presentation/shared}/element_image.dart (86%) rename lib/{ui/widgets/common => presentation/shared}/elements_button_bar.dart (82%) rename lib/{common => presentation/shared}/extensions/app_theme_type_extensions.dart (97%) rename lib/{common => presentation/shared}/extensions/element_type_extensions.dart (95%) rename lib/{common => presentation/shared}/extensions/i18n_extensions.dart (90%) rename lib/{common => presentation/shared}/extensions/rarity_extensions.dart (100%) rename lib/{common => presentation/shared}/extensions/scroll_controller_extensions.dart (100%) rename lib/{common => presentation/shared}/genshin_db_icons.dart (100%) rename lib/{ui/widgets/common => presentation/shared}/gradient_card.dart (100%) rename lib/{ui/widgets/common => presentation/shared}/image_widget_placeholder.dart (100%) rename lib/{ui/widgets/common => presentation/shared}/increment_button.dart (97%) rename lib/{ui/widgets/common => presentation/shared}/item_counter.dart (100%) rename lib/{ui/widgets/common => presentation/shared}/item_description.dart (97%) rename lib/{ui/widgets/common => presentation/shared}/item_description_card.dart (94%) rename lib/{ui/widgets/common => presentation/shared}/item_description_detail.dart (94%) rename lib/{ui/widgets/common => presentation/shared}/item_expansion_panel.dart (97%) rename lib/{ui/widgets/common => presentation/shared}/item_popupmenu_filter.dart (100%) rename lib/{ui/widgets/common => presentation/shared}/loading.dart (93%) rename lib/{ui/widgets/common => presentation/shared}/modal_sheet_separator.dart (100%) rename lib/{ui/widgets/common => presentation/shared}/nothing_found.dart (94%) rename lib/{ui/widgets/common => presentation/shared}/nothing_found_column.dart (100%) rename lib/{ui/widgets/common => presentation/shared}/page_message.dart (100%) rename lib/{ui/widgets/common => presentation/shared}/primogem_icon.dart (86%) rename lib/{ui/widgets/common => presentation/shared}/rarity.dart (100%) rename lib/{ui/widgets/common => presentation/shared}/rarity_rating.dart (100%) rename lib/{ui/widgets/common => presentation/shared}/search_box.dart (98%) rename lib/{ui/widgets/common => presentation/shared}/sliver_loading.dart (100%) rename lib/{ui/widgets/common => presentation/shared}/sliver_nothing_found.dart (100%) rename lib/{ui/widgets/common => presentation/shared}/sliver_page_filter.dart (96%) rename lib/{ui/widgets/common => presentation/shared}/sliver_row_grid.dart (100%) rename lib/{ui/widgets/common => presentation/shared}/sliver_scaffold_with_fab.dart (95%) rename lib/{ui/widgets/common => presentation/shared}/sort_direction_popupmenu_filter.dart (83%) rename lib/{common => presentation/shared}/styles.dart (100%) rename lib/{ui/widgets/common => presentation/shared}/weapons_button_bar.dart (82%) rename lib/{ui/widgets/common/wrapped_ascention_material.dart => presentation/shared/wrapped_ascension_material.dart} (85%) rename lib/{ui/pages => presentation/splash}/splash_page.dart (94%) rename lib/{ui/pages => presentation/today_materials}/materials_page.dart (78%) rename lib/{ui/widgets/materials/sliver_character_ascention_materials.dart => presentation/today_materials/widgets/sliver_character_ascension_materials.dart} (80%) rename lib/{ui/widgets/materials/sliver_weapon_ascention_materials.dart => presentation/today_materials/widgets/sliver_weapon_ascension_materials.dart} (52%) rename lib/{ui/pages => presentation/weapon}/weapon_page.dart (85%) rename lib/{ui/widgets/weapons/weapon_detail_ascention_materials_card.dart => presentation/weapon/widgets/weapon_detail_ascension_materials_card.dart} (69%) rename lib/{ui/widgets/weapons => presentation/weapon/widgets}/weapon_detail_refinements_card.dart (90%) rename lib/{ui/pages => presentation/weapons}/weapons_page.dart (83%) rename lib/{ui/widgets/weapons => presentation/weapons/widgets}/weapon_bottom_sheet.dart (79%) rename lib/{ui/widgets/weapons => presentation/weapons/widgets}/weapon_card.dart (87%) rename lib/{ui/pages => presentation/wish_simulator}/wish_simulator_page.dart (87%) delete mode 100644 lib/telemetry.dart diff --git a/.gitignore b/.gitignore index d90a9481d..a590967f2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ #Secrets -/lib/secrets.dart +/lib/infrastructure/telemetry/secrets.dart /android/key.properties *.g.dart *.freezed.dart diff --git a/assets/db/characters.json b/assets/db/characters.json index c22ae0510..b01d1bacc 100644 --- a/assets/db/characters.json +++ b/assets/db/characters.json @@ -13,7 +13,7 @@ "isFemale": false, "region": "mondstadt", "role": "supportDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -196,7 +196,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -530,7 +530,7 @@ "isFemale": true, "region": "mondstadt", "role": "supportDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -713,7 +713,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -1062,7 +1062,7 @@ "isFemale": true, "region": "inazuma", "role": "mainDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -1245,7 +1245,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -1470,7 +1470,7 @@ "isFemale": true, "region": "mondstadt", "role": "utility", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -1653,7 +1653,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -1969,7 +1969,7 @@ "isFemale": true, "region": "liyue", "role": "mainDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -2152,7 +2152,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -2479,7 +2479,7 @@ "isFemale": false, "region": "mondstadt", "role": "utility", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -2662,7 +2662,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -3016,7 +3016,7 @@ "isFemale": false, "region": "liyue", "role": "supportDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -3199,7 +3199,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -3546,7 +3546,7 @@ "isFemale": false, "region": "mondstadt", "role": "mainDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -3729,7 +3729,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -4049,7 +4049,7 @@ "isFemale": true, "region": "mondstadt", "role": "utility", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -4232,7 +4232,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -4562,7 +4562,7 @@ "isFemale": true, "region": "mondstadt", "role": "supportDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -4745,7 +4745,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -5082,7 +5082,7 @@ "isFemale": true, "region": "liyue", "role": "supportDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -5265,7 +5265,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -5628,7 +5628,7 @@ "isFemale": true, "region": "mondstadt", "role": "utility", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -5811,7 +5811,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -6162,7 +6162,7 @@ "isFemale": false, "region": "mondstadt", "role": "supportDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -6345,7 +6345,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -6690,7 +6690,7 @@ "isFemale": true, "region": "liyue", "role": "mainDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -6873,7 +6873,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -7207,7 +7207,7 @@ "isFemale": true, "region": "mondstadt", "role": "mainDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -7390,7 +7390,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -7718,7 +7718,7 @@ "isFemale": true, "region": "mondstadt", "role": "supportDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -7901,7 +7901,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -8231,7 +8231,7 @@ "isFemale": true, "region": "mondstadt", "role": "supportDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -8414,7 +8414,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -8741,7 +8741,7 @@ "isFemale": true, "region": "liyue", "role": "mainDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -8924,7 +8924,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -9260,7 +9260,7 @@ "isFemale": true, "region": "mondstadt", "role": "utility", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -9443,7 +9443,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -9784,7 +9784,7 @@ "isFemale": true, "region": "liyue", "role": "utility", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -9967,7 +9967,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -10283,7 +10283,7 @@ "isFemale": false, "region": "mondstadt", "role": "mainDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -10466,7 +10466,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -10792,7 +10792,7 @@ "isFemale": true, "region": "mondstadt", "role": "utility", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -10975,7 +10975,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -11302,7 +11302,7 @@ "isFemale": false, "region": "snezhnaya", "role": "mainDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -11485,7 +11485,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -11829,7 +11829,7 @@ "isFemale": true, "region": "anotherWorld", "role": "supportDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -11987,8 +11987,8 @@ ] } ], - "talentAscentionMaterials": [], - "multiTalentAscentionMaterials": [ + "talentAscensionMaterials": [], + "multiTalentAscensionMaterials": [ { "number": 1, "materials": [ @@ -12740,7 +12740,7 @@ "isFemale": true, "region": "anotherWorld", "role": "utility", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -12898,8 +12898,8 @@ ] } ], - "talentAscentionMaterials": [], - "multiTalentAscentionMaterials": [ + "talentAscensionMaterials": [], + "multiTalentAscensionMaterials": [ { "number": 1, "materials": [ @@ -13645,7 +13645,7 @@ "isFemale": false, "region": "mondstadt", "role": "utility", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -13828,7 +13828,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -14164,7 +14164,7 @@ "isFemale": true, "region": "liyue", "role": "supportDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -14347,7 +14347,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -14692,7 +14692,7 @@ "isFemale": false, "region": "liyue", "role": "na", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -14875,7 +14875,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -15191,7 +15191,7 @@ "isFemale": false, "region": "liyue", "role": "supportDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -15374,7 +15374,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -15704,7 +15704,7 @@ "isFemale": true, "region": "liyue", "role": "mainDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -15887,7 +15887,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ @@ -16215,7 +16215,7 @@ "isFemale": false, "region": "liyue", "role": "supportDps", - "ascentionMaterials": [ + "ascensionMaterials": [ { "rank": 1, "level": 20, @@ -16398,7 +16398,7 @@ ] } ], - "talentAscentionMaterials": [ + "talentAscensionMaterials": [ { "level": 2, "materials": [ diff --git a/assets/db/weapons.json b/assets/db/weapons.json index 55577a754..fbece27f6 100644 --- a/assets/db/weapons.json +++ b/assets/db/weapons.json @@ -9,7 +9,7 @@ "secondaryStat": "none", "secondaryStatValue": 0, "location": "chest", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -122,7 +122,7 @@ "secondaryStat": "none", "secondaryStatValue": 0, "location": "chest", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -235,7 +235,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 7.7, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -429,7 +429,7 @@ "secondaryStat": "critDmgPercentage", "secondaryStatValue": 6.8, "location": "chest", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -623,7 +623,7 @@ "secondaryStat": "elementaryMaster", "secondaryStatValue": 20, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -817,7 +817,7 @@ "secondaryStat": "hpPercentage", "secondaryStatValue": 10.2, "location": "chest", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -1011,7 +1011,7 @@ "secondaryStat": "critDmgPercentage", "secondaryStatValue": 10.2, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -1205,7 +1205,7 @@ "secondaryStat": "critRatePercentage", "secondaryStatValue": 6.8, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -1399,7 +1399,7 @@ "secondaryStat": "elementaryMaster", "secondaryStatValue": 36, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -1593,7 +1593,7 @@ "secondaryStat": "critRatePercentage", "secondaryStatValue": 8.0, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -1792,7 +1792,7 @@ "secondaryStat": "critDmgPercentage", "secondaryStatValue": 8.0, "location": "starglitterExchange", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -1986,7 +1986,7 @@ "secondaryStat": "physDmgPercentage", "secondaryStatValue": 15, "location": "crafting", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -2185,7 +2185,7 @@ "secondaryStat": "energyRechargePercentage", "secondaryStatValue": 13.3, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -2384,7 +2384,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 9, "location": "crafting", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -2578,7 +2578,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 9, "location": "starglitterExchange", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -2772,7 +2772,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 9, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -2966,7 +2966,7 @@ "secondaryStat": "energyRechargePercentage", "secondaryStatValue": 6.7, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -3165,7 +3165,7 @@ "secondaryStat": "critRatePercentage", "secondaryStatValue": 6.0, "location": "bpBounty", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -3364,7 +3364,7 @@ "secondaryStat": "critRatePercentage", "secondaryStatValue": 4.8, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -3568,7 +3568,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 10.8, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -3767,7 +3767,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 10.8, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -3968,7 +3968,7 @@ "secondaryStat": "none", "secondaryStatValue": 0, "location": "chest", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -4081,7 +4081,7 @@ "secondaryStat": "none", "secondaryStatValue": 0, "location": "chest", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -4194,7 +4194,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 7.7, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -4388,7 +4388,7 @@ "secondaryStat": "elementaryMaster", "secondaryStatValue": 31, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -4582,7 +4582,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 7.7, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -4781,7 +4781,7 @@ "secondaryStat": "critDmgPercentage", "secondaryStatValue": 10.2, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -4975,7 +4975,7 @@ "secondaryStat": "energyRechargePercentage", "secondaryStatValue": 11.3, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -5169,7 +5169,7 @@ "secondaryStat": "defPercentage", "secondaryStatValue": 6.4, "location": "chest", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -5363,7 +5363,7 @@ "secondaryStat": "critDmgPercentage", "secondaryStatValue": 8, "location": "starglitterExchange", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -5557,7 +5557,7 @@ "secondaryStat": "energyRechargePercentage", "secondaryStatValue": 13.3, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -5756,7 +5756,7 @@ "secondaryStat": "elementaryMaster", "secondaryStatValue": 36, "location": "crafting", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -5950,7 +5950,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 9, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -6144,7 +6144,7 @@ "secondaryStat": "physDmgPercentage", "secondaryStatValue": 7.5, "location": "crafting", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -6338,7 +6338,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 9, "location": "starglitterExchange", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -6532,7 +6532,7 @@ "secondaryStat": "energyRechargePercentage", "secondaryStatValue": 13.3, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -6731,7 +6731,7 @@ "secondaryStat": "critRatePercentage", "secondaryStatValue": 4.0, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -6901,7 +6901,7 @@ "secondaryStat": "critRatePercentage", "secondaryStatValue": 6.0, "location": "bpBounty", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -7100,7 +7100,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 9.0, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -7294,7 +7294,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 7.7, "location": "na", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -7465,7 +7465,7 @@ "secondaryStat": "energyRechargePercentage", "secondaryStatValue": 10, "location": "quest", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -7664,7 +7664,7 @@ "secondaryStat": "physDmgPercentage", "secondaryStatValue": 9, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -7868,7 +7868,7 @@ "secondaryStat": "energyRechargePercentage", "secondaryStatValue": 12, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -8067,7 +8067,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 10.8, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -8268,7 +8268,7 @@ "secondaryStat": "none", "secondaryStatValue": 0, "location": "chest", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -8381,7 +8381,7 @@ "secondaryStat": "none", "secondaryStatValue": 0, "location": "chest", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -8494,7 +8494,7 @@ "secondaryStat": "elementaryMaster", "secondaryStatValue": 31, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -8688,7 +8688,7 @@ "secondaryStat": "elementaryMaster", "secondaryStatValue": 20, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -8882,7 +8882,7 @@ "secondaryStat": "elementaryMaster", "secondaryStatValue": 41, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -9076,7 +9076,7 @@ "secondaryStat": "energyRechargePercentage", "secondaryStatValue": 8.5, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -9270,7 +9270,7 @@ "secondaryStat": "hpPercentage", "secondaryStatValue": 7.7, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -9464,7 +9464,7 @@ "secondaryStat": "critRatePercentage", "secondaryStatValue": 3.4, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -9658,7 +9658,7 @@ "secondaryStat": "critDmgPercentage", "secondaryStatValue": 12, "location": "starglitterExchange", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -9852,7 +9852,7 @@ "secondaryStat": "energyRechargePercentage", "secondaryStatValue": 10, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -10051,7 +10051,7 @@ "secondaryStat": "elementaryMaster", "secondaryStatValue": 24, "location": "crafting", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -10245,7 +10245,7 @@ "secondaryStat": "hpPercentage", "secondaryStatValue": 9, "location": "crafting", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -10444,7 +10444,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 6, "location": "starglitterExchange", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -10638,7 +10638,7 @@ "secondaryStat": "elementaryMaster", "secondaryStatValue": 48, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -10837,7 +10837,7 @@ "secondaryStat": "critRatePercentage", "secondaryStatValue": 6, "location": "bpBounty", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -11036,7 +11036,7 @@ "secondaryStat": "critDmgPercentage", "secondaryStatValue": 12, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -11240,7 +11240,7 @@ "secondaryStat": "energyRechargePercentage", "secondaryStatValue": 10, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -11439,7 +11439,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 12, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -11638,7 +11638,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 9, "location": "crafting", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -11842,7 +11842,7 @@ "secondaryStat": "critRatePercentage", "secondaryStatValue": 7.2, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -12036,7 +12036,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 7.2, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -12235,7 +12235,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 10.8, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -12436,7 +12436,7 @@ "secondaryStat": "none", "secondaryStatValue": 0, "location": "chest", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -12549,7 +12549,7 @@ "secondaryStat": "none", "secondaryStatValue": 0, "location": "chest", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -12662,7 +12662,7 @@ "secondaryStat": "elementaryMaster", "secondaryStatValue": 41, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -12856,7 +12856,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 7.7, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -13050,7 +13050,7 @@ "secondaryStat": "hpPercentage", "secondaryStatValue": 7.7, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -13249,7 +13249,7 @@ "secondaryStat": "elementaryMaster", "secondaryStatValue": 31, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -13443,7 +13443,7 @@ "secondaryStat": "physDmgPercentage", "secondaryStatValue": 9.6, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -13637,7 +13637,7 @@ "secondaryStat": "defPercentage", "secondaryStatValue": 9.6, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -13831,7 +13831,7 @@ "secondaryStat": "critDmgPercentage", "secondaryStatValue": 12, "location": "starglitterExchange", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -14025,7 +14025,7 @@ "secondaryStat": "energyRechargePercentage", "secondaryStatValue": 13.3, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -14224,7 +14224,7 @@ "secondaryStat": "critDmgPercentage", "secondaryStatValue": 16, "location": "starglitterExchange", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -14423,7 +14423,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 6, "location": "crafting", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -14617,7 +14617,7 @@ "secondaryStat": "elementaryMaster", "secondaryStatValue": 36, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -14811,7 +14811,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 6, "location": "starglitterExchange", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -15005,7 +15005,7 @@ "secondaryStat": "critRatePercentage", "secondaryStatValue": 6, "location": "bpBounty", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -15204,7 +15204,7 @@ "secondaryStat": "hpPercentage", "secondaryStatValue": 9, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -15403,7 +15403,7 @@ "secondaryStat": "defPercentage", "secondaryStatValue": 11.3, "location": "crafting", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -15597,7 +15597,7 @@ "secondaryStat": "energyRechargePercentage", "secondaryStatValue": 6.7, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -15796,7 +15796,7 @@ "secondaryStat": "physDmgPercentage", "secondaryStatValue": 7.5, "location": "crafting", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -16000,7 +16000,7 @@ "secondaryStat": "energyRechargePercentage", "secondaryStatValue": 8, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -16199,7 +16199,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 10.8, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -16398,7 +16398,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 10.8, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -16599,7 +16599,7 @@ "secondaryStat": "none", "secondaryStatValue": 0, "location": "chest", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -16712,7 +16712,7 @@ "secondaryStat": "none", "secondaryStatValue": 0, "location": "chest", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -16825,7 +16825,7 @@ "secondaryStat": "hpPercentage", "secondaryStatValue": 10.2, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -17019,7 +17019,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 5.1, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -17213,7 +17213,7 @@ "secondaryStat": "critRatePercentage", "secondaryStatValue": 5.1, "location": "chest", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -17407,7 +17407,7 @@ "secondaryStat": "critDmgPercentage", "secondaryStatValue": 12, "location": "starglitterExchange", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -17601,7 +17601,7 @@ "secondaryStat": "physDmgPercentage", "secondaryStatValue": 7.5, "location": "crafting", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -17795,7 +17795,7 @@ "secondaryStat": "critRatePercentage", "secondaryStatValue": 8, "location": "bpBounty", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -17999,7 +17999,7 @@ "secondaryStat": "elementaryMaster", "secondaryStatValue": 48, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -18193,7 +18193,7 @@ "secondaryStat": "physDmgPercentage", "secondaryStatValue": 9.0, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -18392,7 +18392,7 @@ "secondaryStat": "energyRechargePercentage", "secondaryStatValue": 10, "location": "crafting", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -18586,7 +18586,7 @@ "secondaryStat": "energyRechargePercentage", "secondaryStatValue": 6.7, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -18785,7 +18785,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 6, "location": "starglitterExchange", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -18979,7 +18979,7 @@ "secondaryStat": "physDmgPercentage", "secondaryStatValue": 15, "location": "crafting", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -19183,7 +19183,7 @@ "secondaryStat": "atkPercentage", "secondaryStatValue": 10.8, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -19382,7 +19382,7 @@ "secondaryStat": "critRatePercentage", "secondaryStatValue": 4.8, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ @@ -19581,7 +19581,7 @@ "secondaryStat": "energyRechargePercentage", "secondaryStatValue": 8, "location": "gacha", - "ascentionMaterials": [ + "ascensionMaterials": [ { "level": 20, "materials": [ diff --git a/lib/bloc/artifact_details/artifact_details_bloc.dart b/lib/application/artifact_details/artifact_details_bloc.dart similarity index 67% rename from lib/bloc/artifact_details/artifact_details_bloc.dart rename to lib/application/artifact_details/artifact_details_bloc.dart index 75d539d07..7271f59d9 100644 --- a/lib/bloc/artifact_details/artifact_details_bloc.dart +++ b/lib/application/artifact_details/artifact_details_bloc.dart @@ -2,12 +2,11 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; - -import '../../common/app_constants.dart'; -import '../../common/assets.dart'; -import '../../models/models.dart'; -import '../../services/genshing_service.dart'; -import '../../telemetry.dart'; +import 'package:genshindb/domain/app_constants.dart'; +import 'package:genshindb/domain/assets.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/domain/services/genshin_service.dart'; +import 'package:genshindb/domain/services/telemetry_service.dart'; part 'artifact_details_bloc.freezed.dart'; part 'artifact_details_event.dart'; @@ -15,8 +14,9 @@ part 'artifact_details_state.dart'; class ArtifactDetailsBloc extends Bloc { final GenshinService _genshinService; + final TelemetryService _telemetryService; - ArtifactDetailsBloc(this._genshinService) : super(const ArtifactDetailsState.loading()); + ArtifactDetailsBloc(this._genshinService, this._telemetryService) : super(const ArtifactDetailsState.loading()); @override Stream mapEventToState( @@ -26,7 +26,7 @@ class ArtifactDetailsBloc extends Bloc b.key == t.key).pieces; return ArtifactCardBonusModel(pieces: pieces, bonus: t.bonus); }).toList(), - images: translation.bonus.length == 1 - ? [artifact.fullImagePath] - : artifactOrder.map((e) => Assets.getArtifactPath('$image$e.png')).toList(), + images: + translation.bonus.length == 1 ? [artifact.fullImagePath] : artifactOrder.map((e) => Assets.getArtifactPath('$image$e.png')).toList(), charImages: charImgs, ); }, diff --git a/lib/bloc/artifact_details/artifact_details_event.dart b/lib/application/artifact_details/artifact_details_event.dart similarity index 100% rename from lib/bloc/artifact_details/artifact_details_event.dart rename to lib/application/artifact_details/artifact_details_event.dart diff --git a/lib/bloc/artifact_details/artifact_details_state.dart b/lib/application/artifact_details/artifact_details_state.dart similarity index 100% rename from lib/bloc/artifact_details/artifact_details_state.dart rename to lib/application/artifact_details/artifact_details_state.dart diff --git a/lib/bloc/artifacts/artifacts_bloc.dart b/lib/application/artifacts/artifacts_bloc.dart similarity index 95% rename from lib/bloc/artifacts/artifacts_bloc.dart rename to lib/application/artifacts/artifacts_bloc.dart index cb84a2c5d..cf772fb59 100644 --- a/lib/bloc/artifacts/artifacts_bloc.dart +++ b/lib/application/artifacts/artifacts_bloc.dart @@ -2,11 +2,9 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; - -import '../../common/enums/artifact_filter_type.dart'; -import '../../common/enums/sort_direction_type.dart'; -import '../../models/models.dart'; -import '../../services/genshing_service.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/domain/services/genshin_service.dart'; part 'artifacts_bloc.freezed.dart'; part 'artifacts_event.dart'; @@ -14,6 +12,7 @@ part 'artifacts_state.dart'; class ArtifactsBloc extends Bloc { final GenshinService _genshinService; + ArtifactsBloc(this._genshinService) : super(const ArtifactsState.loading()); _LoadedState get currentState => state as _LoadedState; diff --git a/lib/bloc/artifacts/artifacts_event.dart b/lib/application/artifacts/artifacts_event.dart similarity index 100% rename from lib/bloc/artifacts/artifacts_event.dart rename to lib/application/artifacts/artifacts_event.dart diff --git a/lib/bloc/artifacts/artifacts_state.dart b/lib/application/artifacts/artifacts_state.dart similarity index 100% rename from lib/bloc/artifacts/artifacts_state.dart rename to lib/application/artifacts/artifacts_state.dart diff --git a/lib/bloc/bloc.dart b/lib/application/bloc.dart similarity index 100% rename from lib/bloc/bloc.dart rename to lib/application/bloc.dart diff --git a/lib/bloc/calculator_asc_materials/calculator_asc_materials_bloc.dart b/lib/application/calculator_asc_materials/calculator_asc_materials_bloc.dart similarity index 76% rename from lib/bloc/calculator_asc_materials/calculator_asc_materials_bloc.dart rename to lib/application/calculator_asc_materials/calculator_asc_materials_bloc.dart index cfce9b202..db9d13497 100644 --- a/lib/bloc/calculator_asc_materials/calculator_asc_materials_bloc.dart +++ b/lib/application/calculator_asc_materials/calculator_asc_materials_bloc.dart @@ -2,27 +2,26 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; - -import '../../common/assets.dart'; -import '../../common/enums/ascension_material_summary_type.dart'; -import '../../common/enums/material_type.dart'; -import '../../models/models.dart'; -import '../../services/genshing_service.dart'; -import '../../telemetry.dart'; +import 'package:genshindb/domain/assets.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/domain/services/genshin_service.dart'; +import 'package:genshindb/domain/services/telemetry_service.dart'; part 'calculator_asc_materials_bloc.freezed.dart'; - part 'calculator_asc_materials_event.dart'; - part 'calculator_asc_materials_state.dart'; class CalculatorAscMaterialsBloc extends Bloc { final GenshinService _genshinService; + final TelemetryService _telemetryService; _InitialState get currentState => state as _InitialState; - CalculatorAscMaterialsBloc(this._genshinService) - : super(const CalculatorAscMaterialsState.initial(items: [], summary: [])); + CalculatorAscMaterialsBloc( + this._genshinService, + this._telemetryService, + ) : super(const CalculatorAscMaterialsState.initial(items: [], summary: [])); @override Stream mapEventToState( @@ -31,13 +30,13 @@ class CalculatorAscMaterialsBloc extends Bloc const CalculatorAscMaterialsState.initial(items: [], summary: []), addCharacter: (e) async { - await trackCalculatorItemAscMaterialLoaded(e.key); + await _telemetryService.trackCalculatorItemAscMaterialLoaded(e.key); final char = _genshinService.getCharacter(e.key); final translation = _genshinService.getCharacterTranslation(e.key); final items = [ ...currentState.items, - ItemAscentionMaterials.forCharacters( + ItemAscensionMaterials.forCharacters( key: e.key, image: Assets.getCharacterPath(char.image), name: translation.name, @@ -49,16 +48,15 @@ class CalculatorAscMaterialsBloc extends Bloc i.materials).toList())); + return currentState.copyWith.call(items: items, summary: _generateSummary(items.expand((i) => i.materials).toList())); }, addWeapon: (e) async { - await trackCalculatorItemAscMaterialLoaded(e.key); + await _telemetryService.trackCalculatorItemAscMaterialLoaded(e.key); final weapon = _genshinService.getWeapon(e.key); final translation = _genshinService.getWeaponTranslation(e.key); final items = [ ...currentState.items, - ItemAscentionMaterials.forWeapons( + ItemAscensionMaterials.forWeapons( key: e.key, image: weapon.fullImagePath, name: translation.name, @@ -68,14 +66,12 @@ class CalculatorAscMaterialsBloc extends Bloc i.materials).toList())); + return currentState.copyWith.call(items: items, summary: _generateSummary(items.expand((i) => i.materials).toList())); }, removeItem: (e) async { final items = [...currentState.items]; items.removeAt(e.index); - return currentState.copyWith - .call(items: items, summary: _generateSummary(items.expand((i) => i.materials).toList())); + return currentState.copyWith.call(items: items, summary: _generateSummary(items.expand((i) => i.materials).toList())); }, updateCharacter: (e) async { final currentChar = currentState.items.elementAt(e.index); @@ -105,11 +101,11 @@ class CalculatorAscMaterialsBloc extends Bloc _generateSummary(List current) { + List _generateSummary(List current) { final flattened = _flatMaterialsList(current); final summary = >{}; @@ -179,34 +175,32 @@ class CalculatorAscMaterialsBloc extends Bloc AscensionMaterialsSummary(type: entry.key, materials: entry.value)).toList(); } - List _getCharacterMaterialsToUse( + List _getCharacterMaterialsToUse( CharacterFileModel char, int currentLevel, int desiredLevel, List skills, ) { - final ascensionMaterials = char.ascentionMaterials - .where((m) => m.rank > currentLevel && m.rank <= desiredLevel) - .expand((e) => e.materials) - .toList(); + final ascensionMaterials = + char.ascensionMaterials.where((m) => m.rank > currentLevel && m.rank <= desiredLevel).expand((e) => e.materials).toList(); - final skillMaterials = []; + final skillMaterials = []; - if (char.talentAscentionMaterials.isNotEmpty) { + if (char.talentAscensionMaterials.isNotEmpty) { for (final skill in skills) { - final materials = char.talentAscentionMaterials + final materials = char.talentAscensionMaterials .where((m) => m.level > skill.currentLevel && m.level <= skill.desiredLevel) .expand((m) => m.materials) .toList(); skillMaterials.addAll(materials); } - } else if (char.multiTalentAscentionMaterials != null && char.multiTalentAscentionMaterials.isNotEmpty) { + } else if (char.multiTalentAscensionMaterials != null && char.multiTalentAscensionMaterials.isNotEmpty) { //The traveler has different materials depending on the skill, that's why we need to retrieve the right amount for the provided skill //Also, we are assuming that the skill's order are fixed var talentNumber = 1; for (final skill in skills) { - final materials = char.multiTalentAscentionMaterials + final materials = char.multiTalentAscensionMaterials .where((mt) => mt.number == talentNumber) .expand((mt) => mt.materials) .where((m) => m.level > skill.currentLevel && m.level <= skill.desiredLevel) @@ -222,12 +216,12 @@ class CalculatorAscMaterialsBloc extends Bloc _getWeaponMaterialsToUse( + List _getWeaponMaterialsToUse( WeaponFileModel weapon, int currentLevel, int desiredLevel, ) { - final materials = weapon.ascentionMaterials + final materials = weapon.ascensionMaterials .where((m) => m.level > _mapToWeaponLevel(currentLevel) && m.level <= _mapToWeaponLevel(desiredLevel)) .expand((m) => m.materials) .toList(); @@ -235,14 +229,11 @@ class CalculatorAscMaterialsBloc extends Bloc _flatMaterialsList(List current) { - final materials = []; + List _flatMaterialsList(List current) { + final materials = []; for (final image in current.map((e) => e.fullImagePath).toSet().toList()) { final item = current.firstWhere((m) => m.fullImagePath == image); - final int quantity = current - .where((m) => m.fullImagePath == image) - .map((e) => e.quantity) - .fold(0, (previous, current) => previous + current); + final int quantity = current.where((m) => m.fullImagePath == image).map((e) => e.quantity).fold(0, (previous, current) => previous + current); materials.add(item.copyWith.call(quantity: quantity)); } @@ -250,12 +241,11 @@ class CalculatorAscMaterialsBloc extends Bloc i.materials).toList())); + return currentState.copyWith.call(items: items, summary: _generateSummary(items.expand((i) => i.materials).toList())); } int _mapToWeaponLevel(int val) { diff --git a/lib/bloc/calculator_asc_materials/calculator_asc_materials_event.dart b/lib/application/calculator_asc_materials/calculator_asc_materials_event.dart similarity index 100% rename from lib/bloc/calculator_asc_materials/calculator_asc_materials_event.dart rename to lib/application/calculator_asc_materials/calculator_asc_materials_event.dart diff --git a/lib/bloc/calculator_asc_materials/calculator_asc_materials_state.dart b/lib/application/calculator_asc_materials/calculator_asc_materials_state.dart similarity index 84% rename from lib/bloc/calculator_asc_materials/calculator_asc_materials_state.dart rename to lib/application/calculator_asc_materials/calculator_asc_materials_state.dart index 67f509647..767db85fa 100644 --- a/lib/bloc/calculator_asc_materials/calculator_asc_materials_state.dart +++ b/lib/application/calculator_asc_materials/calculator_asc_materials_state.dart @@ -3,7 +3,7 @@ part of 'calculator_asc_materials_bloc.dart'; @freezed abstract class CalculatorAscMaterialsState with _$CalculatorAscMaterialsState { const factory CalculatorAscMaterialsState.initial({ - @required List items, + @required List items, @required List summary, }) = _InitialState; } diff --git a/lib/bloc/calculator_asc_materials_item/calculator_asc_materials_item_bloc.dart b/lib/application/calculator_asc_materials_item/calculator_asc_materials_item_bloc.dart similarity index 96% rename from lib/bloc/calculator_asc_materials_item/calculator_asc_materials_item_bloc.dart rename to lib/application/calculator_asc_materials_item/calculator_asc_materials_item_bloc.dart index a82da897b..dce463859 100644 --- a/lib/bloc/calculator_asc_materials_item/calculator_asc_materials_item_bloc.dart +++ b/lib/application/calculator_asc_materials_item/calculator_asc_materials_item_bloc.dart @@ -2,15 +2,12 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; - -import '../../common/assets.dart'; -import '../../models/models.dart'; -import '../../services/genshing_service.dart'; +import 'package:genshindb/domain/assets.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/domain/services/genshin_service.dart'; part 'calculator_asc_materials_item_bloc.freezed.dart'; - part 'calculator_asc_materials_item_event.dart'; - part 'calculator_asc_materials_item_state.dart'; class CalculatorAscMaterialsItemBloc extends Bloc { diff --git a/lib/bloc/calculator_asc_materials_item/calculator_asc_materials_item_event.dart b/lib/application/calculator_asc_materials_item/calculator_asc_materials_item_event.dart similarity index 100% rename from lib/bloc/calculator_asc_materials_item/calculator_asc_materials_item_event.dart rename to lib/application/calculator_asc_materials_item/calculator_asc_materials_item_event.dart diff --git a/lib/bloc/calculator_asc_materials_item/calculator_asc_materials_item_state.dart b/lib/application/calculator_asc_materials_item/calculator_asc_materials_item_state.dart similarity index 100% rename from lib/bloc/calculator_asc_materials_item/calculator_asc_materials_item_state.dart rename to lib/application/calculator_asc_materials_item/calculator_asc_materials_item_state.dart diff --git a/lib/bloc/character/character_bloc.dart b/lib/application/character/character_bloc.dart similarity index 80% rename from lib/bloc/character/character_bloc.dart rename to lib/application/character/character_bloc.dart index 11013b537..2569debba 100644 --- a/lib/bloc/character/character_bloc.dart +++ b/lib/application/character/character_bloc.dart @@ -2,15 +2,11 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; - -import '../../common/assets.dart'; -import '../../common/enums/character_type.dart'; -import '../../common/enums/element_type.dart'; -import '../../common/enums/region_type.dart'; -import '../../common/enums/weapon_type.dart'; -import '../../models/models.dart'; -import '../../services/genshing_service.dart'; -import '../../telemetry.dart'; +import 'package:genshindb/domain/assets.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/domain/services/genshin_service.dart'; +import 'package:genshindb/domain/services/telemetry_service.dart'; part 'character_bloc.freezed.dart'; part 'character_event.dart'; @@ -18,7 +14,9 @@ part 'character_state.dart'; class CharacterBloc extends Bloc { final GenshinService _genshinService; - CharacterBloc(this._genshinService) : super(const CharacterState.loading()); + final TelemetryService _telemetryService; + + CharacterBloc(this._genshinService, this._telemetryService) : super(const CharacterState.loading()); @override Stream mapEventToState( @@ -28,13 +26,13 @@ class CharacterBloc extends Bloc { final s = await event.when( loadFromName: (name) async { - await trackCharacterLoaded(name); + await _telemetryService.trackCharacterLoaded(name); final char = _genshinService.getCharacter(name); final translation = _genshinService.getCharacterTranslation(name); return _buildInitialState(char, translation); }, loadFromImg: (img) async { - await trackCharacterLoaded(img, loadedFromName: false); + await _telemetryService.trackCharacterLoaded(img, loadedFromName: false); final char = _genshinService.getCharacterByImg(img); final translation = _genshinService.getCharacterTranslation(char.key); return _buildInitialState(char, translation); @@ -56,14 +54,13 @@ class CharacterBloc extends Bloc { rarity: char.rarity, elementType: char.elementType, weaponType: char.weaponType, - ascentionMaterials: char.ascentionMaterials, - talentAscentionsMaterials: char.talentAscentionMaterials, + ascensionMaterials: char.ascensionMaterials, + talentAscensionsMaterials: char.talentAscensionMaterials, skills: translation.skills.map((e) { final skill = char.skills.firstWhere((s) => s.key == e.key); final abilities = e.abilities.map((a) { - final type = skill.abilities != null && skill.abilities.any((x) => x.key == a.key) - ? skill.abilities.firstWhere((x) => x.key == a.key).type - : null; + final type = + skill.abilities != null && skill.abilities.any((x) => x.key == a.key) ? skill.abilities.firstWhere((x) => x.key == a.key).type : null; return CharacterSkillAbilityModel( type: type, name: a.name, @@ -101,7 +98,7 @@ class CharacterBloc extends Bloc { descriptions: e.descriptions, ); }).toList(), - multiTalentAscentionMaterials: char.multiTalentAscentionMaterials, + multiTalentAscensionMaterials: char.multiTalentAscensionMaterials, builds: char.builds.map((build) { return CharacterBuildCardModel( isForSupport: build.isSupport, diff --git a/lib/bloc/character/character_event.dart b/lib/application/character/character_event.dart similarity index 100% rename from lib/bloc/character/character_event.dart rename to lib/application/character/character_event.dart diff --git a/lib/bloc/character/character_state.dart b/lib/application/character/character_state.dart similarity index 76% rename from lib/bloc/character/character_state.dart rename to lib/application/character/character_state.dart index 72ba47d67..c65f05c30 100644 --- a/lib/bloc/character/character_state.dart +++ b/lib/application/character/character_state.dart @@ -14,9 +14,9 @@ abstract class CharacterState with _$CharacterState { @required RegionType region, @required CharacterType role, @required bool isFemale, - @required List ascentionMaterials, - @required List talentAscentionsMaterials, - List multiTalentAscentionMaterials, + @required List ascensionMaterials, + @required List talentAscensionsMaterials, + List multiTalentAscensionMaterials, @required List skills, @required List passives, @required List constellations, diff --git a/lib/bloc/characters/characters_bloc.dart b/lib/application/characters/characters_bloc.dart similarity index 94% rename from lib/bloc/characters/characters_bloc.dart rename to lib/application/characters/characters_bloc.dart index a47c389db..05a950053 100644 --- a/lib/bloc/characters/characters_bloc.dart +++ b/lib/application/characters/characters_bloc.dart @@ -2,15 +2,10 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; - -import '../../common/enums/character_filter_type.dart'; -import '../../common/enums/element_type.dart'; -import '../../common/enums/item_status_type.dart'; -import '../../common/enums/sort_direction_type.dart'; -import '../../common/enums/weapon_type.dart'; -import '../../models/models.dart'; -import '../../services/genshing_service.dart'; -import '../../services/settings_service.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/domain/services/genshin_service.dart'; +import 'package:genshindb/domain/services/settings_service.dart'; part 'characters_bloc.freezed.dart'; part 'characters_event.dart'; diff --git a/lib/bloc/characters/characters_event.dart b/lib/application/characters/characters_event.dart similarity index 100% rename from lib/bloc/characters/characters_event.dart rename to lib/application/characters/characters_event.dart diff --git a/lib/bloc/characters/characters_state.dart b/lib/application/characters/characters_state.dart similarity index 100% rename from lib/bloc/characters/characters_state.dart rename to lib/application/characters/characters_state.dart diff --git a/lib/bloc/elements/elements_bloc.dart b/lib/application/elements/elements_bloc.dart similarity index 87% rename from lib/bloc/elements/elements_bloc.dart rename to lib/application/elements/elements_bloc.dart index abdff2e56..954e882cb 100644 --- a/lib/bloc/elements/elements_bloc.dart +++ b/lib/application/elements/elements_bloc.dart @@ -2,9 +2,8 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; - -import '../../models/models.dart'; -import '../../services/genshing_service.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/domain/services/genshin_service.dart'; part 'elements_bloc.freezed.dart'; part 'elements_event.dart'; @@ -12,6 +11,7 @@ part 'elements_state.dart'; class ElementsBloc extends Bloc { final GenshinService _genshinService; + ElementsBloc(this._genshinService) : super(const ElementsState.loading()); @override diff --git a/lib/bloc/elements/elements_event.dart b/lib/application/elements/elements_event.dart similarity index 100% rename from lib/bloc/elements/elements_event.dart rename to lib/application/elements/elements_event.dart diff --git a/lib/bloc/elements/elements_state.dart b/lib/application/elements/elements_state.dart similarity index 100% rename from lib/bloc/elements/elements_state.dart rename to lib/application/elements/elements_state.dart diff --git a/lib/bloc/home/home_bloc.dart b/lib/application/home/home_bloc.dart similarity index 87% rename from lib/bloc/home/home_bloc.dart rename to lib/application/home/home_bloc.dart index b1eb64ff9..6a84d1cc2 100644 --- a/lib/bloc/home/home_bloc.dart +++ b/lib/application/home/home_bloc.dart @@ -2,9 +2,8 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; - -import '../../models/models.dart'; -import '../../services/genshing_service.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/domain/services/genshin_service.dart'; part 'home_bloc.freezed.dart'; part 'home_event.dart'; diff --git a/lib/bloc/home/home_event.dart b/lib/application/home/home_event.dart similarity index 100% rename from lib/bloc/home/home_event.dart rename to lib/application/home/home_event.dart diff --git a/lib/bloc/home/home_state.dart b/lib/application/home/home_state.dart similarity index 61% rename from lib/bloc/home/home_state.dart rename to lib/application/home/home_state.dart index 9cf5beee0..d44c42228 100644 --- a/lib/bloc/home/home_state.dart +++ b/lib/application/home/home_state.dart @@ -4,7 +4,7 @@ part of 'home_bloc.dart'; abstract class HomeState with _$HomeState { const factory HomeState.loading() = _LoadingState; const factory HomeState.loaded({ - @required List charAscMaterials, - @required List weaponAscMaterials, + @required List charAscMaterials, + @required List weaponAscMaterials, }) = _LoadedState; } diff --git a/lib/bloc/main/main_bloc.dart b/lib/application/main/main_bloc.dart similarity index 71% rename from lib/bloc/main/main_bloc.dart rename to lib/application/main/main_bloc.dart index 33b11ca67..10decf46d 100644 --- a/lib/bloc/main/main_bloc.dart +++ b/lib/application/main/main_bloc.dart @@ -1,19 +1,14 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; -import 'package:flutter/material.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:genshindb/application/utils/app_path_utils.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/services/genshin_service.dart'; +import 'package:genshindb/domain/services/logging_service.dart'; +import 'package:genshindb/domain/services/settings_service.dart'; import 'package:package_info/package_info.dart'; -import '../../common/enums/app_accent_color_type.dart'; -import '../../common/enums/app_language_type.dart'; -import '../../common/enums/app_theme_type.dart'; -import '../../common/extensions/app_theme_type_extensions.dart'; -import '../../common/utils/app_path_utils.dart'; -import '../../generated/l10n.dart'; -import '../../services/genshing_service.dart'; -import '../../services/logging_service.dart'; -import '../../services/settings_service.dart'; import '../bloc.dart'; part 'main_bloc.freezed.dart'; @@ -86,7 +81,10 @@ class MainBloc extends Bloc { final packageInfo = await PackageInfo.fromPlatform(); final settings = _settingsService.appSettings; - await Future.delayed(const Duration(milliseconds: 600)); + if (!languageChanged) { + await Future.delayed(const Duration(milliseconds: 600)); + } + return _loadThemeData(packageInfo.appName, settings.appTheme, settings.accentColor, settings.appLanguage); } @@ -97,37 +95,15 @@ class MainBloc extends Bloc { AppLanguageType language, { bool isInitialized = true, }) async { - final themeData = accentColor.getThemeData(theme); - final locale = await _setLocale(language); _logger.info(runtimeType, '_init: Is first install = ${_settingsService.isFirstInstall}'); return MainState.loaded( appTitle: appTitle, + accentColor: accentColor, + currentLanguage: language, initialized: isInitialized, - theme: themeData, + theme: theme, firstInstall: _settingsService.isFirstInstall, - currentLanguage: language, - currentLocale: locale, ); } - - Future _setLocale(AppLanguageType language) async { - var langCode = 'en'; - var countryCode = 'US'; - switch (language) { - case AppLanguageType.spanish: - langCode = 'es'; - countryCode = 'ES'; - break; - case AppLanguageType.french: - langCode = 'fr'; - countryCode = 'FR'; - break; - default: - break; - } - final locale = Locale(langCode, countryCode); - await S.load(locale); - return locale; - } } diff --git a/lib/bloc/main/main_event.dart b/lib/application/main/main_event.dart similarity index 100% rename from lib/bloc/main/main_event.dart rename to lib/application/main/main_event.dart diff --git a/lib/bloc/main/main_state.dart b/lib/application/main/main_state.dart similarity index 82% rename from lib/bloc/main/main_state.dart rename to lib/application/main/main_state.dart index e62ef39fe..dfd68c6ab 100644 --- a/lib/bloc/main/main_state.dart +++ b/lib/application/main/main_state.dart @@ -5,11 +5,11 @@ abstract class MainState with _$MainState { const factory MainState.loading() = _MainLoadingState; const factory MainState.loaded({ @required String appTitle, - @required ThemeData theme, + @required AppThemeType theme, + @required AppAccentColorType accentColor, + @required AppLanguageType currentLanguage, @required bool initialized, @required bool firstInstall, - @required AppLanguageType currentLanguage, - @required Locale currentLocale, }) = _MainLoadedState; const MainState._(); } diff --git a/lib/bloc/main_tab/main_tab_bloc.dart b/lib/application/main_tab/main_tab_bloc.dart similarity index 100% rename from lib/bloc/main_tab/main_tab_bloc.dart rename to lib/application/main_tab/main_tab_bloc.dart diff --git a/lib/bloc/main_tab/main_tab_event.dart b/lib/application/main_tab/main_tab_event.dart similarity index 100% rename from lib/bloc/main_tab/main_tab_event.dart rename to lib/application/main_tab/main_tab_event.dart diff --git a/lib/bloc/main_tab/main_tab_state.dart b/lib/application/main_tab/main_tab_state.dart similarity index 100% rename from lib/bloc/main_tab/main_tab_state.dart rename to lib/application/main_tab/main_tab_state.dart diff --git a/lib/bloc/materials/materials_bloc.dart b/lib/application/materials/materials_bloc.dart similarity index 74% rename from lib/bloc/materials/materials_bloc.dart rename to lib/application/materials/materials_bloc.dart index 5764f09b7..81367981d 100644 --- a/lib/bloc/materials/materials_bloc.dart +++ b/lib/application/materials/materials_bloc.dart @@ -2,10 +2,9 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; - -import '../../models/models.dart'; -import '../../services/genshing_service.dart'; -import '../../telemetry.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/domain/services/genshin_service.dart'; +import 'package:genshindb/domain/services/telemetry_service.dart'; part 'materials_bloc.freezed.dart'; part 'materials_event.dart'; @@ -13,13 +12,15 @@ part 'materials_state.dart'; class MaterialsBloc extends Bloc { final GenshinService _genshinService; - MaterialsBloc(this._genshinService) : super(const MaterialsState.loading()); + final TelemetryService _telemetryService; + + MaterialsBloc(this._genshinService, this._telemetryService) : super(const MaterialsState.loading()); @override Stream mapEventToState( MaterialsEvent event, ) async* { - await trackAscentionMaterialsOpened(); + await _telemetryService.trackAscensionMaterialsOpened(); final s = event.when( init: () { final days = [ @@ -32,8 +33,8 @@ class MaterialsBloc extends Bloc { DateTime.sunday, ]; - final charMaterials = []; - final weaponMaterials = []; + final charMaterials = []; + final weaponMaterials = []; //TODO: YOU MAY WANT TO SHOW THE BOSS ITEMS AS WELL for (final day in days) { final charMaterialsForDay = _genshinService.getCharacterAscensionMaterials(day); diff --git a/lib/bloc/materials/materials_event.dart b/lib/application/materials/materials_event.dart similarity index 100% rename from lib/bloc/materials/materials_event.dart rename to lib/application/materials/materials_event.dart diff --git a/lib/bloc/materials/materials_state.dart b/lib/application/materials/materials_state.dart similarity index 64% rename from lib/bloc/materials/materials_state.dart rename to lib/application/materials/materials_state.dart index 9d3ecad7a..2b82bb55e 100644 --- a/lib/bloc/materials/materials_state.dart +++ b/lib/application/materials/materials_state.dart @@ -4,7 +4,7 @@ part of 'materials_bloc.dart'; abstract class MaterialsState with _$MaterialsState { const factory MaterialsState.loading() = _LoadingState; const factory MaterialsState.loaded({ - @required List charAscMaterials, - @required List weaponAscMaterials, + @required List charAscMaterials, + @required List weaponAscMaterials, }) = _LoadedState; } diff --git a/lib/bloc/settings/settings_bloc.dart b/lib/application/settings/settings_bloc.dart similarity index 92% rename from lib/bloc/settings/settings_bloc.dart rename to lib/application/settings/settings_bloc.dart index 2e3cb398e..dcabe6aa3 100644 --- a/lib/bloc/settings/settings_bloc.dart +++ b/lib/application/settings/settings_bloc.dart @@ -3,12 +3,10 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:flutter/foundation.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/services/settings_service.dart'; import 'package:package_info/package_info.dart'; -import '../../common/enums/app_accent_color_type.dart'; -import '../../common/enums/app_language_type.dart'; -import '../../common/enums/app_theme_type.dart'; -import '../../services/settings_service.dart'; import '../bloc.dart'; part 'settings_bloc.freezed.dart'; diff --git a/lib/bloc/settings/settings_event.dart b/lib/application/settings/settings_event.dart similarity index 100% rename from lib/bloc/settings/settings_event.dart rename to lib/application/settings/settings_event.dart diff --git a/lib/bloc/settings/settings_state.dart b/lib/application/settings/settings_state.dart similarity index 100% rename from lib/bloc/settings/settings_state.dart rename to lib/application/settings/settings_state.dart diff --git a/lib/bloc/url_page/url_page_bloc.dart b/lib/application/url_page/url_page_bloc.dart similarity index 70% rename from lib/bloc/url_page/url_page_bloc.dart rename to lib/application/url_page/url_page_bloc.dart index 801c8809a..f7bfee938 100644 --- a/lib/bloc/url_page/url_page_bloc.dart +++ b/lib/application/url_page/url_page_bloc.dart @@ -2,9 +2,8 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; - -import '../../services/network_service.dart'; -import '../../telemetry.dart'; +import 'package:genshindb/domain/services/network_service.dart'; +import 'package:genshindb/domain/services/telemetry_service.dart'; part 'url_page_bloc.freezed.dart'; part 'url_page_event.dart'; @@ -15,7 +14,9 @@ class UrlPageBloc extends Bloc { final mapUrl = 'https://genshin-impact-map.appsample.com'; final NetworkService _networkService; - UrlPageBloc(this._networkService) : super(const UrlPageState.loading()); + final TelemetryService _telemetryService; + + UrlPageBloc(this._networkService, this._telemetryService) : super(const UrlPageState.loading()); @override Stream mapEventToState( @@ -24,7 +25,7 @@ class UrlPageBloc extends Bloc { final s = await event.map( init: (e) async { final isInternetAvailable = await _networkService.isInternetAvailable(); - await trackUrlOpened(e.loadMap, e.loadWishSimulator, isInternetAvailable); + await _telemetryService.trackUrlOpened(e.loadMap, e.loadWishSimulator, isInternetAvailable); return UrlPageState.loaded( hasInternetConnection: isInternetAvailable, mapUrl: mapUrl, diff --git a/lib/bloc/url_page/url_page_event.dart b/lib/application/url_page/url_page_event.dart similarity index 100% rename from lib/bloc/url_page/url_page_event.dart rename to lib/application/url_page/url_page_event.dart diff --git a/lib/bloc/url_page/url_page_state.dart b/lib/application/url_page/url_page_state.dart similarity index 100% rename from lib/bloc/url_page/url_page_state.dart rename to lib/application/url_page/url_page_state.dart diff --git a/lib/common/utils/app_path_utils.dart b/lib/application/utils/app_path_utils.dart similarity index 100% rename from lib/common/utils/app_path_utils.dart rename to lib/application/utils/app_path_utils.dart diff --git a/lib/bloc/weapon/weapon_bloc.dart b/lib/application/weapon/weapon_bloc.dart similarity index 76% rename from lib/bloc/weapon/weapon_bloc.dart rename to lib/application/weapon/weapon_bloc.dart index 1d467b636..e107e6b58 100644 --- a/lib/bloc/weapon/weapon_bloc.dart +++ b/lib/application/weapon/weapon_bloc.dart @@ -2,13 +2,10 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; - -import '../../common/enums/item_location_type.dart'; -import '../../common/enums/stat_type.dart'; -import '../../common/enums/weapon_type.dart'; -import '../../models/models.dart'; -import '../../services/genshing_service.dart'; -import '../../telemetry.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/domain/services/genshin_service.dart'; +import 'package:genshindb/domain/services/telemetry_service.dart'; part 'weapon_bloc.freezed.dart'; part 'weapon_event.dart'; @@ -16,7 +13,9 @@ part 'weapon_state.dart'; class WeaponBloc extends Bloc { final GenshinService _genshinService; - WeaponBloc(this._genshinService) : super(const WeaponState.loading()); + final TelemetryService _telemetryService; + + WeaponBloc(this._genshinService, this._telemetryService) : super(const WeaponState.loading()); @override Stream mapEventToState( @@ -25,13 +24,13 @@ class WeaponBloc extends Bloc { yield const WeaponState.loading(); final s = await event.when( loadFromImg: (img) async { - await trackWeaponLoaded(img, loadedFromName: false); + await _telemetryService.trackWeaponLoaded(img, loadedFromName: false); final weapon = _genshinService.getWeaponByImg(img); final translation = _genshinService.getWeaponTranslation(weapon.key); return _buildInitialState(weapon, translation); }, loadFromName: (name) async { - await trackWeaponLoaded(name); + await _telemetryService.trackWeaponLoaded(name); final weapon = _genshinService.getWeapon(name); final translation = _genshinService.getWeaponTranslation(name); return _buildInitialState(weapon, translation); @@ -53,7 +52,7 @@ class WeaponBloc extends Bloc { secondaryStatValue: weapon.secondaryStatValue, description: translation.description, locationType: weapon.location, - ascentionMaterials: weapon.ascentionMaterials, + ascensionMaterials: weapon.ascensionMaterials, refinements: weapon.refinements.map( (e) { var description = translation.refinement; diff --git a/lib/bloc/weapon/weapon_event.dart b/lib/application/weapon/weapon_event.dart similarity index 100% rename from lib/bloc/weapon/weapon_event.dart rename to lib/application/weapon/weapon_event.dart diff --git a/lib/bloc/weapon/weapon_state.dart b/lib/application/weapon/weapon_state.dart similarity index 90% rename from lib/bloc/weapon/weapon_state.dart rename to lib/application/weapon/weapon_state.dart index 90f982521..8a548bab9 100644 --- a/lib/bloc/weapon/weapon_state.dart +++ b/lib/application/weapon/weapon_state.dart @@ -13,7 +13,7 @@ abstract class WeaponState with _$WeaponState { @required double secondaryStatValue, @required String description, @required ItemLocationType locationType, - @required List ascentionMaterials, + @required List ascensionMaterials, @required List refinements, @required List charImages, }) = _LoadedState; diff --git a/lib/bloc/weapons/weapons_bloc.dart b/lib/application/weapons/weapons_bloc.dart similarity index 94% rename from lib/bloc/weapons/weapons_bloc.dart rename to lib/application/weapons/weapons_bloc.dart index f5fef77fb..5ce7395da 100644 --- a/lib/bloc/weapons/weapons_bloc.dart +++ b/lib/application/weapons/weapons_bloc.dart @@ -2,14 +2,10 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; - -import '../../common/enums/sort_direction_type.dart'; -import '../../common/enums/stat_type.dart'; -import '../../common/enums/weapon_filter_type.dart'; -import '../../common/enums/weapon_type.dart'; -import '../../models/models.dart'; -import '../../services/genshing_service.dart'; -import '../../services/settings_service.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/domain/services/genshin_service.dart'; +import 'package:genshindb/domain/services/settings_service.dart'; part 'weapons_bloc.freezed.dart'; part 'weapons_event.dart'; diff --git a/lib/bloc/weapons/weapons_event.dart b/lib/application/weapons/weapons_event.dart similarity index 100% rename from lib/bloc/weapons/weapons_event.dart rename to lib/application/weapons/weapons_event.dart diff --git a/lib/bloc/weapons/weapons_state.dart b/lib/application/weapons/weapons_state.dart similarity index 100% rename from lib/bloc/weapons/weapons_state.dart rename to lib/application/weapons/weapons_state.dart diff --git a/lib/common/app_constants.dart b/lib/domain/app_constants.dart similarity index 100% rename from lib/common/app_constants.dart rename to lib/domain/app_constants.dart diff --git a/lib/common/assets.dart b/lib/domain/assets.dart similarity index 96% rename from lib/common/assets.dart rename to lib/domain/assets.dart index 77a723799..ae8a03960 100644 --- a/lib/common/assets.dart +++ b/lib/domain/assets.dart @@ -1,9 +1,5 @@ -import '../common/extensions/string_extensions.dart'; -import 'enums/app_language_type.dart'; -import 'enums/artifact_type.dart'; -import 'enums/element_type.dart'; -import 'enums/material_type.dart'; -import 'enums/weapon_type.dart'; +import 'enums/enums.dart'; +import 'extensions/string_extensions.dart'; class Assets { static String dbPath = 'assets/db'; diff --git a/lib/common/enums/app_accent_color_type.dart b/lib/domain/enums/app_accent_color_type.dart similarity index 100% rename from lib/common/enums/app_accent_color_type.dart rename to lib/domain/enums/app_accent_color_type.dart diff --git a/lib/common/enums/app_language_type.dart b/lib/domain/enums/app_language_type.dart similarity index 100% rename from lib/common/enums/app_language_type.dart rename to lib/domain/enums/app_language_type.dart diff --git a/lib/common/enums/app_theme_type.dart b/lib/domain/enums/app_theme_type.dart similarity index 100% rename from lib/common/enums/app_theme_type.dart rename to lib/domain/enums/app_theme_type.dart diff --git a/lib/common/enums/artifact_filter_type.dart b/lib/domain/enums/artifact_filter_type.dart similarity index 100% rename from lib/common/enums/artifact_filter_type.dart rename to lib/domain/enums/artifact_filter_type.dart diff --git a/lib/common/enums/artifact_type.dart b/lib/domain/enums/artifact_type.dart similarity index 100% rename from lib/common/enums/artifact_type.dart rename to lib/domain/enums/artifact_type.dart diff --git a/lib/common/enums/ascension_material_summary_type.dart b/lib/domain/enums/ascension_material_summary_type.dart similarity index 100% rename from lib/common/enums/ascension_material_summary_type.dart rename to lib/domain/enums/ascension_material_summary_type.dart diff --git a/lib/common/enums/character_filter_type.dart b/lib/domain/enums/character_filter_type.dart similarity index 100% rename from lib/common/enums/character_filter_type.dart rename to lib/domain/enums/character_filter_type.dart diff --git a/lib/common/enums/character_skill_ability_type.dart b/lib/domain/enums/character_skill_ability_type.dart similarity index 100% rename from lib/common/enums/character_skill_ability_type.dart rename to lib/domain/enums/character_skill_ability_type.dart diff --git a/lib/common/enums/character_skill_type.dart b/lib/domain/enums/character_skill_type.dart similarity index 100% rename from lib/common/enums/character_skill_type.dart rename to lib/domain/enums/character_skill_type.dart diff --git a/lib/common/enums/character_type.dart b/lib/domain/enums/character_type.dart similarity index 100% rename from lib/common/enums/character_type.dart rename to lib/domain/enums/character_type.dart diff --git a/lib/common/enums/day_type.dart b/lib/domain/enums/day_type.dart similarity index 100% rename from lib/common/enums/day_type.dart rename to lib/domain/enums/day_type.dart diff --git a/lib/common/enums/element_type.dart b/lib/domain/enums/element_type.dart similarity index 100% rename from lib/common/enums/element_type.dart rename to lib/domain/enums/element_type.dart diff --git a/lib/domain/enums/enums.dart b/lib/domain/enums/enums.dart new file mode 100644 index 000000000..87690fc3b --- /dev/null +++ b/lib/domain/enums/enums.dart @@ -0,0 +1,20 @@ +export 'app_accent_color_type.dart'; +export 'app_language_type.dart'; +export 'app_theme_type.dart'; +export 'artifact_filter_type.dart'; +export 'artifact_type.dart'; +export 'ascension_material_summary_type.dart'; +export 'character_filter_type.dart'; +export 'character_skill_ability_type.dart'; +export 'character_skill_type.dart'; +export 'character_type.dart'; +export 'day_type.dart'; +export 'element_type.dart'; +export 'item_location_type.dart'; +export 'item_status_type.dart'; +export 'material_type.dart'; +export 'region_type.dart'; +export 'sort_direction_type.dart'; +export 'stat_type.dart'; +export 'weapon_filter_type.dart'; +export 'weapon_type.dart'; diff --git a/lib/common/enums/item_location_type.dart b/lib/domain/enums/item_location_type.dart similarity index 100% rename from lib/common/enums/item_location_type.dart rename to lib/domain/enums/item_location_type.dart diff --git a/lib/common/enums/item_status_type.dart b/lib/domain/enums/item_status_type.dart similarity index 100% rename from lib/common/enums/item_status_type.dart rename to lib/domain/enums/item_status_type.dart diff --git a/lib/common/enums/material_type.dart b/lib/domain/enums/material_type.dart similarity index 100% rename from lib/common/enums/material_type.dart rename to lib/domain/enums/material_type.dart diff --git a/lib/common/enums/region_type.dart b/lib/domain/enums/region_type.dart similarity index 100% rename from lib/common/enums/region_type.dart rename to lib/domain/enums/region_type.dart diff --git a/lib/common/enums/sort_direction_type.dart b/lib/domain/enums/sort_direction_type.dart similarity index 100% rename from lib/common/enums/sort_direction_type.dart rename to lib/domain/enums/sort_direction_type.dart diff --git a/lib/common/enums/stat_type.dart b/lib/domain/enums/stat_type.dart similarity index 100% rename from lib/common/enums/stat_type.dart rename to lib/domain/enums/stat_type.dart diff --git a/lib/common/enums/weapon_filter_type.dart b/lib/domain/enums/weapon_filter_type.dart similarity index 100% rename from lib/common/enums/weapon_filter_type.dart rename to lib/domain/enums/weapon_filter_type.dart diff --git a/lib/common/enums/weapon_type.dart b/lib/domain/enums/weapon_type.dart similarity index 100% rename from lib/common/enums/weapon_type.dart rename to lib/domain/enums/weapon_type.dart diff --git a/lib/common/extensions/iterable_extensions.dart b/lib/domain/extensions/iterable_extensions.dart similarity index 100% rename from lib/common/extensions/iterable_extensions.dart rename to lib/domain/extensions/iterable_extensions.dart diff --git a/lib/common/extensions/string_extensions.dart b/lib/domain/extensions/string_extensions.dart similarity index 100% rename from lib/common/extensions/string_extensions.dart rename to lib/domain/extensions/string_extensions.dart diff --git a/lib/common/extensions/weapon_type_extensions.dart b/lib/domain/extensions/weapon_type_extensions.dart similarity index 100% rename from lib/common/extensions/weapon_type_extensions.dart rename to lib/domain/extensions/weapon_type_extensions.dart diff --git a/lib/models/artifacts/artifact_card_model.dart b/lib/domain/models/artifacts/artifact_card_model.dart similarity index 100% rename from lib/models/artifacts/artifact_card_model.dart rename to lib/domain/models/artifacts/artifact_card_model.dart diff --git a/lib/models/calculator_asc_materials/ascention_materials_summary.dart b/lib/domain/models/calculator_asc_materials/ascension_materials_summary.dart similarity index 90% rename from lib/models/calculator_asc_materials/ascention_materials_summary.dart rename to lib/domain/models/calculator_asc_materials/ascension_materials_summary.dart index 9b27a5aef..6a3028b2f 100644 --- a/lib/models/calculator_asc_materials/ascention_materials_summary.dart +++ b/lib/domain/models/calculator_asc_materials/ascension_materials_summary.dart @@ -1,7 +1,7 @@ import 'package:flutter/foundation.dart'; -import '../../common/enums/ascension_material_summary_type.dart'; -import '../../common/enums/material_type.dart'; +import '../../enums/ascension_material_summary_type.dart'; +import '../../enums/material_type.dart'; class AscensionMaterialsSummary { final AscensionMaterialSummaryType type; diff --git a/lib/models/calculator_asc_materials/character_skill.dart b/lib/domain/models/calculator_asc_materials/character_skill.dart similarity index 100% rename from lib/models/calculator_asc_materials/character_skill.dart rename to lib/domain/models/calculator_asc_materials/character_skill.dart diff --git a/lib/domain/models/calculator_asc_materials/item_ascension_materials.dart b/lib/domain/models/calculator_asc_materials/item_ascension_materials.dart new file mode 100644 index 000000000..e173482a6 --- /dev/null +++ b/lib/domain/models/calculator_asc_materials/item_ascension_materials.dart @@ -0,0 +1,32 @@ +import 'package:flutter/foundation.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../models.dart'; + +part 'item_ascension_materials.freezed.dart'; + +@freezed +abstract class ItemAscensionMaterials with _$ItemAscensionMaterials { + const factory ItemAscensionMaterials.forCharacters( + {@required String key, + @required String name, + @required String image, + @required int rarity, + @required List materials, + @required int currentLevel, + @required int desiredLevel, + @required List skills, + @Default(true) bool isCharacter}) = _ForCharacter; + + const factory ItemAscensionMaterials.forWeapons( + {@required String key, + @required String name, + @required String image, + @required int rarity, + @required List materials, + @required int currentLevel, + @required int desiredLevel, + //This are here just for convenience + @Default([]) List skills, + @Default(false) bool isCharacter}) = _ForWeapon; +} diff --git a/lib/models/characters/character_ascention_model.dart b/lib/domain/models/characters/character_ascension_model.dart similarity index 50% rename from lib/models/characters/character_ascention_model.dart rename to lib/domain/models/characters/character_ascension_model.dart index c0c50d552..0b68a999d 100644 --- a/lib/models/characters/character_ascention_model.dart +++ b/lib/domain/models/characters/character_ascension_model.dart @@ -1,13 +1,13 @@ import 'package:flutter/widgets.dart'; -import '../items/item_ascention_material_model.dart'; +import '../items/item_ascension_material_model.dart'; -class CharacterAscentionModel { +class CharacterAscensionModel { final int rank; final int level; - final List materials; + final List materials; - CharacterAscentionModel({ + CharacterAscensionModel({ @required this.rank, @required this.level, @required this.materials, diff --git a/lib/models/characters/character_build_card_model.dart b/lib/domain/models/characters/character_build_card_model.dart similarity index 100% rename from lib/models/characters/character_build_card_model.dart rename to lib/domain/models/characters/character_build_card_model.dart diff --git a/lib/models/characters/character_card_model.dart b/lib/domain/models/characters/character_card_model.dart similarity index 86% rename from lib/models/characters/character_card_model.dart rename to lib/domain/models/characters/character_card_model.dart index 982059e2a..39d112d03 100644 --- a/lib/models/characters/character_card_model.dart +++ b/lib/domain/models/characters/character_card_model.dart @@ -1,7 +1,7 @@ import 'package:flutter/widgets.dart'; -import '../../common/enums/element_type.dart'; -import '../../common/enums/weapon_type.dart'; +import '../../enums/element_type.dart'; +import '../../enums/weapon_type.dart'; class CharacterCardModel { final String key; diff --git a/lib/models/characters/character_constellation_model.dart b/lib/domain/models/characters/character_constellation_model.dart similarity index 100% rename from lib/models/characters/character_constellation_model.dart rename to lib/domain/models/characters/character_constellation_model.dart diff --git a/lib/models/characters/character_passive_talent_model.dart b/lib/domain/models/characters/character_passive_talent_model.dart similarity index 100% rename from lib/models/characters/character_passive_talent_model.dart rename to lib/domain/models/characters/character_passive_talent_model.dart diff --git a/lib/models/characters/character_skill_card_model.dart b/lib/domain/models/characters/character_skill_card_model.dart similarity index 86% rename from lib/models/characters/character_skill_card_model.dart rename to lib/domain/models/characters/character_skill_card_model.dart index 81c46ec1e..94c6d9717 100644 --- a/lib/models/characters/character_skill_card_model.dart +++ b/lib/domain/models/characters/character_skill_card_model.dart @@ -1,7 +1,7 @@ import 'package:flutter/widgets.dart'; -import 'package:genshindb/common/enums/character_skill_ability_type.dart'; -import '../../common/enums/character_skill_type.dart'; +import '../../enums/character_skill_ability_type.dart'; +import '../../enums/character_skill_type.dart'; class CharacterSkillCardModel { final String image; diff --git a/lib/domain/models/characters/character_talent_ascension_model.dart b/lib/domain/models/characters/character_talent_ascension_model.dart new file mode 100644 index 000000000..7bc9434ae --- /dev/null +++ b/lib/domain/models/characters/character_talent_ascension_model.dart @@ -0,0 +1,12 @@ +import 'package:flutter/widgets.dart'; + +import '../items/item_ascension_material_model.dart'; + +class CharacterTalentAscensionModel { + final int level; + final List materials; + CharacterTalentAscensionModel({ + @required this.level, + @required this.materials, + }); +} diff --git a/lib/models/db/artifacts/artifact_file_model.dart b/lib/domain/models/db/artifacts/artifact_file_model.dart similarity index 96% rename from lib/models/db/artifacts/artifact_file_model.dart rename to lib/domain/models/db/artifacts/artifact_file_model.dart index fa1673fde..ca62e652f 100644 --- a/lib/models/db/artifacts/artifact_file_model.dart +++ b/lib/domain/models/db/artifacts/artifact_file_model.dart @@ -1,6 +1,6 @@ import 'package:freezed_annotation/freezed_annotation.dart'; -import '../../../common/assets.dart'; +import '../../../assets.dart'; part 'artifact_file_model.freezed.dart'; part 'artifact_file_model.g.dart'; diff --git a/lib/models/db/artifacts/artifacts_file.dart b/lib/domain/models/db/artifacts/artifacts_file.dart similarity index 100% rename from lib/models/db/artifacts/artifacts_file.dart rename to lib/domain/models/db/artifacts/artifacts_file.dart diff --git a/lib/models/db/characters/character_file_model.dart b/lib/domain/models/db/characters/character_file_model.dart similarity index 66% rename from lib/models/db/characters/character_file_model.dart rename to lib/domain/models/db/characters/character_file_model.dart index d1f9db130..575e9cfcc 100644 --- a/lib/models/db/characters/character_file_model.dart +++ b/lib/domain/models/db/characters/character_file_model.dart @@ -1,13 +1,13 @@ import 'package:flutter/foundation.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; -import '../../../common/assets.dart'; -import '../../../common/enums/character_skill_ability_type.dart'; -import '../../../common/enums/character_skill_type.dart'; -import '../../../common/enums/character_type.dart'; -import '../../../common/enums/element_type.dart'; -import '../../../common/enums/region_type.dart'; -import '../../../common/enums/weapon_type.dart'; +import '../../../assets.dart'; +import '../../../enums/character_skill_ability_type.dart'; +import '../../../enums/character_skill_type.dart'; +import '../../../enums/character_type.dart'; +import '../../../enums/element_type.dart'; +import '../../../enums/region_type.dart'; +import '../../../enums/weapon_type.dart'; import '../../models.dart'; part 'character_file_model.freezed.dart'; @@ -28,9 +28,9 @@ abstract class CharacterFileModel implements _$CharacterFileModel { @required bool isComingSoon, @required bool isNew, @required CharacterType role, - @required List ascentionMaterials, - @required List talentAscentionMaterials, - List multiTalentAscentionMaterials, + @required List ascensionMaterials, + @required List talentAscensionMaterials, + List multiTalentAscensionMaterials, @required List builds, @required List skills, @required List passives, @@ -43,44 +43,41 @@ abstract class CharacterFileModel implements _$CharacterFileModel { } @freezed -abstract class CharacterFileAscentionMaterialModel implements _$CharacterFileAscentionMaterialModel { - factory CharacterFileAscentionMaterialModel({ +abstract class CharacterFileAscensionMaterialModel implements _$CharacterFileAscensionMaterialModel { + factory CharacterFileAscensionMaterialModel({ @required int rank, @required int level, - @required List materials, - }) = _CharacterFileAscentionMaterialModel; + @required List materials, + }) = _CharacterFileAscensionMaterialModel; - const CharacterFileAscentionMaterialModel._(); + const CharacterFileAscensionMaterialModel._(); - factory CharacterFileAscentionMaterialModel.fromJson(Map json) => - _$CharacterFileAscentionMaterialModelFromJson(json); + factory CharacterFileAscensionMaterialModel.fromJson(Map json) => _$CharacterFileAscensionMaterialModelFromJson(json); } @freezed -abstract class CharacterFileTalentAscentionMaterialModel implements _$CharacterFileTalentAscentionMaterialModel { - factory CharacterFileTalentAscentionMaterialModel({ +abstract class CharacterFileTalentAscensionMaterialModel implements _$CharacterFileTalentAscensionMaterialModel { + factory CharacterFileTalentAscensionMaterialModel({ @required int level, - @required List materials, - }) = _CharacterFileTalentAscentionMaterialModel; + @required List materials, + }) = _CharacterFileTalentAscensionMaterialModel; - const CharacterFileTalentAscentionMaterialModel._(); + const CharacterFileTalentAscensionMaterialModel._(); - factory CharacterFileTalentAscentionMaterialModel.fromJson(Map json) => - _$CharacterFileTalentAscentionMaterialModelFromJson(json); + factory CharacterFileTalentAscensionMaterialModel.fromJson(Map json) => _$CharacterFileTalentAscensionMaterialModelFromJson(json); } @freezed -abstract class CharacterFileMultiTalentAscentionMaterialModel - implements _$CharacterFileMultiTalentAscentionMaterialModel { - factory CharacterFileMultiTalentAscentionMaterialModel({ +abstract class CharacterFileMultiTalentAscensionMaterialModel implements _$CharacterFileMultiTalentAscensionMaterialModel { + factory CharacterFileMultiTalentAscensionMaterialModel({ @required int number, - @required List materials, - }) = _CharacterFileMultiTalentAscentionMaterialModel; + @required List materials, + }) = _CharacterFileMultiTalentAscensionMaterialModel; - const CharacterFileMultiTalentAscentionMaterialModel._(); + const CharacterFileMultiTalentAscensionMaterialModel._(); - factory CharacterFileMultiTalentAscentionMaterialModel.fromJson(Map json) => - _$CharacterFileMultiTalentAscentionMaterialModelFromJson(json); + factory CharacterFileMultiTalentAscensionMaterialModel.fromJson(Map json) => + _$CharacterFileMultiTalentAscensionMaterialModelFromJson(json); } @freezed @@ -123,8 +120,7 @@ abstract class CharacterFileArtifactMultipleBuild implements _$CharacterFileArti CharacterFileArtifactMultipleBuild._(); - factory CharacterFileArtifactMultipleBuild.fromJson(Map json) => - _$CharacterFileArtifactMultipleBuildFromJson(json); + factory CharacterFileArtifactMultipleBuild.fromJson(Map json) => _$CharacterFileArtifactMultipleBuildFromJson(json); } @freezed @@ -153,8 +149,7 @@ abstract class CharacterFileSkillAbilityModel implements _$CharacterFileSkillAbi CharacterFileSkillAbilityModel._(); - factory CharacterFileSkillAbilityModel.fromJson(Map json) => - _$CharacterFileSkillAbilityModelFromJson(json); + factory CharacterFileSkillAbilityModel.fromJson(Map json) => _$CharacterFileSkillAbilityModelFromJson(json); } @freezed @@ -186,6 +181,5 @@ abstract class CharacterFileConstellationModel implements _$CharacterFileConstel CharacterFileConstellationModel._(); - factory CharacterFileConstellationModel.fromJson(Map json) => - _$CharacterFileConstellationModelFromJson(json); + factory CharacterFileConstellationModel.fromJson(Map json) => _$CharacterFileConstellationModelFromJson(json); } diff --git a/lib/models/db/characters/characters_file.dart b/lib/domain/models/db/characters/characters_file.dart similarity index 100% rename from lib/models/db/characters/characters_file.dart rename to lib/domain/models/db/characters/characters_file.dart diff --git a/lib/models/db/elements/element_debuff_file_model.dart b/lib/domain/models/db/elements/element_debuff_file_model.dart similarity index 93% rename from lib/models/db/elements/element_debuff_file_model.dart rename to lib/domain/models/db/elements/element_debuff_file_model.dart index 0078edcfe..db184cc7c 100644 --- a/lib/models/db/elements/element_debuff_file_model.dart +++ b/lib/domain/models/db/elements/element_debuff_file_model.dart @@ -1,6 +1,6 @@ import 'package:freezed_annotation/freezed_annotation.dart'; -import '../../../common/assets.dart'; +import '../../../assets.dart'; part 'element_debuff_file_model.freezed.dart'; part 'element_debuff_file_model.g.dart'; diff --git a/lib/models/db/elements/element_reaction_file_model.dart b/lib/domain/models/db/elements/element_reaction_file_model.dart similarity index 95% rename from lib/models/db/elements/element_reaction_file_model.dart rename to lib/domain/models/db/elements/element_reaction_file_model.dart index fbd176362..e444f9932 100644 --- a/lib/models/db/elements/element_reaction_file_model.dart +++ b/lib/domain/models/db/elements/element_reaction_file_model.dart @@ -1,6 +1,6 @@ import 'package:freezed_annotation/freezed_annotation.dart'; -import '../../../common/assets.dart'; +import '../../../assets.dart'; part 'element_reaction_file_model.freezed.dart'; part 'element_reaction_file_model.g.dart'; diff --git a/lib/models/db/elements/elements_file.dart b/lib/domain/models/db/elements/elements_file.dart similarity index 100% rename from lib/models/db/elements/elements_file.dart rename to lib/domain/models/db/elements/elements_file.dart diff --git a/lib/models/db/materials/material_file_model.dart b/lib/domain/models/db/materials/material_file_model.dart similarity index 88% rename from lib/models/db/materials/material_file_model.dart rename to lib/domain/models/db/materials/material_file_model.dart index 769799832..b24442ec7 100644 --- a/lib/models/db/materials/material_file_model.dart +++ b/lib/domain/models/db/materials/material_file_model.dart @@ -1,7 +1,7 @@ import 'package:freezed_annotation/freezed_annotation.dart'; -import '../../../common/assets.dart'; -import '../../../common/enums/material_type.dart'; +import '../../../assets.dart'; +import '../../../enums/material_type.dart'; part 'material_file_model.freezed.dart'; part 'material_file_model.g.dart'; diff --git a/lib/models/db/materials/materials_file.dart b/lib/domain/models/db/materials/materials_file.dart similarity index 100% rename from lib/models/db/materials/materials_file.dart rename to lib/domain/models/db/materials/materials_file.dart diff --git a/lib/models/db/translations/translation_artifact_file.dart b/lib/domain/models/db/translations/translation_artifact_file.dart similarity index 100% rename from lib/models/db/translations/translation_artifact_file.dart rename to lib/domain/models/db/translations/translation_artifact_file.dart diff --git a/lib/models/db/translations/translation_character_file.dart b/lib/domain/models/db/translations/translation_character_file.dart similarity index 100% rename from lib/models/db/translations/translation_character_file.dart rename to lib/domain/models/db/translations/translation_character_file.dart diff --git a/lib/models/db/translations/translation_element_file.dart b/lib/domain/models/db/translations/translation_element_file.dart similarity index 100% rename from lib/models/db/translations/translation_element_file.dart rename to lib/domain/models/db/translations/translation_element_file.dart diff --git a/lib/models/db/translations/translation_file.dart b/lib/domain/models/db/translations/translation_file.dart similarity index 100% rename from lib/models/db/translations/translation_file.dart rename to lib/domain/models/db/translations/translation_file.dart diff --git a/lib/models/db/translations/translation_material_file.dart b/lib/domain/models/db/translations/translation_material_file.dart similarity index 100% rename from lib/models/db/translations/translation_material_file.dart rename to lib/domain/models/db/translations/translation_material_file.dart diff --git a/lib/models/db/translations/translation_weapon_file.dart b/lib/domain/models/db/translations/translation_weapon_file.dart similarity index 100% rename from lib/models/db/translations/translation_weapon_file.dart rename to lib/domain/models/db/translations/translation_weapon_file.dart diff --git a/lib/models/db/weapons/weapon_file_model.dart b/lib/domain/models/db/weapons/weapon_file_model.dart similarity index 64% rename from lib/models/db/weapons/weapon_file_model.dart rename to lib/domain/models/db/weapons/weapon_file_model.dart index 98d1a60d2..9056ad8ac 100644 --- a/lib/models/db/weapons/weapon_file_model.dart +++ b/lib/domain/models/db/weapons/weapon_file_model.dart @@ -1,9 +1,9 @@ import 'package:freezed_annotation/freezed_annotation.dart'; -import '../../../common/assets.dart'; -import '../../../common/enums/item_location_type.dart'; -import '../../../common/enums/stat_type.dart'; -import '../../../common/enums/weapon_type.dart'; +import '../../../assets.dart'; +import '../../../enums/item_location_type.dart'; +import '../../../enums/stat_type.dart'; +import '../../../enums/weapon_type.dart'; import '../../models.dart'; part 'weapon_file_model.freezed.dart'; @@ -23,7 +23,7 @@ abstract class WeaponFileModel implements _$WeaponFileModel { @required StatType secondaryStat, @required double secondaryStatValue, @required ItemLocationType location, - @required List ascentionMaterials, + @required List ascensionMaterials, @required List refinements, }) = _WeaponFileModel; @@ -33,16 +33,15 @@ abstract class WeaponFileModel implements _$WeaponFileModel { } @freezed -abstract class WeaponFileAscentionMaterial implements _$WeaponFileAscentionMaterial { - factory WeaponFileAscentionMaterial({ +abstract class WeaponFileAscensionMaterial implements _$WeaponFileAscensionMaterial { + factory WeaponFileAscensionMaterial({ @required int level, - @required List materials, - }) = _WeaponFileAscentionMaterial; + @required List materials, + }) = _WeaponFileAscensionMaterial; - const WeaponFileAscentionMaterial._(); + const WeaponFileAscensionMaterial._(); - factory WeaponFileAscentionMaterial.fromJson(Map json) => - _$WeaponFileAscentionMaterialFromJson(json); + factory WeaponFileAscensionMaterial.fromJson(Map json) => _$WeaponFileAscensionMaterialFromJson(json); } @freezed diff --git a/lib/models/db/weapons/weapons_file.dart b/lib/domain/models/db/weapons/weapons_file.dart similarity index 100% rename from lib/models/db/weapons/weapons_file.dart rename to lib/domain/models/db/weapons/weapons_file.dart diff --git a/lib/models/elements/element_card_model.dart b/lib/domain/models/elements/element_card_model.dart similarity index 100% rename from lib/models/elements/element_card_model.dart rename to lib/domain/models/elements/element_card_model.dart diff --git a/lib/models/elements/element_reaction_card_model.dart b/lib/domain/models/elements/element_reaction_card_model.dart similarity index 100% rename from lib/models/elements/element_reaction_card_model.dart rename to lib/domain/models/elements/element_reaction_card_model.dart diff --git a/lib/models/home/today_char_ascention_materials_model.dart b/lib/domain/models/home/today_char_ascension_materials_model.dart similarity index 79% rename from lib/models/home/today_char_ascention_materials_model.dart rename to lib/domain/models/home/today_char_ascension_materials_model.dart index bf5c4e9de..7d99c7bca 100644 --- a/lib/models/home/today_char_ascention_materials_model.dart +++ b/lib/domain/models/home/today_char_ascension_materials_model.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -class TodayCharAscentionMaterialsModel { +class TodayCharAscensionMaterialsModel { final String name; final String image; final List days; @@ -10,14 +10,14 @@ class TodayCharAscentionMaterialsModel { bool get onlyObtainableInDays => days.isNotEmpty; - TodayCharAscentionMaterialsModel.fromDays({ + TodayCharAscensionMaterialsModel.fromDays({ @required this.name, @required this.image, @required this.days, @required this.characters, }) : bossName = null; - TodayCharAscentionMaterialsModel.fromBoss({ + TodayCharAscensionMaterialsModel.fromBoss({ @required this.name, @required this.image, @required this.bossName, diff --git a/lib/models/home/today_weapon_ascention_material_model.dart b/lib/domain/models/home/today_weapon_ascension_material_model.dart similarity index 75% rename from lib/models/home/today_weapon_ascention_material_model.dart rename to lib/domain/models/home/today_weapon_ascension_material_model.dart index b0576668c..c8cc1ff15 100644 --- a/lib/models/home/today_weapon_ascention_material_model.dart +++ b/lib/domain/models/home/today_weapon_ascension_material_model.dart @@ -1,11 +1,11 @@ import 'package:flutter/widgets.dart'; -class TodayWeaponAscentionMaterialModel { +class TodayWeaponAscensionMaterialModel { final String name; final String image; final List days; final List weapons; - TodayWeaponAscentionMaterialModel({ + TodayWeaponAscensionMaterialModel({ @required this.name, @required this.image, @required this.days, diff --git a/lib/domain/models/items/item_ascension_material_model.dart b/lib/domain/models/items/item_ascension_material_model.dart new file mode 100644 index 000000000..3d245e8a2 --- /dev/null +++ b/lib/domain/models/items/item_ascension_material_model.dart @@ -0,0 +1,23 @@ +import 'package:flutter/widgets.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../../assets.dart'; +import '../../enums/material_type.dart'; + +part 'item_ascension_material_model.freezed.dart'; +part 'item_ascension_material_model.g.dart'; + +@freezed +abstract class ItemAscensionMaterialModel implements _$ItemAscensionMaterialModel { + String get fullImagePath => Assets.getMaterialPath(image, materialType); + + factory ItemAscensionMaterialModel({ + @required MaterialType materialType, + @required String image, + @required int quantity, + }) = _ItemAscensionMaterialModel; + + const ItemAscensionMaterialModel._(); + + factory ItemAscensionMaterialModel.fromJson(Map json) => _$ItemAscensionMaterialModelFromJson(json); +} diff --git a/lib/models/models.dart b/lib/domain/models/models.dart similarity index 76% rename from lib/models/models.dart rename to lib/domain/models/models.dart index 7b4935292..49d5d9592 100644 --- a/lib/models/models.dart +++ b/lib/domain/models/models.dart @@ -1,14 +1,14 @@ export 'artifacts/artifact_card_model.dart'; -export 'calculator_asc_materials/ascention_materials_summary.dart'; +export 'calculator_asc_materials/ascension_materials_summary.dart'; export 'calculator_asc_materials/character_skill.dart'; -export 'calculator_asc_materials/item_ascention_materials.dart'; -export 'characters/character_ascention_model.dart'; +export 'calculator_asc_materials/item_ascension_materials.dart'; +export 'characters/character_ascension_model.dart'; export 'characters/character_build_card_model.dart'; export 'characters/character_card_model.dart'; export 'characters/character_constellation_model.dart'; export 'characters/character_passive_talent_model.dart'; export 'characters/character_skill_card_model.dart'; -export 'characters/character_talent_ascention_model.dart'; +export 'characters/character_talent_ascension_model.dart'; export 'db/artifacts/artifact_file_model.dart'; export 'db/artifacts/artifacts_file.dart'; export 'db/characters/character_file_model.dart'; @@ -16,8 +16,8 @@ export 'db/characters/characters_file.dart'; export 'db/elements/element_debuff_file_model.dart'; export 'db/elements/element_reaction_file_model.dart'; export 'db/elements/elements_file.dart'; -export 'db/materials/materials_file.dart'; export 'db/materials/material_file_model.dart'; +export 'db/materials/materials_file.dart'; export 'db/translations/translation_artifact_file.dart'; export 'db/translations/translation_character_file.dart'; export 'db/translations/translation_element_file.dart'; @@ -28,8 +28,9 @@ export 'db/weapons/weapon_file_model.dart'; export 'db/weapons/weapons_file.dart'; export 'elements/element_card_model.dart'; export 'elements/element_reaction_card_model.dart'; -export 'home/today_char_ascention_materials_model.dart'; -export 'home/today_weapon_ascention_material_model.dart'; -export 'items/item_ascention_material_model.dart'; +export 'home/today_char_ascension_materials_model.dart'; +export 'home/today_weapon_ascension_material_model.dart'; +export 'items/item_ascension_material_model.dart'; +export 'settings/app_settings.dart'; export 'weapons/weapon_card_model.dart'; export 'weapons/weapon_file_refinement_model.dart'; diff --git a/lib/models/settings/app_settings.dart b/lib/domain/models/settings/app_settings.dart similarity index 81% rename from lib/models/settings/app_settings.dart rename to lib/domain/models/settings/app_settings.dart index 4e2f2f98c..4e5ce198d 100644 --- a/lib/models/settings/app_settings.dart +++ b/lib/domain/models/settings/app_settings.dart @@ -2,9 +2,9 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; -import '../../common/enums/app_accent_color_type.dart'; -import '../../common/enums/app_language_type.dart'; -import '../../common/enums/app_theme_type.dart'; +import '../../enums/app_accent_color_type.dart'; +import '../../enums/app_language_type.dart'; +import '../../enums/app_theme_type.dart'; part 'app_settings.freezed.dart'; part 'app_settings.g.dart'; diff --git a/lib/domain/models/weapons/weapon_ascension_model.dart b/lib/domain/models/weapons/weapon_ascension_model.dart new file mode 100644 index 000000000..139010019 --- /dev/null +++ b/lib/domain/models/weapons/weapon_ascension_model.dart @@ -0,0 +1,13 @@ +import 'package:flutter/widgets.dart'; + +import '../items/item_ascension_material_model.dart'; + +class WeaponAscensionModel { + final int level; + final List materials; + + WeaponAscensionModel({ + @required this.level, + @required this.materials, + }); +} diff --git a/lib/models/weapons/weapon_card_model.dart b/lib/domain/models/weapons/weapon_card_model.dart similarity index 84% rename from lib/models/weapons/weapon_card_model.dart rename to lib/domain/models/weapons/weapon_card_model.dart index 6b2276709..3e317b6f0 100644 --- a/lib/models/weapons/weapon_card_model.dart +++ b/lib/domain/models/weapons/weapon_card_model.dart @@ -1,7 +1,7 @@ import 'package:flutter/widgets.dart'; -import '../../common/enums/stat_type.dart'; -import '../../common/enums/weapon_type.dart'; +import '../../enums/stat_type.dart'; +import '../../enums/weapon_type.dart'; class WeaponCardModel { final String key; diff --git a/lib/models/weapons/weapon_file_refinement_model.dart b/lib/domain/models/weapons/weapon_file_refinement_model.dart similarity index 100% rename from lib/models/weapons/weapon_file_refinement_model.dart rename to lib/domain/models/weapons/weapon_file_refinement_model.dart diff --git a/lib/domain/services/genshin_service.dart b/lib/domain/services/genshin_service.dart new file mode 100644 index 000000000..cadabc881 --- /dev/null +++ b/lib/domain/services/genshin_service.dart @@ -0,0 +1,40 @@ +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/models/models.dart'; + +abstract class GenshinService { + Future init(AppLanguageType languageType); + Future initCharacters(); + Future initWeapons(); + Future initArtifacts(); + Future initMaterials(); + Future initElements(); + Future initTranslations(AppLanguageType languageType); + + List getCharactersForCard(); + CharacterFileModel getCharacter(String key); + CharacterFileModel getCharacterByImg(String img); + + List getWeaponsForCard(); + WeaponCardModel getWeaponForCardByImg(String image); + WeaponFileModel getWeapon(String key); + WeaponFileModel getWeaponByImg(String img); + List getCharactersImgUsingWeapon(String key); + + List getArtifactsForCard(); + ArtifactCardModel getArtifactForCardByImg(String image); + ArtifactFileModel getArtifact(String key); + List getCharactersImgUsingArtifact(String key); + + TranslationArtifactFile getArtifactTranslation(String key); + TranslationCharacterFile getCharacterTranslation(String key); + TranslationWeaponFile getWeaponTranslation(String key); + + List getCharacterAscensionMaterials(int day); + List getWeaponAscensionMaterials(int day); + + List getElementDebuffs(); + List getElementReactions(); + List getElementResonances(); + + MaterialFileModel getMaterialByImage(String image); +} diff --git a/lib/domain/services/logging_service.dart b/lib/domain/services/logging_service.dart new file mode 100644 index 000000000..93e7743cc --- /dev/null +++ b/lib/domain/services/logging_service.dart @@ -0,0 +1,7 @@ +abstract class LoggingService { + void info(Type type, String msg, [List args]); + + void warning(Type type, String msg, [dynamic ex, StackTrace trace]); + + void error(Type type, String msg, [dynamic ex, StackTrace trace]); +} diff --git a/lib/domain/services/network_service.dart b/lib/domain/services/network_service.dart new file mode 100644 index 000000000..e72dfc301 --- /dev/null +++ b/lib/domain/services/network_service.dart @@ -0,0 +1,3 @@ +abstract class NetworkService { + Future isInternetAvailable(); +} diff --git a/lib/domain/services/settings_service.dart b/lib/domain/services/settings_service.dart new file mode 100644 index 000000000..9e2bdca5b --- /dev/null +++ b/lib/domain/services/settings_service.dart @@ -0,0 +1,26 @@ +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/models/models.dart'; + +abstract class SettingsService { + AppSettings get appSettings; + + AppThemeType get appTheme; + set appTheme(AppThemeType theme); + + AppAccentColorType get accentColor; + set accentColor(AppAccentColorType accentColor); + + AppLanguageType get language; + set language(AppLanguageType lang); + + bool get isFirstInstall; + set isFirstInstall(bool itIs); + + bool get showCharacterDetails; + set showCharacterDetails(bool show); + + bool get showWeaponDetails; + set showWeaponDetails(bool show); + + Future init(); +} diff --git a/lib/domain/services/telemetry_service.dart b/lib/domain/services/telemetry_service.dart new file mode 100644 index 000000000..1c916ba13 --- /dev/null +++ b/lib/domain/services/telemetry_service.dart @@ -0,0 +1,26 @@ +abstract class TelemetryService { + Future initTelemetry(); + + Future trackEventAsync(String name, [Map properties]); + + Future trackCharacterLoaded( + String value, { + bool loadedFromName = true, + }); + + Future trackWeaponLoaded( + String value, { + bool loadedFromName = true, + }); + + Future trackArtifactLoaded( + String value, { + bool loadedFromName = true, + }); + + Future trackAscensionMaterialsOpened(); + + Future trackUrlOpened(bool loadMap, bool loadWishSimulator, bool networkAvailable); + + Future trackCalculatorItemAscMaterialLoaded(String item); +} diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart index 28e3da094..d3faee46e 100644 --- a/lib/generated/intl/messages_en.dart +++ b/lib/generated/intl/messages_en.dart @@ -209,7 +209,7 @@ class MessageLookup extends MessageLookupByLibrary { "summary" : MessageLookupByLibrary.simpleMessage("Summary"), "sunday" : MessageLookupByLibrary.simpleMessage("Sunday"), "support" : MessageLookupByLibrary.simpleMessage("Support"), - "supportDps" : MessageLookupByLibrary.simpleMessage("Suppport DPS"), + "supportDps" : MessageLookupByLibrary.simpleMessage("Support DPS"), "supportMsg" : MessageLookupByLibrary.simpleMessage("I made this app in my free time and it is also open source. If you would like to help me, report an issue, have an idea, want a feature to be implemented, etc, please open an issue in my Github:"), "sword" : MessageLookupByLibrary.simpleMessage("Sword"), "talentAscensionX" : m14, diff --git a/lib/generated/intl/messages_es_ES.dart b/lib/generated/intl/messages_es_ES.dart index 4981ad47b..3e99bc7ab 100644 --- a/lib/generated/intl/messages_es_ES.dart +++ b/lib/generated/intl/messages_es_ES.dart @@ -47,6 +47,10 @@ class MessageLookup extends MessageLookupByLibrary { static m13(value) => "${value} Daño FIS. %"; + static m14(value) => "Talento de Ascención ${value}"; + + static m15(value) => "Desbloqueada en nivel de ascención ${value}"; + static m16(value) => "${value} Pieza(s)"; final messages = _notInlinedMessages(_notInlinedMessages); @@ -207,12 +211,15 @@ class MessageLookup extends MessageLookupByLibrary { "supportDps" : MessageLookupByLibrary.simpleMessage("DPS de Soporte"), "supportMsg" : MessageLookupByLibrary.simpleMessage("Hice esta aplicación en mi tiempo libre y también es de código abierto. Si deseas ayudarme, informar de un problema, tienes una idea, deseas que se implemente una funcionalidad, etc., crea un issue en mi Github:"), "sword" : MessageLookupByLibrary.simpleMessage("Espada"), + "talentAscensionX" : m14, + "talentsAscension" : MessageLookupByLibrary.simpleMessage("Talentos de Ascención"), "theme" : MessageLookupByLibrary.simpleMessage("Tema"), "thursday" : MessageLookupByLibrary.simpleMessage("Jueves"), "todayAscensionMaterials" : MessageLookupByLibrary.simpleMessage("Materiales de Ascensión para Hoy"), "tryYourLuck" : MessageLookupByLibrary.simpleMessage("Prueba tu suerte con este simulador de deseos"), "tuesday" : MessageLookupByLibrary.simpleMessage("Martes"), "type" : MessageLookupByLibrary.simpleMessage("Tipo"), + "unlockedAtAscensionLevelX" : m15, "unlockedAutomatically" : MessageLookupByLibrary.simpleMessage("Desbloqueada Automáticamente"), "unreleased" : MessageLookupByLibrary.simpleMessage("No Publicado"), "utility" : MessageLookupByLibrary.simpleMessage("Utilidad"), diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index b34ccbf13..4f73a12c8 100644 --- a/lib/generated/l10n.dart +++ b/lib/generated/l10n.dart @@ -1505,10 +1505,10 @@ class S { ); } - /// `Suppport DPS` + /// `Support DPS` String get supportDps { return Intl.message( - 'Suppport DPS', + 'Support DPS', name: 'supportDps', desc: '', args: [], diff --git a/lib/services/genshing_service.dart b/lib/infrastructure/genshin_service.dart similarity index 75% rename from lib/services/genshing_service.dart rename to lib/infrastructure/genshin_service.dart index d0bae4625..522f83e75 100644 --- a/lib/services/genshing_service.dart +++ b/lib/infrastructure/genshin_service.dart @@ -1,49 +1,10 @@ import 'dart:convert'; import 'package:flutter/services.dart' show rootBundle; - -import '../common/assets.dart'; -import '../common/enums/app_language_type.dart'; -import '../common/enums/material_type.dart'; -import '../models/models.dart'; - -abstract class GenshinService { - Future init(AppLanguageType languageType); - Future initCharacters(); - Future initWeapons(); - Future initArtifacts(); - Future initMaterials(); - Future initElements(); - Future initTranslations(AppLanguageType languageType); - - List getCharactersForCard(); - CharacterFileModel getCharacter(String key); - CharacterFileModel getCharacterByImg(String img); - - List getWeaponsForCard(); - WeaponCardModel getWeaponForCardByImg(String image); - WeaponFileModel getWeapon(String key); - WeaponFileModel getWeaponByImg(String img); - List getCharactersImgUsingWeapon(String key); - - List getArtifactsForCard(); - ArtifactCardModel getArtifactForCardByImg(String image); - ArtifactFileModel getArtifact(String key); - List getCharactersImgUsingArtifact(String key); - - TranslationArtifactFile getArtifactTranslation(String key); - TranslationCharacterFile getCharacterTranslation(String key); - TranslationWeaponFile getWeaponTranslation(String key); - - List getCharacterAscensionMaterials(int day); - List getWeaponAscensionMaterials(int day); - - List getElementDebuffs(); - List getElementReactions(); - List getElementResonances(); - - MaterialFileModel getMaterialByImage(String image); -} +import 'package:genshindb/domain/assets.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/domain/services/genshin_service.dart'; class GenshinServiceImpl implements GenshinService { CharactersFile _charactersFile; @@ -55,14 +16,7 @@ class GenshinServiceImpl implements GenshinService { @override Future init(AppLanguageType languageType) async { - await Future.wait([ - initCharacters(), - initWeapons(), - initArtifacts(), - initMaterials(), - initElements(), - initTranslations(languageType) - ]); + await Future.wait([initCharacters(), initWeapons(), initArtifacts(), initMaterials(), initElements(), initTranslations(languageType)]); } @override @@ -111,25 +65,21 @@ class GenshinServiceImpl implements GenshinService { List getCharactersForCard() { return _charactersFile.characters.map( (e) { - final multiTalentAscentionMaterials = - e.multiTalentAscentionMaterials ?? []; - - final ascentionMaterial = e.ascentionMaterials.isNotEmpty - ? e.ascentionMaterials.reduce((current, next) => current.level > next.level ? current : next) - : null; - - final talentMaterial = e.talentAscentionMaterials.isNotEmpty - ? e.talentAscentionMaterials.reduce((current, next) => current.level > next.level ? current : next) - : multiTalentAscentionMaterials.isNotEmpty - ? multiTalentAscentionMaterials - .expand((e) => e.materials) - .reduce((current, next) => current.level > next.level ? current : next) + final multiTalentAscensionMaterials = e.multiTalentAscensionMaterials ?? []; + + final ascensionMaterial = + e.ascensionMaterials.isNotEmpty ? e.ascensionMaterials.reduce((current, next) => current.level > next.level ? current : next) : null; + + final talentMaterial = e.talentAscensionMaterials.isNotEmpty + ? e.talentAscensionMaterials.reduce((current, next) => current.level > next.level ? current : next) + : multiTalentAscensionMaterials.isNotEmpty + ? multiTalentAscensionMaterials.expand((e) => e.materials).reduce((current, next) => current.level > next.level ? current : next) : null; - final materials = (ascentionMaterial?.materials ?? []) + - (talentMaterial?.materials ?? []); + final materials = + (ascensionMaterial?.materials ?? []) + (talentMaterial?.materials ?? []); - final mp = {}; + final mp = {}; for (final item in materials) { if (item.materialType != MaterialType.currency) { mp[item.image] = item; @@ -270,8 +220,7 @@ class GenshinServiceImpl implements GenshinService { final imgs = []; for (final char in _charactersFile.characters) { for (final build in char.builds) { - final isBeingUsed = - build.artifacts.any((a) => a.one == artifact.image || a.multiples.any((m) => m.image == artifact.image)); + final isBeingUsed = build.artifacts.any((a) => a.one == artifact.image || a.multiples.any((m) => m.image == artifact.image)); final img = Assets.getCharacterPath(char.image); if (isBeingUsed && !imgs.contains(img)) { @@ -299,7 +248,7 @@ class GenshinServiceImpl implements GenshinService { } @override - List getCharacterAscensionMaterials(int day) { + List getCharacterAscensionMaterials(int day) { final iterable = day == DateTime.sunday ? _materialsFile.talents.where((t) => t.days.isNotEmpty && t.level == 0) : _materialsFile.talents.where((t) => t.days.contains(day) && t.level == 0); @@ -310,15 +259,14 @@ class GenshinServiceImpl implements GenshinService { for (final char in _charactersFile.characters) { if (char.isComingSoon) continue; - final normalAscMaterial = - char.ascentionMaterials.expand((m) => m.materials).where((m) => m.image == e.image).isNotEmpty || - char.talentAscentionMaterials.expand((m) => m.materials).where((m) => m.image == e.image).isNotEmpty; + final normalAscMaterial = char.ascensionMaterials.expand((m) => m.materials).where((m) => m.image == e.image).isNotEmpty || + char.talentAscensionMaterials.expand((m) => m.materials).where((m) => m.image == e.image).isNotEmpty; //The travelers have different ascension materials, that's why we do the following var specialAscMaterial = false; - if (char.multiTalentAscentionMaterials != null) { + if (char.multiTalentAscensionMaterials != null) { final keyword = e.image.split('_').last; - final materials = char.multiTalentAscentionMaterials + final materials = char.multiTalentAscensionMaterials .expand((m) => m.materials) .expand((m) => m.materials) .where((m) => m.materialType == MaterialType.talents) @@ -337,13 +285,13 @@ class GenshinServiceImpl implements GenshinService { } return e.isFromBoss - ? TodayCharAscentionMaterialsModel.fromBoss( + ? TodayCharAscensionMaterialsModel.fromBoss( name: translation.name, image: Assets.getMaterialPath(e.image, e.type), bossName: translation.bossName, characters: characters, ) - : TodayCharAscentionMaterialsModel.fromDays( + : TodayCharAscensionMaterialsModel.fromDays( name: translation.name, image: Assets.getMaterialPath(e.image, e.type), characters: characters, @@ -353,7 +301,7 @@ class GenshinServiceImpl implements GenshinService { } @override - List getWeaponAscensionMaterials(int day) { + List getWeaponAscensionMaterials(int day) { final iterable = day == DateTime.sunday ? _materialsFile.weaponPrimary.where((t) => t.level == 0) : _materialsFile.weaponPrimary.where((t) => t.days.contains(day) && t.level == 0); @@ -363,13 +311,12 @@ class GenshinServiceImpl implements GenshinService { final weapons = []; for (final weapon in _weaponsFile.weapons) { - final materialIsBeingUsed = - weapon.ascentionMaterials.expand((m) => m.materials).where((m) => m.image == e.image).isNotEmpty; + final materialIsBeingUsed = weapon.ascensionMaterials.expand((m) => m.materials).where((m) => m.image == e.image).isNotEmpty; if (materialIsBeingUsed) { weapons.add(weapon.fullImagePath); } } - return TodayWeaponAscentionMaterialModel( + return TodayWeaponAscensionMaterialModel( days: e.days, name: translation.name, image: Assets.getMaterialPath(e.image, e.type), diff --git a/lib/services/logging_service.dart b/lib/infrastructure/logging_service.dart similarity index 81% rename from lib/services/logging_service.dart rename to lib/infrastructure/logging_service.dart index 617147eda..14dc29b99 100644 --- a/lib/services/logging_service.dart +++ b/lib/infrastructure/logging_service.dart @@ -1,23 +1,16 @@ import 'package:dog/dog.dart'; import 'package:flutter/foundation.dart'; +import 'package:genshindb/domain/extensions/string_extensions.dart'; +import 'package:genshindb/domain/services/logging_service.dart'; +import 'package:genshindb/domain/services/telemetry_service.dart'; import 'package:log_4_dart_2/log_4_dart_2.dart'; import 'package:sprintf/sprintf.dart'; -import '../common/extensions/string_extensions.dart'; -import '../telemetry.dart'; - -abstract class LoggingService { - void info(Type type, String msg, [List args]); - - void warning(Type type, String msg, [dynamic ex, StackTrace trace]); - - void error(Type type, String msg, [dynamic ex, StackTrace trace]); -} - class LoggingServiceImpl implements LoggingService { final Logger _logger; + final TelemetryService _telemetryService; - LoggingServiceImpl(this._logger); + LoggingServiceImpl(this._logger, this._telemetryService); @override void info(Type type, String msg, [List args]) { @@ -65,12 +58,12 @@ class LoggingServiceImpl implements LoggingService { void _trackError(String tag, String msg, [dynamic ex, StackTrace trace]) { final map = _buildError(tag, msg, ex, trace); - trackEventAsync('Error - ${DateTime.now()}', map); + _telemetryService.trackEventAsync('Error - ${DateTime.now()}', map); } void _trackWarning(String tag, String msg, [dynamic ex, StackTrace trace]) { final map = _buildError(tag, msg, ex, trace); - trackEventAsync('Warning - ${DateTime.now()}', map); + _telemetryService.trackEventAsync('Warning - ${DateTime.now()}', map); } Map _buildError(String tag, String msg, [dynamic ex, StackTrace trace]) { diff --git a/lib/services/network_service.dart b/lib/infrastructure/network_service.dart similarity index 78% rename from lib/services/network_service.dart rename to lib/infrastructure/network_service.dart index c80474068..e65a6b3a1 100644 --- a/lib/services/network_service.dart +++ b/lib/infrastructure/network_service.dart @@ -1,8 +1,5 @@ import 'package:data_connection_checker/data_connection_checker.dart'; - -abstract class NetworkService { - Future isInternetAvailable(); -} +import 'package:genshindb/domain/services/network_service.dart'; class NetworkServiceImpl implements NetworkService { @override diff --git a/lib/services/settings_service.dart b/lib/infrastructure/settings_service.dart similarity index 81% rename from lib/services/settings_service.dart rename to lib/infrastructure/settings_service.dart index fd1f2e112..cd554c30f 100644 --- a/lib/services/settings_service.dart +++ b/lib/infrastructure/settings_service.dart @@ -1,35 +1,9 @@ +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/domain/services/logging_service.dart'; +import 'package:genshindb/domain/services/settings_service.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import '../common/enums/app_accent_color_type.dart'; -import '../common/enums/app_language_type.dart'; -import '../common/enums/app_theme_type.dart'; -import '../models/settings/app_settings.dart'; -import 'logging_service.dart'; - -abstract class SettingsService { - AppSettings get appSettings; - - AppThemeType get appTheme; - set appTheme(AppThemeType theme); - - AppAccentColorType get accentColor; - set accentColor(AppAccentColorType accentColor); - - AppLanguageType get language; - set language(AppLanguageType lang); - - bool get isFirstInstall; - set isFirstInstall(bool itIs); - - bool get showCharacterDetails; - set showCharacterDetails(bool show); - - bool get showWeaponDetails; - set showWeaponDetails(bool show); - - Future init(); -} - class SettingsServiceImpl extends SettingsService { final _appThemeKey = 'AppTheme'; final _accentColorKey = 'AccentColor'; @@ -45,31 +19,37 @@ class SettingsServiceImpl extends SettingsService { @override AppThemeType get appTheme => AppThemeType.values[(_prefs.getInt(_appThemeKey))]; + @override set appTheme(AppThemeType theme) => _prefs.setInt(_appThemeKey, theme.index); @override AppAccentColorType get accentColor => AppAccentColorType.values[_prefs.getInt(_accentColorKey)]; + @override set accentColor(AppAccentColorType accentColor) => _prefs.setInt(_accentColorKey, accentColor.index); @override AppLanguageType get language => AppLanguageType.values[_prefs.getInt(_appLanguageKey)]; + @override set language(AppLanguageType lang) => _prefs.setInt(_appLanguageKey, lang.index); @override bool get isFirstInstall => _prefs.getBool(_firstInstallKey); + @override set isFirstInstall(bool itIs) => _prefs.setBool(_firstInstallKey, itIs); @override bool get showCharacterDetails => _prefs.getBool(_showCharacterDetailsKey); + @override set showCharacterDetails(bool show) => _prefs.setBool(_showCharacterDetailsKey, show); @override bool get showWeaponDetails => _prefs.getBool(_showWeaponDetailsKey); + @override set showWeaponDetails(bool show) => _prefs.setBool(_showWeaponDetailsKey, show); diff --git a/lib/flutter_appcenter_bundle.dart b/lib/infrastructure/telemetry/flutter_appcenter_bundle.dart similarity index 100% rename from lib/flutter_appcenter_bundle.dart rename to lib/infrastructure/telemetry/flutter_appcenter_bundle.dart diff --git a/lib/infrastructure/telemetry/telemetry_service.dart b/lib/infrastructure/telemetry/telemetry_service.dart new file mode 100644 index 000000000..8b4b085a2 --- /dev/null +++ b/lib/infrastructure/telemetry/telemetry_service.dart @@ -0,0 +1,73 @@ +import 'package:genshindb/domain/services/telemetry_service.dart'; +import 'package:genshindb/infrastructure/telemetry/flutter_appcenter_bundle.dart'; +import 'package:genshindb/infrastructure/telemetry/secrets.dart'; + +class TelemetryServiceImpl implements TelemetryService { + //Only call this function from the main.dart + @override + Future initTelemetry() async { + await AppCenter.startAsync(appSecretAndroid: Secrets.appCenterKey, appSecretIOS: ''); + } + + @override + Future trackEventAsync(String name, [Map properties]) { + return AppCenter.trackEventAsync(name, properties); + } + + @override + Future trackCharacterLoaded( + String value, { + bool loadedFromName = true, + }) async { + if (loadedFromName) { + await trackEventAsync('Character-FromName', {'Name': value}); + } else { + await trackEventAsync('Character-FromImg', {'Image': value}); + } + } + + @override + Future trackWeaponLoaded( + String value, { + bool loadedFromName = true, + }) async { + if (loadedFromName) { + await trackEventAsync('Weapon-FromName', {'Name': value}); + } else { + await trackEventAsync('Weapon-FromImg', {'Image': value}); + } + } + + @override + Future trackArtifactLoaded( + String value, { + bool loadedFromName = true, + }) async { + if (loadedFromName) { + await trackEventAsync('Artifact-FromName', {'Name': value}); + } else { + await trackEventAsync('Artifact-FromImg', {'Image': value}); + } + } + + @override + Future trackAscensionMaterialsOpened() async { + await trackEventAsync('AscensionMaterials-Opened'); + } + + @override + Future trackUrlOpened(bool loadMap, bool loadWishSimulator, bool networkAvailable) async { + await trackEventAsync('Url-Opened', { + 'Map': loadMap.toString(), + 'WishSimulator': loadWishSimulator.toString(), + 'NetworkAvailable': networkAvailable.toString(), + }); + } + + @override + Future trackCalculatorItemAscMaterialLoaded(String item) async { + await trackEventAsync('Calculator-Asc-Mat', { + 'Name': item, + }); + } +} diff --git a/lib/injection.dart b/lib/injection.dart index 3189f6459..2ba5ea2b9 100644 --- a/lib/injection.dart +++ b/lib/injection.dart @@ -1,17 +1,25 @@ +import 'package:genshindb/domain/services/genshin_service.dart'; +import 'package:genshindb/domain/services/logging_service.dart'; +import 'package:genshindb/domain/services/network_service.dart'; +import 'package:genshindb/domain/services/settings_service.dart'; +import 'package:genshindb/domain/services/telemetry_service.dart'; +import 'package:genshindb/infrastructure/genshin_service.dart'; +import 'package:genshindb/infrastructure/logging_service.dart'; +import 'package:genshindb/infrastructure/network_service.dart'; +import 'package:genshindb/infrastructure/settings_service.dart'; +import 'package:genshindb/infrastructure/telemetry/telemetry_service.dart'; import 'package:get_it/get_it.dart'; import 'package:log_4_dart_2/log_4_dart_2.dart'; -import 'services/genshing_service.dart'; -import 'services/logging_service.dart'; -import 'services/network_service.dart'; -import 'services/settings_service.dart'; - final GetIt getIt = GetIt.instance; -void initInjection() { +Future initInjection() async { getIt.registerSingleton(Logger()); + final telemetryService = TelemetryServiceImpl(); + getIt.registerSingleton(telemetryService); + await telemetryService.initTelemetry(); getIt.registerSingleton(GenshinServiceImpl()); - getIt.registerSingleton(LoggingServiceImpl(getIt())); + getIt.registerSingleton(LoggingServiceImpl(getIt(), getIt())); getIt.registerSingleton(SettingsServiceImpl(getIt())); getIt.registerSingleton(NetworkServiceImpl()); } diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index fe5556dc1..04f06a041 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -146,7 +146,7 @@ "subStat": "Sub. Stat", "na": "N/A", "mainDps": "Main DPS", - "supportDps": "Suppport DPS", + "supportDps": "Support DPS", "utility": "Utility", "normalAttack": "Normal Attack", "elementalSkill": "Elemental Skill", diff --git a/lib/l10n/intl_es_ES.arb b/lib/l10n/intl_es_ES.arb index f5958155c..e50dd6e85 100644 --- a/lib/l10n/intl_es_ES.arb +++ b/lib/l10n/intl_es_ES.arb @@ -92,10 +92,10 @@ "constellations": "Constelaciones", "passives": "Pasivas", "unlockedAutomatically": "Desbloqueada Automáticamente", - "unlockedAtAscentionLevelX": "Desbloqueada en nivel de ascención {value}", + "unlockedAtAscensionLevelX": "Desbloqueada en nivel de ascención {value}", "skills": "Habilidades", - "talentsAscention": "Talentos de Ascención", - "talentAscentionX": "Talento de Ascención {value}", + "talentsAscension": "Talentos de Ascención", + "talentAscensionX": "Talento de Ascención {value}", "search": "Buscar", "sortDirection": "Dirección de ordenamiento", "refinements": "Refinamientos", diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb index 2cb420a9a..2029d9e07 100644 --- a/lib/l10n/intl_fr.arb +++ b/lib/l10n/intl_fr.arb @@ -47,12 +47,12 @@ "female": "Femelle", "elements": "Elements", "elementalDebuffs": "Les éléments et leurs effets", - "elementalDebuffsExplainded": "Il existe 7 éléments dans le jeu, chacun ayant son propre effet. Ces derniers peuvent être appliqués par des ennemis, des éléments de décor (feu de camp, rivière…) mais par vos propres attaques. Soyez donc vigilants lorsque vous utilisez un élément capable de créer une réaction destructrice de ne pas déjà être marqué. Tous ces effets sont négatifs et sont applicables sur vous tout comme les ennemis.", + "elementalDebuffsExplained": "Il existe 7 éléments dans le jeu, chacun ayant son propre effet. Ces derniers peuvent être appliqués par des ennemis, des éléments de décor (feu de camp, rivière…) mais par vos propres attaques. Soyez donc vigilants lorsque vous utilisez un élément capable de créer une réaction destructrice de ne pas déjà être marqué. Tous ces effets sont négatifs et sont applicables sur vous tout comme les ennemis.", "elementalReactions": "Combinaisons et réactions élémentaires", - "elementalReactionsExplainded": "Chaque élément peut entrer en résonance avec un autre dans Genshin Impact, créant des réactions élémentaires. Ces combinaisons de deux éléments sont actuellement au nombre de 9 et infligent des états uniques. C’est ce système qui permet de déterminer la cohésion entre deux membres d’une équipe et qui va déterminer la stratégie à adopter.", + "elementalReactionsExplained": "Chaque élément peut entrer en résonance avec un autre dans Genshin Impact, créant des réactions élémentaires. Ces combinaisons de deux éléments sont actuellement au nombre de 9 et infligent des états uniques. C’est ce système qui permet de déterminer la cohésion entre deux membres d’une équipe et qui va déterminer la stratégie à adopter.", "elementalResonances": "Résonance", - "elemetalResonancesExplanined": "La résonance élémentaire est un aspect primordial lors de la création d’une équipe. Elle permet de déterminer vers quelle stratégie vous souhaitez vous diriger. Ou celle qui vous est forcée par le seul DPS que vous avez pu invoquer. On peut ainsi trouver des bonus passifs comme des augmentations des dégâts, des soins, mais également des résistances.", - "todayAscentionMaterials": "Les Matériaux D'Ascention D'Aujourd'hui", + "elementalResonancesExplained": "La résonance élémentaire est un aspect primordial lors de la création d’une équipe. Elle permet de déterminer vers quelle stratégie vous souhaitez vous diriger. Ou celle qui vous est forcée par le seul DPS que vous avez pu invoquer. On peut ainsi trouver des bonus passifs comme des augmentations des dégâts, des soins, mais également des résistances.", + "todayAscensionMaterials": "Les Matériaux D'Acension D'Aujourd'hui", "seeAll": "Voir Tout", "characters": "Personnages", "weapons": "Armes", @@ -80,7 +80,7 @@ "elementalDmgPercentage": "DMG Elémentaires %", "healingBonus": "Bonus Soin", "note": "Note", - "ascentionMaterials": "Matériaux D'Acension", + "ascensionMaterials": "Matériaux D'Acension", "released": "Libre", "unreleased": "Inédit", "comingSoon": "Prochainement", @@ -92,10 +92,10 @@ "constellations": "Constellations", "passives": "Passives", "unlockedAutomatically": "Se Débloque Automatiquement", - "unclockedAtAscentionLevelX": "Se Débloque Au Niveau D'Ascention {value}", + "unlockedAtAscensionLevelX": "Se Débloque Au Niveau D'Ascension {value}", "skills": "Compétences", - "talentsAscention": "Talents D'Ascention", - "talentAscentionX": "Talent D'Ascention {value}", + "talentsAscension": "Talents D'Ascension", + "talentAscensionX": "Talent D'Ascension {value}", "search": "Chercher", "sortDirection": "Sens de tri", "refinements": "Raffinement", @@ -146,7 +146,7 @@ "subStat": "Sub. Stat", "na": "N/A", "mainDps": "Main DPS", - "supportDps": "Suppport DPS", + "supportDps": "Support DPS", "utility": "Utilitaire", "normalAttack": "Attaque Normale", "elementalSkill": "Compétence Elémentaire", diff --git a/lib/main.dart b/lib/main.dart index 8bf2a800b..fc78d9431 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,27 +1,21 @@ -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:genshindb/domain/services/telemetry_service.dart'; -import 'bloc/bloc.dart'; -import 'generated/l10n.dart'; +import 'application/bloc.dart'; +import 'domain/services/genshin_service.dart'; +import 'domain/services/logging_service.dart'; +import 'domain/services/network_service.dart'; +import 'domain/services/settings_service.dart'; import 'injection.dart'; -import 'services/genshing_service.dart'; -import 'services/logging_service.dart'; -import 'services/network_service.dart'; -import 'services/settings_service.dart'; -import 'telemetry.dart'; -import 'ui/pages/main_tab_page.dart'; -import 'ui/pages/splash_page.dart'; +import 'presentation/app_widget.dart'; Future main() async { - await initTelemetry(); - initInjection(); + await initInjection(); runApp(MyApp()); } class MyApp extends StatelessWidget { - // This widget is the root of your application. @override Widget build(BuildContext context) { return MultiBlocProvider( @@ -43,7 +37,8 @@ class MyApp extends StatelessWidget { BlocProvider( create: (ctx) { final genshinService = getIt(); - return CharacterBloc(genshinService); + final telemetryService = getIt(); + return CharacterBloc(genshinService, telemetryService); }, ), BlocProvider( @@ -56,7 +51,8 @@ class MyApp extends StatelessWidget { BlocProvider( create: (ctx) { final genshinService = getIt(); - return WeaponBloc(genshinService); + final telemetryService = getIt(); + return WeaponBloc(genshinService, telemetryService); }, ), BlocProvider( @@ -74,19 +70,22 @@ class MyApp extends StatelessWidget { BlocProvider( create: (ctx) { final genshinService = getIt(); - return MaterialsBloc(genshinService); + final telemetryService = getIt(); + return MaterialsBloc(genshinService, telemetryService); }, ), BlocProvider( create: (ctx) { final networkService = getIt(); - return UrlPageBloc(networkService); + final telemetryService = getIt(); + return UrlPageBloc(networkService, telemetryService); }, ), BlocProvider( create: (ctx) { final genshinService = getIt(); - return ArtifactDetailsBloc(genshinService); + final telemetryService = getIt(); + return ArtifactDetailsBloc(genshinService, telemetryService); }, ), BlocProvider( @@ -114,7 +113,8 @@ class MyApp extends StatelessWidget { BlocProvider( create: (ctx) { final genshinService = getIt(); - return CalculatorAscMaterialsBloc(genshinService); + final telemetryService = getIt(); + return CalculatorAscMaterialsBloc(genshinService, telemetryService); }, ), BlocProvider( @@ -125,33 +125,8 @@ class MyApp extends StatelessWidget { ), ], child: BlocBuilder( - builder: (ctx, state) => _buildApp(state), + builder: (ctx, state) => AppWidget(), ), ); } } - -Widget _buildApp(MainState state) { - return state.map( - loading: (_) { - return SplashPage(); - }, - loaded: (s) { - final delegates = [ - S.delegate, - GlobalMaterialLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - ]; - return MaterialApp( - title: s.appTitle, - theme: s.theme, - home: MainTabPage(), - //Without this, the lang won't be reloaded - locale: s.currentLocale, - localizationsDelegates: delegates, - supportedLocales: S.delegate.supportedLocales, - ); - }, - ); -} diff --git a/lib/models/calculator_asc_materials/item_ascention_materials.dart b/lib/models/calculator_asc_materials/item_ascention_materials.dart deleted file mode 100644 index 792d0ac78..000000000 --- a/lib/models/calculator_asc_materials/item_ascention_materials.dart +++ /dev/null @@ -1,34 +0,0 @@ -import 'package:flutter/foundation.dart'; -import 'package:freezed_annotation/freezed_annotation.dart'; - -import '../models.dart'; - -part 'item_ascention_materials.freezed.dart'; - -@freezed -abstract class ItemAscentionMaterials with _$ItemAscentionMaterials { - const factory ItemAscentionMaterials.forCharacters({ - @required String key, - @required String name, - @required String image, - @required int rarity, - @required List materials, - @required int currentLevel, - @required int desiredLevel, - @required List skills, - @Default(true) bool isCharacter - }) = _ForCharacter; - - const factory ItemAscentionMaterials.forWeapons({ - @required String key, - @required String name, - @required String image, - @required int rarity, - @required List materials, - @required int currentLevel, - @required int desiredLevel, - //This are here just for convenience - @Default([]) List skills, - @Default(false) bool isCharacter - }) = _ForWeapon; -} diff --git a/lib/models/characters/character_talent_ascention_model.dart b/lib/models/characters/character_talent_ascention_model.dart deleted file mode 100644 index 41634b140..000000000 --- a/lib/models/characters/character_talent_ascention_model.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:flutter/widgets.dart'; - -import '../items/item_ascention_material_model.dart'; - -class CharacterTalentAscentionModel { - final int level; - final List materials; - CharacterTalentAscentionModel({ - @required this.level, - @required this.materials, - }); -} diff --git a/lib/models/items/item_ascention_material_model.dart b/lib/models/items/item_ascention_material_model.dart deleted file mode 100644 index 3ab5a97d6..000000000 --- a/lib/models/items/item_ascention_material_model.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'package:flutter/widgets.dart'; -import 'package:freezed_annotation/freezed_annotation.dart'; - -import '../../common/assets.dart'; -import '../../common/enums/material_type.dart'; - -part 'item_ascention_material_model.freezed.dart'; -part 'item_ascention_material_model.g.dart'; - -@freezed -abstract class ItemAscentionMaterialModel implements _$ItemAscentionMaterialModel { - String get fullImagePath => Assets.getMaterialPath(image, materialType); - - factory ItemAscentionMaterialModel({ - @required MaterialType materialType, - @required String image, - @required int quantity, - }) = _ItemAscentionMaterialModel; - - const ItemAscentionMaterialModel._(); - - factory ItemAscentionMaterialModel.fromJson(Map json) => _$ItemAscentionMaterialModelFromJson(json); -} diff --git a/lib/models/weapons/weapon_ascention_model.dart b/lib/models/weapons/weapon_ascention_model.dart deleted file mode 100644 index b4a40bf96..000000000 --- a/lib/models/weapons/weapon_ascention_model.dart +++ /dev/null @@ -1,13 +0,0 @@ -import 'package:flutter/widgets.dart'; - -import '../items/item_ascention_material_model.dart'; - -class WeaponAscentionModel { - final int level; - final List materials; - - WeaponAscentionModel({ - @required this.level, - @required this.materials, - }); -} diff --git a/lib/presentation/app_widget.dart b/lib/presentation/app_widget.dart new file mode 100644 index 000000000..62a96a179 --- /dev/null +++ b/lib/presentation/app_widget.dart @@ -0,0 +1,59 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/extensions/app_theme_type_extensions.dart'; + +import 'main_tab_page.dart'; +import 'splash/splash_page.dart'; + +class AppWidget extends StatelessWidget { + @override + Widget build(BuildContext context) { + return BlocBuilder( + builder: (ctx, state) => state.map( + loading: (_) => SplashPage(), + loaded: (s) { + final delegates = [ + S.delegate, + GlobalMaterialLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + ]; + final locale = _getLocale(s.currentLanguage); + return MaterialApp( + title: s.appTitle, + theme: s.accentColor.getThemeData(s.theme), + home: MainTabPage(), + //Without this, the lang won't be reloaded + locale: locale, + localizationsDelegates: delegates, + supportedLocales: S.delegate.supportedLocales, + ); + }, + ), + ); + } + + Locale _getLocale(AppLanguageType language) { + var langCode = 'en'; + var countryCode = 'US'; + switch (language) { + case AppLanguageType.spanish: + langCode = 'es'; + countryCode = 'ES'; + break; + case AppLanguageType.french: + langCode = 'fr'; + countryCode = 'FR'; + break; + default: + break; + } + final locale = Locale(langCode, countryCode); + // await S.load(locale); + return locale; + } +} diff --git a/lib/ui/pages/artifact_details_page.dart b/lib/presentation/artifact/artifact_details_page.dart similarity index 86% rename from lib/ui/pages/artifact_details_page.dart rename to lib/presentation/artifact/artifact_details_page.dart index d86f53003..30d23e7d8 100644 --- a/lib/ui/pages/artifact_details_page.dart +++ b/lib/presentation/artifact/artifact_details_page.dart @@ -1,16 +1,15 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; - -import '../../bloc/bloc.dart'; -import '../../common/extensions/rarity_extensions.dart'; -import '../../common/styles.dart'; -import '../../generated/l10n.dart'; -import '../../models/models.dart'; -import '../widgets/artifacts/artifact_stats.dart'; -import '../widgets/common/circle_character.dart'; -import '../widgets/common/item_description_detail.dart'; -import '../widgets/common/loading.dart'; -import '../widgets/common/rarity.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/artifacts/widgets/artifact_stats.dart'; +import 'package:genshindb/presentation/shared/circle_character.dart'; +import 'package:genshindb/presentation/shared/extensions/rarity_extensions.dart'; +import 'package:genshindb/presentation/shared/item_description_detail.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; +import 'package:genshindb/presentation/shared/rarity.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; class ArtifactDetailsPage extends StatelessWidget { final double imgHeight = 350; @@ -104,9 +103,7 @@ class ArtifactDetailsPage extends StatelessWidget { BuildContext context, ) { final s = S.of(context); - final items = images - .map((e) => Container(margin: Styles.edgeInsetAll5, child: Image.asset(e, width: 90, height: 90))) - .toList(); + final items = images.map((e) => Container(margin: Styles.edgeInsetAll5, child: Image.asset(e, width: 90, height: 90))).toList(); return Card( margin: const EdgeInsets.only(top: 300, right: 10, left: 10), shape: Styles.cardItemDetailShape, diff --git a/lib/ui/pages/artifacts_page.dart b/lib/presentation/artifacts/artifacts_page.dart similarity index 80% rename from lib/ui/pages/artifacts_page.dart rename to lib/presentation/artifacts/artifacts_page.dart index 2fc46b55e..23f60c257 100644 --- a/lib/ui/pages/artifacts_page.dart +++ b/lib/presentation/artifacts/artifacts_page.dart @@ -1,18 +1,18 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; +import 'package:genshindb/presentation/shared/sliver_nothing_found.dart'; +import 'package:genshindb/presentation/shared/sliver_page_filter.dart'; +import 'package:genshindb/presentation/shared/sliver_scaffold_with_fab.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; -import '../../bloc/bloc.dart'; -import '../../common/styles.dart'; -import '../../generated/l10n.dart'; -import '../../models/artifacts/artifact_card_model.dart'; -import '../widgets/artifacts/artifact_bottom_sheet.dart'; -import '../widgets/artifacts/artifact_card.dart'; -import '../widgets/artifacts/artifact_info_card.dart'; -import '../widgets/common/loading.dart'; -import '../widgets/common/sliver_nothing_found.dart'; -import '../widgets/common/sliver_page_filter.dart'; -import '../widgets/common/sliver_scaffold_with_fab.dart'; +import 'widgets/artifact_bottom_sheet.dart'; +import 'widgets/artifact_card.dart'; +import 'widgets/artifact_info_card.dart'; class ArtifactsPage extends StatefulWidget { @override diff --git a/lib/ui/widgets/artifacts/artifact_bottom_sheet.dart b/lib/presentation/artifacts/widgets/artifact_bottom_sheet.dart similarity index 75% rename from lib/ui/widgets/artifacts/artifact_bottom_sheet.dart rename to lib/presentation/artifacts/widgets/artifact_bottom_sheet.dart index 538df13e1..d61cfbc5f 100644 --- a/lib/ui/widgets/artifacts/artifact_bottom_sheet.dart +++ b/lib/presentation/artifacts/widgets/artifact_bottom_sheet.dart @@ -1,16 +1,15 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; - -import '../../../bloc/bloc.dart'; -import '../../../common/enums/artifact_filter_type.dart'; -import '../../../common/extensions/i18n_extensions.dart'; -import '../../../common/genshin_db_icons.dart'; -import '../../../generated/l10n.dart'; -import '../common/common_bottom_sheet.dart'; -import '../common/item_popupmenu_filter.dart'; -import '../common/loading.dart'; -import '../common/rarity_rating.dart'; -import '../common/sort_direction_popupmenu_filter.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/common_bottom_sheet.dart'; +import 'package:genshindb/presentation/shared/extensions/i18n_extensions.dart'; +import 'package:genshindb/presentation/shared/genshin_db_icons.dart'; +import 'package:genshindb/presentation/shared/item_popupmenu_filter.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; +import 'package:genshindb/presentation/shared/rarity_rating.dart'; +import 'package:genshindb/presentation/shared/sort_direction_popupmenu_filter.dart'; class ArtifactBottomSheet extends StatelessWidget { @override diff --git a/lib/ui/widgets/artifacts/artifact_card.dart b/lib/presentation/artifacts/widgets/artifact_card.dart similarity index 84% rename from lib/ui/widgets/artifacts/artifact_card.dart rename to lib/presentation/artifacts/widgets/artifact_card.dart index a37b74051..93e8d08d8 100644 --- a/lib/ui/widgets/artifacts/artifact_card.dart +++ b/lib/presentation/artifacts/widgets/artifact_card.dart @@ -1,14 +1,14 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/presentation/artifact/artifact_details_page.dart'; +import 'package:genshindb/presentation/shared/extensions/rarity_extensions.dart'; +import 'package:genshindb/presentation/shared/gradient_card.dart'; +import 'package:genshindb/presentation/shared/rarity.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; import 'package:transparent_image/transparent_image.dart'; -import '../../../bloc/bloc.dart'; -import '../../../common/extensions/rarity_extensions.dart'; -import '../../../common/styles.dart'; -import '../../../models/models.dart'; -import '../../pages/artifact_details_page.dart'; -import '../common/gradient_card.dart'; -import '../common/rarity.dart'; import 'artifact_stats.dart'; class ArtifactCard extends StatelessWidget { diff --git a/lib/ui/widgets/artifacts/artifact_info_card.dart b/lib/presentation/artifacts/widgets/artifact_info_card.dart similarity index 86% rename from lib/ui/widgets/artifacts/artifact_info_card.dart rename to lib/presentation/artifacts/widgets/artifact_info_card.dart index c2b2c7756..f923419d6 100644 --- a/lib/ui/widgets/artifacts/artifact_info_card.dart +++ b/lib/presentation/artifacts/widgets/artifact_info_card.dart @@ -1,13 +1,10 @@ import 'package:flutter/material.dart'; - -import '../../../common/assets.dart'; -import '../../../common/enums/artifact_type.dart'; -import '../../../common/enums/element_type.dart'; -import '../../../common/enums/stat_type.dart'; -import '../../../common/extensions/i18n_extensions.dart'; -import '../../../generated/l10n.dart'; -import '../common/bullet_list.dart'; -import '../common/item_expansion_panel.dart'; +import 'package:genshindb/domain/assets.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/bullet_list.dart'; +import 'package:genshindb/presentation/shared/extensions/i18n_extensions.dart'; +import 'package:genshindb/presentation/shared/item_expansion_panel.dart'; class ArtifactInfoCard extends StatelessWidget { final bool isCollapsed; diff --git a/lib/ui/widgets/artifacts/artifact_stats.dart b/lib/presentation/artifacts/widgets/artifact_stats.dart similarity index 91% rename from lib/ui/widgets/artifacts/artifact_stats.dart rename to lib/presentation/artifacts/widgets/artifact_stats.dart index ac6b16a27..e26b898bf 100644 --- a/lib/ui/widgets/artifacts/artifact_stats.dart +++ b/lib/presentation/artifacts/widgets/artifact_stats.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; - -import '../../../generated/l10n.dart'; -import '../../../models/models.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/generated/l10n.dart'; class ArtifactStats extends StatelessWidget { final List bonus; diff --git a/lib/ui/pages/calculator_ascention_materials_page.dart b/lib/presentation/calculator_asc_materials/calculator_ascension_materials_page.dart similarity index 79% rename from lib/ui/pages/calculator_ascention_materials_page.dart rename to lib/presentation/calculator_asc_materials/calculator_ascension_materials_page.dart index 7f8f9f9f5..b2fe3e534 100644 --- a/lib/ui/pages/calculator_ascention_materials_page.dart +++ b/lib/presentation/calculator_asc_materials/calculator_ascension_materials_page.dart @@ -1,20 +1,20 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/extensions/string_extensions.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/characters/characters_page.dart'; +import 'package:genshindb/presentation/shared/genshin_db_icons.dart'; +import 'package:genshindb/presentation/shared/item_description_detail.dart'; +import 'package:genshindb/presentation/shared/nothing_found_column.dart'; +import 'package:genshindb/presentation/shared/sliver_row_grid.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; +import 'package:genshindb/presentation/weapons/weapons_page.dart'; import 'package:hawk_fab_menu/hawk_fab_menu.dart'; -import '../../bloc/bloc.dart'; -import '../../common/extensions/string_extensions.dart'; -import '../../common/genshin_db_icons.dart'; -import '../../common/styles.dart'; -import '../../generated/l10n.dart'; -import '../widgets/ascension_materials/add_edit_item_bottom_sheet.dart'; -import '../widgets/ascension_materials/ascension_materials_summary.dart'; -import '../widgets/ascension_materials/item_card.dart'; -import '../widgets/common/item_description_detail.dart'; -import '../widgets/common/nothing_found_column.dart'; -import '../widgets/common/sliver_row_grid.dart'; -import 'characters_page.dart'; -import 'weapons_page.dart'; +import 'widgets/add_edit_item_bottom_sheet.dart'; +import 'widgets/ascension_materials_summary.dart'; +import 'widgets/item_card.dart'; class CalculatorAscensionMaterialsPage extends StatelessWidget { @override @@ -51,10 +51,7 @@ class CalculatorAscensionMaterialsPage extends StatelessWidget { return state.map( initial: (state) { if (state.items.isEmpty) { - return NothingFoundColumn( - msg: s.startByAddingMsg, - icon: Icons.add_circle_outline, - ); + return NothingFoundColumn(msg: s.startByAddingMsg, icon: Icons.add_circle_outline); } return CustomScrollView( slivers: [ @@ -94,9 +91,7 @@ class CalculatorAscensionMaterialsPage extends StatelessWidget { textColor: theme.accentColor, body: Column( crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - ...state.summary.map((e) => AscensionMaterialsSummaryWidget(summary: e)).toList() - ], + children: [...state.summary.map((e) => AscensionMaterialsSummaryWidget(summary: e)).toList()], ), ), ), @@ -121,9 +116,7 @@ class CalculatorAscensionMaterialsPage extends StatelessWidget { return; } - context - .read() - .add(CalculatorAscMaterialsItemEvent.load(key: keyName, isCharacter: true)); + context.read().add(CalculatorAscMaterialsItemEvent.load(key: keyName, isCharacter: true)); await showModalBottomSheet( context: context, @@ -144,9 +137,7 @@ class CalculatorAscensionMaterialsPage extends StatelessWidget { return; } - context - .read() - .add(CalculatorAscMaterialsItemEvent.load(key: keyName, isCharacter: false)); + context.read().add(CalculatorAscMaterialsItemEvent.load(key: keyName, isCharacter: false)); await showModalBottomSheet( context: context, diff --git a/lib/ui/widgets/ascension_materials/add_edit_item_bottom_sheet.dart b/lib/presentation/calculator_asc_materials/widgets/add_edit_item_bottom_sheet.dart similarity index 90% rename from lib/ui/widgets/ascension_materials/add_edit_item_bottom_sheet.dart rename to lib/presentation/calculator_asc_materials/widgets/add_edit_item_bottom_sheet.dart index 7dc0fb792..1df09fe7a 100644 --- a/lib/ui/widgets/ascension_materials/add_edit_item_bottom_sheet.dart +++ b/lib/presentation/calculator_asc_materials/widgets/add_edit_item_bottom_sheet.dart @@ -1,13 +1,13 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:genshindb/common/assets.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/assets.dart'; +import 'package:genshindb/domain/extensions/iterable_extensions.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/common_bottom_sheet.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; -import '../../../bloc/bloc.dart'; -import '../../../common/extensions/iterable_extensions.dart'; -import '../../../generated/l10n.dart'; -import '../../../models/models.dart'; -import '../common/common_bottom_sheet.dart'; -import '../common/loading.dart'; import 'skill_item.dart'; class AddEditItemBottomSheet extends StatelessWidget { @@ -40,7 +40,7 @@ class AddEditItemBottomSheet extends StatelessWidget { builder: (context, state) => state.map( loading: (_) => const Loading(), loaded: (state) => CommonBottomSheet( - title: isAWeapon ? '${s.weapon}: ${state.name}': '${s.character}: ${state.name}', + title: isAWeapon ? '${s.weapon}: ${state.name}' : '${s.character}: ${state.name}', titleIcon: !isInEditMode ? Icons.add : Icons.edit, iconSize: 40, onOk: () => isAWeapon diff --git a/lib/ui/widgets/ascension_materials/ascension_materials_summary.dart b/lib/presentation/calculator_asc_materials/widgets/ascension_materials_summary.dart similarity index 79% rename from lib/ui/widgets/ascension_materials/ascension_materials_summary.dart rename to lib/presentation/calculator_asc_materials/widgets/ascension_materials_summary.dart index d0aaebff0..2790bd316 100644 --- a/lib/ui/widgets/ascension_materials/ascension_materials_summary.dart +++ b/lib/presentation/calculator_asc_materials/widgets/ascension_materials_summary.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/extensions/i18n_extensions.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; -import '../../../common/enums/ascension_material_summary_type.dart'; -import '../../../common/extensions/i18n_extensions.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../../../models/models.dart'; import 'material_item.dart'; class AscensionMaterialsSummaryWidget extends StatelessWidget { @@ -31,9 +31,7 @@ class AscensionMaterialsSummaryWidget extends StatelessWidget { Wrap( alignment: WrapAlignment.center, crossAxisAlignment: WrapCrossAlignment.center, - children: summary.materials - .map((m) => MaterialItem(image: m.fullImagePath, quantity: m.quantity, type: m.materialType)) - .toList(), + children: summary.materials.map((m) => MaterialItem(image: m.fullImagePath, quantity: m.quantity, type: m.materialType)).toList(), ) ], ), @@ -71,9 +69,7 @@ class AscensionMaterialsSummaryWidget extends StatelessWidget { Wrap( alignment: WrapAlignment.center, crossAxisAlignment: WrapCrossAlignment.center, - children: materials - .map((m) => MaterialItem(image: m.fullImagePath, quantity: m.quantity, type: m.materialType)) - .toList(), + children: materials.map((m) => MaterialItem(image: m.fullImagePath, quantity: m.quantity, type: m.materialType)).toList(), ), ]; } diff --git a/lib/ui/widgets/ascension_materials/item_card.dart b/lib/presentation/calculator_asc_materials/widgets/item_card.dart similarity index 93% rename from lib/ui/widgets/ascension_materials/item_card.dart rename to lib/presentation/calculator_asc_materials/widgets/item_card.dart index 6ef55a089..e50d3ca4d 100644 --- a/lib/ui/widgets/ascension_materials/item_card.dart +++ b/lib/presentation/calculator_asc_materials/widgets/item_card.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/extensions/rarity_extensions.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; import 'package:transparent_image/transparent_image.dart'; -import '../../../bloc/bloc.dart'; -import '../../../common/extensions/rarity_extensions.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../../../models/items/item_ascention_material_model.dart'; import 'add_edit_item_bottom_sheet.dart'; import 'material_item.dart'; @@ -17,7 +17,7 @@ class ItemCard extends StatelessWidget { final String image; final int rarity; final bool isWeapon; - final List materials; + final List materials; const ItemCard({ Key key, diff --git a/lib/ui/widgets/ascension_materials/material_item.dart b/lib/presentation/calculator_asc_materials/widgets/material_item.dart similarity index 86% rename from lib/ui/widgets/ascension_materials/material_item.dart rename to lib/presentation/calculator_asc_materials/widgets/material_item.dart index 20c68c3fc..33174b433 100644 --- a/lib/ui/widgets/ascension_materials/material_item.dart +++ b/lib/presentation/calculator_asc_materials/widgets/material_item.dart @@ -1,8 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; - -import '../../../common/enums/material_type.dart' as app; -import '../../../common/styles.dart'; +import 'package:genshindb/domain/enums/enums.dart' as app; +import 'package:genshindb/presentation/shared/styles.dart'; class MaterialItem extends StatelessWidget { final app.MaterialType type; diff --git a/lib/ui/widgets/ascension_materials/skill_item.dart b/lib/presentation/calculator_asc_materials/widgets/skill_item.dart similarity index 93% rename from lib/ui/widgets/ascension_materials/skill_item.dart rename to lib/presentation/calculator_asc_materials/widgets/skill_item.dart index df9eb8cf3..74e00674b 100644 --- a/lib/ui/widgets/ascension_materials/skill_item.dart +++ b/lib/presentation/calculator_asc_materials/widgets/skill_item.dart @@ -1,10 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; - -import '../../../bloc/bloc.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../common/increment_button.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/increment_button.dart'; class SkillItem extends StatelessWidget { final int index; diff --git a/lib/ui/pages/character_page.dart b/lib/presentation/character/character_page.dart similarity index 85% rename from lib/ui/pages/character_page.dart rename to lib/presentation/character/character_page.dart index 049c71055..2f02c7127 100644 --- a/lib/ui/pages/character_page.dart +++ b/lib/presentation/character/character_page.dart @@ -1,8 +1,9 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/presentation/shared/app_fab.dart'; +import 'package:genshindb/presentation/shared/extensions/scroll_controller_extensions.dart'; -import '../../common/extensions/scroll_controller_extensions.dart'; -import '../widgets/characters/character_detail.dart'; -import '../widgets/common/app_fab.dart'; +import 'widgets/character_detail.dart'; +import 'widgets/character_detail_top.dart'; class CharacterPage extends StatefulWidget { const CharacterPage({Key key}) : super(key: key); diff --git a/lib/ui/widgets/characters/character_detail.dart b/lib/presentation/character/widgets/character_detail.dart similarity index 72% rename from lib/ui/widgets/characters/character_detail.dart rename to lib/presentation/character/widgets/character_detail.dart index 1ff7b8d28..31af3b03a 100644 --- a/lib/ui/widgets/characters/character_detail.dart +++ b/lib/presentation/character/widgets/character_detail.dart @@ -1,10 +1,10 @@ -export 'character_detail_ascention_materials_card.dart'; +export 'character_detail_ascension_materials_card.dart'; export 'character_detail_bottom.dart'; export 'character_detail_constellations_card.dart'; export 'character_detail_general_card.dart'; export 'character_detail_passive_card.dart'; export 'character_detail_skills_card.dart'; -export 'character_detail_talent_ascention_materials_card.dart'; +export 'character_detail_talent_ascension_materials_card.dart'; export 'character_detail_top.dart'; const double imgSize = 28; diff --git a/lib/ui/widgets/characters/character_detail_ascention_materials_card.dart b/lib/presentation/character/widgets/character_detail_ascension_materials_card.dart similarity index 71% rename from lib/ui/widgets/characters/character_detail_ascention_materials_card.dart rename to lib/presentation/character/widgets/character_detail_ascension_materials_card.dart index 9ada4b60a..c7b6f3882 100644 --- a/lib/ui/widgets/characters/character_detail_ascention_materials_card.dart +++ b/lib/presentation/character/widgets/character_detail_ascension_materials_card.dart @@ -1,21 +1,20 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/extensions/element_type_extensions.dart'; +import 'package:genshindb/presentation/shared/item_description_detail.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; +import 'package:genshindb/presentation/shared/wrapped_ascension_material.dart'; -import '../../../common/enums/element_type.dart'; -import '../../../common/extensions/element_type_extensions.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../../../models/models.dart'; -import '../common/item_description_detail.dart'; -import '../common/wrapped_ascention_material.dart'; - -class CharacterDetailAscentionMaterialsCard extends StatelessWidget { +class CharacterDetailAscensionMaterialsCard extends StatelessWidget { final ElementType elementType; - final List ascentionMaterials; + final List ascensionMaterials; - const CharacterDetailAscentionMaterialsCard({ + const CharacterDetailAscensionMaterialsCard({ Key key, @required this.elementType, - @required this.ascentionMaterials, + @required this.ascensionMaterials, }) : super(key: key); @override @@ -57,7 +56,7 @@ class CharacterDetailAscentionMaterialsCard extends StatelessWidget { ), ], ), - ...ascentionMaterials.map((e) => _buildAscensionRow(e)).toList(), + ...ascensionMaterials.map((e) => _buildAscensionRow(e)).toList(), ], ), ); @@ -68,12 +67,8 @@ class CharacterDetailAscentionMaterialsCard extends StatelessWidget { ); } - TableRow _buildAscensionRow(CharacterFileAscentionMaterialModel model) { - final materials = model.materials - .map( - (m) => WrappedAscentionMaterial(image: m.fullImagePath, quantity: m.quantity), - ) - .toList(); + TableRow _buildAscensionRow(CharacterFileAscensionMaterialModel model) { + final materials = model.materials.map((m) => WrappedAscensionMaterial(image: m.fullImagePath, quantity: m.quantity)).toList(); return TableRow(children: [ TableCell( verticalAlignment: TableCellVerticalAlignment.middle, diff --git a/lib/ui/widgets/characters/character_detail_bottom.dart b/lib/presentation/character/widgets/character_detail_bottom.dart similarity index 71% rename from lib/ui/widgets/characters/character_detail_bottom.dart rename to lib/presentation/character/widgets/character_detail_bottom.dart index b784acb44..1720de962 100644 --- a/lib/ui/widgets/characters/character_detail_bottom.dart +++ b/lib/presentation/character/widgets/character_detail_bottom.dart @@ -1,13 +1,13 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/extensions/element_type_extensions.dart'; +import 'package:genshindb/presentation/shared/item_description_detail.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; -import '../../../bloc/bloc.dart'; -import '../../../common/extensions/element_type_extensions.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../common/item_description_detail.dart'; -import '../common/loading.dart'; -import 'character_build_card.dart'; +import '../../characters/widgets/character_build_card.dart'; import 'character_detail.dart'; class CharacterDetailBottom extends StatelessWidget { @@ -52,18 +52,18 @@ class CharacterDetailBottom extends StatelessWidget { ), textColor: state.elementType.getElementColorFromContext(context), ), - CharacterDetailAscentionMaterialsCard( - ascentionMaterials: state.ascentionMaterials, + CharacterDetailAscensionMaterialsCard( + ascensionMaterials: state.ascensionMaterials, elementType: state.elementType, ), - if (state.talentAscentionsMaterials.isNotEmpty) - CharacterDetailTalentAscentionMaterialsCard.withTalents( - talentAscentionMaterials: state.talentAscentionsMaterials, + if (state.talentAscensionsMaterials.isNotEmpty) + CharacterDetailTalentAscensionMaterialsCard.withTalents( + talentAscensionMaterials: state.talentAscensionsMaterials, elementType: state.elementType, ), - if (state.multiTalentAscentionMaterials != null && state.multiTalentAscentionMaterials.isNotEmpty) - CharacterDetailTalentAscentionMaterialsCard.withMultiTalents( - multiTalentAscentionMaterials: state.multiTalentAscentionMaterials, + if (state.multiTalentAscensionMaterials != null && state.multiTalentAscensionMaterials.isNotEmpty) + CharacterDetailTalentAscensionMaterialsCard.withMultiTalents( + multiTalentAscensionMaterials: state.multiTalentAscensionMaterials, elementType: state.elementType, ), CharacterDetailPassiveCard(elementType: state.elementType, passives: state.passives), diff --git a/lib/ui/widgets/characters/character_detail_constellations_card.dart b/lib/presentation/character/widgets/character_detail_constellations_card.dart similarity index 85% rename from lib/ui/widgets/characters/character_detail_constellations_card.dart rename to lib/presentation/character/widgets/character_detail_constellations_card.dart index 90981357a..4d60f61b8 100644 --- a/lib/ui/widgets/characters/character_detail_constellations_card.dart +++ b/lib/presentation/character/widgets/character_detail_constellations_card.dart @@ -1,12 +1,11 @@ import 'package:flutter/material.dart'; - -import '../../../common/enums/element_type.dart'; -import '../../../common/extensions/element_type_extensions.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../../../models/models.dart'; -import '../common/bullet_list.dart'; -import '../common/item_description_detail.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/bullet_list.dart'; +import 'package:genshindb/presentation/shared/extensions/element_type_extensions.dart'; +import 'package:genshindb/presentation/shared/item_description_detail.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; class CharacterDetailConstellationsCard extends StatelessWidget { final ElementType elementType; diff --git a/lib/ui/widgets/characters/character_detail_general_card.dart b/lib/presentation/character/widgets/character_detail_general_card.dart similarity index 77% rename from lib/ui/widgets/characters/character_detail_general_card.dart rename to lib/presentation/character/widgets/character_detail_general_card.dart index 6efa8885a..57d288ba4 100644 --- a/lib/ui/widgets/characters/character_detail_general_card.dart +++ b/lib/presentation/character/widgets/character_detail_general_card.dart @@ -1,20 +1,18 @@ import 'dart:ui'; import 'package:flutter/material.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/extensions/weapon_type_extensions.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/element_image.dart'; +import 'package:genshindb/presentation/shared/extensions/element_type_extensions.dart'; +import 'package:genshindb/presentation/shared/extensions/i18n_extensions.dart'; +import 'package:genshindb/presentation/shared/genshin_db_icons.dart'; +import 'package:genshindb/presentation/shared/item_description.dart'; +import 'package:genshindb/presentation/shared/rarity.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; -import '../../../common/enums/element_type.dart'; -import '../../../common/enums/region_type.dart'; -import '../../../common/enums/weapon_type.dart'; -import '../../../common/extensions/element_type_extensions.dart'; -import '../../../common/extensions/weapon_type_extensions.dart'; -import '../../../common/extensions/i18n_extensions.dart'; -import '../../../common/genshin_db_icons.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../../widgets/characters/character_detail.dart'; -import '../../widgets/common/element_image.dart'; -import '../../widgets/common/item_description.dart'; -import '../../widgets/common/rarity.dart'; +import 'character_detail.dart'; class CharacterDetailGeneralCard extends StatelessWidget { final String name; diff --git a/lib/ui/widgets/characters/character_detail_passive_card.dart b/lib/presentation/character/widgets/character_detail_passive_card.dart similarity index 83% rename from lib/ui/widgets/characters/character_detail_passive_card.dart rename to lib/presentation/character/widgets/character_detail_passive_card.dart index 9bcec463e..22dcc9bb0 100644 --- a/lib/ui/widgets/characters/character_detail_passive_card.dart +++ b/lib/presentation/character/widgets/character_detail_passive_card.dart @@ -1,12 +1,11 @@ import 'package:flutter/material.dart'; - -import '../../../common/enums/element_type.dart'; -import '../../../common/extensions/element_type_extensions.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../../../models/models.dart'; -import '../../widgets/common/bullet_list.dart'; -import '../common/item_description_detail.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/bullet_list.dart'; +import 'package:genshindb/presentation/shared/extensions/element_type_extensions.dart'; +import 'package:genshindb/presentation/shared/item_description_detail.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; class CharacterDetailPassiveCard extends StatelessWidget { final ElementType elementType; diff --git a/lib/ui/widgets/characters/character_detail_skills_card.dart b/lib/presentation/character/widgets/character_detail_skills_card.dart similarity index 81% rename from lib/ui/widgets/characters/character_detail_skills_card.dart rename to lib/presentation/character/widgets/character_detail_skills_card.dart index 059e86dd6..4a2e33899 100644 --- a/lib/ui/widgets/characters/character_detail_skills_card.dart +++ b/lib/presentation/character/widgets/character_detail_skills_card.dart @@ -1,19 +1,19 @@ import 'package:flutter/material.dart'; - -import '../../../common/enums/element_type.dart'; -import '../../../common/extensions/element_type_extensions.dart'; -import '../../../common/extensions/i18n_extensions.dart'; -import '../../../common/extensions/iterable_extensions.dart'; -import '../../../common/extensions/string_extensions.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../../../models/models.dart'; -import '../common/bullet_list.dart'; -import '../common/item_description_detail.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/extensions/iterable_extensions.dart'; +import 'package:genshindb/domain/extensions/string_extensions.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/bullet_list.dart'; +import 'package:genshindb/presentation/shared/extensions/element_type_extensions.dart'; +import 'package:genshindb/presentation/shared/extensions/i18n_extensions.dart'; +import 'package:genshindb/presentation/shared/item_description_detail.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; class CharacterDetailSkillsCard extends StatelessWidget { final ElementType elementType; final List skills; + const CharacterDetailSkillsCard({ Key key, @required this.elementType, @@ -89,8 +89,7 @@ class CharacterDetailSkillsCard extends StatelessWidget { ), if (e.description != null) Text(e.description, style: theme.textTheme.bodyText2.copyWith(fontSize: 12)), if (e.descriptions.isNotEmpty) BulletList(items: e.descriptions), - if (e.secondDescription != null) - Text(e.secondDescription, style: theme.textTheme.bodyText2.copyWith(fontSize: 12)), + if (e.secondDescription != null) Text(e.secondDescription, style: theme.textTheme.bodyText2.copyWith(fontSize: 12)), ], ), ), diff --git a/lib/ui/widgets/characters/character_detail_talent_ascention_materials_card.dart b/lib/presentation/character/widgets/character_detail_talent_ascension_materials_card.dart similarity index 57% rename from lib/ui/widgets/characters/character_detail_talent_ascention_materials_card.dart rename to lib/presentation/character/widgets/character_detail_talent_ascension_materials_card.dart index 108f8b083..8d81c7652 100644 --- a/lib/ui/widgets/characters/character_detail_talent_ascention_materials_card.dart +++ b/lib/presentation/character/widgets/character_detail_talent_ascension_materials_card.dart @@ -1,52 +1,47 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/extensions/element_type_extensions.dart'; +import 'package:genshindb/presentation/shared/item_description_detail.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; +import 'package:genshindb/presentation/shared/wrapped_ascension_material.dart'; -import '../../../common/enums/element_type.dart'; -import '../../../common/extensions/element_type_extensions.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../../../models/models.dart'; -import '../common/item_description_detail.dart'; -import '../common/wrapped_ascention_material.dart'; - -class CharacterDetailTalentAscentionMaterialsCard extends StatelessWidget { +class CharacterDetailTalentAscensionMaterialsCard extends StatelessWidget { final ElementType elementType; - final List talentAscentionMaterials; - final List multiTalentAscentionMaterials; + final List talentAscensionMaterials; + final List multiTalentAscensionMaterials; - const CharacterDetailTalentAscentionMaterialsCard.withTalents({ + const CharacterDetailTalentAscensionMaterialsCard.withTalents({ Key key, @required this.elementType, - @required this.talentAscentionMaterials, - }) : multiTalentAscentionMaterials = const [], + @required this.talentAscensionMaterials, + }) : multiTalentAscensionMaterials = const [], super(key: key); - const CharacterDetailTalentAscentionMaterialsCard.withMultiTalents({ + const CharacterDetailTalentAscensionMaterialsCard.withMultiTalents({ Key key, @required this.elementType, - @required this.multiTalentAscentionMaterials, - }) : talentAscentionMaterials = const [], + @required this.multiTalentAscensionMaterials, + }) : talentAscensionMaterials = const [], super(key: key); @override Widget build(BuildContext context) { final s = S.of(context); - if (talentAscentionMaterials.isNotEmpty) { - return _buildTableCard(s.talentsAscension, talentAscentionMaterials, context); + if (talentAscensionMaterials.isNotEmpty) { + return _buildTableCard(s.talentsAscension, talentAscensionMaterials, context); } return Column( crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - ...multiTalentAscentionMaterials - .map((e) => _buildTableCard(s.talentAscensionX(e.number), e.materials, context)) - .toList() - ], + children: [...multiTalentAscensionMaterials.map((e) => _buildTableCard(s.talentAscensionX(e.number), e.materials, context)).toList()], ); } Widget _buildTableCard( String title, - List materials, + List materials, BuildContext context, ) { final s = S.of(context); @@ -78,7 +73,7 @@ class CharacterDetailTalentAscentionMaterialsCard extends StatelessWidget { ), ], ), - ...materials.map((e) => _buildTalentAscentionRow(e)).toList(), + ...materials.map((e) => _buildTalentAscensionRow(e)).toList(), ], ), ); @@ -90,12 +85,8 @@ class CharacterDetailTalentAscentionMaterialsCard extends StatelessWidget { ); } - TableRow _buildTalentAscentionRow(CharacterFileTalentAscentionMaterialModel model) { - final materials = model.materials - .map( - (m) => WrappedAscentionMaterial(image: m.fullImagePath, quantity: m.quantity), - ) - .toList(); + TableRow _buildTalentAscensionRow(CharacterFileTalentAscensionMaterialModel model) { + final materials = model.materials.map((m) => WrappedAscensionMaterial(image: m.fullImagePath, quantity: m.quantity)).toList(); return TableRow(children: [ TableCell( verticalAlignment: TableCellVerticalAlignment.middle, diff --git a/lib/ui/widgets/characters/character_detail_top.dart b/lib/presentation/character/widgets/character_detail_top.dart similarity index 87% rename from lib/ui/widgets/characters/character_detail_top.dart rename to lib/presentation/character/widgets/character_detail_top.dart index fba38ad26..f6968fe38 100644 --- a/lib/ui/widgets/characters/character_detail_top.dart +++ b/lib/presentation/character/widgets/character_detail_top.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/extensions/element_type_extensions.dart'; +import 'package:genshindb/presentation/shared/extensions/i18n_extensions.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; -import '../../../bloc/bloc.dart'; -import '../../../common/extensions/element_type_extensions.dart'; -import '../../../common/extensions/i18n_extensions.dart'; -import '../../../generated/l10n.dart'; -import '../common/loading.dart'; -import 'character_detail.dart'; +import '../../character/widgets/character_detail.dart'; class CharacterDetailTop extends StatelessWidget { const CharacterDetailTop({Key key}) : super(key: key); diff --git a/lib/ui/pages/characters_page.dart b/lib/presentation/characters/characters_page.dart similarity index 83% rename from lib/ui/pages/characters_page.dart rename to lib/presentation/characters/characters_page.dart index b9357165f..d8b38528f 100644 --- a/lib/ui/pages/characters_page.dart +++ b/lib/presentation/characters/characters_page.dart @@ -1,17 +1,17 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; +import 'package:genshindb/presentation/shared/sliver_nothing_found.dart'; +import 'package:genshindb/presentation/shared/sliver_page_filter.dart'; +import 'package:genshindb/presentation/shared/sliver_scaffold_with_fab.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; -import '../../bloc/bloc.dart'; -import '../../common/styles.dart'; -import '../../generated/l10n.dart'; -import '../../models/characters/character_card_model.dart'; -import '../widgets/characters/character_bottom_sheet.dart'; -import '../widgets/characters/character_card.dart'; -import '../widgets/common/loading.dart'; -import '../widgets/common/sliver_nothing_found.dart'; -import '../widgets/common/sliver_page_filter.dart'; -import '../widgets/common/sliver_scaffold_with_fab.dart'; +import 'widgets/character_bottom_sheet.dart'; +import 'widgets/character_card.dart'; class CharactersPage extends StatefulWidget { final bool isInSelectionMode; diff --git a/lib/ui/widgets/characters/character_ascention_materials.dart b/lib/presentation/characters/widgets/character_ascension_materials.dart similarity index 83% rename from lib/ui/widgets/characters/character_ascention_materials.dart rename to lib/presentation/characters/widgets/character_ascension_materials.dart index 45eaf63a7..01f8caf51 100644 --- a/lib/ui/widgets/characters/character_ascention_materials.dart +++ b/lib/presentation/characters/widgets/character_ascension_materials.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/generated/l10n.dart'; import 'package:transparent_image/transparent_image.dart'; -import '../../../generated/l10n.dart'; - -class CharacterAscentionMaterials extends StatelessWidget { +class CharacterAscensionMaterials extends StatelessWidget { final List images; - const CharacterAscentionMaterials({ + + const CharacterAscensionMaterials({ Key key, @required this.images, }) : super(key: key); diff --git a/lib/ui/widgets/characters/character_bottom_sheet.dart b/lib/presentation/characters/widgets/character_bottom_sheet.dart similarity index 76% rename from lib/ui/widgets/characters/character_bottom_sheet.dart rename to lib/presentation/characters/widgets/character_bottom_sheet.dart index a77a059d8..67e8da259 100644 --- a/lib/ui/widgets/characters/character_bottom_sheet.dart +++ b/lib/presentation/characters/widgets/character_bottom_sheet.dart @@ -1,19 +1,17 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; - -import '../../../bloc/bloc.dart'; -import '../../../common/enums/character_filter_type.dart'; -import '../../../common/enums/item_status_type.dart'; -import '../../../common/extensions/i18n_extensions.dart'; -import '../../../common/genshin_db_icons.dart'; -import '../../../generated/l10n.dart'; -import '../common/common_bottom_sheet.dart'; -import '../common/elements_button_bar.dart'; -import '../common/item_popupmenu_filter.dart'; -import '../common/loading.dart'; -import '../common/rarity_rating.dart'; -import '../common/sort_direction_popupmenu_filter.dart'; -import '../common/weapons_button_bar.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/common_bottom_sheet.dart'; +import 'package:genshindb/presentation/shared/elements_button_bar.dart'; +import 'package:genshindb/presentation/shared/extensions/i18n_extensions.dart'; +import 'package:genshindb/presentation/shared/genshin_db_icons.dart'; +import 'package:genshindb/presentation/shared/item_popupmenu_filter.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; +import 'package:genshindb/presentation/shared/rarity_rating.dart'; +import 'package:genshindb/presentation/shared/sort_direction_popupmenu_filter.dart'; +import 'package:genshindb/presentation/shared/weapons_button_bar.dart'; class CharacterBottomSheet extends StatelessWidget { const CharacterBottomSheet({Key key}) : super(key: key); @@ -70,8 +68,7 @@ class CharacterBottomSheet extends StatelessWidget { tooltipText: s.sortBy, values: CharacterFilterType.values, selectedValue: state.tempCharacterFilterType, - onSelected: (v) => - context.read().add(CharactersEvent.characterFilterTypeChanged(v)), + onSelected: (v) => context.read().add(CharactersEvent.characterFilterTypeChanged(v)), itemText: (val) => s.translateCharacterFilterType(val), ), SortDirectionPopupMenuFilter( diff --git a/lib/ui/widgets/characters/character_build_card.dart b/lib/presentation/characters/widgets/character_build_card.dart similarity index 86% rename from lib/ui/widgets/characters/character_build_card.dart rename to lib/presentation/characters/widgets/character_build_card.dart index f6e5827f6..371b9034f 100644 --- a/lib/ui/widgets/characters/character_build_card.dart +++ b/lib/presentation/characters/widgets/character_build_card.dart @@ -1,13 +1,12 @@ import 'package:flutter/material.dart'; - -import '../../../common/app_constants.dart'; -import '../../../common/enums/element_type.dart'; -import '../../../common/extensions/element_type_extensions.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../../../models/models.dart'; -import '../artifacts/artifact_card.dart'; -import '../weapons/weapon_card.dart'; +import 'package:genshindb/domain/app_constants.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/artifacts/widgets/artifact_card.dart'; +import 'package:genshindb/presentation/shared/extensions/element_type_extensions.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; +import 'package:genshindb/presentation/weapons/widgets/weapon_card.dart'; class CharacterBuildCard extends StatelessWidget { final ElementType elementType; @@ -99,7 +98,7 @@ class CharacterBuildCard extends StatelessWidget { for (var i = 0; i < artifacts.length; i++) { final artifact = artifacts[i]; if (artifact.one != null) { - final widget = _builArtifactOne(artifact); + final widget = _buildArtifactOne(artifact); widgets.add(widget); } @@ -116,7 +115,7 @@ class CharacterBuildCard extends StatelessWidget { return widgets; } - Widget _builArtifactOne(CharacterBuildArtifactModel artifact) { + Widget _buildArtifactOne(CharacterBuildArtifactModel artifact) { final items = artifactOrder.map( (digit) { final path = artifact.one.image.replaceFirst(replaceDigitRegex, '$digit'); @@ -139,7 +138,7 @@ class CharacterBuildCard extends StatelessWidget { } Widget _buildMultipleArtifact(CharacterBuildArtifactModel artifact) { - final childs = []; + final children = []; final order = [...artifactOrder]; for (final art in artifact.multiples) { @@ -152,7 +151,7 @@ class CharacterBuildCard extends StatelessWidget { rarity: art.artifact.rarity, keyName: art.artifact.key, ); - childs.add(widget); + children.add(widget); order.remove(startFrom); } @@ -163,7 +162,7 @@ class CharacterBuildCard extends StatelessWidget { child: ListView( physics: const BouncingScrollPhysics(), scrollDirection: Axis.horizontal, - children: childs, + children: children, ), ); return widget; diff --git a/lib/ui/widgets/characters/character_card.dart b/lib/presentation/characters/widgets/character_card.dart similarity index 83% rename from lib/ui/widgets/characters/character_card.dart rename to lib/presentation/characters/widgets/character_card.dart index d76198a68..041bf1942 100644 --- a/lib/ui/widgets/characters/character_card.dart +++ b/lib/presentation/characters/widgets/character_card.dart @@ -1,20 +1,19 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:fluttertoast/fluttertoast.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/character/character_page.dart'; +import 'package:genshindb/presentation/shared/comingsoon_new_avatar.dart'; +import 'package:genshindb/presentation/shared/element_image.dart'; +import 'package:genshindb/presentation/shared/extensions/element_type_extensions.dart'; +import 'package:genshindb/presentation/shared/extensions/i18n_extensions.dart'; +import 'package:genshindb/presentation/shared/rarity.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; import 'package:transparent_image/transparent_image.dart'; -import '../../../bloc/bloc.dart'; -import '../../../common/enums/element_type.dart'; -import '../../../common/enums/weapon_type.dart'; -import '../../../common/extensions/element_type_extensions.dart'; -import '../../../common/extensions/i18n_extensions.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../../pages/character_page.dart'; -import '../common/comingsoon_new_avatar.dart'; -import '../common/element_image.dart'; -import '../common/rarity.dart'; -import 'character_card_ascention_materials_bottom.dart'; +import 'character_card_ascension_materials_bottom.dart'; class CharacterCard extends StatelessWidget { final String keyName; @@ -97,7 +96,7 @@ class CharacterCard extends StatelessWidget { ), ), Rarity(stars: rarity), - CharacterCardAscentionMaterialsBottom( + CharacterCardAscensionMaterialsBottom( materials: materials, weaponType: weaponType, ), diff --git a/lib/ui/widgets/characters/character_card_ascention_materials_bottom.dart b/lib/presentation/characters/widgets/character_card_ascension_materials_bottom.dart similarity index 73% rename from lib/ui/widgets/characters/character_card_ascention_materials_bottom.dart rename to lib/presentation/characters/widgets/character_card_ascension_materials_bottom.dart index 147a30d9a..431d81654 100644 --- a/lib/ui/widgets/characters/character_card_ascention_materials_bottom.dart +++ b/lib/presentation/characters/widgets/character_card_ascension_materials_bottom.dart @@ -1,20 +1,20 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/extensions/weapon_type_extensions.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/extensions/i18n_extensions.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; import 'package:transparent_image/transparent_image.dart'; -import '../../../bloc/bloc.dart'; -import '../../../common/enums/weapon_type.dart'; -import '../../../common/extensions/i18n_extensions.dart'; -import '../../../common/extensions/weapon_type_extensions.dart'; -import '../../../generated/l10n.dart'; -import '../common/loading.dart'; -import 'character_ascention_materials.dart'; +import 'character_ascension_materials.dart'; -class CharacterCardAscentionMaterialsBottom extends StatelessWidget { +class CharacterCardAscensionMaterialsBottom extends StatelessWidget { final WeaponType weaponType; final List materials; - const CharacterCardAscentionMaterialsBottom({ + const CharacterCardAscensionMaterialsBottom({ Key key, @required this.weaponType, @required this.materials, @@ -49,7 +49,7 @@ class CharacterCardAscentionMaterialsBottom extends StatelessWidget { Flexible( fit: FlexFit.tight, flex: 60, - child: CharacterAscentionMaterials(images: materials), + child: CharacterAscensionMaterials(images: materials), ) ], ), diff --git a/lib/ui/pages/elements_page.dart b/lib/presentation/elements/elements_page.dart similarity index 89% rename from lib/ui/pages/elements_page.dart rename to lib/presentation/elements/elements_page.dart index a226a7ab7..6a836a34a 100644 --- a/lib/ui/pages/elements_page.dart +++ b/lib/presentation/elements/elements_page.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; -import '../../common/styles.dart'; -import '../../generated/l10n.dart'; -import '../widgets/elements/sliver_element_debuffs.dart'; -import '../widgets/elements/sliver_element_reactions.dart'; -import '../widgets/elements/sliver_element_resonances.dart'; +import 'widgets/sliver_element_debuffs.dart'; +import 'widgets/sliver_element_reactions.dart'; +import 'widgets/sliver_element_resonances.dart'; class ElementsPage extends StatelessWidget { @override diff --git a/lib/ui/widgets/elements/element_debuff_card.dart b/lib/presentation/elements/widgets/element_debuff_card.dart similarity index 88% rename from lib/ui/widgets/elements/element_debuff_card.dart rename to lib/presentation/elements/widgets/element_debuff_card.dart index 8b4a38f87..62713f47d 100644 --- a/lib/ui/widgets/elements/element_debuff_card.dart +++ b/lib/presentation/elements/widgets/element_debuff_card.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; - -import '../../../common/styles.dart'; -import '../common/element_image.dart'; +import 'package:genshindb/presentation/shared/element_image.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; class ElementDebuffCard extends StatelessWidget { final String image; diff --git a/lib/ui/widgets/elements/element_reaction_card.dart b/lib/presentation/elements/widgets/element_reaction_card.dart similarity index 94% rename from lib/ui/widgets/elements/element_reaction_card.dart rename to lib/presentation/elements/widgets/element_reaction_card.dart index eebb4bc21..af833a4a4 100644 --- a/lib/ui/widgets/elements/element_reaction_card.dart +++ b/lib/presentation/elements/widgets/element_reaction_card.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; - -import '../../../common/styles.dart'; -import '../common/element_image.dart'; +import 'package:genshindb/presentation/shared/element_image.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; class ElementReactionCard extends StatelessWidget { final String name; diff --git a/lib/ui/widgets/elements/sliver_element_debuffs.dart b/lib/presentation/elements/widgets/sliver_element_debuffs.dart similarity index 93% rename from lib/ui/widgets/elements/sliver_element_debuffs.dart rename to lib/presentation/elements/widgets/sliver_element_debuffs.dart index 6fb64c303..3a0cd5a26 100644 --- a/lib/ui/widgets/elements/sliver_element_debuffs.dart +++ b/lib/presentation/elements/widgets/sliver_element_debuffs.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; -import '../../../bloc/elements/elements_bloc.dart'; -import '../common/loading.dart'; import 'element_debuff_card.dart'; class SliverElementDebuffs extends StatelessWidget { diff --git a/lib/ui/widgets/elements/sliver_element_reactions.dart b/lib/presentation/elements/widgets/sliver_element_reactions.dart similarity index 90% rename from lib/ui/widgets/elements/sliver_element_reactions.dart rename to lib/presentation/elements/widgets/sliver_element_reactions.dart index b1cad205d..0f12c80e4 100644 --- a/lib/ui/widgets/elements/sliver_element_reactions.dart +++ b/lib/presentation/elements/widgets/sliver_element_reactions.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; -import '../../../bloc/elements/elements_bloc.dart'; -import '../common/loading.dart'; import 'element_reaction_card.dart'; class SliverElementReactions extends StatelessWidget { diff --git a/lib/ui/widgets/elements/sliver_element_resonances.dart b/lib/presentation/elements/widgets/sliver_element_resonances.dart similarity index 92% rename from lib/ui/widgets/elements/sliver_element_resonances.dart rename to lib/presentation/elements/widgets/sliver_element_resonances.dart index 4c94cd9b6..65428ef7f 100644 --- a/lib/ui/widgets/elements/sliver_element_resonances.dart +++ b/lib/presentation/elements/widgets/sliver_element_resonances.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; -import '../../../bloc/elements/elements_bloc.dart'; -import '../common/loading.dart'; import 'element_reaction_card.dart'; class SliverElementResonances extends StatelessWidget { diff --git a/lib/ui/pages/home_page.dart b/lib/presentation/home/home_page.dart similarity index 84% rename from lib/ui/pages/home_page.dart rename to lib/presentation/home/home_page.dart index 295f4910c..fe35a8779 100644 --- a/lib/ui/pages/home_page.dart +++ b/lib/presentation/home/home_page.dart @@ -1,15 +1,15 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/today_materials/materials_page.dart'; -import '../../bloc/bloc.dart'; -import '../../generated/l10n.dart'; -import '../widgets/home/sliver_calculators_card.dart'; -import '../widgets/home/sliver_elements_card.dart'; -import '../widgets/home/sliver_settings_card.dart'; -import '../widgets/home/sliver_today_char_ascention_materials.dart'; -import '../widgets/home/sliver_today_weapon_materials.dart'; -import '../widgets/home/sliver_wish_simulator_card.dart'; -import 'materials_page.dart'; +import 'widgets/sliver_calculators_card.dart'; +import 'widgets/sliver_elements_card.dart'; +import 'widgets/sliver_settings_card.dart'; +import 'widgets/sliver_today_char_ascension_materials.dart'; +import 'widgets/sliver_today_weapon_materials.dart'; +import 'widgets/sliver_wish_simulator_card.dart'; class HomePage extends StatefulWidget { @override @@ -29,7 +29,7 @@ class _HomePageState extends State with AutomaticKeepAliveClientMixin< slivers: [ _buildMainTitle(s.todayAscensionMaterials, context), _buildClickableTitle(s.forCharacters, s.seeAll, context, onClick: () => _gotoMaterialsPage(context)), - SliverTodayCharAscentionMaterials(), + SliverTodayCharAscensionMaterials(), _buildClickableTitle(s.forWeapons, s.seeAll, context, onClick: () => _gotoMaterialsPage(context)), SliverTodayWeaponMaterials(), _buildMainTitle(s.elements, context), diff --git a/lib/ui/widgets/home/char_card_ascention_material.dart b/lib/presentation/home/widgets/char_card_ascension_material.dart similarity index 85% rename from lib/ui/widgets/home/char_card_ascention_material.dart rename to lib/presentation/home/widgets/char_card_ascension_material.dart index bd41867e0..dc7681765 100644 --- a/lib/ui/widgets/home/char_card_ascention_material.dart +++ b/lib/presentation/home/widgets/char_card_ascension_material.dart @@ -1,18 +1,17 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/circle_character.dart'; +import 'package:genshindb/presentation/shared/extensions/i18n_extensions.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; -import '../../../common/extensions/i18n_extensions.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../common/circle_character.dart'; - -class CharCardAscentionMaterial extends StatelessWidget { +class CharCardAscensionMaterial extends StatelessWidget { final String name; final String image; final List charImgs; final String bossName; final List days; - const CharCardAscentionMaterial.fromDays({ + const CharCardAscensionMaterial.fromDays({ Key key, @required this.name, @required this.image, @@ -21,7 +20,7 @@ class CharCardAscentionMaterial extends StatelessWidget { }) : bossName = null, super(key: key); - const CharCardAscentionMaterial.fromBoss({ + const CharCardAscensionMaterial.fromBoss({ Key key, @required this.name, @required this.image, diff --git a/lib/ui/widgets/home/sliver_calculators_card.dart b/lib/presentation/home/widgets/sliver_calculators_card.dart similarity index 84% rename from lib/ui/widgets/home/sliver_calculators_card.dart rename to lib/presentation/home/widgets/sliver_calculators_card.dart index c35637ff7..9b6a42c12 100644 --- a/lib/ui/widgets/home/sliver_calculators_card.dart +++ b/lib/presentation/home/widgets/sliver_calculators_card.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/calculator_asc_materials/calculator_ascension_materials_page.dart'; -import '../../../generated/l10n.dart'; -import '../../pages/calculator_ascention_materials_page.dart'; import 'sliver_card_item.dart'; class SliverCalculatorsCard extends StatelessWidget { diff --git a/lib/ui/widgets/home/sliver_card_item.dart b/lib/presentation/home/widgets/sliver_card_item.dart similarity index 96% rename from lib/ui/widgets/home/sliver_card_item.dart rename to lib/presentation/home/widgets/sliver_card_item.dart index d492d92d3..7e8d77e93 100644 --- a/lib/ui/widgets/home/sliver_card_item.dart +++ b/lib/presentation/home/widgets/sliver_card_item.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; - -import '../../../common/styles.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; class SliverCardItem extends StatelessWidget { final Widget icon; diff --git a/lib/ui/widgets/home/sliver_elements_card.dart b/lib/presentation/home/widgets/sliver_elements_card.dart similarity index 87% rename from lib/ui/widgets/home/sliver_elements_card.dart rename to lib/presentation/home/widgets/sliver_elements_card.dart index e5ce8def8..2c26fe924 100644 --- a/lib/ui/widgets/home/sliver_elements_card.dart +++ b/lib/presentation/home/widgets/sliver_elements_card.dart @@ -1,8 +1,7 @@ import 'package:flutter/material.dart'; - -import '../../../common/enums/element_type.dart'; -import '../../pages/elements_page.dart'; -import '../common/element_image.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/presentation/elements/elements_page.dart'; +import 'package:genshindb/presentation/shared/element_image.dart'; class SliverElementsCard extends StatelessWidget { @override diff --git a/lib/ui/widgets/home/sliver_settings_card.dart b/lib/presentation/home/widgets/sliver_settings_card.dart similarity index 89% rename from lib/ui/widgets/home/sliver_settings_card.dart rename to lib/presentation/home/widgets/sliver_settings_card.dart index 8461f3ec1..9bdce2239 100644 --- a/lib/ui/widgets/home/sliver_settings_card.dart +++ b/lib/presentation/home/widgets/sliver_settings_card.dart @@ -1,8 +1,7 @@ import 'package:flutter/material.dart'; - -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../../pages/settings_page.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/settings/settings_page.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; class SliverSettingsCard extends StatelessWidget { @override diff --git a/lib/ui/widgets/home/sliver_today_char_ascention_materials.dart b/lib/presentation/home/widgets/sliver_today_char_ascension_materials.dart similarity index 51% rename from lib/ui/widgets/home/sliver_today_char_ascention_materials.dart rename to lib/presentation/home/widgets/sliver_today_char_ascension_materials.dart index 6bcd6410f..c0905eb34 100644 --- a/lib/ui/widgets/home/sliver_today_char_ascention_materials.dart +++ b/lib/presentation/home/widgets/sliver_today_char_ascension_materials.dart @@ -1,18 +1,17 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/presentation/shared/sliver_loading.dart'; +import 'package:genshindb/presentation/today_materials/widgets/sliver_character_ascension_materials.dart'; -import '../../../bloc/bloc.dart'; -import '../common/sliver_loading.dart'; -import '../materials/sliver_character_ascention_materials.dart'; - -class SliverTodayCharAscentionMaterials extends StatelessWidget { +class SliverTodayCharAscensionMaterials extends StatelessWidget { @override Widget build(BuildContext context) { return BlocBuilder( builder: (context, state) { return state.when( loading: () => const SliverLoading(), - loaded: (charAscMaterials, _) => SliverCharacterAscentionMaterials(charAscMaterials: charAscMaterials), + loaded: (charAscMaterials, _) => SliverCharacterAscensionMaterials(charAscMaterials: charAscMaterials), ); }, ); diff --git a/lib/ui/widgets/home/sliver_today_weapon_materials.dart b/lib/presentation/home/widgets/sliver_today_weapon_materials.dart similarity index 60% rename from lib/ui/widgets/home/sliver_today_weapon_materials.dart rename to lib/presentation/home/widgets/sliver_today_weapon_materials.dart index 151c74d0d..7e423805d 100644 --- a/lib/ui/widgets/home/sliver_today_weapon_materials.dart +++ b/lib/presentation/home/widgets/sliver_today_weapon_materials.dart @@ -1,9 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; - -import '../../../bloc/bloc.dart'; -import '../common/sliver_loading.dart'; -import '../materials/sliver_weapon_ascention_materials.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/presentation/shared/sliver_loading.dart'; +import 'package:genshindb/presentation/today_materials/widgets/sliver_weapon_ascension_materials.dart'; class SliverTodayWeaponMaterials extends StatelessWidget { @override @@ -12,7 +11,7 @@ class SliverTodayWeaponMaterials extends StatelessWidget { builder: (context, state) { return state.when( loading: () => const SliverLoading(), - loaded: (_, weaponAscMaterials) => SliverWeaponAscentionMaterials(weaponAscMaterials: weaponAscMaterials), + loaded: (_, weaponAscMaterials) => SliverWeaponAscensionMaterials(weaponAscMaterials: weaponAscMaterials), ); }, ); diff --git a/lib/ui/widgets/home/sliver_wish_simulator_card.dart b/lib/presentation/home/widgets/sliver_wish_simulator_card.dart similarity index 86% rename from lib/ui/widgets/home/sliver_wish_simulator_card.dart rename to lib/presentation/home/widgets/sliver_wish_simulator_card.dart index dc192da1c..5fd1f23df 100644 --- a/lib/ui/widgets/home/sliver_wish_simulator_card.dart +++ b/lib/presentation/home/widgets/sliver_wish_simulator_card.dart @@ -1,9 +1,8 @@ import 'package:flutter/material.dart'; - -import '../../../common/assets.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../../pages/wish_simulator_page.dart'; +import 'package:genshindb/domain/assets.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; +import 'package:genshindb/presentation/wish_simulator/wish_simulator_page.dart'; class SliverWishSimulatorCard extends StatelessWidget { @override diff --git a/lib/ui/widgets/home/weapon_card_ascention_material.dart b/lib/presentation/home/widgets/weapon_card_ascension_material.dart similarity index 86% rename from lib/ui/widgets/home/weapon_card_ascention_material.dart rename to lib/presentation/home/widgets/weapon_card_ascension_material.dart index e80fef5d7..51629e362 100644 --- a/lib/ui/widgets/home/weapon_card_ascention_material.dart +++ b/lib/presentation/home/widgets/weapon_card_ascension_material.dart @@ -1,19 +1,18 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/extensions/i18n_extensions.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; +import 'package:genshindb/presentation/weapon/weapon_page.dart'; -import '../../../bloc/bloc.dart'; -import '../../../common/extensions/i18n_extensions.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../../pages/weapon_page.dart'; - -class WeaponCardAscentionMaterial extends StatelessWidget { +class WeaponCardAscensionMaterial extends StatelessWidget { final String name; final String image; final List days; final List weapons; - const WeaponCardAscentionMaterial({ + const WeaponCardAscensionMaterial({ Key key, @required this.name, @required this.image, diff --git a/lib/ui/pages/main_tab_page.dart b/lib/presentation/main_tab_page.dart similarity index 78% rename from lib/ui/pages/main_tab_page.dart rename to lib/presentation/main_tab_page.dart index 976f06c52..e9d2225af 100644 --- a/lib/ui/pages/main_tab_page.dart +++ b/lib/presentation/main_tab_page.dart @@ -1,15 +1,15 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/generated/l10n.dart'; import 'package:rate_my_app/rate_my_app.dart'; -import '../../bloc/bloc.dart'; -import '../../common/genshin_db_icons.dart'; -import '../../generated/l10n.dart'; -import 'artifacts_page.dart'; -import 'characters_page.dart'; -import 'home_page.dart'; -import 'map_page.dart'; -import 'weapons_page.dart'; +import 'artifacts/artifacts_page.dart'; +import 'characters/characters_page.dart'; +import 'home/home_page.dart'; +import 'map/map_page.dart'; +import 'shared/genshin_db_icons.dart'; +import 'weapons/weapons_page.dart'; class MainTabPage extends StatefulWidget { @override @@ -21,8 +21,8 @@ class _MainTabPageState extends State with SingleTickerProviderStat TabController _tabController; int _index = 2; final _pages = [ - CharactersPage(), - WeaponsPage(), + const CharactersPage(), + const WeaponsPage(), HomePage(), ArtifactsPage(), MapPage(), @@ -104,26 +104,11 @@ class _MainTabPageState extends State with SingleTickerProviderStat List _buildBottomNavBars() { final s = S.of(context); return [ - BottomNavigationBarItem( - label: s.characters, - icon: const Icon(Icons.people), - ), - BottomNavigationBarItem( - label: s.weapons, - icon: const Icon(GenshinDb.crossed_swords), - ), - BottomNavigationBarItem( - label: s.home, - icon: const Icon(Icons.home), - ), - BottomNavigationBarItem( - label: s.artifacts, - icon: const Icon(GenshinDb.overmind), - ), - BottomNavigationBarItem( - label: s.map, - icon: const Icon(Icons.map), - ), + BottomNavigationBarItem(label: s.characters, icon: const Icon(Icons.people)), + BottomNavigationBarItem(label: s.weapons, icon: const Icon(GenshinDb.crossed_swords)), + BottomNavigationBarItem(label: s.home, icon: const Icon(Icons.home)), + BottomNavigationBarItem(label: s.artifacts, icon: const Icon(GenshinDb.overmind)), + BottomNavigationBarItem(label: s.map, icon: const Icon(Icons.map)), ]; } diff --git a/lib/ui/pages/map_page.dart b/lib/presentation/map/map_page.dart similarity index 93% rename from lib/ui/pages/map_page.dart rename to lib/presentation/map/map_page.dart index 95750e914..ef086188c 100644 --- a/lib/ui/pages/map_page.dart +++ b/lib/presentation/map/map_page.dart @@ -1,11 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_webview_plugin/flutter_webview_plugin.dart'; - -import '../../bloc/bloc.dart'; -import '../../generated/l10n.dart'; -import '../widgets/common/loading.dart'; -import '../widgets/common/page_message.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; +import 'package:genshindb/presentation/shared/page_message.dart'; class MapPage extends StatefulWidget { @override diff --git a/lib/ui/pages/settings_page.dart b/lib/presentation/settings/settings_page.dart similarity index 62% rename from lib/ui/pages/settings_page.dart rename to lib/presentation/settings/settings_page.dart index 579c9465b..b81a82d1b 100644 --- a/lib/ui/pages/settings_page.dart +++ b/lib/presentation/settings/settings_page.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; -import '../../common/styles.dart'; -import '../../generated/l10n.dart'; -import '../widgets/settings/about_settings_card.dart'; -import '../widgets/settings/accent_color_settings_card.dart'; -import '../widgets/settings/language_settings_card.dart'; -import '../widgets/settings/other_settings.dart'; -import '../widgets/settings/theme_settings_card.dart'; +import 'widgets/about_settings_card.dart'; +import 'widgets/accent_color_settings_card.dart'; +import 'widgets/language_settings_card.dart'; +import 'widgets/other_settings.dart'; +import 'widgets/theme_settings_card.dart'; class SettingsPage extends StatelessWidget { @override diff --git a/lib/ui/widgets/settings/about_settings_card.dart b/lib/presentation/settings/widgets/about_settings_card.dart similarity index 94% rename from lib/ui/widgets/settings/about_settings_card.dart rename to lib/presentation/settings/widgets/about_settings_card.dart index 00823073a..8d74a9a6e 100644 --- a/lib/ui/widgets/settings/about_settings_card.dart +++ b/lib/presentation/settings/widgets/about_settings_card.dart @@ -1,12 +1,12 @@ import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; import 'package:url_launcher/url_launcher.dart'; -import '../../../bloc/bloc.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../common/loading.dart'; import 'settings_card.dart'; class AboutSettingsCard extends StatelessWidget { @@ -122,7 +122,7 @@ class AboutSettingsCard extends StatelessWidget { decorationColor: Colors.blue, fontSize: 18, ), - recognizer: TapGestureRecognizer()..onTap = () => _lauchUrl(url), + recognizer: TapGestureRecognizer()..onTap = () => _launchUrl(url), ), ], ), @@ -130,7 +130,7 @@ class AboutSettingsCard extends StatelessWidget { ); } - Future _lauchUrl(String url) async { + Future _launchUrl(String url) async { if (await canLaunch(url)) { await launch(url); } diff --git a/lib/ui/widgets/settings/accent_color_settings_card.dart b/lib/presentation/settings/widgets/accent_color_settings_card.dart similarity index 83% rename from lib/ui/widgets/settings/accent_color_settings_card.dart rename to lib/presentation/settings/widgets/accent_color_settings_card.dart index a2f8f69c2..8e8b17237 100644 --- a/lib/ui/widgets/settings/accent_color_settings_card.dart +++ b/lib/presentation/settings/widgets/accent_color_settings_card.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/extensions/app_theme_type_extensions.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; -import '../../../bloc/bloc.dart'; -import '../../../common/enums/app_accent_color_type.dart'; -import '../../../common/extensions/app_theme_type_extensions.dart'; -import '../../../generated/l10n.dart'; -import '../common/loading.dart'; import 'settings_card.dart'; class AccentColorSettingsCard extends StatelessWidget { @@ -54,8 +54,7 @@ class AccentColorSettingsCard extends StatelessWidget { child: Container( padding: const EdgeInsets.all(8), color: color, - child: - s.currentAccentColor == accentColor ? const Icon(Icons.check, color: Colors.white) : null, + child: s.currentAccentColor == accentColor ? const Icon(Icons.check, color: Colors.white) : null, ), ); }).toList(), diff --git a/lib/ui/widgets/settings/language_settings_card.dart b/lib/presentation/settings/widgets/language_settings_card.dart similarity index 88% rename from lib/ui/widgets/settings/language_settings_card.dart rename to lib/presentation/settings/widgets/language_settings_card.dart index 61e1fc9de..e7190cebd 100644 --- a/lib/ui/widgets/settings/language_settings_card.dart +++ b/lib/presentation/settings/widgets/language_settings_card.dart @@ -1,13 +1,13 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:fluttertoast/fluttertoast.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/extensions/i18n_extensions.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; -import '../../../bloc/bloc.dart'; -import '../../../common/enums/app_language_type.dart'; -import '../../../common/extensions/i18n_extensions.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../common/loading.dart'; import 'settings_card.dart'; class LanguageSettingsCard extends StatelessWidget { diff --git a/lib/ui/widgets/settings/other_settings.dart b/lib/presentation/settings/widgets/other_settings.dart similarity index 80% rename from lib/ui/widgets/settings/other_settings.dart rename to lib/presentation/settings/widgets/other_settings.dart index 34ef14c7a..40683f4ca 100644 --- a/lib/ui/widgets/settings/other_settings.dart +++ b/lib/presentation/settings/widgets/other_settings.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; -import '../../../bloc/bloc.dart'; -import '../../../generated/l10n.dart'; -import '../common/loading.dart'; import 'settings_card.dart'; class OtherSettings extends StatelessWidget { @@ -44,15 +44,13 @@ class OtherSettings extends StatelessWidget { activeColor: theme.accentColor, title: Text(s.showCharacterDetails), value: settingsState.showCharacterDetails, - onChanged: (newVal) => - context.read().add(SettingsEvent.showCharacterDetailsChanged(newValue: newVal)), + onChanged: (newVal) => context.read().add(SettingsEvent.showCharacterDetailsChanged(newValue: newVal)), ), SwitchListTile( activeColor: theme.accentColor, title: Text(s.showWeaponDetails), value: settingsState.showWeaponDetails, - onChanged: (newVal) => - context.read().add(SettingsEvent.showWeaponDetailsChanged(newValue: newVal)), + onChanged: (newVal) => context.read().add(SettingsEvent.showWeaponDetailsChanged(newValue: newVal)), ), ], ), diff --git a/lib/ui/widgets/settings/settings_card.dart b/lib/presentation/settings/widgets/settings_card.dart similarity index 89% rename from lib/ui/widgets/settings/settings_card.dart rename to lib/presentation/settings/widgets/settings_card.dart index 7833abc1f..3c78f2298 100644 --- a/lib/ui/widgets/settings/settings_card.dart +++ b/lib/presentation/settings/widgets/settings_card.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; - -import '../../../common/styles.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; class SettingsCard extends StatelessWidget { final Widget child; diff --git a/lib/ui/widgets/settings/theme_settings_card.dart b/lib/presentation/settings/widgets/theme_settings_card.dart similarity index 86% rename from lib/ui/widgets/settings/theme_settings_card.dart rename to lib/presentation/settings/widgets/theme_settings_card.dart index aff26e15a..af136c4d5 100644 --- a/lib/ui/widgets/settings/theme_settings_card.dart +++ b/lib/presentation/settings/widgets/theme_settings_card.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/extensions/i18n_extensions.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; -import '../../../bloc/bloc.dart'; -import '../../../common/enums/app_theme_type.dart'; -import '../../../common/extensions/i18n_extensions.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../common/loading.dart'; import 'settings_card.dart'; class ThemeSettingsCard extends StatelessWidget { diff --git a/lib/ui/widgets/common/app_fab.dart b/lib/presentation/shared/app_fab.dart similarity index 91% rename from lib/ui/widgets/common/app_fab.dart rename to lib/presentation/shared/app_fab.dart index 549db113e..30d2780bc 100644 --- a/lib/ui/widgets/common/app_fab.dart +++ b/lib/presentation/shared/app_fab.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import '../../../common/extensions/scroll_controller_extensions.dart'; +import 'extensions/scroll_controller_extensions.dart'; class AppFab extends StatelessWidget { final ScrollController scrollController; diff --git a/lib/ui/widgets/common/bottom_sheet_title.dart b/lib/presentation/shared/bottom_sheet_title.dart similarity index 95% rename from lib/ui/widgets/common/bottom_sheet_title.dart rename to lib/presentation/shared/bottom_sheet_title.dart index f22ec1b52..f3bbd507c 100644 --- a/lib/ui/widgets/common/bottom_sheet_title.dart +++ b/lib/presentation/shared/bottom_sheet_title.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import '../../../common/styles.dart'; +import 'styles.dart'; class BottomSheetTitle extends StatelessWidget { final String title; diff --git a/lib/ui/widgets/common/bullet_list.dart b/lib/presentation/shared/bullet_list.dart similarity index 92% rename from lib/ui/widgets/common/bullet_list.dart rename to lib/presentation/shared/bullet_list.dart index 4bd34bd96..e995c8100 100644 --- a/lib/ui/widgets/common/bullet_list.dart +++ b/lib/presentation/shared/bullet_list.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/domain/extensions/iterable_extensions.dart'; -import '../../../common/extensions/iterable_extensions.dart'; -import '../../../common/styles.dart'; +import 'styles.dart'; class BulletList extends StatelessWidget { final List items; diff --git a/lib/ui/widgets/common/circle_character.dart b/lib/presentation/shared/circle_character.dart similarity index 88% rename from lib/ui/widgets/common/circle_character.dart rename to lib/presentation/shared/circle_character.dart index 5b0b3c393..8a6c89671 100644 --- a/lib/ui/widgets/common/circle_character.dart +++ b/lib/presentation/shared/circle_character.dart @@ -1,8 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; - -import '../../../bloc/bloc.dart'; -import '../../pages/character_page.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/presentation/character/character_page.dart'; class CircleCharacter extends StatelessWidget { final String image; diff --git a/lib/ui/widgets/common/comingsoon_new_avatar.dart b/lib/presentation/shared/comingsoon_new_avatar.dart similarity index 95% rename from lib/ui/widgets/common/comingsoon_new_avatar.dart rename to lib/presentation/shared/comingsoon_new_avatar.dart index 6312b2408..c76bfb93f 100644 --- a/lib/ui/widgets/common/comingsoon_new_avatar.dart +++ b/lib/presentation/shared/comingsoon_new_avatar.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; - -import '../../../generated/l10n.dart'; +import 'package:genshindb/generated/l10n.dart'; class ComingSoonNewAvatar extends StatelessWidget { final bool isNew; diff --git a/lib/ui/widgets/common/common_bottom_sheet.dart b/lib/presentation/shared/common_bottom_sheet.dart similarity index 95% rename from lib/ui/widgets/common/common_bottom_sheet.dart rename to lib/presentation/shared/common_bottom_sheet.dart index 0180d256e..a19d00f99 100644 --- a/lib/ui/widgets/common/common_bottom_sheet.dart +++ b/lib/presentation/shared/common_bottom_sheet.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/generated/l10n.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; import 'bottom_sheet_title.dart'; import 'modal_sheet_separator.dart'; +import 'styles.dart'; class CommonBottomSheet extends StatelessWidget { final String title; diff --git a/lib/ui/widgets/common/element_image.dart b/lib/presentation/shared/element_image.dart similarity index 86% rename from lib/ui/widgets/common/element_image.dart rename to lib/presentation/shared/element_image.dart index 0ba032f7a..c78083110 100644 --- a/lib/ui/widgets/common/element_image.dart +++ b/lib/presentation/shared/element_image.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/domain/assets.dart'; +import 'package:genshindb/domain/enums/enums.dart'; -import '../../../common/assets.dart'; -import '../../../common/enums/element_type.dart'; -import '../../../common/extensions/element_type_extensions.dart'; +import 'extensions/element_type_extensions.dart'; class ElementImage extends StatelessWidget { final ElementType type; diff --git a/lib/ui/widgets/common/elements_button_bar.dart b/lib/presentation/shared/elements_button_bar.dart similarity index 82% rename from lib/ui/widgets/common/elements_button_bar.dart rename to lib/presentation/shared/elements_button_bar.dart index 3b38301b7..6f112dfc7 100644 --- a/lib/ui/widgets/common/elements_button_bar.dart +++ b/lib/presentation/shared/elements_button_bar.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/generated/l10n.dart'; -import '../../../common/enums/element_type.dart'; -import '../../../common/extensions/element_type_extensions.dart'; -import '../../../common/extensions/i18n_extensions.dart'; -import '../../../generated/l10n.dart'; +import 'extensions/element_type_extensions.dart'; +import 'extensions/i18n_extensions.dart'; class ElementsButtonBar extends StatelessWidget { final List selectedValues; diff --git a/lib/common/extensions/app_theme_type_extensions.dart b/lib/presentation/shared/extensions/app_theme_type_extensions.dart similarity index 97% rename from lib/common/extensions/app_theme_type_extensions.dart rename to lib/presentation/shared/extensions/app_theme_type_extensions.dart index b3c23dddc..cb2700ce9 100644 --- a/lib/common/extensions/app_theme_type_extensions.dart +++ b/lib/presentation/shared/extensions/app_theme_type_extensions.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; -import '../enums/app_accent_color_type.dart'; -import '../enums/app_theme_type.dart'; +import '../../../domain/enums/enums.dart'; extension AppThemeTypeExtensions on AppAccentColorType { Color getAccentColor() { diff --git a/lib/common/extensions/element_type_extensions.dart b/lib/presentation/shared/extensions/element_type_extensions.dart similarity index 95% rename from lib/common/extensions/element_type_extensions.dart rename to lib/presentation/shared/extensions/element_type_extensions.dart index 8a5143c2b..d65513944 100644 --- a/lib/common/extensions/element_type_extensions.dart +++ b/lib/presentation/shared/extensions/element_type_extensions.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import '../assets.dart'; -import '../enums/element_type.dart'; +import '../../../domain/assets.dart'; +import '../../../domain/enums/enums.dart'; extension ElementTypeExtensions on ElementType { String getElementAsssetPath() { diff --git a/lib/common/extensions/i18n_extensions.dart b/lib/presentation/shared/extensions/i18n_extensions.dart similarity index 90% rename from lib/common/extensions/i18n_extensions.dart rename to lib/presentation/shared/extensions/i18n_extensions.dart index 9ebd5f8f1..8368cb7be 100644 --- a/lib/common/extensions/i18n_extensions.dart +++ b/lib/presentation/shared/extensions/i18n_extensions.dart @@ -1,21 +1,5 @@ -import '../../common/enums/app_language_type.dart'; -import '../../common/enums/app_theme_type.dart'; -import '../../common/enums/artifact_filter_type.dart'; -import '../../common/enums/character_filter_type.dart'; -import '../../common/enums/element_type.dart'; -import '../../common/enums/item_location_type.dart'; -import '../../common/enums/region_type.dart'; -import '../../common/enums/sort_direction_type.dart'; -import '../../common/enums/stat_type.dart'; -import '../../common/enums/weapon_filter_type.dart'; -import '../../common/enums/weapon_type.dart'; -import '../../generated/l10n.dart'; -import '../enums/ascension_material_summary_type.dart'; -import '../enums/character_skill_ability_type.dart'; -import '../enums/character_skill_type.dart'; -import '../enums/character_type.dart'; -import '../enums/item_status_type.dart'; -import '../enums/material_type.dart'; +import '../../../domain/enums/enums.dart'; +import '../../../generated/l10n.dart'; extension I18nExtensions on S { String translateAppThemeType(AppThemeType theme) { diff --git a/lib/common/extensions/rarity_extensions.dart b/lib/presentation/shared/extensions/rarity_extensions.dart similarity index 100% rename from lib/common/extensions/rarity_extensions.dart rename to lib/presentation/shared/extensions/rarity_extensions.dart diff --git a/lib/common/extensions/scroll_controller_extensions.dart b/lib/presentation/shared/extensions/scroll_controller_extensions.dart similarity index 100% rename from lib/common/extensions/scroll_controller_extensions.dart rename to lib/presentation/shared/extensions/scroll_controller_extensions.dart diff --git a/lib/common/genshin_db_icons.dart b/lib/presentation/shared/genshin_db_icons.dart similarity index 100% rename from lib/common/genshin_db_icons.dart rename to lib/presentation/shared/genshin_db_icons.dart diff --git a/lib/ui/widgets/common/gradient_card.dart b/lib/presentation/shared/gradient_card.dart similarity index 100% rename from lib/ui/widgets/common/gradient_card.dart rename to lib/presentation/shared/gradient_card.dart diff --git a/lib/ui/widgets/common/image_widget_placeholder.dart b/lib/presentation/shared/image_widget_placeholder.dart similarity index 100% rename from lib/ui/widgets/common/image_widget_placeholder.dart rename to lib/presentation/shared/image_widget_placeholder.dart diff --git a/lib/ui/widgets/common/increment_button.dart b/lib/presentation/shared/increment_button.dart similarity index 97% rename from lib/ui/widgets/common/increment_button.dart rename to lib/presentation/shared/increment_button.dart index 5e5b1f9c4..d7c1e4e05 100644 --- a/lib/ui/widgets/common/increment_button.dart +++ b/lib/presentation/shared/increment_button.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import '../../../common/styles.dart'; +import 'styles.dart'; class IncrementButton extends StatelessWidget { final String title; diff --git a/lib/ui/widgets/common/item_counter.dart b/lib/presentation/shared/item_counter.dart similarity index 100% rename from lib/ui/widgets/common/item_counter.dart rename to lib/presentation/shared/item_counter.dart diff --git a/lib/ui/widgets/common/item_description.dart b/lib/presentation/shared/item_description.dart similarity index 97% rename from lib/ui/widgets/common/item_description.dart rename to lib/presentation/shared/item_description.dart index 5f9598880..687a9697a 100644 --- a/lib/ui/widgets/common/item_description.dart +++ b/lib/presentation/shared/item_description.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import '../../../common/styles.dart'; +import 'styles.dart'; class ItemDescription extends StatelessWidget { final String title; diff --git a/lib/ui/widgets/common/item_description_card.dart b/lib/presentation/shared/item_description_card.dart similarity index 94% rename from lib/ui/widgets/common/item_description_card.dart rename to lib/presentation/shared/item_description_card.dart index d0cc61d9d..112b44b54 100644 --- a/lib/ui/widgets/common/item_description_card.dart +++ b/lib/presentation/shared/item_description_card.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/generated/l10n.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; +import 'styles.dart'; class ItemDescriptionCard extends StatelessWidget { final String description; diff --git a/lib/ui/widgets/common/item_description_detail.dart b/lib/presentation/shared/item_description_detail.dart similarity index 94% rename from lib/ui/widgets/common/item_description_detail.dart rename to lib/presentation/shared/item_description_detail.dart index b913207ab..c47cdc971 100644 --- a/lib/ui/widgets/common/item_description_detail.dart +++ b/lib/presentation/shared/item_description_detail.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import '../../../common/styles.dart'; import 'primogem_icon.dart'; +import 'styles.dart'; class ItemDescriptionDetail extends StatelessWidget { final String title; @@ -46,8 +46,7 @@ class ItemDescriptionDetail extends StatelessWidget { ), ), ), - if (body != null) - body + if (body != null) body ], ); } diff --git a/lib/ui/widgets/common/item_expansion_panel.dart b/lib/presentation/shared/item_expansion_panel.dart similarity index 97% rename from lib/ui/widgets/common/item_expansion_panel.dart rename to lib/presentation/shared/item_expansion_panel.dart index 43a5da0ef..e1787016a 100644 --- a/lib/ui/widgets/common/item_expansion_panel.dart +++ b/lib/presentation/shared/item_expansion_panel.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import '../../../common/styles.dart'; +import 'styles.dart'; class ItemExpansionPanel extends StatelessWidget { final String title; diff --git a/lib/ui/widgets/common/item_popupmenu_filter.dart b/lib/presentation/shared/item_popupmenu_filter.dart similarity index 100% rename from lib/ui/widgets/common/item_popupmenu_filter.dart rename to lib/presentation/shared/item_popupmenu_filter.dart diff --git a/lib/ui/widgets/common/loading.dart b/lib/presentation/shared/loading.dart similarity index 93% rename from lib/ui/widgets/common/loading.dart rename to lib/presentation/shared/loading.dart index ef43e0a39..28600e220 100644 --- a/lib/ui/widgets/common/loading.dart +++ b/lib/presentation/shared/loading.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; - -import '../../../generated/l10n.dart'; +import 'package:genshindb/generated/l10n.dart'; class Loading extends StatelessWidget { final bool useScaffold; diff --git a/lib/ui/widgets/common/modal_sheet_separator.dart b/lib/presentation/shared/modal_sheet_separator.dart similarity index 100% rename from lib/ui/widgets/common/modal_sheet_separator.dart rename to lib/presentation/shared/modal_sheet_separator.dart diff --git a/lib/ui/widgets/common/nothing_found.dart b/lib/presentation/shared/nothing_found.dart similarity index 94% rename from lib/ui/widgets/common/nothing_found.dart rename to lib/presentation/shared/nothing_found.dart index 099e743d8..8e4c09657 100644 --- a/lib/ui/widgets/common/nothing_found.dart +++ b/lib/presentation/shared/nothing_found.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; - -import '../../../generated/l10n.dart'; +import 'package:genshindb/generated/l10n.dart'; class NothingFound extends StatelessWidget { final String msg; diff --git a/lib/ui/widgets/common/nothing_found_column.dart b/lib/presentation/shared/nothing_found_column.dart similarity index 100% rename from lib/ui/widgets/common/nothing_found_column.dart rename to lib/presentation/shared/nothing_found_column.dart diff --git a/lib/ui/widgets/common/page_message.dart b/lib/presentation/shared/page_message.dart similarity index 100% rename from lib/ui/widgets/common/page_message.dart rename to lib/presentation/shared/page_message.dart diff --git a/lib/ui/widgets/common/primogem_icon.dart b/lib/presentation/shared/primogem_icon.dart similarity index 86% rename from lib/ui/widgets/common/primogem_icon.dart rename to lib/presentation/shared/primogem_icon.dart index dcc74758b..b026803be 100644 --- a/lib/ui/widgets/common/primogem_icon.dart +++ b/lib/presentation/shared/primogem_icon.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; - -import '../../../common/assets.dart'; +import 'package:genshindb/domain/assets.dart'; class PrimoGemIcon extends StatelessWidget { @override diff --git a/lib/ui/widgets/common/rarity.dart b/lib/presentation/shared/rarity.dart similarity index 100% rename from lib/ui/widgets/common/rarity.dart rename to lib/presentation/shared/rarity.dart diff --git a/lib/ui/widgets/common/rarity_rating.dart b/lib/presentation/shared/rarity_rating.dart similarity index 100% rename from lib/ui/widgets/common/rarity_rating.dart rename to lib/presentation/shared/rarity_rating.dart diff --git a/lib/ui/widgets/common/search_box.dart b/lib/presentation/shared/search_box.dart similarity index 98% rename from lib/ui/widgets/common/search_box.dart rename to lib/presentation/shared/search_box.dart index 40373b551..16c96f799 100644 --- a/lib/ui/widgets/common/search_box.dart +++ b/lib/presentation/shared/search_box.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; - -import '../../../generated/l10n.dart'; +import 'package:genshindb/generated/l10n.dart'; class SearchBox extends StatefulWidget { final String value; diff --git a/lib/ui/widgets/common/sliver_loading.dart b/lib/presentation/shared/sliver_loading.dart similarity index 100% rename from lib/ui/widgets/common/sliver_loading.dart rename to lib/presentation/shared/sliver_loading.dart diff --git a/lib/ui/widgets/common/sliver_nothing_found.dart b/lib/presentation/shared/sliver_nothing_found.dart similarity index 100% rename from lib/ui/widgets/common/sliver_nothing_found.dart rename to lib/presentation/shared/sliver_nothing_found.dart diff --git a/lib/ui/widgets/common/sliver_page_filter.dart b/lib/presentation/shared/sliver_page_filter.dart similarity index 96% rename from lib/ui/widgets/common/sliver_page_filter.dart rename to lib/presentation/shared/sliver_page_filter.dart index a64cba82a..5ddd28171 100644 --- a/lib/ui/widgets/common/sliver_page_filter.dart +++ b/lib/presentation/shared/sliver_page_filter.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import '../../../common/genshin_db_icons.dart'; +import 'genshin_db_icons.dart'; import 'search_box.dart'; class SliverPageFilter extends StatelessWidget { diff --git a/lib/ui/widgets/common/sliver_row_grid.dart b/lib/presentation/shared/sliver_row_grid.dart similarity index 100% rename from lib/ui/widgets/common/sliver_row_grid.dart rename to lib/presentation/shared/sliver_row_grid.dart diff --git a/lib/ui/widgets/common/sliver_scaffold_with_fab.dart b/lib/presentation/shared/sliver_scaffold_with_fab.dart similarity index 95% rename from lib/ui/widgets/common/sliver_scaffold_with_fab.dart rename to lib/presentation/shared/sliver_scaffold_with_fab.dart index 8eaf35392..10d23af5b 100644 --- a/lib/ui/widgets/common/sliver_scaffold_with_fab.dart +++ b/lib/presentation/shared/sliver_scaffold_with_fab.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import '../../../common/extensions/scroll_controller_extensions.dart'; import 'app_fab.dart'; +import 'extensions/scroll_controller_extensions.dart'; class SliverScaffoldWithFab extends StatefulWidget { final List slivers; diff --git a/lib/ui/widgets/common/sort_direction_popupmenu_filter.dart b/lib/presentation/shared/sort_direction_popupmenu_filter.dart similarity index 83% rename from lib/ui/widgets/common/sort_direction_popupmenu_filter.dart rename to lib/presentation/shared/sort_direction_popupmenu_filter.dart index 6f9746f0e..b26b4aafa 100644 --- a/lib/ui/widgets/common/sort_direction_popupmenu_filter.dart +++ b/lib/presentation/shared/sort_direction_popupmenu_filter.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/generated/l10n.dart'; -import '../../../common/enums/sort_direction_type.dart'; -import '../../../common/extensions/i18n_extensions.dart'; -import '../../../generated/l10n.dart'; +import 'extensions/i18n_extensions.dart'; import 'item_popupmenu_filter.dart'; class SortDirectionPopupMenuFilter extends StatelessWidget { diff --git a/lib/common/styles.dart b/lib/presentation/shared/styles.dart similarity index 100% rename from lib/common/styles.dart rename to lib/presentation/shared/styles.dart diff --git a/lib/ui/widgets/common/weapons_button_bar.dart b/lib/presentation/shared/weapons_button_bar.dart similarity index 82% rename from lib/ui/widgets/common/weapons_button_bar.dart rename to lib/presentation/shared/weapons_button_bar.dart index 3e860bf50..2cfbe83a5 100644 --- a/lib/ui/widgets/common/weapons_button_bar.dart +++ b/lib/presentation/shared/weapons_button_bar.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/extensions/weapon_type_extensions.dart'; +import 'package:genshindb/generated/l10n.dart'; -import '../../../common/enums/weapon_type.dart'; -import '../../../common/extensions/i18n_extensions.dart'; -import '../../../common/extensions/weapon_type_extensions.dart'; -import '../../../generated/l10n.dart'; +import 'extensions/i18n_extensions.dart'; class WeaponsButtonBar extends StatelessWidget { final List selectedValues; diff --git a/lib/ui/widgets/common/wrapped_ascention_material.dart b/lib/presentation/shared/wrapped_ascension_material.dart similarity index 85% rename from lib/ui/widgets/common/wrapped_ascention_material.dart rename to lib/presentation/shared/wrapped_ascension_material.dart index 4d26dcd9b..4054fc152 100644 --- a/lib/ui/widgets/common/wrapped_ascention_material.dart +++ b/lib/presentation/shared/wrapped_ascension_material.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; -class WrappedAscentionMaterial extends StatelessWidget { +class WrappedAscensionMaterial extends StatelessWidget { final String image; final int quantity; - const WrappedAscentionMaterial({ + const WrappedAscensionMaterial({ Key key, @required this.image, @required this.quantity, diff --git a/lib/ui/pages/splash_page.dart b/lib/presentation/splash/splash_page.dart similarity index 94% rename from lib/ui/pages/splash_page.dart rename to lib/presentation/splash/splash_page.dart index b279378b3..354612a94 100644 --- a/lib/ui/pages/splash_page.dart +++ b/lib/presentation/splash/splash_page.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; - -import '../../common/assets.dart'; +import 'package:genshindb/domain/assets.dart'; class SplashPage extends StatelessWidget { @override diff --git a/lib/ui/pages/materials_page.dart b/lib/presentation/today_materials/materials_page.dart similarity index 78% rename from lib/ui/pages/materials_page.dart rename to lib/presentation/today_materials/materials_page.dart index 95accc3df..4c2ea16b2 100644 --- a/lib/ui/pages/materials_page.dart +++ b/lib/presentation/today_materials/materials_page.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; -import '../../bloc/bloc.dart'; -import '../../common/styles.dart'; -import '../../generated/l10n.dart'; -import '../widgets/common/loading.dart'; -import '../widgets/materials/sliver_character_ascention_materials.dart'; -import '../widgets/materials/sliver_weapon_ascention_materials.dart'; +import 'widgets/sliver_character_ascension_materials.dart'; +import 'widgets/sliver_weapon_ascension_materials.dart'; class MaterialsPage extends StatelessWidget { @override @@ -33,7 +33,7 @@ class MaterialsPage extends StatelessWidget { ), ), ), - SliverCharacterAscentionMaterials(charAscMaterials: charsMaterials), + SliverCharacterAscensionMaterials(charAscMaterials: charsMaterials), SliverPadding( padding: Styles.edgeInsetAll5, sliver: SliverToBoxAdapter( @@ -43,7 +43,7 @@ class MaterialsPage extends StatelessWidget { ), ), ), - SliverWeaponAscentionMaterials(weaponAscMaterials: weaponMaterials), + SliverWeaponAscensionMaterials(weaponAscMaterials: weaponMaterials), ], ), ), diff --git a/lib/ui/widgets/materials/sliver_character_ascention_materials.dart b/lib/presentation/today_materials/widgets/sliver_character_ascension_materials.dart similarity index 80% rename from lib/ui/widgets/materials/sliver_character_ascention_materials.dart rename to lib/presentation/today_materials/widgets/sliver_character_ascension_materials.dart index 35b06d2e6..7f6ae2268 100644 --- a/lib/ui/widgets/materials/sliver_character_ascention_materials.dart +++ b/lib/presentation/today_materials/widgets/sliver_character_ascension_materials.dart @@ -1,12 +1,11 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/presentation/home/widgets/char_card_ascension_material.dart'; -import '../../../models/home/today_char_ascention_materials_model.dart'; -import '../home/char_card_ascention_material.dart'; +class SliverCharacterAscensionMaterials extends StatelessWidget { + final List charAscMaterials; -class SliverCharacterAscentionMaterials extends StatelessWidget { - final List charAscMaterials; - - const SliverCharacterAscentionMaterials({ + const SliverCharacterAscensionMaterials({ Key key, @required this.charAscMaterials, }) : super(key: key); @@ -15,13 +14,13 @@ class SliverCharacterAscentionMaterials extends StatelessWidget { Widget build(BuildContext context) { final items = charAscMaterials .map((e) => e.isFromBoss - ? CharCardAscentionMaterial.fromBoss( + ? CharCardAscensionMaterial.fromBoss( name: e.name, image: e.image, bossName: e.bossName, charImgs: e.characters, ) - : CharCardAscentionMaterial.fromDays( + : CharCardAscensionMaterial.fromDays( name: e.name, image: e.image, days: e.days, diff --git a/lib/ui/widgets/materials/sliver_weapon_ascention_materials.dart b/lib/presentation/today_materials/widgets/sliver_weapon_ascension_materials.dart similarity index 52% rename from lib/ui/widgets/materials/sliver_weapon_ascention_materials.dart rename to lib/presentation/today_materials/widgets/sliver_weapon_ascension_materials.dart index 4ce9439e7..bac6da94a 100644 --- a/lib/ui/widgets/materials/sliver_weapon_ascention_materials.dart +++ b/lib/presentation/today_materials/widgets/sliver_weapon_ascension_materials.dart @@ -1,13 +1,12 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/presentation/home/widgets/weapon_card_ascension_material.dart'; +import 'package:genshindb/presentation/shared/sliver_row_grid.dart'; -import '../../../models/models.dart'; -import '../common/sliver_row_grid.dart'; -import '../home/weapon_card_ascention_material.dart'; +class SliverWeaponAscensionMaterials extends StatelessWidget { + final List weaponAscMaterials; -class SliverWeaponAscentionMaterials extends StatelessWidget { - final List weaponAscMaterials; - - const SliverWeaponAscentionMaterials({ + const SliverWeaponAscensionMaterials({ Key key, @required this.weaponAscMaterials, }) : super(key: key); @@ -18,7 +17,7 @@ class SliverWeaponAscentionMaterials extends StatelessWidget { itemsCount: weaponAscMaterials.length, builder: (index) { final item = weaponAscMaterials[index]; - return WeaponCardAscentionMaterial( + return WeaponCardAscensionMaterial( name: item.name, image: item.image, days: item.days, diff --git a/lib/ui/pages/weapon_page.dart b/lib/presentation/weapon/weapon_page.dart similarity index 85% rename from lib/ui/pages/weapon_page.dart rename to lib/presentation/weapon/weapon_page.dart index 57d04ac59..6fc9eb56f 100644 --- a/lib/ui/pages/weapon_page.dart +++ b/lib/presentation/weapon/weapon_page.dart @@ -1,22 +1,20 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/circle_character.dart'; +import 'package:genshindb/presentation/shared/extensions/i18n_extensions.dart'; +import 'package:genshindb/presentation/shared/extensions/rarity_extensions.dart'; +import 'package:genshindb/presentation/shared/item_description.dart'; +import 'package:genshindb/presentation/shared/item_description_detail.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; +import 'package:genshindb/presentation/shared/rarity.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; -import '../../bloc/bloc.dart'; -import '../../common/enums/item_location_type.dart'; -import '../../common/enums/stat_type.dart'; -import '../../common/enums/weapon_type.dart'; -import '../../common/extensions/i18n_extensions.dart'; -import '../../common/extensions/rarity_extensions.dart'; -import '../../common/styles.dart'; -import '../../generated/l10n.dart'; -import '../../models/models.dart'; -import '../widgets/common/circle_character.dart'; -import '../widgets/common/item_description.dart'; -import '../widgets/common/item_description_detail.dart'; -import '../widgets/common/loading.dart'; -import '../widgets/common/rarity.dart'; -import '../widgets/weapons/weapon_detail_ascention_materials_card.dart'; -import '../widgets/weapons/weapon_detail_refinements_card.dart'; +import 'widgets/weapon_detail_ascension_materials_card.dart'; +import 'widgets/weapon_detail_refinements_card.dart'; class WeaponPage extends StatelessWidget { final double imageHeight = 320; @@ -44,7 +42,7 @@ class WeaponPage extends StatelessWidget { s.fullImage, context, ), - _buildBottom(s.description, s.rarity, s.ascentionMaterials, s.refinements, s.charImages, context), + _buildBottom(s.description, s.rarity, s.ascensionMaterials, s.refinements, s.charImages, context), ], ), ); @@ -132,7 +130,7 @@ class WeaponPage extends StatelessWidget { Widget _buildBottom( String description, int rarity, - List ascentionMaterials, + List ascensionMaterials, List refinements, List charImgs, BuildContext context, @@ -155,9 +153,9 @@ class WeaponPage extends StatelessWidget { ), textColor: rarity.getRarityColors().last, ), - if (ascentionMaterials.isNotEmpty) - WeaponDetailAscentionMaterialsCard( - ascentionMaterials: ascentionMaterials, + if (ascensionMaterials.isNotEmpty) + WeaponDetailAscensionMaterialsCard( + ascensionMaterials: ascensionMaterials, rarityColor: rarity.getRarityColors().last, ), if (refinements.isNotEmpty) diff --git a/lib/ui/widgets/weapons/weapon_detail_ascention_materials_card.dart b/lib/presentation/weapon/widgets/weapon_detail_ascension_materials_card.dart similarity index 69% rename from lib/ui/widgets/weapons/weapon_detail_ascention_materials_card.dart rename to lib/presentation/weapon/widgets/weapon_detail_ascension_materials_card.dart index 097d20416..b8af08cc6 100644 --- a/lib/ui/widgets/weapons/weapon_detail_ascention_materials_card.dart +++ b/lib/presentation/weapon/widgets/weapon_detail_ascension_materials_card.dart @@ -1,19 +1,18 @@ import 'package:flutter/material.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/item_description_detail.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; +import 'package:genshindb/presentation/shared/wrapped_ascension_material.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../../../models/models.dart'; -import '../common/item_description_detail.dart'; -import '../common/wrapped_ascention_material.dart'; - -class WeaponDetailAscentionMaterialsCard extends StatelessWidget { +class WeaponDetailAscensionMaterialsCard extends StatelessWidget { final Color rarityColor; - final List ascentionMaterials; + final List ascensionMaterials; - const WeaponDetailAscentionMaterialsCard({ + const WeaponDetailAscensionMaterialsCard({ Key key, @required this.rarityColor, - @required this.ascentionMaterials, + @required this.ascensionMaterials, }) : super(key: key); @override @@ -47,16 +46,15 @@ class WeaponDetailAscentionMaterialsCard extends StatelessWidget { ), ], ), - ...ascentionMaterials.map((e) => _buildStatProgressionRow(e)).toList(), + ...ascensionMaterials.map((e) => _buildStatProgressionRow(e)).toList(), ], ), ); return ItemDescriptionDetail(title: s.ascensionMaterials, body: body, textColor: rarityColor); } - TableRow _buildStatProgressionRow(WeaponFileAscentionMaterial model) { - final materials = - model.materials.map((m) => WrappedAscentionMaterial(image: m.fullImagePath, quantity: m.quantity)).toList(); + TableRow _buildStatProgressionRow(WeaponFileAscensionMaterial model) { + final materials = model.materials.map((m) => WrappedAscensionMaterial(image: m.fullImagePath, quantity: m.quantity)).toList(); return TableRow(children: [ TableCell( verticalAlignment: TableCellVerticalAlignment.middle, diff --git a/lib/ui/widgets/weapons/weapon_detail_refinements_card.dart b/lib/presentation/weapon/widgets/weapon_detail_refinements_card.dart similarity index 90% rename from lib/ui/widgets/weapons/weapon_detail_refinements_card.dart rename to lib/presentation/weapon/widgets/weapon_detail_refinements_card.dart index 4c83a209e..debd5bd93 100644 --- a/lib/ui/widgets/weapons/weapon_detail_refinements_card.dart +++ b/lib/presentation/weapon/widgets/weapon_detail_refinements_card.dart @@ -1,9 +1,8 @@ import 'package:flutter/material.dart'; - -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../../../models/weapons/weapon_file_refinement_model.dart'; -import '../common/item_description_detail.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/item_description_detail.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; class WeaponDetailRefinementsCard extends StatelessWidget { final Color rarityColor; diff --git a/lib/ui/pages/weapons_page.dart b/lib/presentation/weapons/weapons_page.dart similarity index 83% rename from lib/ui/pages/weapons_page.dart rename to lib/presentation/weapons/weapons_page.dart index a56361864..93180e310 100644 --- a/lib/ui/pages/weapons_page.dart +++ b/lib/presentation/weapons/weapons_page.dart @@ -1,18 +1,17 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/models/models.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; +import 'package:genshindb/presentation/shared/sliver_nothing_found.dart'; +import 'package:genshindb/presentation/shared/sliver_page_filter.dart'; +import 'package:genshindb/presentation/shared/sliver_scaffold_with_fab.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; -import '../../bloc/bloc.dart'; -import '../../common/styles.dart'; -import '../../generated/l10n.dart'; -import '../../models/models.dart'; -import '../../models/weapons/weapon_card_model.dart'; -import '../widgets/common/loading.dart'; -import '../widgets/common/sliver_nothing_found.dart'; -import '../widgets/common/sliver_page_filter.dart'; -import '../widgets/common/sliver_scaffold_with_fab.dart'; -import '../widgets/weapons/weapon_bottom_sheet.dart'; -import '../widgets/weapons/weapon_card.dart'; +import 'widgets/weapon_bottom_sheet.dart'; +import 'widgets/weapon_card.dart'; class WeaponsPage extends StatefulWidget { final bool isInSelectionMode; diff --git a/lib/ui/widgets/weapons/weapon_bottom_sheet.dart b/lib/presentation/weapons/widgets/weapon_bottom_sheet.dart similarity index 79% rename from lib/ui/widgets/weapons/weapon_bottom_sheet.dart rename to lib/presentation/weapons/widgets/weapon_bottom_sheet.dart index be07c9c26..5e1d32fa0 100644 --- a/lib/ui/widgets/weapons/weapon_bottom_sheet.dart +++ b/lib/presentation/weapons/widgets/weapon_bottom_sheet.dart @@ -1,18 +1,16 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; - -import '../../../bloc/bloc.dart'; -import '../../../common/enums/stat_type.dart'; -import '../../../common/enums/weapon_filter_type.dart'; -import '../../../common/extensions/i18n_extensions.dart'; -import '../../../common/genshin_db_icons.dart'; -import '../../../generated/l10n.dart'; -import '../common/common_bottom_sheet.dart'; -import '../common/item_popupmenu_filter.dart'; -import '../common/loading.dart'; -import '../common/rarity_rating.dart'; -import '../common/sort_direction_popupmenu_filter.dart'; -import '../common/weapons_button_bar.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/common_bottom_sheet.dart'; +import 'package:genshindb/presentation/shared/extensions/i18n_extensions.dart'; +import 'package:genshindb/presentation/shared/genshin_db_icons.dart'; +import 'package:genshindb/presentation/shared/item_popupmenu_filter.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; +import 'package:genshindb/presentation/shared/rarity_rating.dart'; +import 'package:genshindb/presentation/shared/sort_direction_popupmenu_filter.dart'; +import 'package:genshindb/presentation/shared/weapons_button_bar.dart'; class WeaponBottomSheet extends StatelessWidget { @override diff --git a/lib/ui/widgets/weapons/weapon_card.dart b/lib/presentation/weapons/widgets/weapon_card.dart similarity index 87% rename from lib/ui/widgets/weapons/weapon_card.dart rename to lib/presentation/weapons/widgets/weapon_card.dart index c18bbf6a4..56120b95c 100644 --- a/lib/ui/widgets/weapons/weapon_card.dart +++ b/lib/presentation/weapons/widgets/weapon_card.dart @@ -2,20 +2,18 @@ import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/domain/enums/enums.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/extensions/i18n_extensions.dart'; +import 'package:genshindb/presentation/shared/extensions/rarity_extensions.dart'; +import 'package:genshindb/presentation/shared/gradient_card.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; +import 'package:genshindb/presentation/shared/rarity.dart'; +import 'package:genshindb/presentation/shared/styles.dart'; +import 'package:genshindb/presentation/weapon/weapon_page.dart'; import 'package:transparent_image/transparent_image.dart'; -import '../../../bloc/bloc.dart'; -import '../../../common/enums/stat_type.dart'; -import '../../../common/enums/weapon_type.dart'; -import '../../../common/extensions/i18n_extensions.dart'; -import '../../../common/extensions/rarity_extensions.dart'; -import '../../../common/styles.dart'; -import '../../../generated/l10n.dart'; -import '../../pages/weapon_page.dart'; -import '../common/gradient_card.dart'; -import '../common/loading.dart'; -import '../common/rarity.dart'; - class WeaponCard extends StatelessWidget { final String keyName; final String image; diff --git a/lib/ui/pages/wish_simulator_page.dart b/lib/presentation/wish_simulator/wish_simulator_page.dart similarity index 87% rename from lib/ui/pages/wish_simulator_page.dart rename to lib/presentation/wish_simulator/wish_simulator_page.dart index 1f30797f3..efbf74c0a 100644 --- a/lib/ui/pages/wish_simulator_page.dart +++ b/lib/presentation/wish_simulator/wish_simulator_page.dart @@ -1,11 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_webview_plugin/flutter_webview_plugin.dart'; - -import '../../bloc/bloc.dart'; -import '../../generated/l10n.dart'; -import '../widgets/common/loading.dart'; -import '../widgets/common/page_message.dart'; +import 'package:genshindb/application/bloc.dart'; +import 'package:genshindb/generated/l10n.dart'; +import 'package:genshindb/presentation/shared/loading.dart'; +import 'package:genshindb/presentation/shared/page_message.dart'; class WishSimulatorPage extends StatefulWidget { @override diff --git a/lib/telemetry.dart b/lib/telemetry.dart deleted file mode 100644 index fda35ec87..000000000 --- a/lib/telemetry.dart +++ /dev/null @@ -1,62 +0,0 @@ -import 'flutter_appcenter_bundle.dart'; -import 'secrets.dart'; - -//Only call this function from the main.dart -Future initTelemetry() async { - await AppCenter.startAsync(appSecretAndroid: Secrets.appCenterKey, appSecretIOS: ''); -} - -Future trackEventAsync(String name, [Map properties]) { - return AppCenter.trackEventAsync(name, properties); -} - -Future trackCharacterLoaded( - String value, { - bool loadedFromName = true, -}) async { - if (loadedFromName) { - await trackEventAsync('Character-FromName', {'Name': value}); - } else { - await trackEventAsync('Character-FromImg', {'Image': value}); - } -} - -Future trackWeaponLoaded( - String value, { - bool loadedFromName = true, -}) async { - if (loadedFromName) { - await trackEventAsync('Weapon-FromName', {'Name': value}); - } else { - await trackEventAsync('Weapon-FromImg', {'Image': value}); - } -} - -Future trackArtifactLoaded( - String value, { - bool loadedFromName = true, -}) async { - if (loadedFromName) { - await trackEventAsync('Artifact-FromName', {'Name': value}); - } else { - await trackEventAsync('Artifact-FromImg', {'Image': value}); - } -} - -Future trackAscentionMaterialsOpened() async { - await trackEventAsync('AscentionMaterials-Opened'); -} - -Future trackUrlOpened(bool loadMap, bool loadWishSimulator, bool networkAvailable) async { - await trackEventAsync('Url-Opened', { - 'Map': loadMap.toString(), - 'WishSimulator': loadWishSimulator.toString(), - 'NetworkAvailable': networkAvailable.toString(), - }); -} - -Future trackCalculatorItemAscMaterialLoaded(String item) async { - await trackEventAsync('Calculator-Asc-Mat', { - 'Name': item, - }); -}