ReadingProgress.fromSessions constructor
ReadingProgress.fromSessions(
- String itemId,
- List<
NupaleSession> sessions
Implementation
factory ReadingProgress.fromSessions(String itemId, List<NupaleSession> sessions) {
if (sessions.isEmpty) {
return ReadingProgress(itemId: itemId, itemName: '');
}
String itemName = '';
int maxPage = 0;
int totalPages = 0;
int totalTime = 0;
int totalPagesRead = 0;
int lastRead = 0;
Set<int> allPagesViewed = {};
for (final session in sessions) {
if (session.itemName.isNotEmpty) itemName = session.itemName;
if (session.totalPages > totalPages) totalPages = session.totalPages;
if (session.createdTime > lastRead) lastRead = session.createdTime;
totalPagesRead += session.nupale;
for (final entry in session.pagesDuration.entries) {
totalTime += entry.value;
allPagesViewed.add(entry.key);
if (entry.key > maxPage) maxPage = entry.key;
}
for (final pageKey in session.pageViews.keys) {
allPagesViewed.add(pageKey);
if (pageKey > maxPage) maxPage = pageKey;
}
}
return ReadingProgress(
itemId: itemId,
itemName: itemName,
maxPageReached: maxPage,
totalPages: totalPages,
sessionCount: sessions.length,
totalReadingTime: totalTime,
totalPagesRead: totalPagesRead,
pagesViewed: allPagesViewed,
lastReadTime: lastRead,
);
}