diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 6f89b54e..58a2193b 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -479,5 +479,6 @@ "track_library_add_confirm": "Add tracked item to local library", "track_library_not_logged": "Login to the corresponding tracker to use this feature!", "track_library_switch": "Switch to another tracker", - "go_back": "Go back" + "go_back": "Go back", + "merge_library_nav_mobile": "Merge library navigation on mobile" } \ No newline at end of file diff --git a/lib/l10n/generated/app_localizations.dart b/lib/l10n/generated/app_localizations.dart index d07bfab9..73e07769 100644 --- a/lib/l10n/generated/app_localizations.dart +++ b/lib/l10n/generated/app_localizations.dart @@ -2999,6 +2999,12 @@ abstract class AppLocalizations { /// In en, this message translates to: /// **'Go back'** String get go_back; + + /// No description provided for @merge_library_nav_mobile. + /// + /// In en, this message translates to: + /// **'Merge library navigation on mobile'** + String get merge_library_nav_mobile; } class _AppLocalizationsDelegate diff --git a/lib/l10n/generated/app_localizations_ar.dart b/lib/l10n/generated/app_localizations_ar.dart index d3b7a566..55082870 100644 --- a/lib/l10n/generated/app_localizations_ar.dart +++ b/lib/l10n/generated/app_localizations_ar.dart @@ -1533,4 +1533,7 @@ class AppLocalizationsAr extends AppLocalizations { @override String get go_back => 'Go back'; + + @override + String get merge_library_nav_mobile => 'Merge library navigation on mobile'; } diff --git a/lib/l10n/generated/app_localizations_de.dart b/lib/l10n/generated/app_localizations_de.dart index dadf8ba4..3f956b1b 100644 --- a/lib/l10n/generated/app_localizations_de.dart +++ b/lib/l10n/generated/app_localizations_de.dart @@ -1546,4 +1546,7 @@ class AppLocalizationsDe extends AppLocalizations { @override String get go_back => 'Zurück'; + + @override + String get merge_library_nav_mobile => 'Merge library navigation on mobile'; } diff --git a/lib/l10n/generated/app_localizations_en.dart b/lib/l10n/generated/app_localizations_en.dart index ef7a7591..7fbe2f08 100644 --- a/lib/l10n/generated/app_localizations_en.dart +++ b/lib/l10n/generated/app_localizations_en.dart @@ -1533,4 +1533,7 @@ class AppLocalizationsEn extends AppLocalizations { @override String get go_back => 'Go back'; + + @override + String get merge_library_nav_mobile => 'Merge library navigation on mobile'; } diff --git a/lib/l10n/generated/app_localizations_es.dart b/lib/l10n/generated/app_localizations_es.dart index 4c7abefc..0ea18267 100644 --- a/lib/l10n/generated/app_localizations_es.dart +++ b/lib/l10n/generated/app_localizations_es.dart @@ -1550,6 +1550,9 @@ class AppLocalizationsEs extends AppLocalizations { @override String get go_back => 'Go back'; + + @override + String get merge_library_nav_mobile => 'Merge library navigation on mobile'; } /// The translations for Spanish Castilian, as used in Latin America and the Caribbean (`es_419`). diff --git a/lib/l10n/generated/app_localizations_fr.dart b/lib/l10n/generated/app_localizations_fr.dart index 722307ab..dc64d30b 100644 --- a/lib/l10n/generated/app_localizations_fr.dart +++ b/lib/l10n/generated/app_localizations_fr.dart @@ -1555,4 +1555,7 @@ class AppLocalizationsFr extends AppLocalizations { @override String get go_back => 'Go back'; + + @override + String get merge_library_nav_mobile => 'Merge library navigation on mobile'; } diff --git a/lib/l10n/generated/app_localizations_id.dart b/lib/l10n/generated/app_localizations_id.dart index 738bedb7..394d187d 100644 --- a/lib/l10n/generated/app_localizations_id.dart +++ b/lib/l10n/generated/app_localizations_id.dart @@ -1539,4 +1539,7 @@ class AppLocalizationsId extends AppLocalizations { @override String get go_back => 'Go back'; + + @override + String get merge_library_nav_mobile => 'Merge library navigation on mobile'; } diff --git a/lib/l10n/generated/app_localizations_it.dart b/lib/l10n/generated/app_localizations_it.dart index e4971289..f36da676 100644 --- a/lib/l10n/generated/app_localizations_it.dart +++ b/lib/l10n/generated/app_localizations_it.dart @@ -1549,4 +1549,7 @@ class AppLocalizationsIt extends AppLocalizations { @override String get go_back => 'Go back'; + + @override + String get merge_library_nav_mobile => 'Merge library navigation on mobile'; } diff --git a/lib/l10n/generated/app_localizations_pt.dart b/lib/l10n/generated/app_localizations_pt.dart index a73da1d8..8b9201e9 100644 --- a/lib/l10n/generated/app_localizations_pt.dart +++ b/lib/l10n/generated/app_localizations_pt.dart @@ -1547,6 +1547,9 @@ class AppLocalizationsPt extends AppLocalizations { @override String get go_back => 'Go back'; + + @override + String get merge_library_nav_mobile => 'Merge library navigation on mobile'; } /// The translations for Portuguese, as used in Brazil (`pt_BR`). diff --git a/lib/l10n/generated/app_localizations_ru.dart b/lib/l10n/generated/app_localizations_ru.dart index 4d063d66..5b5643cf 100644 --- a/lib/l10n/generated/app_localizations_ru.dart +++ b/lib/l10n/generated/app_localizations_ru.dart @@ -1549,4 +1549,7 @@ class AppLocalizationsRu extends AppLocalizations { @override String get go_back => 'Go back'; + + @override + String get merge_library_nav_mobile => 'Merge library navigation on mobile'; } diff --git a/lib/l10n/generated/app_localizations_th.dart b/lib/l10n/generated/app_localizations_th.dart index 69c85bcb..60ab0bb1 100644 --- a/lib/l10n/generated/app_localizations_th.dart +++ b/lib/l10n/generated/app_localizations_th.dart @@ -1534,4 +1534,7 @@ class AppLocalizationsTh extends AppLocalizations { @override String get go_back => 'Go back'; + + @override + String get merge_library_nav_mobile => 'Merge library navigation on mobile'; } diff --git a/lib/l10n/generated/app_localizations_tr.dart b/lib/l10n/generated/app_localizations_tr.dart index 7fcae261..bbfa5e96 100644 --- a/lib/l10n/generated/app_localizations_tr.dart +++ b/lib/l10n/generated/app_localizations_tr.dart @@ -1540,4 +1540,7 @@ class AppLocalizationsTr extends AppLocalizations { @override String get go_back => 'Go back'; + + @override + String get merge_library_nav_mobile => 'Merge library navigation on mobile'; } diff --git a/lib/l10n/generated/app_localizations_zh.dart b/lib/l10n/generated/app_localizations_zh.dart index d0cee9e6..92f964ec 100644 --- a/lib/l10n/generated/app_localizations_zh.dart +++ b/lib/l10n/generated/app_localizations_zh.dart @@ -1502,4 +1502,7 @@ class AppLocalizationsZh extends AppLocalizations { @override String get go_back => 'Go back'; + + @override + String get merge_library_nav_mobile => 'Merge library navigation on mobile'; } diff --git a/lib/models/settings.dart b/lib/models/settings.dart index b3d77a45..bd7dd4d0 100644 --- a/lib/models/settings.dart +++ b/lib/models/settings.dart @@ -244,6 +244,8 @@ class Settings { String? lastTrackerLibraryLocation; + bool? mergeLibraryNavMobile; + Settings({ this.id = 227, this.displayType = DisplayType.compactGrid, @@ -352,6 +354,7 @@ class Settings { this.animeExtensionsRepo, this.novelExtensionsRepo, this.lastTrackerLibraryLocation, + this.mergeLibraryNavMobile = false, }); Settings.fromJson(Map json) { @@ -566,6 +569,7 @@ class Settings { .toList(); } lastTrackerLibraryLocation = json['lastTrackerLibraryLocation']; + mergeLibraryNavMobile = json['mergeLibraryNavMobile']; } Map toJson() => { @@ -697,6 +701,7 @@ class Settings { 'animeExtensionsRepo': animeExtensionsRepo?.map((e) => e.toJson()).toList(), 'novelExtensionsRepo': novelExtensionsRepo?.map((e) => e.toJson()).toList(), 'lastTrackerLibraryLocation': lastTrackerLibraryLocation, + 'mergeLibraryNavMobile': mergeLibraryNavMobile, }; } diff --git a/lib/models/settings.g.dart b/lib/models/settings.g.dart index f711cdb0..bf2fc53e 100644 --- a/lib/models/settings.g.dart +++ b/lib/models/settings.g.dart @@ -437,174 +437,179 @@ const SettingsSchema = CollectionSchema( name: r'markEpisodeAsSeenType', type: IsarType.long, ), - r'navigationOrder': PropertySchema( + r'mergeLibraryNavMobile': PropertySchema( id: 80, + name: r'mergeLibraryNavMobile', + type: IsarType.bool, + ), + r'navigationOrder': PropertySchema( + id: 81, name: r'navigationOrder', type: IsarType.stringList, ), r'novelDisplayType': PropertySchema( - id: 81, + id: 82, name: r'novelDisplayType', type: IsarType.byte, enumMap: _SettingsnovelDisplayTypeEnumValueMap, ), r'novelExtensionsRepo': PropertySchema( - id: 82, + id: 83, name: r'novelExtensionsRepo', type: IsarType.objectList, target: r'Repo', ), r'novelFontSize': PropertySchema( - id: 83, + id: 84, name: r'novelFontSize', type: IsarType.long, ), r'novelGridSize': PropertySchema( - id: 84, + id: 85, name: r'novelGridSize', type: IsarType.long, ), r'novelLibraryDownloadedChapters': PropertySchema( - id: 85, + id: 86, name: r'novelLibraryDownloadedChapters', type: IsarType.bool, ), r'novelLibraryLocalSource': PropertySchema( - id: 86, + id: 87, name: r'novelLibraryLocalSource', type: IsarType.bool, ), r'novelLibraryShowCategoryTabs': PropertySchema( - id: 87, + id: 88, name: r'novelLibraryShowCategoryTabs', type: IsarType.bool, ), r'novelLibraryShowContinueReadingButton': PropertySchema( - id: 88, + id: 89, name: r'novelLibraryShowContinueReadingButton', type: IsarType.bool, ), r'novelLibraryShowLanguage': PropertySchema( - id: 89, + id: 90, name: r'novelLibraryShowLanguage', type: IsarType.bool, ), r'novelLibraryShowNumbersOfItems': PropertySchema( - id: 90, + id: 91, name: r'novelLibraryShowNumbersOfItems', type: IsarType.bool, ), r'novelTextAlign': PropertySchema( - id: 91, + id: 92, name: r'novelTextAlign', type: IsarType.byte, enumMap: _SettingsnovelTextAlignEnumValueMap, ), r'onlyIncludePinnedSources': PropertySchema( - id: 92, + id: 93, name: r'onlyIncludePinnedSources', type: IsarType.bool, ), r'pagePreloadAmount': PropertySchema( - id: 93, + id: 94, name: r'pagePreloadAmount', type: IsarType.long, ), r'personalPageModeList': PropertySchema( - id: 94, + id: 95, name: r'personalPageModeList', type: IsarType.objectList, target: r'PersonalPageMode', ), r'personalReaderModeList': PropertySchema( - id: 95, + id: 96, name: r'personalReaderModeList', type: IsarType.objectList, target: r'PersonalReaderMode', ), r'playerSubtitleSettings': PropertySchema( - id: 96, + id: 97, name: r'playerSubtitleSettings', type: IsarType.object, target: r'PlayerSubtitleSettings', ), r'pureBlackDarkMode': PropertySchema( - id: 97, + id: 98, name: r'pureBlackDarkMode', type: IsarType.bool, ), r'relativeTimesTamps': PropertySchema( - id: 98, + id: 99, name: r'relativeTimesTamps', type: IsarType.long, ), r'saveAsCBZArchive': PropertySchema( - id: 99, + id: 100, name: r'saveAsCBZArchive', type: IsarType.bool, ), r'scaleType': PropertySchema( - id: 100, + id: 101, name: r'scaleType', type: IsarType.byte, enumMap: _SettingsscaleTypeEnumValueMap, ), r'showPagesNumber': PropertySchema( - id: 101, + id: 102, name: r'showPagesNumber', type: IsarType.bool, ), r'sortChapterList': PropertySchema( - id: 102, + id: 103, name: r'sortChapterList', type: IsarType.objectList, target: r'SortChapter', ), r'sortLibraryAnime': PropertySchema( - id: 103, + id: 104, name: r'sortLibraryAnime', type: IsarType.object, target: r'SortLibraryManga', ), r'sortLibraryManga': PropertySchema( - id: 104, + id: 105, name: r'sortLibraryManga', type: IsarType.object, target: r'SortLibraryManga', ), r'sortLibraryNovel': PropertySchema( - id: 105, + id: 106, name: r'sortLibraryNovel', type: IsarType.object, target: r'SortLibraryManga', ), r'startDatebackup': PropertySchema( - id: 106, + id: 107, name: r'startDatebackup', type: IsarType.long, ), r'themeIsDark': PropertySchema( - id: 107, + id: 108, name: r'themeIsDark', type: IsarType.bool, ), r'updateProgressAfterReading': PropertySchema( - id: 108, + id: 109, name: r'updateProgressAfterReading', type: IsarType.bool, ), r'useLibass': PropertySchema( - id: 109, + id: 110, name: r'useLibass', type: IsarType.bool, ), r'usePageTapZones': PropertySchema( - id: 110, + id: 111, name: r'usePageTapZones', type: IsarType.bool, ), r'userAgent': PropertySchema( - id: 111, + id: 112, name: r'userAgent', type: IsarType.string, ) @@ -1133,78 +1138,79 @@ void _settingsSerialize( writer.writeLong(offsets[77], object.mangaGridSize); writer.writeByte(offsets[78], object.mangaHomeDisplayType.index); writer.writeLong(offsets[79], object.markEpisodeAsSeenType); - writer.writeStringList(offsets[80], object.navigationOrder); - writer.writeByte(offsets[81], object.novelDisplayType.index); + writer.writeBool(offsets[80], object.mergeLibraryNavMobile); + writer.writeStringList(offsets[81], object.navigationOrder); + writer.writeByte(offsets[82], object.novelDisplayType.index); writer.writeObjectList( - offsets[82], + offsets[83], allOffsets, RepoSchema.serialize, object.novelExtensionsRepo, ); - writer.writeLong(offsets[83], object.novelFontSize); - writer.writeLong(offsets[84], object.novelGridSize); - writer.writeBool(offsets[85], object.novelLibraryDownloadedChapters); - writer.writeBool(offsets[86], object.novelLibraryLocalSource); - writer.writeBool(offsets[87], object.novelLibraryShowCategoryTabs); - writer.writeBool(offsets[88], object.novelLibraryShowContinueReadingButton); - writer.writeBool(offsets[89], object.novelLibraryShowLanguage); - writer.writeBool(offsets[90], object.novelLibraryShowNumbersOfItems); - writer.writeByte(offsets[91], object.novelTextAlign.index); - writer.writeBool(offsets[92], object.onlyIncludePinnedSources); - writer.writeLong(offsets[93], object.pagePreloadAmount); + writer.writeLong(offsets[84], object.novelFontSize); + writer.writeLong(offsets[85], object.novelGridSize); + writer.writeBool(offsets[86], object.novelLibraryDownloadedChapters); + writer.writeBool(offsets[87], object.novelLibraryLocalSource); + writer.writeBool(offsets[88], object.novelLibraryShowCategoryTabs); + writer.writeBool(offsets[89], object.novelLibraryShowContinueReadingButton); + writer.writeBool(offsets[90], object.novelLibraryShowLanguage); + writer.writeBool(offsets[91], object.novelLibraryShowNumbersOfItems); + writer.writeByte(offsets[92], object.novelTextAlign.index); + writer.writeBool(offsets[93], object.onlyIncludePinnedSources); + writer.writeLong(offsets[94], object.pagePreloadAmount); writer.writeObjectList( - offsets[94], + offsets[95], allOffsets, PersonalPageModeSchema.serialize, object.personalPageModeList, ); writer.writeObjectList( - offsets[95], + offsets[96], allOffsets, PersonalReaderModeSchema.serialize, object.personalReaderModeList, ); writer.writeObject( - offsets[96], + offsets[97], allOffsets, PlayerSubtitleSettingsSchema.serialize, object.playerSubtitleSettings, ); - writer.writeBool(offsets[97], object.pureBlackDarkMode); - writer.writeLong(offsets[98], object.relativeTimesTamps); - writer.writeBool(offsets[99], object.saveAsCBZArchive); - writer.writeByte(offsets[100], object.scaleType.index); - writer.writeBool(offsets[101], object.showPagesNumber); + writer.writeBool(offsets[98], object.pureBlackDarkMode); + writer.writeLong(offsets[99], object.relativeTimesTamps); + writer.writeBool(offsets[100], object.saveAsCBZArchive); + writer.writeByte(offsets[101], object.scaleType.index); + writer.writeBool(offsets[102], object.showPagesNumber); writer.writeObjectList( - offsets[102], + offsets[103], allOffsets, SortChapterSchema.serialize, object.sortChapterList, ); writer.writeObject( - offsets[103], + offsets[104], allOffsets, SortLibraryMangaSchema.serialize, object.sortLibraryAnime, ); writer.writeObject( - offsets[104], + offsets[105], allOffsets, SortLibraryMangaSchema.serialize, object.sortLibraryManga, ); writer.writeObject( - offsets[105], + offsets[106], allOffsets, SortLibraryMangaSchema.serialize, object.sortLibraryNovel, ); - writer.writeLong(offsets[106], object.startDatebackup); - writer.writeBool(offsets[107], object.themeIsDark); - writer.writeBool(offsets[108], object.updateProgressAfterReading); - writer.writeBool(offsets[109], object.useLibass); - writer.writeBool(offsets[110], object.usePageTapZones); - writer.writeString(offsets[111], object.userAgent); + writer.writeLong(offsets[107], object.startDatebackup); + writer.writeBool(offsets[108], object.themeIsDark); + writer.writeBool(offsets[109], object.updateProgressAfterReading); + writer.writeBool(offsets[110], object.useLibass); + writer.writeBool(offsets[111], object.usePageTapZones); + writer.writeString(offsets[112], object.userAgent); } Settings _settingsDeserialize( @@ -1343,79 +1349,80 @@ Settings _settingsDeserialize( reader.readByteOrNull(offsets[78])] ?? DisplayType.comfortableGrid, markEpisodeAsSeenType: reader.readLongOrNull(offsets[79]), - navigationOrder: reader.readStringList(offsets[80]), + mergeLibraryNavMobile: reader.readBoolOrNull(offsets[80]), + navigationOrder: reader.readStringList(offsets[81]), novelDisplayType: _SettingsnovelDisplayTypeValueEnumMap[ - reader.readByteOrNull(offsets[81])] ?? + reader.readByteOrNull(offsets[82])] ?? DisplayType.comfortableGrid, novelExtensionsRepo: reader.readObjectList( - offsets[82], + offsets[83], RepoSchema.deserialize, allOffsets, Repo(), ), - novelFontSize: reader.readLongOrNull(offsets[83]), - novelLibraryDownloadedChapters: reader.readBoolOrNull(offsets[85]), - novelLibraryLocalSource: reader.readBoolOrNull(offsets[86]), - novelLibraryShowCategoryTabs: reader.readBoolOrNull(offsets[87]), - novelLibraryShowContinueReadingButton: reader.readBoolOrNull(offsets[88]), - novelLibraryShowLanguage: reader.readBoolOrNull(offsets[89]), - novelLibraryShowNumbersOfItems: reader.readBoolOrNull(offsets[90]), + novelFontSize: reader.readLongOrNull(offsets[84]), + novelLibraryDownloadedChapters: reader.readBoolOrNull(offsets[86]), + novelLibraryLocalSource: reader.readBoolOrNull(offsets[87]), + novelLibraryShowCategoryTabs: reader.readBoolOrNull(offsets[88]), + novelLibraryShowContinueReadingButton: reader.readBoolOrNull(offsets[89]), + novelLibraryShowLanguage: reader.readBoolOrNull(offsets[90]), + novelLibraryShowNumbersOfItems: reader.readBoolOrNull(offsets[91]), novelTextAlign: _SettingsnovelTextAlignValueEnumMap[ - reader.readByteOrNull(offsets[91])] ?? + reader.readByteOrNull(offsets[92])] ?? NovelTextAlign.left, - onlyIncludePinnedSources: reader.readBoolOrNull(offsets[92]), - pagePreloadAmount: reader.readLongOrNull(offsets[93]), + onlyIncludePinnedSources: reader.readBoolOrNull(offsets[93]), + pagePreloadAmount: reader.readLongOrNull(offsets[94]), personalPageModeList: reader.readObjectList( - offsets[94], + offsets[95], PersonalPageModeSchema.deserialize, allOffsets, PersonalPageMode(), ), personalReaderModeList: reader.readObjectList( - offsets[95], + offsets[96], PersonalReaderModeSchema.deserialize, allOffsets, PersonalReaderMode(), ), playerSubtitleSettings: reader.readObjectOrNull( - offsets[96], + offsets[97], PlayerSubtitleSettingsSchema.deserialize, allOffsets, ), - pureBlackDarkMode: reader.readBoolOrNull(offsets[97]), - relativeTimesTamps: reader.readLongOrNull(offsets[98]), - saveAsCBZArchive: reader.readBoolOrNull(offsets[99]), + pureBlackDarkMode: reader.readBoolOrNull(offsets[98]), + relativeTimesTamps: reader.readLongOrNull(offsets[99]), + saveAsCBZArchive: reader.readBoolOrNull(offsets[100]), scaleType: - _SettingsscaleTypeValueEnumMap[reader.readByteOrNull(offsets[100])] ?? + _SettingsscaleTypeValueEnumMap[reader.readByteOrNull(offsets[101])] ?? ScaleType.fitScreen, - showPagesNumber: reader.readBoolOrNull(offsets[101]), + showPagesNumber: reader.readBoolOrNull(offsets[102]), sortChapterList: reader.readObjectList( - offsets[102], + offsets[103], SortChapterSchema.deserialize, allOffsets, SortChapter(), ), sortLibraryAnime: reader.readObjectOrNull( - offsets[103], - SortLibraryMangaSchema.deserialize, - allOffsets, - ), - sortLibraryManga: reader.readObjectOrNull( offsets[104], SortLibraryMangaSchema.deserialize, allOffsets, ), - sortLibraryNovel: reader.readObjectOrNull( + sortLibraryManga: reader.readObjectOrNull( offsets[105], SortLibraryMangaSchema.deserialize, allOffsets, ), - startDatebackup: reader.readLongOrNull(offsets[106]), - themeIsDark: reader.readBoolOrNull(offsets[107]), - updateProgressAfterReading: reader.readBoolOrNull(offsets[108]), - useLibass: reader.readBoolOrNull(offsets[109]), - usePageTapZones: reader.readBoolOrNull(offsets[110]), - userAgent: reader.readStringOrNull(offsets[111]), + sortLibraryNovel: reader.readObjectOrNull( + offsets[106], + SortLibraryMangaSchema.deserialize, + allOffsets, + ), + startDatebackup: reader.readLongOrNull(offsets[107]), + themeIsDark: reader.readBoolOrNull(offsets[108]), + updateProgressAfterReading: reader.readBoolOrNull(offsets[109]), + useLibass: reader.readBoolOrNull(offsets[110]), + usePageTapZones: reader.readBoolOrNull(offsets[111]), + userAgent: reader.readStringOrNull(offsets[112]), ); object.chapterFilterBookmarkedList = reader.readObjectList( @@ -1446,7 +1453,7 @@ Settings _settingsDeserialize( L10nLocaleSchema.deserialize, allOffsets, ); - object.novelGridSize = reader.readLongOrNull(offsets[84]); + object.novelGridSize = reader.readLongOrNull(offsets[85]); return object; } @@ -1693,24 +1700,24 @@ P _settingsDeserializeProp

( case 79: return (reader.readLongOrNull(offset)) as P; case 80: - return (reader.readStringList(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 81: + return (reader.readStringList(offset)) as P; + case 82: return (_SettingsnovelDisplayTypeValueEnumMap[ reader.readByteOrNull(offset)] ?? DisplayType.comfortableGrid) as P; - case 82: + case 83: return (reader.readObjectList( offset, RepoSchema.deserialize, allOffsets, Repo(), )) as P; - case 83: - return (reader.readLongOrNull(offset)) as P; case 84: return (reader.readLongOrNull(offset)) as P; case 85: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 86: return (reader.readBoolOrNull(offset)) as P; case 87: @@ -1722,57 +1729,53 @@ P _settingsDeserializeProp

( case 90: return (reader.readBoolOrNull(offset)) as P; case 91: + return (reader.readBoolOrNull(offset)) as P; + case 92: return (_SettingsnovelTextAlignValueEnumMap[ reader.readByteOrNull(offset)] ?? NovelTextAlign.left) as P; - case 92: - return (reader.readBoolOrNull(offset)) as P; case 93: - return (reader.readLongOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 94: + return (reader.readLongOrNull(offset)) as P; + case 95: return (reader.readObjectList( offset, PersonalPageModeSchema.deserialize, allOffsets, PersonalPageMode(), )) as P; - case 95: + case 96: return (reader.readObjectList( offset, PersonalReaderModeSchema.deserialize, allOffsets, PersonalReaderMode(), )) as P; - case 96: + case 97: return (reader.readObjectOrNull( offset, PlayerSubtitleSettingsSchema.deserialize, allOffsets, )) as P; - case 97: - return (reader.readBoolOrNull(offset)) as P; case 98: - return (reader.readLongOrNull(offset)) as P; - case 99: return (reader.readBoolOrNull(offset)) as P; + case 99: + return (reader.readLongOrNull(offset)) as P; case 100: + return (reader.readBoolOrNull(offset)) as P; + case 101: return (_SettingsscaleTypeValueEnumMap[reader.readByteOrNull(offset)] ?? ScaleType.fitScreen) as P; - case 101: - return (reader.readBoolOrNull(offset)) as P; case 102: + return (reader.readBoolOrNull(offset)) as P; + case 103: return (reader.readObjectList( offset, SortChapterSchema.deserialize, allOffsets, SortChapter(), )) as P; - case 103: - return (reader.readObjectOrNull( - offset, - SortLibraryMangaSchema.deserialize, - allOffsets, - )) as P; case 104: return (reader.readObjectOrNull( offset, @@ -1786,9 +1789,13 @@ P _settingsDeserializeProp

( allOffsets, )) as P; case 106: - return (reader.readLongOrNull(offset)) as P; + return (reader.readObjectOrNull( + offset, + SortLibraryMangaSchema.deserialize, + allOffsets, + )) as P; case 107: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 108: return (reader.readBoolOrNull(offset)) as P; case 109: @@ -1796,6 +1803,8 @@ P _settingsDeserializeProp

( case 110: return (reader.readBoolOrNull(offset)) as P; case 111: + return (reader.readBoolOrNull(offset)) as P; + case 112: return (reader.readStringOrNull(offset)) as P; default: throw IsarError('Unknown property with id $propertyId'); @@ -7673,6 +7682,34 @@ extension SettingsQueryFilter }); } + QueryBuilder + mergeLibraryNavMobileIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'mergeLibraryNavMobile', + )); + }); + } + + QueryBuilder + mergeLibraryNavMobileIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'mergeLibraryNavMobile', + )); + }); + } + + QueryBuilder + mergeLibraryNavMobileEqualTo(bool? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'mergeLibraryNavMobile', + value: value, + )); + }); + } + QueryBuilder navigationOrderIsNull() { return QueryBuilder.apply(this, (query) { @@ -10556,6 +10593,19 @@ extension SettingsQuerySortBy on QueryBuilder { }); } + QueryBuilder sortByMergeLibraryNavMobile() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'mergeLibraryNavMobile', Sort.asc); + }); + } + + QueryBuilder + sortByMergeLibraryNavMobileDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'mergeLibraryNavMobile', Sort.desc); + }); + } + QueryBuilder sortByNovelDisplayType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelDisplayType', Sort.asc); @@ -11724,6 +11774,19 @@ extension SettingsQuerySortThenBy }); } + QueryBuilder thenByMergeLibraryNavMobile() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'mergeLibraryNavMobile', Sort.asc); + }); + } + + QueryBuilder + thenByMergeLibraryNavMobileDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'mergeLibraryNavMobile', Sort.desc); + }); + } + QueryBuilder thenByNovelDisplayType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelDisplayType', Sort.asc); @@ -12468,6 +12531,13 @@ extension SettingsQueryWhereDistinct }); } + QueryBuilder + distinctByMergeLibraryNavMobile() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'mergeLibraryNavMobile'); + }); + } + QueryBuilder distinctByNavigationOrder() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'navigationOrder'); @@ -13167,6 +13237,13 @@ extension SettingsQueryProperty }); } + QueryBuilder + mergeLibraryNavMobileProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'mergeLibraryNavMobile'); + }); + } + QueryBuilder?, QQueryOperations> navigationOrderProperty() { return QueryBuilder.apply(this, (query) { diff --git a/lib/modules/main_view/main_screen.dart b/lib/modules/main_view/main_screen.dart index d90519e4..349138e3 100644 --- a/lib/modules/main_view/main_screen.dart +++ b/lib/modules/main_view/main_screen.dart @@ -160,6 +160,7 @@ class _MainScreenState extends ConsumerState { final route = GoRouter.of(context); final navigationOrder = ref.watch(navigationOrderStateProvider); final hideItems = ref.watch(hideItemsStateProvider); + final mergeLibraryNavMobile = ref.watch(mergeLibraryNavMobileStateProvider); final location = ref.watch(routerCurrentLocationStateProvider); return ref @@ -169,7 +170,7 @@ class _MainScreenState extends ConsumerState { builder: (context, ref, child) { final isReadingScreen = _isReadingScreen(location); bool uniqueSwitch = false; - final dest = !context.isTablet && isLibSwitch + List dest = !context.isTablet && isLibSwitch ? [ "_disableLibSwitch", ...navigationOrder.where( @@ -178,30 +179,35 @@ class _MainScreenState extends ConsumerState { ].where((nav) => !hideItems.contains(nav)).toList() : navigationOrder .where((nav) => !hideItems.contains(nav)) - .map((nav) { - if (!context.isTablet && - !isLibSwitch && - [ - "/MangaLibrary", - "/AnimeLibrary", - "/NovelLibrary", - ].contains(nav)) { - if (uniqueSwitch) return null; - uniqueSwitch = true; - return "_enableLibSwitch"; - } - return nav; - }) - .nonNulls .toList(); + if (mergeLibraryNavMobile && !context.isTablet && !isLibSwitch) { + dest = dest + .map((nav) { + if ([ + "/MangaLibrary", + "/AnimeLibrary", + "/NovelLibrary", + ].contains(nav)) { + if (uniqueSwitch) return null; + uniqueSwitch = true; + return "_enableLibSwitch"; + } + return nav; + }) + .nonNulls + .toList(); + } + if (isLibSwitch && (currentIndex >= dest.length || !libLocationRegex.hasMatch(location ?? ""))) { currentIndex = 0; } else { String? libLocation; - if (!context.isTablet && !isLibSwitch) { + if (mergeLibraryNavMobile && + !context.isTablet && + !isLibSwitch) { libLocation = location?.replaceAll( libLocationRegex, "_enableLibSwitch", diff --git a/lib/modules/more/settings/appearance/custom_navigation_settings.dart b/lib/modules/more/settings/appearance/custom_navigation_settings.dart index 3b81450e..99718163 100644 --- a/lib/modules/more/settings/appearance/custom_navigation_settings.dart +++ b/lib/modules/more/settings/appearance/custom_navigation_settings.dart @@ -19,11 +19,28 @@ class _CustomNavigationSettingsState final l10n = context.l10n; final navigationOrder = ref.watch(navigationOrderStateProvider); final hideItems = ref.watch(hideItemsStateProvider); + final mergeLibraryNavMobile = ref.watch(mergeLibraryNavMobileStateProvider); return Scaffold( appBar: AppBar(title: Text(l10n.reorder_navigation)), body: Padding( padding: const EdgeInsets.symmetric(horizontal: 15), child: ReorderableListView.builder( + header: Padding( + padding: const EdgeInsets.symmetric(vertical: 10), + child: Stack( + children: [ + SwitchListTile( + value: mergeLibraryNavMobile, + title: Text(context.l10n.merge_library_nav_mobile), + onChanged: (value) { + ref + .read(mergeLibraryNavMobileStateProvider.notifier) + .set(value); + }, + ), + ], + ), + ), buildDefaultDragHandles: false, itemCount: navigationOrder.length, itemBuilder: (context, index) { diff --git a/lib/modules/more/settings/reader/providers/reader_state_provider.dart b/lib/modules/more/settings/reader/providers/reader_state_provider.dart index 3a48e102..3e54d373 100644 --- a/lib/modules/more/settings/reader/providers/reader_state_provider.dart +++ b/lib/modules/more/settings/reader/providers/reader_state_provider.dart @@ -199,6 +199,22 @@ class HideItemsState extends _$HideItemsState { } } +@riverpod +class MergeLibraryNavMobileState extends _$MergeLibraryNavMobileState { + @override + bool build() { + return isar.settings.getSync(227)!.mergeLibraryNavMobile ?? false; + } + + void set(bool value) { + final settings = isar.settings.getSync(227); + state = value; + isar.writeTxnSync( + () => isar.settings.putSync(settings!..mergeLibraryNavMobile = value), + ); + } +} + @riverpod class NovelFontSizeState extends _$NovelFontSizeState { @override diff --git a/lib/modules/more/settings/reader/providers/reader_state_provider.g.dart b/lib/modules/more/settings/reader/providers/reader_state_provider.g.dart index 424a6321..ea10c04c 100644 --- a/lib/modules/more/settings/reader/providers/reader_state_provider.g.dart +++ b/lib/modules/more/settings/reader/providers/reader_state_provider.g.dart @@ -190,6 +190,23 @@ final hideItemsStateProvider = ); typedef _$HideItemsState = AutoDisposeNotifier>; +String _$mergeLibraryNavMobileStateHash() => + r'a69f669b69d036835128b2b922ed7da37877aaa8'; + +/// See also [MergeLibraryNavMobileState]. +@ProviderFor(MergeLibraryNavMobileState) +final mergeLibraryNavMobileStateProvider = + AutoDisposeNotifierProvider.internal( + MergeLibraryNavMobileState.new, + name: r'mergeLibraryNavMobileStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$mergeLibraryNavMobileStateHash, + dependencies: null, + allTransitiveDependencies: null, +); + +typedef _$MergeLibraryNavMobileState = AutoDisposeNotifier; String _$novelFontSizeStateHash() => r'fd104e358203d3f86e14d933518f2dbd067cec13'; diff --git a/lib/router/router.g.dart b/lib/router/router.g.dart index 97d99bd8..d87a4020 100644 --- a/lib/router/router.g.dart +++ b/lib/router/router.g.dart @@ -6,7 +6,7 @@ part of 'router.dart'; // RiverpodGenerator // ************************************************************************** -String _$routerHash() => r'52271f834e5242820afdb209d765c3cee8f3fe5b'; +String _$routerHash() => r'fe1b18b9e03bd3df71cf66eabd78f0da3ac36247'; /// See also [router]. @ProviderFor(router) diff --git a/lib/services/trackers/anilist.g.dart b/lib/services/trackers/anilist.g.dart index 0ae8789c..fe997ddc 100644 --- a/lib/services/trackers/anilist.g.dart +++ b/lib/services/trackers/anilist.g.dart @@ -6,7 +6,7 @@ part of 'anilist.dart'; // RiverpodGenerator // ************************************************************************** -String _$anilistHash() => r'530f1aaee260808ae894e4da0604b8b34e4f3742'; +String _$anilistHash() => r'179af3d1b13b4a03d5009e5519195fee1f8ec0f7'; /// Copied from Dart SDK class _SystemHash { diff --git a/lib/services/trackers/myanimelist.g.dart b/lib/services/trackers/myanimelist.g.dart index 4ccd16cf..9b0d69a5 100644 --- a/lib/services/trackers/myanimelist.g.dart +++ b/lib/services/trackers/myanimelist.g.dart @@ -6,7 +6,7 @@ part of 'myanimelist.dart'; // RiverpodGenerator // ************************************************************************** -String _$myAnimeListHash() => r'885e6c50439c699f12c4f17c9e26b4a53b1d2036'; +String _$myAnimeListHash() => r'98746d3f3ac88a6165b46de18acb268dc32a16f8'; /// Copied from Dart SDK class _SystemHash {