diff --git a/lib/modules/browse/browse_screen.dart b/lib/modules/browse/browse_screen.dart index ce4b2e32..7485c2bf 100644 --- a/lib/modules/browse/browse_screen.dart +++ b/lib/modules/browse/browse_screen.dart @@ -178,8 +178,8 @@ class _BrowseScreenState extends ConsumerState children: [ Text( isExt - ? localizedExtensions(type, l10n) - : localizedSources(type, l10n), + ? type.localizedExtensions(l10n) + : type.localizedSources(l10n), ), if (isExt) ...[ const SizedBox(width: 8), diff --git a/lib/modules/more/categories/categories_screen.dart b/lib/modules/more/categories/categories_screen.dart index bc4458f7..c0048b28 100644 --- a/lib/modules/more/categories/categories_screen.dart +++ b/lib/modules/more/categories/categories_screen.dart @@ -11,6 +11,7 @@ import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_pr import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart'; import 'package:mangayomi/modules/widgets/progress_center.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; +import 'package:mangayomi/utils/item_type_filters.dart'; import 'package:mangayomi/utils/item_type_localization.dart'; import 'package:super_sliver_list/super_sliver_list.dart'; @@ -30,11 +31,7 @@ class _CategoriesScreenState extends ConsumerState void initState() { super.initState(); final hideItems = ref.read(hideItemsStateProvider); - _visibleTabTypes = [ - if (!hideItems.contains("/MangaLibrary")) ItemType.manga, - if (!hideItems.contains("/AnimeLibrary")) ItemType.anime, - if (!hideItems.contains("/NovelLibrary")) ItemType.novel, - ]; + _visibleTabTypes = hiddenItemTypes(hideItems); _tabBarController = TabController( length: _visibleTabTypes.length, vsync: this, @@ -72,7 +69,7 @@ class _CategoriesScreenState extends ConsumerState indicatorSize: TabBarIndicatorSize.label, controller: _tabBarController, tabs: _visibleTabTypes.map((type) { - return Tab(text: localizedItemType(type, l10n)); + return Tab(text: type.localized(l10n)); }).toList(), ), ), diff --git a/lib/modules/more/statistics/statistics_screen.dart b/lib/modules/more/statistics/statistics_screen.dart index 461da26c..7c7de8f8 100644 --- a/lib/modules/more/statistics/statistics_screen.dart +++ b/lib/modules/more/statistics/statistics_screen.dart @@ -5,6 +5,7 @@ import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_pr import 'package:mangayomi/modules/more/statistics/statistics_provider.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; +import 'package:mangayomi/utils/item_type_filters.dart'; import 'package:mangayomi/utils/item_type_localization.dart'; class StatisticsScreen extends ConsumerStatefulWidget { @@ -24,11 +25,7 @@ class _StatisticsScreenState extends ConsumerState void initState() { super.initState(); hideItems = ref.read(hideItemsStateProvider); - _visibleTabTypes = [ - if (!hideItems.contains("/MangaLibrary")) ItemType.manga, - if (!hideItems.contains("/AnimeLibrary")) ItemType.anime, - if (!hideItems.contains("/NovelLibrary")) ItemType.novel, - ]; + _visibleTabTypes = hiddenItemTypes(hideItems); _tabController = TabController( length: _visibleTabTypes.length, vsync: this, @@ -56,7 +53,7 @@ class _StatisticsScreenState extends ConsumerState bottom: TabBar( controller: _tabController, tabs: _visibleTabTypes.map((type) { - return Tab(text: localizedItemType(type, l10n)); + return Tab(text: type.localized(l10n)); }).toList(), ), ), diff --git a/lib/modules/widgets/base_library_tab_screen.dart b/lib/modules/widgets/base_library_tab_screen.dart index 853306cf..dbb75d3d 100644 --- a/lib/modules/widgets/base_library_tab_screen.dart +++ b/lib/modules/widgets/base_library_tab_screen.dart @@ -4,6 +4,7 @@ import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/modules/library/widgets/search_text_form_field.dart'; import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_provider.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; +import 'package:mangayomi/utils/item_type_filters.dart'; import 'package:mangayomi/utils/item_type_localization.dart'; abstract class BaseLibraryTabScreenState @@ -34,11 +35,7 @@ abstract class BaseLibraryTabScreenState super.initState(); hideItems = ref.read(hideItemsStateProvider); - visibleTabTypes = [ - if (!hideItems.contains("/MangaLibrary")) ItemType.manga, - if (!hideItems.contains("/AnimeLibrary")) ItemType.anime, - if (!hideItems.contains("/NovelLibrary")) ItemType.novel, - ]; + visibleTabTypes = hiddenItemTypes(hideItems); tabController = TabController(length: visibleTabTypes.length, vsync: this); @@ -94,7 +91,7 @@ abstract class BaseLibraryTabScreenState controller: tabController, indicatorSize: TabBarIndicatorSize.tab, tabs: visibleTabTypes.map((type) { - return buildTabLabel(type, localizedItemType(type, l10n)); + return buildTabLabel(type, type.localized(l10n)); }).toList(), ), ), diff --git a/lib/utils/item_type_filters.dart b/lib/utils/item_type_filters.dart new file mode 100644 index 00000000..2db0d9c4 --- /dev/null +++ b/lib/utils/item_type_filters.dart @@ -0,0 +1,9 @@ +import 'package:mangayomi/models/manga.dart'; + +List hiddenItemTypes(List hideItems) { + return [ + if (!hideItems.contains("/MangaLibrary")) ItemType.manga, + if (!hideItems.contains("/AnimeLibrary")) ItemType.anime, + if (!hideItems.contains("/NovelLibrary")) ItemType.novel, + ]; +} diff --git a/lib/utils/item_type_localization.dart b/lib/utils/item_type_localization.dart index 3e6569b4..7b122a46 100644 --- a/lib/utils/item_type_localization.dart +++ b/lib/utils/item_type_localization.dart @@ -1,35 +1,37 @@ import 'package:mangayomi/l10n/generated/app_localizations.dart'; import 'package:mangayomi/models/manga.dart'; -String localizedItemType(ItemType type, AppLocalizations l10n) { - switch (type) { - case ItemType.manga: - return l10n.manga; - case ItemType.anime: - return l10n.anime; - case ItemType.novel: - return l10n.novel; +extension ItemTypeLocalization on ItemType { + String localized(AppLocalizations l10n) { + switch (this) { + case ItemType.manga: + return l10n.manga; + case ItemType.anime: + return l10n.anime; + case ItemType.novel: + return l10n.novel; + } } -} -String localizedSources(ItemType type, AppLocalizations l10n) { - switch (type) { - case ItemType.manga: - return l10n.manga_sources; - case ItemType.anime: - return l10n.anime_sources; - case ItemType.novel: - return l10n.novel_sources; + String localizedSources(AppLocalizations l10n) { + switch (this) { + case ItemType.manga: + return l10n.manga_sources; + case ItemType.anime: + return l10n.anime_sources; + case ItemType.novel: + return l10n.novel_sources; + } } -} -String localizedExtensions(ItemType type, AppLocalizations l10n) { - switch (type) { - case ItemType.manga: - return l10n.manga_extensions; - case ItemType.anime: - return l10n.anime_extensions; - case ItemType.novel: - return l10n.novel_extensions; + String localizedExtensions(AppLocalizations l10n) { + switch (this) { + case ItemType.manga: + return l10n.manga_extensions; + case ItemType.anime: + return l10n.anime_extensions; + case ItemType.novel: + return l10n.novel_extensions; + } } }