aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-12-15 02:46:17 -0800
committerFuwn <[email protected]>2025-12-15 02:46:17 -0800
commit87d3569e8da3b69e574e17d27e5dd0fb3dcfdc67 (patch)
treef3bc10147cbab6dc855c5e4faa483645f34a2918 /src
parentfix(api:birthdays): Update HTML parser for primary source (diff)
downloaddue.moe-87d3569e8da3b69e574e17d27e5dd0fb3dcfdc67.tar.xz
due.moe-87d3569e8da3b69e574e17d27e5dd0fb3dcfdc67.zip
feat(Wrapped): Add detailed activity fetcher toggle
Diffstat (limited to 'src')
-rw-r--r--src/lib/Data/AniList/activity.ts5
-rw-r--r--src/lib/Data/AniList/wrapped.ts11
-rw-r--r--src/lib/Tools/Wrapped/Tool.svelte35
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>