aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-12-22 03:36:37 -0800
committerFuwn <[email protected]>2023-12-22 03:36:37 -0800
commit52d156847cebd29efa7178cd009e57e6ece5f3a3 (patch)
tree1971519dad018546af2dde60179726408bf02626 /src/lib
parentfeat(wrapped): custom loading messages all around (diff)
downloaddue.moe-52d156847cebd29efa7178cd009e57e6ece5f3a3.tar.xz
due.moe-52d156847cebd29efa7178cd009e57e6ece5f3a3.zip
feat(wrapped): commit activities to database
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/AniList/activity.ts26
-rw-r--r--src/lib/Database/activities.ts22
-rw-r--r--src/lib/Tools/Wrapped.svelte2
3 files changed, 46 insertions, 4 deletions
diff --git a/src/lib/AniList/activity.ts b/src/lib/AniList/activity.ts
index 0735b291..37548edd 100644
--- a/src/lib/AniList/activity.ts
+++ b/src/lib/AniList/activity.ts
@@ -1,3 +1,4 @@
+import { database } from '$lib/Database/activities';
import type { AniListAuthorisation, UserIdentity } from './identity';
export interface ActivityHistoryEntry {
@@ -91,7 +92,7 @@ export const lastActivityDate = async (userIdentity: UserIdentity): Promise<Date
return date;
};
-interface ActivitiesPage {
+export interface ActivitiesPage {
data: {
Page: {
pageInfo: {
@@ -142,7 +143,17 @@ export const fullActivityHistory = async (
): Promise<ActivityHistoryEntry[]> => {
const activities: any[] = [];
let page = 1;
- let currentPage = await activitiesPage(page, anilistAuthorisation, userIdentity);
+ let currentDatabasePage = await database.activities.get(page);
+ let currentPage;
+
+ if (currentDatabasePage) currentPage = currentDatabasePage.data;
+ else {
+ currentPage = await activitiesPage(page, anilistAuthorisation, userIdentity);
+ database.activities.add({
+ page,
+ data: currentPage
+ });
+ }
for (const activity of currentPage.data.Page.activities) activities.push(activity);
@@ -150,7 +161,16 @@ export const fullActivityHistory = async (
for (const activity of currentPage.data.Page.activities) activities.push(activity);
page += 1;
- currentPage = await activitiesPage(page, anilistAuthorisation, userIdentity);
+ currentDatabasePage = await database.activities.get(page);
+
+ if (currentDatabasePage) currentPage = currentDatabasePage.data;
+ else {
+ currentPage = await activitiesPage(page, anilistAuthorisation, userIdentity);
+ database.activities.add({
+ page,
+ data: currentPage
+ });
+ }
}
let fullLocalActivityHistory: ActivityHistoryEntry[] = [];
diff --git a/src/lib/Database/activities.ts b/src/lib/Database/activities.ts
new file mode 100644
index 00000000..f3d4a8a4
--- /dev/null
+++ b/src/lib/Database/activities.ts
@@ -0,0 +1,22 @@
+import type { ActivitiesPage } from '$lib/AniList/activity';
+import Dexie, { type Table } from 'dexie';
+
+export interface ActivityPage {
+ page: number;
+ data: ActivitiesPage;
+}
+
+export class ActivityDatabase extends Dexie {
+ activities: Table<ActivityPage>;
+
+ constructor() {
+ super('activities');
+ this.version(1).stores({
+ activities: 'page, data'
+ });
+
+ this.activities = this.table('activities');
+ }
+}
+
+export const database = new ActivityDatabase();
diff --git a/src/lib/Tools/Wrapped.svelte b/src/lib/Tools/Wrapped.svelte
index ab1ac125..49a86e63 100644
--- a/src/lib/Tools/Wrapped.svelte
+++ b/src/lib/Tools/Wrapped.svelte
@@ -552,7 +552,7 @@
{/await}
{:catch}
<Error
- type={`${useFullActivityHistory ? 'Full-year ' : ''}activity history`}
+ type={`${useFullActivityHistory ? 'Full-year activity' : 'Activity'} history`}
loginSessionError={!useFullActivityHistory}
/>
{/await}