diff options
| -rw-r--r-- | src/lib/Data/AniList/activity.ts | 5 | ||||
| -rw-r--r-- | src/lib/Data/AniList/wrapped.ts | 11 | ||||
| -rw-r--r-- | src/lib/Tools/Wrapped/Tool.svelte | 35 |
3 files changed, 37 insertions, 14 deletions
diff --git a/src/lib/Data/AniList/activity.ts b/src/lib/Data/AniList/activity.ts index 2c16fb1f..afe3cef3 100644 --- a/src/lib/Data/AniList/activity.ts +++ b/src/lib/Data/AniList/activity.ts @@ -184,7 +184,8 @@ const activitiesPage = async ( export const fullActivityHistory = async ( anilistAuthorisation: AniListAuthorisation, userIdentity: UserIdentity, - year = new Date().getFullYear() + year = new Date().getFullYear(), + disableLoopingActivityCounter = false ): Promise<ActivityHistoryEntry[]> => { const activities = []; let page = 1; @@ -203,6 +204,8 @@ export const fullActivityHistory = async ( for (const activity of currentPage.data.Page.activities) activities.push(activity); while (currentPage['data']['Page']['pageInfo']['hasNextPage']) { + if (disableLoopingActivityCounter) break; + for (const activity of currentPage.data.Page.activities) activities.push(activity); page += 1; diff --git a/src/lib/Data/AniList/wrapped.ts b/src/lib/Data/AniList/wrapped.ts index 62aff010..4ca9f772 100644 --- a/src/lib/Data/AniList/wrapped.ts +++ b/src/lib/Data/AniList/wrapped.ts @@ -48,7 +48,8 @@ export interface Wrapped { const profileActivities = async ( user: AniListAuthorisation, identity: UserIdentity, - date = new Date() + date = new Date(), + disableLoopingActivityCounter = false ) => { const now = date.getTime(); const get = async (page: number) => @@ -91,6 +92,8 @@ const profileActivities = async ( pages.push(response['data']['Page']['activities']); while (response['data']['Page']['pageInfo']['hasNextPage']) { + if (disableLoopingActivityCounter) break; + page += 1; response = await get(page); @@ -121,7 +124,8 @@ export const wrapped = async ( anilistAuthorisation: AniListAuthorisation | undefined, identity: UserIdentity, year = new Date().getFullYear(), - skipActivities = false + skipActivities = false, + disableLoopingActivityCounter = false ): Promise<Wrapped> => { const headers: { [key: string]: string } = { 'Content-Type': 'application/json', @@ -165,7 +169,8 @@ export const wrapped = async ( const { statusCount, messageCount } = await profileActivities( anilistAuthorisation, identity, - new Date(year, 11, 31) + new Date(year, 11, 31), + disableLoopingActivityCounter ); statusCountActivities = statusCount; diff --git a/src/lib/Tools/Wrapped/Tool.svelte b/src/lib/Tools/Wrapped/Tool.svelte index e505ffd5..bcc33f68 100644 --- a/src/lib/Tools/Wrapped/Tool.svelte +++ b/src/lib/Tools/Wrapped/Tool.svelte @@ -59,6 +59,7 @@ let excludedKeywordsInput = ''; let excludedKeywords: string[] = []; let useFullActivityHistory = false; + let disableLoopingActivityCounter = false; let topGenresTags = true; let topMedia: TopMedia; let highestRatedMediaPercentage = true; @@ -99,6 +100,10 @@ $page.url.searchParams.set('includeMovies', includeMovies.toString()); $page.url.searchParams.set('includeOVAs', includeOVAs.toString()); $page.url.searchParams.set('excludeUnratedUnwatched', excludeUnratedUnwatched.toString()); + $page.url.searchParams.set( + 'disableLoopingActivityCounter', + disableLoopingActivityCounter.toString() + ); history.replaceState(null, '', `?${$page.url.searchParams.toString()}`); } @@ -250,7 +255,8 @@ 'genreTagsSort', 'mediaSort', 'includeMovies', - 'includeOVAs' + 'includeOVAs', + 'disableLoopingActivityCounter' ]); if (browser) { @@ -264,6 +270,8 @@ highestRatedCount = parseInt($page.url.searchParams.get('highestRatedCount') || '5', 10); genreTagCount = parseInt($page.url.searchParams.get('genreTagCount') || '5', 10); disableActivityHistory = $page.url.searchParams.get('disableActivityHistory') === 'true'; + disableLoopingActivityCounter = + $page.url.searchParams.get('disableLoopingActivityCounter') === 'true'; highestRatedMediaPercentage = $page.url.searchParams.get('highestRatedMediaPercentage') === 'true'; highestRatedGenreTagPercentage = @@ -300,8 +308,8 @@ (includeRepeats ? true : item.startDate.year === selectedYear || item.endDate.year === selectedYear - ? true - : item.mediaListEntry?.repeat === 0) && + ? true + : item.mediaListEntry?.repeat === 0) && (item.mediaListEntry?.startedAt.year === selectedYear || item.mediaListEntry?.completedAt.year === selectedYear || ((item.mediaListEntry?.createdAt @@ -355,8 +363,8 @@ (includeRepeats ? true : item.startDate.year === selectedYear || item.endDate.year === selectedYear - ? true - : item.mediaListEntry?.repeat === 0) && + ? true + : item.mediaListEntry?.repeat === 0) && (item.mediaListEntry?.startedAt.year === selectedYear || item.mediaListEntry?.completedAt.year === selectedYear || ((item.mediaListEntry?.createdAt @@ -606,12 +614,12 @@ {#if $userIdentity.id === -2 || user === undefined} <LogInRestricted /> {:else if $userIdentity.id !== -1} - {#await selectedYear !== currentYear || useFullActivityHistory || new Date().getMonth() <= 6 ? fullActivityHistory(user, $userIdentity, selectedYear) : getActivityHistory($userIdentity)} + {#await selectedYear !== currentYear || useFullActivityHistory || new Date().getMonth() <= 6 ? fullActivityHistory(user, $userIdentity, selectedYear, disableLoopingActivityCounter) : getActivityHistory($userIdentity)} <Message message="Loading activity history ..." /> <Skeleton count={2} /> {:then activities} - {#await wrapped(user, $userIdentity, selectedYear)} + {#await wrapped(user, $userIdentity, selectedYear, false, disableLoopingActivityCounter)} <Message message="Loading user data ..." /> <Skeleton count={2} /> @@ -669,10 +677,10 @@ </div> <div class="list"> <div class:card={generated}> - <div id="wrapped-final"></div> + <div id="wrapped-final" /> {#if generated} - <p></p> + <p /> <blockquote style="margin: 0 0 0 1.5rem;"> Click on the image to download, or right click and select "Save Image As...". @@ -681,7 +689,7 @@ </div> {#if generated} - <p></p> + <p /> {/if} <div id="options" class="card"> @@ -806,6 +814,13 @@ <br /> <SettingHint>Comma separated list (e.g., "My Hero, Kaguya")</SettingHint> </details> + + <details class="no-shadow" open> + <summary>Advanced</summary> + + <input type="checkbox" bind:checked={disableLoopingActivityCounter} /> + Disable detailed activity information + </details> </div> </div> </div> |