aboutsummaryrefslogtreecommitdiff
path: root/src/lib/AniList
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-01-14 22:19:59 -0800
committerFuwn <[email protected]>2024-01-14 22:19:59 -0800
commitd210d464ac22e4dcbe9c19d18c46ef3e2e10147f (patch)
treeaf76a7a2df110beb0a7450594d1806c6766304f6 /src/lib/AniList
parentfix(wrapped): limit activities to year (diff)
downloaddue.moe-d210d464ac22e4dcbe9c19d18c46ef3e2e10147f.tar.xz
due.moe-d210d464ac22e4dcbe9c19d18c46ef3e2e10147f.zip
feat(tools): likes
Diffstat (limited to 'src/lib/AniList')
-rw-r--r--src/lib/AniList/activity.ts25
-rw-r--r--src/lib/AniList/forum.ts16
2 files changed, 41 insertions, 0 deletions
diff --git a/src/lib/AniList/activity.ts b/src/lib/AniList/activity.ts
index 926e8fe6..5eafcf2c 100644
--- a/src/lib/AniList/activity.ts
+++ b/src/lib/AniList/activity.ts
@@ -1,4 +1,5 @@
import { database } from '$lib/Database/activities';
+import type { User } from './follow';
import type { AniListAuthorisation, UserIdentity } from './identity';
export interface ActivityHistoryEntry {
@@ -251,3 +252,27 @@ export const fullActivityHistory = async (
return fullLocalActivityHistory;
};
+
+export const activityLikes = async (id: number): Promise<Partial<User>[]> => {
+ const activityResponse = await (
+ await fetch('https://graphql.anilist.co', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json'
+ },
+ body: JSON.stringify({
+ query: `{
+ Activity(id: ${id}) {
+ __typename
+ ... on TextActivity { likes { name } }
+ ... on ListActivity { likes { name } }
+ ... on MessageActivity { likes { name } }
+ }
+ }`
+ })
+ })
+ ).json();
+
+ return activityResponse['data']['Activity']['likes'];
+};
diff --git a/src/lib/AniList/forum.ts b/src/lib/AniList/forum.ts
index e13528b5..46d569b4 100644
--- a/src/lib/AniList/forum.ts
+++ b/src/lib/AniList/forum.ts
@@ -1,3 +1,4 @@
+import type { User } from './follow';
import { user } from './user';
export interface Thread {
@@ -57,3 +58,18 @@ export const threads = async (username: string): Promise<Thread[]> => {
return allThreads;
};
+
+export const threadLikes = async (id: number): Promise<Partial<User>[]> => {
+ const activityResponse = await (
+ await fetch('https://graphql.anilist.co', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json'
+ },
+ body: JSON.stringify({ query: `{ Thread(id: ${id}) { likes { name } } }` })
+ })
+ ).json();
+
+ return activityResponse['data']['Thread']['likes'];
+};