mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-04-21 20:12:00 +00:00
added novel reader view
This commit is contained in:
parent
f054a1fd94
commit
62f378f5ee
11 changed files with 815 additions and 2163 deletions
|
|
@ -317,209 +317,229 @@ const SettingsSchema = CollectionSchema(
|
||||||
name: r'libraryFilterMangasUnreadType',
|
name: r'libraryFilterMangasUnreadType',
|
||||||
type: IsarType.long,
|
type: IsarType.long,
|
||||||
),
|
),
|
||||||
r'libraryLocalSource': PropertySchema(
|
r'libraryFilterNovelBookMarkedType': PropertySchema(
|
||||||
id: 57,
|
id: 57,
|
||||||
|
name: r'libraryFilterNovelBookMarkedType',
|
||||||
|
type: IsarType.long,
|
||||||
|
),
|
||||||
|
r'libraryFilterNovelDownloadType': PropertySchema(
|
||||||
|
id: 58,
|
||||||
|
name: r'libraryFilterNovelDownloadType',
|
||||||
|
type: IsarType.long,
|
||||||
|
),
|
||||||
|
r'libraryFilterNovelStartedType': PropertySchema(
|
||||||
|
id: 59,
|
||||||
|
name: r'libraryFilterNovelStartedType',
|
||||||
|
type: IsarType.long,
|
||||||
|
),
|
||||||
|
r'libraryFilterNovelUnreadType': PropertySchema(
|
||||||
|
id: 60,
|
||||||
|
name: r'libraryFilterNovelUnreadType',
|
||||||
|
type: IsarType.long,
|
||||||
|
),
|
||||||
|
r'libraryLocalSource': PropertySchema(
|
||||||
|
id: 61,
|
||||||
name: r'libraryLocalSource',
|
name: r'libraryLocalSource',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'libraryShowCategoryTabs': PropertySchema(
|
r'libraryShowCategoryTabs': PropertySchema(
|
||||||
id: 58,
|
id: 62,
|
||||||
name: r'libraryShowCategoryTabs',
|
name: r'libraryShowCategoryTabs',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'libraryShowContinueReadingButton': PropertySchema(
|
r'libraryShowContinueReadingButton': PropertySchema(
|
||||||
id: 59,
|
id: 63,
|
||||||
name: r'libraryShowContinueReadingButton',
|
name: r'libraryShowContinueReadingButton',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'libraryShowLanguage': PropertySchema(
|
r'libraryShowLanguage': PropertySchema(
|
||||||
id: 60,
|
id: 64,
|
||||||
name: r'libraryShowLanguage',
|
name: r'libraryShowLanguage',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'libraryShowNumbersOfItems': PropertySchema(
|
r'libraryShowNumbersOfItems': PropertySchema(
|
||||||
id: 61,
|
id: 65,
|
||||||
name: r'libraryShowNumbersOfItems',
|
name: r'libraryShowNumbersOfItems',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'locale': PropertySchema(
|
r'locale': PropertySchema(
|
||||||
id: 62,
|
id: 66,
|
||||||
name: r'locale',
|
name: r'locale',
|
||||||
type: IsarType.object,
|
type: IsarType.object,
|
||||||
target: r'L10nLocale',
|
target: r'L10nLocale',
|
||||||
),
|
),
|
||||||
r'mangaGridSize': PropertySchema(
|
r'mangaGridSize': PropertySchema(
|
||||||
id: 63,
|
id: 67,
|
||||||
name: r'mangaGridSize',
|
name: r'mangaGridSize',
|
||||||
type: IsarType.long,
|
type: IsarType.long,
|
||||||
),
|
),
|
||||||
r'mangaHomeDisplayType': PropertySchema(
|
r'mangaHomeDisplayType': PropertySchema(
|
||||||
id: 64,
|
id: 68,
|
||||||
name: r'mangaHomeDisplayType',
|
name: r'mangaHomeDisplayType',
|
||||||
type: IsarType.byte,
|
type: IsarType.byte,
|
||||||
enumMap: _SettingsmangaHomeDisplayTypeEnumValueMap,
|
enumMap: _SettingsmangaHomeDisplayTypeEnumValueMap,
|
||||||
),
|
),
|
||||||
r'markEpisodeAsSeenType': PropertySchema(
|
r'markEpisodeAsSeenType': PropertySchema(
|
||||||
id: 65,
|
id: 69,
|
||||||
name: r'markEpisodeAsSeenType',
|
name: r'markEpisodeAsSeenType',
|
||||||
type: IsarType.long,
|
type: IsarType.long,
|
||||||
),
|
),
|
||||||
r'novelDisplayType': PropertySchema(
|
r'novelDisplayType': PropertySchema(
|
||||||
id: 69,
|
id: 70,
|
||||||
name: r'novelDisplayType',
|
name: r'novelDisplayType',
|
||||||
type: IsarType.byte,
|
type: IsarType.byte,
|
||||||
enumMap: _SettingsnovelDisplayTypeEnumValueMap,
|
enumMap: _SettingsnovelDisplayTypeEnumValueMap,
|
||||||
),
|
),
|
||||||
r'novelGridSize': PropertySchema(
|
r'novelGridSize': PropertySchema(
|
||||||
id: 70,
|
id: 71,
|
||||||
name: r'novelGridSize',
|
name: r'novelGridSize',
|
||||||
type: IsarType.long,
|
type: IsarType.long,
|
||||||
),
|
),
|
||||||
r'novelLibraryDownloadedChapters': PropertySchema(
|
r'novelLibraryDownloadedChapters': PropertySchema(
|
||||||
id: 71,
|
id: 72,
|
||||||
name: r'novelLibraryDownloadedChapters',
|
name: r'novelLibraryDownloadedChapters',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'novelLibraryLocalSource': PropertySchema(
|
r'novelLibraryLocalSource': PropertySchema(
|
||||||
id: 72,
|
id: 73,
|
||||||
name: r'novelLibraryLocalSource',
|
name: r'novelLibraryLocalSource',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'novelLibraryShowCategoryTabs': PropertySchema(
|
r'novelLibraryShowCategoryTabs': PropertySchema(
|
||||||
id: 73,
|
id: 74,
|
||||||
name: r'novelLibraryShowCategoryTabs',
|
name: r'novelLibraryShowCategoryTabs',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'novelLibraryShowContinueReadingButton': PropertySchema(
|
r'novelLibraryShowContinueReadingButton': PropertySchema(
|
||||||
id: 74,
|
id: 75,
|
||||||
name: r'novelLibraryShowContinueReadingButton',
|
name: r'novelLibraryShowContinueReadingButton',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'novelLibraryShowLanguage': PropertySchema(
|
r'novelLibraryShowLanguage': PropertySchema(
|
||||||
id: 75,
|
id: 76,
|
||||||
name: r'novelLibraryShowLanguage',
|
name: r'novelLibraryShowLanguage',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'novelLibraryShowNumbersOfItems': PropertySchema(
|
r'novelLibraryShowNumbersOfItems': PropertySchema(
|
||||||
id: 76,
|
id: 77,
|
||||||
name: r'novelLibraryShowNumbersOfItems',
|
name: r'novelLibraryShowNumbersOfItems',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'onlyIncludePinnedSources': PropertySchema(
|
r'onlyIncludePinnedSources': PropertySchema(
|
||||||
id: 66,
|
id: 78,
|
||||||
name: r'onlyIncludePinnedSources',
|
name: r'onlyIncludePinnedSources',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'pagePreloadAmount': PropertySchema(
|
r'pagePreloadAmount': PropertySchema(
|
||||||
id: 67,
|
id: 79,
|
||||||
name: r'pagePreloadAmount',
|
name: r'pagePreloadAmount',
|
||||||
type: IsarType.long,
|
type: IsarType.long,
|
||||||
),
|
),
|
||||||
r'personalPageModeList': PropertySchema(
|
r'personalPageModeList': PropertySchema(
|
||||||
id: 68,
|
id: 80,
|
||||||
name: r'personalPageModeList',
|
name: r'personalPageModeList',
|
||||||
type: IsarType.objectList,
|
type: IsarType.objectList,
|
||||||
target: r'PersonalPageMode',
|
target: r'PersonalPageMode',
|
||||||
),
|
),
|
||||||
r'personalReaderModeList': PropertySchema(
|
r'personalReaderModeList': PropertySchema(
|
||||||
id: 69,
|
id: 81,
|
||||||
name: r'personalReaderModeList',
|
name: r'personalReaderModeList',
|
||||||
type: IsarType.objectList,
|
type: IsarType.objectList,
|
||||||
target: r'PersonalReaderMode',
|
target: r'PersonalReaderMode',
|
||||||
),
|
),
|
||||||
r'playerSubtitleSettings': PropertySchema(
|
r'playerSubtitleSettings': PropertySchema(
|
||||||
id: 70,
|
id: 82,
|
||||||
name: r'playerSubtitleSettings',
|
name: r'playerSubtitleSettings',
|
||||||
type: IsarType.object,
|
type: IsarType.object,
|
||||||
target: r'PlayerSubtitleSettings',
|
target: r'PlayerSubtitleSettings',
|
||||||
),
|
),
|
||||||
r'pureBlackDarkMode': PropertySchema(
|
r'pureBlackDarkMode': PropertySchema(
|
||||||
id: 71,
|
id: 83,
|
||||||
name: r'pureBlackDarkMode',
|
name: r'pureBlackDarkMode',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'relativeTimesTamps': PropertySchema(
|
r'relativeTimesTamps': PropertySchema(
|
||||||
id: 72,
|
id: 84,
|
||||||
name: r'relativeTimesTamps',
|
name: r'relativeTimesTamps',
|
||||||
type: IsarType.long,
|
type: IsarType.long,
|
||||||
),
|
),
|
||||||
r'saveAsCBZArchive': PropertySchema(
|
r'saveAsCBZArchive': PropertySchema(
|
||||||
id: 73,
|
id: 85,
|
||||||
name: r'saveAsCBZArchive',
|
name: r'saveAsCBZArchive',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'scaleType': PropertySchema(
|
r'scaleType': PropertySchema(
|
||||||
id: 74,
|
id: 86,
|
||||||
name: r'scaleType',
|
name: r'scaleType',
|
||||||
type: IsarType.byte,
|
type: IsarType.byte,
|
||||||
enumMap: _SettingsscaleTypeEnumValueMap,
|
enumMap: _SettingsscaleTypeEnumValueMap,
|
||||||
),
|
),
|
||||||
r'showPagesNumber': PropertySchema(
|
r'showPagesNumber': PropertySchema(
|
||||||
id: 75,
|
id: 87,
|
||||||
name: r'showPagesNumber',
|
name: r'showPagesNumber',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'sortChapterList': PropertySchema(
|
r'sortChapterList': PropertySchema(
|
||||||
id: 76,
|
id: 88,
|
||||||
name: r'sortChapterList',
|
name: r'sortChapterList',
|
||||||
type: IsarType.objectList,
|
type: IsarType.objectList,
|
||||||
target: r'SortChapter',
|
target: r'SortChapter',
|
||||||
),
|
),
|
||||||
r'sortLibraryAnime': PropertySchema(
|
r'sortLibraryAnime': PropertySchema(
|
||||||
id: 77,
|
id: 89,
|
||||||
name: r'sortLibraryAnime',
|
name: r'sortLibraryAnime',
|
||||||
type: IsarType.object,
|
type: IsarType.object,
|
||||||
target: r'SortLibraryManga',
|
target: r'SortLibraryManga',
|
||||||
),
|
),
|
||||||
r'sortLibraryManga': PropertySchema(
|
r'sortLibraryManga': PropertySchema(
|
||||||
id: 78,
|
id: 90,
|
||||||
name: r'sortLibraryManga',
|
name: r'sortLibraryManga',
|
||||||
type: IsarType.object,
|
type: IsarType.object,
|
||||||
target: r'SortLibraryManga',
|
target: r'SortLibraryManga',
|
||||||
),
|
),
|
||||||
r'sortLibraryNovel': PropertySchema(
|
r'sortLibraryNovel': PropertySchema(
|
||||||
id: 90,
|
id: 91,
|
||||||
name: r'sortLibraryNovel',
|
name: r'sortLibraryNovel',
|
||||||
type: IsarType.object,
|
type: IsarType.object,
|
||||||
target: r'SortLibraryManga',
|
target: r'SortLibraryManga',
|
||||||
),
|
),
|
||||||
r'startDatebackup': PropertySchema(
|
r'startDatebackup': PropertySchema(
|
||||||
id: 79,
|
id: 92,
|
||||||
name: r'startDatebackup',
|
name: r'startDatebackup',
|
||||||
type: IsarType.long,
|
type: IsarType.long,
|
||||||
),
|
),
|
||||||
r'syncAfterReading': PropertySchema(
|
r'syncAfterReading': PropertySchema(
|
||||||
id: 80,
|
id: 93,
|
||||||
name: r'syncAfterReading',
|
name: r'syncAfterReading',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'syncOnAppLaunch': PropertySchema(
|
r'syncOnAppLaunch': PropertySchema(
|
||||||
id: 81,
|
id: 94,
|
||||||
name: r'syncOnAppLaunch',
|
name: r'syncOnAppLaunch',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'themeIsDark': PropertySchema(
|
r'themeIsDark': PropertySchema(
|
||||||
id: 82,
|
id: 95,
|
||||||
name: r'themeIsDark',
|
name: r'themeIsDark',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'updateProgressAfterReading': PropertySchema(
|
r'updateProgressAfterReading': PropertySchema(
|
||||||
id: 83,
|
id: 96,
|
||||||
name: r'updateProgressAfterReading',
|
name: r'updateProgressAfterReading',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'useLibass': PropertySchema(
|
r'useLibass': PropertySchema(
|
||||||
id: 84,
|
id: 97,
|
||||||
name: r'useLibass',
|
name: r'useLibass',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'usePageTapZones': PropertySchema(
|
r'usePageTapZones': PropertySchema(
|
||||||
id: 85,
|
id: 98,
|
||||||
name: r'usePageTapZones',
|
name: r'usePageTapZones',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'userAgent': PropertySchema(
|
r'userAgent': PropertySchema(
|
||||||
id: 86,
|
id: 99,
|
||||||
name: r'userAgent',
|
name: r'userAgent',
|
||||||
type: IsarType.string,
|
type: IsarType.string,
|
||||||
)
|
)
|
||||||
|
|
@ -921,71 +941,89 @@ void _settingsSerialize(
|
||||||
writer.writeLong(offsets[54], object.libraryFilterMangasDownloadType);
|
writer.writeLong(offsets[54], object.libraryFilterMangasDownloadType);
|
||||||
writer.writeLong(offsets[55], object.libraryFilterMangasStartedType);
|
writer.writeLong(offsets[55], object.libraryFilterMangasStartedType);
|
||||||
writer.writeLong(offsets[56], object.libraryFilterMangasUnreadType);
|
writer.writeLong(offsets[56], object.libraryFilterMangasUnreadType);
|
||||||
writer.writeBool(offsets[57], object.libraryLocalSource);
|
writer.writeLong(offsets[57], object.libraryFilterNovelBookMarkedType);
|
||||||
writer.writeBool(offsets[58], object.libraryShowCategoryTabs);
|
writer.writeLong(offsets[58], object.libraryFilterNovelDownloadType);
|
||||||
writer.writeBool(offsets[59], object.libraryShowContinueReadingButton);
|
writer.writeLong(offsets[59], object.libraryFilterNovelStartedType);
|
||||||
writer.writeBool(offsets[60], object.libraryShowLanguage);
|
writer.writeLong(offsets[60], object.libraryFilterNovelUnreadType);
|
||||||
writer.writeBool(offsets[61], object.libraryShowNumbersOfItems);
|
writer.writeBool(offsets[61], object.libraryLocalSource);
|
||||||
|
writer.writeBool(offsets[62], object.libraryShowCategoryTabs);
|
||||||
|
writer.writeBool(offsets[63], object.libraryShowContinueReadingButton);
|
||||||
|
writer.writeBool(offsets[64], object.libraryShowLanguage);
|
||||||
|
writer.writeBool(offsets[65], object.libraryShowNumbersOfItems);
|
||||||
writer.writeObject<L10nLocale>(
|
writer.writeObject<L10nLocale>(
|
||||||
offsets[62],
|
offsets[66],
|
||||||
allOffsets,
|
allOffsets,
|
||||||
L10nLocaleSchema.serialize,
|
L10nLocaleSchema.serialize,
|
||||||
object.locale,
|
object.locale,
|
||||||
);
|
);
|
||||||
writer.writeLong(offsets[63], object.mangaGridSize);
|
writer.writeLong(offsets[67], object.mangaGridSize);
|
||||||
writer.writeByte(offsets[64], object.mangaHomeDisplayType.index);
|
writer.writeByte(offsets[68], object.mangaHomeDisplayType.index);
|
||||||
writer.writeLong(offsets[65], object.markEpisodeAsSeenType);
|
writer.writeLong(offsets[69], object.markEpisodeAsSeenType);
|
||||||
writer.writeBool(offsets[66], object.onlyIncludePinnedSources);
|
writer.writeByte(offsets[70], object.novelDisplayType.index);
|
||||||
writer.writeLong(offsets[67], object.pagePreloadAmount);
|
writer.writeLong(offsets[71], object.novelGridSize);
|
||||||
|
writer.writeBool(offsets[72], object.novelLibraryDownloadedChapters);
|
||||||
|
writer.writeBool(offsets[73], object.novelLibraryLocalSource);
|
||||||
|
writer.writeBool(offsets[74], object.novelLibraryShowCategoryTabs);
|
||||||
|
writer.writeBool(offsets[75], object.novelLibraryShowContinueReadingButton);
|
||||||
|
writer.writeBool(offsets[76], object.novelLibraryShowLanguage);
|
||||||
|
writer.writeBool(offsets[77], object.novelLibraryShowNumbersOfItems);
|
||||||
|
writer.writeBool(offsets[78], object.onlyIncludePinnedSources);
|
||||||
|
writer.writeLong(offsets[79], object.pagePreloadAmount);
|
||||||
writer.writeObjectList<PersonalPageMode>(
|
writer.writeObjectList<PersonalPageMode>(
|
||||||
offsets[68],
|
offsets[80],
|
||||||
allOffsets,
|
allOffsets,
|
||||||
PersonalPageModeSchema.serialize,
|
PersonalPageModeSchema.serialize,
|
||||||
object.personalPageModeList,
|
object.personalPageModeList,
|
||||||
);
|
);
|
||||||
writer.writeObjectList<PersonalReaderMode>(
|
writer.writeObjectList<PersonalReaderMode>(
|
||||||
offsets[69],
|
offsets[81],
|
||||||
allOffsets,
|
allOffsets,
|
||||||
PersonalReaderModeSchema.serialize,
|
PersonalReaderModeSchema.serialize,
|
||||||
object.personalReaderModeList,
|
object.personalReaderModeList,
|
||||||
);
|
);
|
||||||
writer.writeObject<PlayerSubtitleSettings>(
|
writer.writeObject<PlayerSubtitleSettings>(
|
||||||
offsets[70],
|
offsets[82],
|
||||||
allOffsets,
|
allOffsets,
|
||||||
PlayerSubtitleSettingsSchema.serialize,
|
PlayerSubtitleSettingsSchema.serialize,
|
||||||
object.playerSubtitleSettings,
|
object.playerSubtitleSettings,
|
||||||
);
|
);
|
||||||
writer.writeBool(offsets[71], object.pureBlackDarkMode);
|
writer.writeBool(offsets[83], object.pureBlackDarkMode);
|
||||||
writer.writeLong(offsets[72], object.relativeTimesTamps);
|
writer.writeLong(offsets[84], object.relativeTimesTamps);
|
||||||
writer.writeBool(offsets[73], object.saveAsCBZArchive);
|
writer.writeBool(offsets[85], object.saveAsCBZArchive);
|
||||||
writer.writeByte(offsets[74], object.scaleType.index);
|
writer.writeByte(offsets[86], object.scaleType.index);
|
||||||
writer.writeBool(offsets[75], object.showPagesNumber);
|
writer.writeBool(offsets[87], object.showPagesNumber);
|
||||||
writer.writeObjectList<SortChapter>(
|
writer.writeObjectList<SortChapter>(
|
||||||
offsets[76],
|
offsets[88],
|
||||||
allOffsets,
|
allOffsets,
|
||||||
SortChapterSchema.serialize,
|
SortChapterSchema.serialize,
|
||||||
object.sortChapterList,
|
object.sortChapterList,
|
||||||
);
|
);
|
||||||
writer.writeObject<SortLibraryManga>(
|
writer.writeObject<SortLibraryManga>(
|
||||||
offsets[77],
|
offsets[89],
|
||||||
allOffsets,
|
allOffsets,
|
||||||
SortLibraryMangaSchema.serialize,
|
SortLibraryMangaSchema.serialize,
|
||||||
object.sortLibraryAnime,
|
object.sortLibraryAnime,
|
||||||
);
|
);
|
||||||
writer.writeObject<SortLibraryManga>(
|
writer.writeObject<SortLibraryManga>(
|
||||||
offsets[78],
|
offsets[90],
|
||||||
allOffsets,
|
allOffsets,
|
||||||
SortLibraryMangaSchema.serialize,
|
SortLibraryMangaSchema.serialize,
|
||||||
object.sortLibraryManga,
|
object.sortLibraryManga,
|
||||||
);
|
);
|
||||||
writer.writeLong(offsets[79], object.startDatebackup);
|
writer.writeObject<SortLibraryManga>(
|
||||||
writer.writeBool(offsets[80], object.syncAfterReading);
|
offsets[91],
|
||||||
writer.writeBool(offsets[81], object.syncOnAppLaunch);
|
allOffsets,
|
||||||
writer.writeBool(offsets[82], object.themeIsDark);
|
SortLibraryMangaSchema.serialize,
|
||||||
writer.writeBool(offsets[83], object.updateProgressAfterReading);
|
object.sortLibraryNovel,
|
||||||
writer.writeBool(offsets[84], object.useLibass);
|
);
|
||||||
writer.writeBool(offsets[85], object.usePageTapZones);
|
writer.writeLong(offsets[92], object.startDatebackup);
|
||||||
writer.writeString(offsets[86], object.userAgent);
|
writer.writeBool(offsets[93], object.syncAfterReading);
|
||||||
|
writer.writeBool(offsets[94], object.syncOnAppLaunch);
|
||||||
|
writer.writeBool(offsets[95], object.themeIsDark);
|
||||||
|
writer.writeBool(offsets[96], object.updateProgressAfterReading);
|
||||||
|
writer.writeBool(offsets[97], object.useLibass);
|
||||||
|
writer.writeBool(offsets[98], object.usePageTapZones);
|
||||||
|
writer.writeString(offsets[99], object.userAgent);
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings _settingsDeserialize(
|
Settings _settingsDeserialize(
|
||||||
|
|
@ -1091,66 +1129,84 @@ Settings _settingsDeserialize(
|
||||||
libraryFilterMangasDownloadType: reader.readLongOrNull(offsets[54]),
|
libraryFilterMangasDownloadType: reader.readLongOrNull(offsets[54]),
|
||||||
libraryFilterMangasStartedType: reader.readLongOrNull(offsets[55]),
|
libraryFilterMangasStartedType: reader.readLongOrNull(offsets[55]),
|
||||||
libraryFilterMangasUnreadType: reader.readLongOrNull(offsets[56]),
|
libraryFilterMangasUnreadType: reader.readLongOrNull(offsets[56]),
|
||||||
libraryLocalSource: reader.readBoolOrNull(offsets[57]),
|
libraryFilterNovelBookMarkedType: reader.readLongOrNull(offsets[57]),
|
||||||
libraryShowCategoryTabs: reader.readBoolOrNull(offsets[58]),
|
libraryFilterNovelDownloadType: reader.readLongOrNull(offsets[58]),
|
||||||
libraryShowContinueReadingButton: reader.readBoolOrNull(offsets[59]),
|
libraryFilterNovelStartedType: reader.readLongOrNull(offsets[59]),
|
||||||
libraryShowLanguage: reader.readBoolOrNull(offsets[60]),
|
libraryFilterNovelUnreadType: reader.readLongOrNull(offsets[60]),
|
||||||
libraryShowNumbersOfItems: reader.readBoolOrNull(offsets[61]),
|
libraryLocalSource: reader.readBoolOrNull(offsets[61]),
|
||||||
mangaGridSize: reader.readLongOrNull(offsets[63]),
|
libraryShowCategoryTabs: reader.readBoolOrNull(offsets[62]),
|
||||||
|
libraryShowContinueReadingButton: reader.readBoolOrNull(offsets[63]),
|
||||||
|
libraryShowLanguage: reader.readBoolOrNull(offsets[64]),
|
||||||
|
libraryShowNumbersOfItems: reader.readBoolOrNull(offsets[65]),
|
||||||
|
mangaGridSize: reader.readLongOrNull(offsets[67]),
|
||||||
mangaHomeDisplayType: _SettingsmangaHomeDisplayTypeValueEnumMap[
|
mangaHomeDisplayType: _SettingsmangaHomeDisplayTypeValueEnumMap[
|
||||||
reader.readByteOrNull(offsets[64])] ??
|
reader.readByteOrNull(offsets[68])] ??
|
||||||
DisplayType.comfortableGrid,
|
DisplayType.comfortableGrid,
|
||||||
markEpisodeAsSeenType: reader.readLongOrNull(offsets[65]),
|
markEpisodeAsSeenType: reader.readLongOrNull(offsets[69]),
|
||||||
onlyIncludePinnedSources: reader.readBoolOrNull(offsets[66]),
|
novelDisplayType: _SettingsnovelDisplayTypeValueEnumMap[
|
||||||
pagePreloadAmount: reader.readLongOrNull(offsets[67]),
|
reader.readByteOrNull(offsets[70])] ??
|
||||||
|
DisplayType.comfortableGrid,
|
||||||
|
novelLibraryDownloadedChapters: reader.readBoolOrNull(offsets[72]),
|
||||||
|
novelLibraryLocalSource: reader.readBoolOrNull(offsets[73]),
|
||||||
|
novelLibraryShowCategoryTabs: reader.readBoolOrNull(offsets[74]),
|
||||||
|
novelLibraryShowContinueReadingButton: reader.readBoolOrNull(offsets[75]),
|
||||||
|
novelLibraryShowLanguage: reader.readBoolOrNull(offsets[76]),
|
||||||
|
novelLibraryShowNumbersOfItems: reader.readBoolOrNull(offsets[77]),
|
||||||
|
onlyIncludePinnedSources: reader.readBoolOrNull(offsets[78]),
|
||||||
|
pagePreloadAmount: reader.readLongOrNull(offsets[79]),
|
||||||
personalPageModeList: reader.readObjectList<PersonalPageMode>(
|
personalPageModeList: reader.readObjectList<PersonalPageMode>(
|
||||||
offsets[68],
|
offsets[80],
|
||||||
PersonalPageModeSchema.deserialize,
|
PersonalPageModeSchema.deserialize,
|
||||||
allOffsets,
|
allOffsets,
|
||||||
PersonalPageMode(),
|
PersonalPageMode(),
|
||||||
),
|
),
|
||||||
personalReaderModeList: reader.readObjectList<PersonalReaderMode>(
|
personalReaderModeList: reader.readObjectList<PersonalReaderMode>(
|
||||||
offsets[69],
|
offsets[81],
|
||||||
PersonalReaderModeSchema.deserialize,
|
PersonalReaderModeSchema.deserialize,
|
||||||
allOffsets,
|
allOffsets,
|
||||||
PersonalReaderMode(),
|
PersonalReaderMode(),
|
||||||
),
|
),
|
||||||
playerSubtitleSettings: reader.readObjectOrNull<PlayerSubtitleSettings>(
|
playerSubtitleSettings: reader.readObjectOrNull<PlayerSubtitleSettings>(
|
||||||
offsets[70],
|
offsets[82],
|
||||||
PlayerSubtitleSettingsSchema.deserialize,
|
PlayerSubtitleSettingsSchema.deserialize,
|
||||||
allOffsets,
|
allOffsets,
|
||||||
),
|
),
|
||||||
pureBlackDarkMode: reader.readBoolOrNull(offsets[71]),
|
pureBlackDarkMode: reader.readBoolOrNull(offsets[83]),
|
||||||
relativeTimesTamps: reader.readLongOrNull(offsets[72]),
|
relativeTimesTamps: reader.readLongOrNull(offsets[84]),
|
||||||
saveAsCBZArchive: reader.readBoolOrNull(offsets[73]),
|
saveAsCBZArchive: reader.readBoolOrNull(offsets[85]),
|
||||||
scaleType:
|
scaleType:
|
||||||
_SettingsscaleTypeValueEnumMap[reader.readByteOrNull(offsets[74])] ??
|
_SettingsscaleTypeValueEnumMap[reader.readByteOrNull(offsets[86])] ??
|
||||||
ScaleType.fitScreen,
|
ScaleType.fitScreen,
|
||||||
showPagesNumber: reader.readBoolOrNull(offsets[75]),
|
showPagesNumber: reader.readBoolOrNull(offsets[87]),
|
||||||
sortChapterList: reader.readObjectList<SortChapter>(
|
sortChapterList: reader.readObjectList<SortChapter>(
|
||||||
offsets[76],
|
offsets[88],
|
||||||
SortChapterSchema.deserialize,
|
SortChapterSchema.deserialize,
|
||||||
allOffsets,
|
allOffsets,
|
||||||
SortChapter(),
|
SortChapter(),
|
||||||
),
|
),
|
||||||
sortLibraryAnime: reader.readObjectOrNull<SortLibraryManga>(
|
sortLibraryAnime: reader.readObjectOrNull<SortLibraryManga>(
|
||||||
offsets[77],
|
offsets[89],
|
||||||
SortLibraryMangaSchema.deserialize,
|
SortLibraryMangaSchema.deserialize,
|
||||||
allOffsets,
|
allOffsets,
|
||||||
),
|
),
|
||||||
sortLibraryManga: reader.readObjectOrNull<SortLibraryManga>(
|
sortLibraryManga: reader.readObjectOrNull<SortLibraryManga>(
|
||||||
offsets[78],
|
offsets[90],
|
||||||
SortLibraryMangaSchema.deserialize,
|
SortLibraryMangaSchema.deserialize,
|
||||||
allOffsets,
|
allOffsets,
|
||||||
),
|
),
|
||||||
startDatebackup: reader.readLongOrNull(offsets[79]),
|
sortLibraryNovel: reader.readObjectOrNull<SortLibraryManga>(
|
||||||
syncAfterReading: reader.readBoolOrNull(offsets[80]),
|
offsets[91],
|
||||||
syncOnAppLaunch: reader.readBoolOrNull(offsets[81]),
|
SortLibraryMangaSchema.deserialize,
|
||||||
themeIsDark: reader.readBoolOrNull(offsets[82]),
|
allOffsets,
|
||||||
updateProgressAfterReading: reader.readBoolOrNull(offsets[83]),
|
),
|
||||||
useLibass: reader.readBoolOrNull(offsets[84]),
|
startDatebackup: reader.readLongOrNull(offsets[92]),
|
||||||
usePageTapZones: reader.readBoolOrNull(offsets[85]),
|
syncAfterReading: reader.readBoolOrNull(offsets[93]),
|
||||||
userAgent: reader.readStringOrNull(offsets[86]),
|
syncOnAppLaunch: reader.readBoolOrNull(offsets[94]),
|
||||||
|
themeIsDark: reader.readBoolOrNull(offsets[95]),
|
||||||
|
updateProgressAfterReading: reader.readBoolOrNull(offsets[96]),
|
||||||
|
useLibass: reader.readBoolOrNull(offsets[97]),
|
||||||
|
usePageTapZones: reader.readBoolOrNull(offsets[98]),
|
||||||
|
userAgent: reader.readStringOrNull(offsets[99]),
|
||||||
);
|
);
|
||||||
object.chapterFilterBookmarkedList =
|
object.chapterFilterBookmarkedList =
|
||||||
reader.readObjectList<ChapterFilterBookmarked>(
|
reader.readObjectList<ChapterFilterBookmarked>(
|
||||||
|
|
@ -1172,11 +1228,11 @@ Settings _settingsDeserialize(
|
||||||
FilterScanlator(),
|
FilterScanlator(),
|
||||||
);
|
);
|
||||||
object.locale = reader.readObjectOrNull<L10nLocale>(
|
object.locale = reader.readObjectOrNull<L10nLocale>(
|
||||||
offsets[62],
|
offsets[66],
|
||||||
L10nLocaleSchema.deserialize,
|
L10nLocaleSchema.deserialize,
|
||||||
allOffsets,
|
allOffsets,
|
||||||
);
|
);
|
||||||
object.novelGridSize = reader.readLongOrNull(offsets[70]);
|
object.novelGridSize = reader.readLongOrNull(offsets[71]);
|
||||||
return object;
|
return object;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1363,80 +1419,112 @@ P _settingsDeserializeProp<P>(
|
||||||
case 59:
|
case 59:
|
||||||
return (reader.readLongOrNull(offset)) as P;
|
return (reader.readLongOrNull(offset)) as P;
|
||||||
case 60:
|
case 60:
|
||||||
return (reader.readBoolOrNull(offset)) as P;
|
return (reader.readLongOrNull(offset)) as P;
|
||||||
case 61:
|
case 61:
|
||||||
return (reader.readBoolOrNull(offset)) as P;
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
case 62:
|
case 62:
|
||||||
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
|
case 63:
|
||||||
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
|
case 64:
|
||||||
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
|
case 65:
|
||||||
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
|
case 66:
|
||||||
return (reader.readObjectOrNull<L10nLocale>(
|
return (reader.readObjectOrNull<L10nLocale>(
|
||||||
offset,
|
offset,
|
||||||
L10nLocaleSchema.deserialize,
|
L10nLocaleSchema.deserialize,
|
||||||
allOffsets,
|
allOffsets,
|
||||||
)) as P;
|
)) as P;
|
||||||
case 63:
|
|
||||||
return (reader.readLongOrNull(offset)) as P;
|
|
||||||
case 64:
|
|
||||||
return (_SettingsmangaHomeDisplayTypeValueEnumMap[
|
|
||||||
reader.readByteOrNull(offset)] ??
|
|
||||||
DisplayType.comfortableGrid) as P;
|
|
||||||
case 65:
|
|
||||||
return (reader.readLongOrNull(offset)) as P;
|
|
||||||
case 66:
|
|
||||||
return (reader.readBoolOrNull(offset)) as P;
|
|
||||||
case 67:
|
case 67:
|
||||||
return (reader.readLongOrNull(offset)) as P;
|
return (reader.readLongOrNull(offset)) as P;
|
||||||
case 68:
|
case 68:
|
||||||
|
return (_SettingsmangaHomeDisplayTypeValueEnumMap[
|
||||||
|
reader.readByteOrNull(offset)] ??
|
||||||
|
DisplayType.comfortableGrid) as P;
|
||||||
|
case 69:
|
||||||
|
return (reader.readLongOrNull(offset)) as P;
|
||||||
|
case 70:
|
||||||
|
return (_SettingsnovelDisplayTypeValueEnumMap[
|
||||||
|
reader.readByteOrNull(offset)] ??
|
||||||
|
DisplayType.comfortableGrid) as P;
|
||||||
|
case 71:
|
||||||
|
return (reader.readLongOrNull(offset)) as P;
|
||||||
|
case 72:
|
||||||
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
|
case 73:
|
||||||
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
|
case 74:
|
||||||
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
|
case 75:
|
||||||
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
|
case 76:
|
||||||
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
|
case 77:
|
||||||
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
|
case 78:
|
||||||
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
|
case 79:
|
||||||
|
return (reader.readLongOrNull(offset)) as P;
|
||||||
|
case 80:
|
||||||
return (reader.readObjectList<PersonalPageMode>(
|
return (reader.readObjectList<PersonalPageMode>(
|
||||||
offset,
|
offset,
|
||||||
PersonalPageModeSchema.deserialize,
|
PersonalPageModeSchema.deserialize,
|
||||||
allOffsets,
|
allOffsets,
|
||||||
PersonalPageMode(),
|
PersonalPageMode(),
|
||||||
)) as P;
|
)) as P;
|
||||||
case 69:
|
case 81:
|
||||||
return (reader.readObjectList<PersonalReaderMode>(
|
return (reader.readObjectList<PersonalReaderMode>(
|
||||||
offset,
|
offset,
|
||||||
PersonalReaderModeSchema.deserialize,
|
PersonalReaderModeSchema.deserialize,
|
||||||
allOffsets,
|
allOffsets,
|
||||||
PersonalReaderMode(),
|
PersonalReaderMode(),
|
||||||
)) as P;
|
)) as P;
|
||||||
case 70:
|
case 82:
|
||||||
return (reader.readObjectOrNull<PlayerSubtitleSettings>(
|
return (reader.readObjectOrNull<PlayerSubtitleSettings>(
|
||||||
offset,
|
offset,
|
||||||
PlayerSubtitleSettingsSchema.deserialize,
|
PlayerSubtitleSettingsSchema.deserialize,
|
||||||
allOffsets,
|
allOffsets,
|
||||||
)) as P;
|
)) as P;
|
||||||
case 71:
|
case 83:
|
||||||
return (reader.readBoolOrNull(offset)) as P;
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
case 72:
|
case 84:
|
||||||
return (reader.readLongOrNull(offset)) as P;
|
return (reader.readLongOrNull(offset)) as P;
|
||||||
case 73:
|
case 85:
|
||||||
return (reader.readBoolOrNull(offset)) as P;
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
case 74:
|
case 86:
|
||||||
return (_SettingsscaleTypeValueEnumMap[reader.readByteOrNull(offset)] ??
|
return (_SettingsscaleTypeValueEnumMap[reader.readByteOrNull(offset)] ??
|
||||||
ScaleType.fitScreen) as P;
|
ScaleType.fitScreen) as P;
|
||||||
case 75:
|
case 87:
|
||||||
return (reader.readBoolOrNull(offset)) as P;
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
case 76:
|
case 88:
|
||||||
return (reader.readObjectList<SortChapter>(
|
return (reader.readObjectList<SortChapter>(
|
||||||
offset,
|
offset,
|
||||||
SortChapterSchema.deserialize,
|
SortChapterSchema.deserialize,
|
||||||
allOffsets,
|
allOffsets,
|
||||||
SortChapter(),
|
SortChapter(),
|
||||||
)) as P;
|
)) as P;
|
||||||
case 77:
|
case 89:
|
||||||
return (reader.readObjectOrNull<SortLibraryManga>(
|
return (reader.readObjectOrNull<SortLibraryManga>(
|
||||||
offset,
|
offset,
|
||||||
SortLibraryMangaSchema.deserialize,
|
SortLibraryMangaSchema.deserialize,
|
||||||
allOffsets,
|
allOffsets,
|
||||||
)) as P;
|
)) as P;
|
||||||
case 78:
|
case 90:
|
||||||
return (reader.readObjectOrNull<SortLibraryManga>(
|
return (reader.readObjectOrNull<SortLibraryManga>(
|
||||||
offset,
|
offset,
|
||||||
SortLibraryMangaSchema.deserialize,
|
SortLibraryMangaSchema.deserialize,
|
||||||
allOffsets,
|
allOffsets,
|
||||||
)) as P;
|
)) as P;
|
||||||
case 79:
|
case 91:
|
||||||
|
return (reader.readObjectOrNull<SortLibraryManga>(
|
||||||
|
offset,
|
||||||
|
SortLibraryMangaSchema.deserialize,
|
||||||
|
allOffsets,
|
||||||
|
)) as P;
|
||||||
|
case 92:
|
||||||
return (reader.readLongOrNull(offset)) as P;
|
return (reader.readLongOrNull(offset)) as P;
|
||||||
case 80:
|
case 93:
|
||||||
return (reader.readBoolOrNull(offset)) as P;
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
case 94:
|
case 94:
|
||||||
return (reader.readBoolOrNull(offset)) as P;
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
|
|
@ -1446,9 +1534,9 @@ P _settingsDeserializeProp<P>(
|
||||||
return (reader.readBoolOrNull(offset)) as P;
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
case 97:
|
case 97:
|
||||||
return (reader.readBoolOrNull(offset)) as P;
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
case 85:
|
case 98:
|
||||||
return (reader.readBoolOrNull(offset)) as P;
|
return (reader.readBoolOrNull(offset)) as P;
|
||||||
case 86:
|
case 99:
|
||||||
return (reader.readStringOrNull(offset)) as P;
|
return (reader.readStringOrNull(offset)) as P;
|
||||||
default:
|
default:
|
||||||
throw IsarError('Unknown property with id $propertyId');
|
throw IsarError('Unknown property with id $propertyId');
|
||||||
|
|
|
||||||
|
|
@ -1824,7 +1824,7 @@ class _LibraryLanguageStateProviderElement
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$libraryLocalSourceStateHash() =>
|
String _$libraryLocalSourceStateHash() =>
|
||||||
r'356648df45deac415cd5ce34e920ebe1fdc7a648';
|
r'f3a442394bd9ecbe9be574f6843b9aca4310bdf3';
|
||||||
|
|
||||||
abstract class _$LibraryLocalSourceState
|
abstract class _$LibraryLocalSourceState
|
||||||
extends BuildlessAutoDisposeNotifier<bool> {
|
extends BuildlessAutoDisposeNotifier<bool> {
|
||||||
|
|
|
||||||
|
|
@ -279,7 +279,7 @@ class _LibraryGridViewWidgetState extends State<LibraryGridViewWidget> {
|
||||||
.idIsNotNull()
|
.idIsNotNull()
|
||||||
.and()
|
.and()
|
||||||
.chapter((q) => q.manga((q) =>
|
.chapter((q) => q.manga((q) =>
|
||||||
q.itemTypeEqualTo(entry.itemType!)))
|
q.itemTypeEqualTo(entry.itemType)))
|
||||||
.watch(fireImmediately: true),
|
.watch(fireImmediately: true),
|
||||||
builder: (context, snapshot) {
|
builder: (context, snapshot) {
|
||||||
if (snapshot.hasData &&
|
if (snapshot.hasData &&
|
||||||
|
|
|
||||||
370
lib/modules/novel/novel_reader_controller_provider.dart
Normal file
370
lib/modules/novel/novel_reader_controller_provider.dart
Normal file
|
|
@ -0,0 +1,370 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
|
import 'package:isar/isar.dart';
|
||||||
|
import 'package:mangayomi/main.dart';
|
||||||
|
import 'package:mangayomi/models/chapter.dart';
|
||||||
|
import 'package:mangayomi/models/download.dart';
|
||||||
|
import 'package:mangayomi/models/history.dart';
|
||||||
|
import 'package:mangayomi/models/manga.dart';
|
||||||
|
import 'package:mangayomi/models/settings.dart';
|
||||||
|
import 'package:mangayomi/models/track.dart';
|
||||||
|
import 'package:mangayomi/models/track_preference.dart';
|
||||||
|
import 'package:mangayomi/modules/manga/detail/providers/track_state_providers.dart';
|
||||||
|
import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart';
|
||||||
|
import 'package:mangayomi/modules/more/settings/track/providers/track_providers.dart';
|
||||||
|
import 'package:mangayomi/services/sync_server.dart';
|
||||||
|
import 'package:mangayomi/utils/chapter_recognition.dart';
|
||||||
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||||
|
part 'novel_reader_controller_provider.g.dart';
|
||||||
|
|
||||||
|
BoxFit getBoxFit(ScaleType scaleType) {
|
||||||
|
return switch (scaleType) {
|
||||||
|
ScaleType.fitHeight => BoxFit.fitHeight,
|
||||||
|
ScaleType.fitWidth => BoxFit.fitWidth,
|
||||||
|
ScaleType.fitScreen => BoxFit.contain,
|
||||||
|
ScaleType.originalSize => BoxFit.cover,
|
||||||
|
ScaleType.smartFit => BoxFit.contain,
|
||||||
|
_ => BoxFit.cover
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@riverpod
|
||||||
|
class NovelReaderController extends _$NovelReaderController {
|
||||||
|
@override
|
||||||
|
void build({required Chapter chapter}) {}
|
||||||
|
|
||||||
|
Manga getManga() {
|
||||||
|
return chapter.manga.value!;
|
||||||
|
}
|
||||||
|
|
||||||
|
Chapter geChapter() {
|
||||||
|
return chapter;
|
||||||
|
}
|
||||||
|
|
||||||
|
final incognitoMode = isar.settings.getSync(227)!.incognitoMode!;
|
||||||
|
|
||||||
|
Settings getIsarSetting() {
|
||||||
|
return isar.settings.getSync(227)!;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setMangaHistoryUpdate() {
|
||||||
|
if (incognitoMode) return;
|
||||||
|
isar.writeTxnSync(() {
|
||||||
|
Manga? manga = chapter.manga.value;
|
||||||
|
manga!.lastRead = DateTime.now().millisecondsSinceEpoch;
|
||||||
|
isar.mangas.putSync(manga);
|
||||||
|
});
|
||||||
|
History? history;
|
||||||
|
|
||||||
|
final empty =
|
||||||
|
isar.historys.filter().mangaIdEqualTo(getManga().id).isEmptySync();
|
||||||
|
|
||||||
|
if (empty) {
|
||||||
|
history = History(
|
||||||
|
mangaId: getManga().id,
|
||||||
|
date: DateTime.now().millisecondsSinceEpoch.toString(),
|
||||||
|
itemType: getManga().itemType,
|
||||||
|
chapterId: chapter.id)
|
||||||
|
..chapter.value = chapter;
|
||||||
|
} else {
|
||||||
|
history = (isar.historys
|
||||||
|
.filter()
|
||||||
|
.mangaIdEqualTo(getManga().id)
|
||||||
|
.findFirstSync())!
|
||||||
|
..chapterId = chapter.id
|
||||||
|
..chapter.value = chapter
|
||||||
|
..date = DateTime.now().millisecondsSinceEpoch.toString();
|
||||||
|
}
|
||||||
|
isar.writeTxnSync(() {
|
||||||
|
isar.historys.putSync(history!);
|
||||||
|
history.chapter.saveSync();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void checkAndSyncProgress() {
|
||||||
|
final syncAfterReading = ref.watch(syncAfterReadingStateProvider);
|
||||||
|
if (syncAfterReading) {
|
||||||
|
ref.read(syncServerProvider(syncId: 1).notifier).checkForSync(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setChapterBookmarked() {
|
||||||
|
if (incognitoMode) return;
|
||||||
|
final isBookmarked = getChapterBookmarked();
|
||||||
|
final chap = chapter;
|
||||||
|
isar.writeTxnSync(() {
|
||||||
|
chap.isBookmarked = !isBookmarked;
|
||||||
|
ref
|
||||||
|
.read(changedItemsManagerProvider(managerId: 1).notifier)
|
||||||
|
.addUpdatedChapter(chap, false, false);
|
||||||
|
isar.chapters.putSync(chap);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
bool getChapterBookmarked() {
|
||||||
|
return isar.chapters.getSync(chapter.id!)!.isBookmarked!;
|
||||||
|
}
|
||||||
|
|
||||||
|
(int, bool) getPrevChapterIndex() {
|
||||||
|
final chapters = getManga().getFilteredChapterList();
|
||||||
|
int? index;
|
||||||
|
for (var i = 0; i < chapters.length; i++) {
|
||||||
|
if (chapters[i].id == chapter.id) {
|
||||||
|
index = i + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (index == null) {
|
||||||
|
final chapters = getManga().chapters.toList().reversed.toList();
|
||||||
|
for (var i = 0; i < chapters.length; i++) {
|
||||||
|
if (chapters[i].id == chapter.id) {
|
||||||
|
index = i + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (index!, false);
|
||||||
|
}
|
||||||
|
return (index, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
(int, bool) getNextChapterIndex() {
|
||||||
|
final chapters = getManga().getFilteredChapterList();
|
||||||
|
int? index;
|
||||||
|
for (var i = 0; i < chapters.length; i++) {
|
||||||
|
if (chapters[i].id == chapter.id) {
|
||||||
|
index = i - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (index == null) {
|
||||||
|
final chapters = getManga().chapters.toList().reversed.toList();
|
||||||
|
for (var i = 0; i < chapters.length; i++) {
|
||||||
|
if (chapters[i].id == chapter.id) {
|
||||||
|
index = i - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (index!, false);
|
||||||
|
}
|
||||||
|
return (index, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
(int, bool) getChapterIndex() {
|
||||||
|
final chapters = getManga().getFilteredChapterList();
|
||||||
|
int? index;
|
||||||
|
for (var i = 0; i < chapters.length; i++) {
|
||||||
|
if (chapters[i].id == chapter.id) {
|
||||||
|
index = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (index == null) {
|
||||||
|
final chapters = getManga().chapters.toList().reversed.toList();
|
||||||
|
for (var i = 0; i < chapters.length; i++) {
|
||||||
|
if (chapters[i].id == chapter.id) {
|
||||||
|
index = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (index!, false);
|
||||||
|
}
|
||||||
|
return (index, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
Chapter getPrevChapter() {
|
||||||
|
final prevChapIdx = getPrevChapterIndex();
|
||||||
|
return prevChapIdx.$2
|
||||||
|
? getManga().getFilteredChapterList()[prevChapIdx.$1]
|
||||||
|
: getManga().chapters.toList().reversed.toList()[prevChapIdx.$1];
|
||||||
|
}
|
||||||
|
|
||||||
|
Chapter getNextChapter() {
|
||||||
|
final nextChapIdx = getNextChapterIndex();
|
||||||
|
return nextChapIdx.$2
|
||||||
|
? getManga().getFilteredChapterList()[nextChapIdx.$1]
|
||||||
|
: getManga().chapters.toList().reversed.toList()[nextChapIdx.$1];
|
||||||
|
}
|
||||||
|
|
||||||
|
int getChaptersLength(bool isInFilterList) {
|
||||||
|
return isInFilterList
|
||||||
|
? getManga().getFilteredChapterList().length
|
||||||
|
: getManga().chapters.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
String getMangaName() {
|
||||||
|
return getManga().name!;
|
||||||
|
}
|
||||||
|
|
||||||
|
String getSourceName() {
|
||||||
|
return getManga().source!;
|
||||||
|
}
|
||||||
|
|
||||||
|
String getChapterTitle() {
|
||||||
|
return chapter.name!;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension ChapterExtensions on Chapter {
|
||||||
|
void updateTrackChapterRead(dynamic ref) {
|
||||||
|
if (!(ref is WidgetRef || ref is Ref)) return;
|
||||||
|
final updateProgressAfterReading =
|
||||||
|
ref.watch(updateProgressAfterReadingStateProvider);
|
||||||
|
if (!updateProgressAfterReading) return;
|
||||||
|
final manga = this.manga.value!;
|
||||||
|
final chapterNumber =
|
||||||
|
ChapterRecognition().parseChapterNumber(manga.name!, name!);
|
||||||
|
|
||||||
|
final tracks = isar.tracks
|
||||||
|
.filter()
|
||||||
|
.idIsNotNull()
|
||||||
|
.isMangaEqualTo(manga.itemType == ItemType.manga)
|
||||||
|
.mangaIdEqualTo(manga.id!)
|
||||||
|
.findAllSync();
|
||||||
|
|
||||||
|
if (tracks.isEmpty) return;
|
||||||
|
for (var track in tracks) {
|
||||||
|
final service = isar.trackPreferences
|
||||||
|
.filter()
|
||||||
|
.syncIdIsNotNull()
|
||||||
|
.syncIdEqualTo(track.syncId)
|
||||||
|
.findFirstSync();
|
||||||
|
if (!(service == null || chapterNumber <= (track.lastChapterRead ?? 0))) {
|
||||||
|
if (track.status != TrackStatus.completed) {
|
||||||
|
track.lastChapterRead = chapterNumber;
|
||||||
|
if (track.lastChapterRead == track.totalChapter &&
|
||||||
|
(track.totalChapter ?? 0) > 0) {
|
||||||
|
track.status = TrackStatus.completed;
|
||||||
|
track.finishedReadingDate = DateTime.now().millisecondsSinceEpoch;
|
||||||
|
} else {
|
||||||
|
track.status = manga.itemType == ItemType.manga
|
||||||
|
? TrackStatus.reading
|
||||||
|
: TrackStatus.watching;
|
||||||
|
if (track.lastChapterRead == 1) {
|
||||||
|
track.startedReadingDate = DateTime.now().millisecondsSinceEpoch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ref
|
||||||
|
.read(trackStateProvider(
|
||||||
|
track: track, isManga: manga.itemType == ItemType.manga)
|
||||||
|
.notifier)
|
||||||
|
.updateManga();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension MangaExtensions on Manga {
|
||||||
|
List<Chapter> getFilteredChapterList() {
|
||||||
|
final data = this.chapters.toList().reversed.toList();
|
||||||
|
final filterUnread = (isar.settings
|
||||||
|
.getSync(227)!
|
||||||
|
.chapterFilterUnreadList!
|
||||||
|
.where((element) => element.mangaId == id)
|
||||||
|
.toList()
|
||||||
|
.firstOrNull ??
|
||||||
|
ChapterFilterUnread(
|
||||||
|
mangaId: id,
|
||||||
|
type: 0,
|
||||||
|
))
|
||||||
|
.type!;
|
||||||
|
|
||||||
|
final filterBookmarked = (isar.settings
|
||||||
|
.getSync(227)!
|
||||||
|
.chapterFilterBookmarkedList!
|
||||||
|
.where((element) => element.mangaId == id)
|
||||||
|
.toList()
|
||||||
|
.firstOrNull ??
|
||||||
|
ChapterFilterBookmarked(
|
||||||
|
mangaId: id,
|
||||||
|
type: 0,
|
||||||
|
))
|
||||||
|
.type!;
|
||||||
|
final filterDownloaded = (isar.settings
|
||||||
|
.getSync(227)!
|
||||||
|
.chapterFilterDownloadedList!
|
||||||
|
.where((element) => element.mangaId == id)
|
||||||
|
.toList()
|
||||||
|
.firstOrNull ??
|
||||||
|
ChapterFilterDownloaded(
|
||||||
|
mangaId: id,
|
||||||
|
type: 0,
|
||||||
|
))
|
||||||
|
.type!;
|
||||||
|
|
||||||
|
final sortChapter = (isar.settings
|
||||||
|
.getSync(227)!
|
||||||
|
.sortChapterList!
|
||||||
|
.where((element) => element.mangaId == id)
|
||||||
|
.toList()
|
||||||
|
.firstOrNull ??
|
||||||
|
SortChapter(
|
||||||
|
mangaId: id,
|
||||||
|
index: 1,
|
||||||
|
reverse: false,
|
||||||
|
))
|
||||||
|
.index;
|
||||||
|
final filterScanlator = _getFilterScanlator(this) ?? [];
|
||||||
|
List<Chapter>? chapterList;
|
||||||
|
chapterList = data
|
||||||
|
.where((element) => filterUnread == 1
|
||||||
|
? element.isRead == false
|
||||||
|
: filterUnread == 2
|
||||||
|
? element.isRead == true
|
||||||
|
: true)
|
||||||
|
.where((element) => filterBookmarked == 1
|
||||||
|
? element.isBookmarked == true
|
||||||
|
: filterBookmarked == 2
|
||||||
|
? element.isBookmarked == false
|
||||||
|
: true)
|
||||||
|
.where((element) {
|
||||||
|
final modelChapDownload = isar.downloads
|
||||||
|
.filter()
|
||||||
|
.idIsNotNull()
|
||||||
|
.chapterIdEqualTo(element.id)
|
||||||
|
.findAllSync();
|
||||||
|
return filterDownloaded == 1
|
||||||
|
? modelChapDownload.isNotEmpty &&
|
||||||
|
modelChapDownload.first.isDownload == true
|
||||||
|
: filterDownloaded == 2
|
||||||
|
? !(modelChapDownload.isNotEmpty &&
|
||||||
|
modelChapDownload.first.isDownload == true)
|
||||||
|
: true;
|
||||||
|
})
|
||||||
|
.where((element) => !filterScanlator.contains(element.scanlator))
|
||||||
|
.toList();
|
||||||
|
List<Chapter> chapters =
|
||||||
|
sortChapter == 1 ? chapterList.reversed.toList() : chapterList;
|
||||||
|
if (sortChapter == 0) {
|
||||||
|
chapters.sort(
|
||||||
|
(a, b) {
|
||||||
|
return (a.scanlator == null ||
|
||||||
|
b.scanlator == null ||
|
||||||
|
a.dateUpload == null ||
|
||||||
|
b.dateUpload == null)
|
||||||
|
? 0
|
||||||
|
: a.scanlator!.compareTo(b.scanlator!) |
|
||||||
|
a.dateUpload!.compareTo(b.dateUpload!);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
} else if (sortChapter == 2) {
|
||||||
|
chapters.sort(
|
||||||
|
(a, b) {
|
||||||
|
return (a.dateUpload == null || b.dateUpload == null)
|
||||||
|
? 0
|
||||||
|
: int.parse(a.dateUpload!).compareTo(int.parse(b.dateUpload!));
|
||||||
|
},
|
||||||
|
);
|
||||||
|
} else if (sortChapter == 3) {
|
||||||
|
chapters.sort(
|
||||||
|
(a, b) {
|
||||||
|
return (a.name == null || b.name == null)
|
||||||
|
? 0
|
||||||
|
: a.name!.compareTo(b.name!);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return chapterList;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String>? _getFilterScanlator(Manga manga) {
|
||||||
|
final scanlators = isar.settings.getSync(227)!.filterScanlatorList ?? [];
|
||||||
|
final filter =
|
||||||
|
scanlators.where((element) => element.mangaId == manga.id).toList();
|
||||||
|
return filter.firstOrNull?.scanlators;
|
||||||
|
}
|
||||||
177
lib/modules/novel/novel_reader_controller_provider.g.dart
Normal file
177
lib/modules/novel/novel_reader_controller_provider.g.dart
Normal file
|
|
@ -0,0 +1,177 @@
|
||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'novel_reader_controller_provider.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// RiverpodGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
String _$novelReaderControllerHash() =>
|
||||||
|
r'74ebbf38d60283d308646b59cfd5cfee07c85535';
|
||||||
|
|
||||||
|
/// Copied from Dart SDK
|
||||||
|
class _SystemHash {
|
||||||
|
_SystemHash._();
|
||||||
|
|
||||||
|
static int combine(int hash, int value) {
|
||||||
|
// ignore: parameter_assignments
|
||||||
|
hash = 0x1fffffff & (hash + value);
|
||||||
|
// ignore: parameter_assignments
|
||||||
|
hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10));
|
||||||
|
return hash ^ (hash >> 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int finish(int hash) {
|
||||||
|
// ignore: parameter_assignments
|
||||||
|
hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3));
|
||||||
|
// ignore: parameter_assignments
|
||||||
|
hash = hash ^ (hash >> 11);
|
||||||
|
return 0x1fffffff & (hash + ((0x00003fff & hash) << 15));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class _$NovelReaderController
|
||||||
|
extends BuildlessAutoDisposeNotifier<void> {
|
||||||
|
late final Chapter chapter;
|
||||||
|
|
||||||
|
void build({
|
||||||
|
required Chapter chapter,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// See also [NovelReaderController].
|
||||||
|
@ProviderFor(NovelReaderController)
|
||||||
|
const novelReaderControllerProvider = NovelReaderControllerFamily();
|
||||||
|
|
||||||
|
/// See also [NovelReaderController].
|
||||||
|
class NovelReaderControllerFamily extends Family<void> {
|
||||||
|
/// See also [NovelReaderController].
|
||||||
|
const NovelReaderControllerFamily();
|
||||||
|
|
||||||
|
/// See also [NovelReaderController].
|
||||||
|
NovelReaderControllerProvider call({
|
||||||
|
required Chapter chapter,
|
||||||
|
}) {
|
||||||
|
return NovelReaderControllerProvider(
|
||||||
|
chapter: chapter,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
NovelReaderControllerProvider getProviderOverride(
|
||||||
|
covariant NovelReaderControllerProvider provider,
|
||||||
|
) {
|
||||||
|
return call(
|
||||||
|
chapter: provider.chapter,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const Iterable<ProviderOrFamily>? _dependencies = null;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
|
||||||
|
|
||||||
|
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
|
||||||
|
_allTransitiveDependencies;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String? get name => r'novelReaderControllerProvider';
|
||||||
|
}
|
||||||
|
|
||||||
|
/// See also [NovelReaderController].
|
||||||
|
class NovelReaderControllerProvider
|
||||||
|
extends AutoDisposeNotifierProviderImpl<NovelReaderController, void> {
|
||||||
|
/// See also [NovelReaderController].
|
||||||
|
NovelReaderControllerProvider({
|
||||||
|
required Chapter chapter,
|
||||||
|
}) : this._internal(
|
||||||
|
() => NovelReaderController()..chapter = chapter,
|
||||||
|
from: novelReaderControllerProvider,
|
||||||
|
name: r'novelReaderControllerProvider',
|
||||||
|
debugGetCreateSourceHash:
|
||||||
|
const bool.fromEnvironment('dart.vm.product')
|
||||||
|
? null
|
||||||
|
: _$novelReaderControllerHash,
|
||||||
|
dependencies: NovelReaderControllerFamily._dependencies,
|
||||||
|
allTransitiveDependencies:
|
||||||
|
NovelReaderControllerFamily._allTransitiveDependencies,
|
||||||
|
chapter: chapter,
|
||||||
|
);
|
||||||
|
|
||||||
|
NovelReaderControllerProvider._internal(
|
||||||
|
super._createNotifier, {
|
||||||
|
required super.name,
|
||||||
|
required super.dependencies,
|
||||||
|
required super.allTransitiveDependencies,
|
||||||
|
required super.debugGetCreateSourceHash,
|
||||||
|
required super.from,
|
||||||
|
required this.chapter,
|
||||||
|
}) : super.internal();
|
||||||
|
|
||||||
|
final Chapter chapter;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void runNotifierBuild(
|
||||||
|
covariant NovelReaderController notifier,
|
||||||
|
) {
|
||||||
|
return notifier.build(
|
||||||
|
chapter: chapter,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Override overrideWith(NovelReaderController Function() create) {
|
||||||
|
return ProviderOverride(
|
||||||
|
origin: this,
|
||||||
|
override: NovelReaderControllerProvider._internal(
|
||||||
|
() => create()..chapter = chapter,
|
||||||
|
from: from,
|
||||||
|
name: null,
|
||||||
|
dependencies: null,
|
||||||
|
allTransitiveDependencies: null,
|
||||||
|
debugGetCreateSourceHash: null,
|
||||||
|
chapter: chapter,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
AutoDisposeNotifierProviderElement<NovelReaderController, void>
|
||||||
|
createElement() {
|
||||||
|
return _NovelReaderControllerProviderElement(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) {
|
||||||
|
return other is NovelReaderControllerProvider && other.chapter == chapter;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode {
|
||||||
|
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||||
|
hash = _SystemHash.combine(hash, chapter.hashCode);
|
||||||
|
|
||||||
|
return _SystemHash.finish(hash);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||||
|
// ignore: unused_element
|
||||||
|
mixin NovelReaderControllerRef on AutoDisposeNotifierProviderRef<void> {
|
||||||
|
/// The parameter `chapter` of this provider.
|
||||||
|
Chapter get chapter;
|
||||||
|
}
|
||||||
|
|
||||||
|
class _NovelReaderControllerProviderElement
|
||||||
|
extends AutoDisposeNotifierProviderElement<NovelReaderController, void>
|
||||||
|
with NovelReaderControllerRef {
|
||||||
|
_NovelReaderControllerProviderElement(super.provider);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Chapter get chapter => (origin as NovelReaderControllerProvider).chapter;
|
||||||
|
}
|
||||||
|
// ignore_for_file: type=lint
|
||||||
|
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -236,7 +236,7 @@ class RouterNotifier extends ChangeNotifier {
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
/*GoRoute(
|
GoRoute(
|
||||||
path: "/novelReaderView",
|
path: "/novelReaderView",
|
||||||
name: "novelReaderView",
|
name: "novelReaderView",
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
|
|
@ -254,7 +254,7 @@ class RouterNotifier extends ChangeNotifier {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),*/
|
),
|
||||||
GoRoute(
|
GoRoute(
|
||||||
path: "/ExtensionLang",
|
path: "/ExtensionLang",
|
||||||
name: "ExtensionLang",
|
name: "ExtensionLang",
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ part of 'aniskip.dart';
|
||||||
// RiverpodGenerator
|
// RiverpodGenerator
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
String _$aniSkipHash() => r'887869b54e2e151633efd46da83bde845e14f421';
|
String _$aniSkipHash() => r'2e5d19b025a2207ff64da7bf7908450ea9e5ff8c';
|
||||||
|
|
||||||
/// See also [AniSkip].
|
/// See also [AniSkip].
|
||||||
@ProviderFor(AniSkip)
|
@ProviderFor(AniSkip)
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ part of 'anilist.dart';
|
||||||
// RiverpodGenerator
|
// RiverpodGenerator
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
String _$anilistHash() => r'87784b25bccf5b1c61d6c7494f0569a28494dd8b';
|
String _$anilistHash() => r'd3a8852d689b13c3bde46ec05b464e7779149e58';
|
||||||
|
|
||||||
/// Copied from Dart SDK
|
/// Copied from Dart SDK
|
||||||
class _SystemHash {
|
class _SystemHash {
|
||||||
|
|
|
||||||
24
pubspec.lock
24
pubspec.lock
|
|
@ -258,10 +258,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: csslib
|
name: csslib
|
||||||
sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e"
|
sha256: "831883fb353c8bdc1d71979e5b342c7d88acfbc643113c14ae51e2442ea0f20f"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.2"
|
version: "0.17.3"
|
||||||
cupertino_icons:
|
cupertino_icons:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|
@ -484,6 +484,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.0"
|
version: "0.7.0"
|
||||||
|
flutter_html:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: flutter_html
|
||||||
|
sha256: "02ad69e813ecfc0728a455e4bf892b9379983e050722b1dce00192ee2e41d1ee"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.0-beta.2"
|
||||||
flutter_inappwebview:
|
flutter_inappwebview:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|
@ -720,10 +728,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: html
|
name: html
|
||||||
sha256: "1fc58edeaec4307368c60d59b7e15b9d658b57d7f3125098b6294153c75337ec"
|
sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.15.5"
|
version: "0.15.4"
|
||||||
http:
|
http:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|
@ -916,6 +924,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.0"
|
version: "4.0.0"
|
||||||
|
list_counter:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: list_counter
|
||||||
|
sha256: c447ae3dfcd1c55f0152867090e67e219d42fe6d4f2807db4bbe8b8d69912237
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.2"
|
||||||
logging:
|
logging:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,7 @@ dependencies:
|
||||||
url: https://github.com/kodjodevf/desktop_webview_window.git
|
url: https://github.com/kodjodevf/desktop_webview_window.git
|
||||||
path: packages/desktop_webview_window
|
path: packages/desktop_webview_window
|
||||||
ref: main
|
ref: main
|
||||||
|
flutter_html: ^3.0.0-beta.2
|
||||||
|
|
||||||
dependency_overrides:
|
dependency_overrides:
|
||||||
http: ^1.2.1
|
http: ^1.2.1
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue