1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
import { useState, useEffect } from "react";
export function useAniList(session) {
const [media, setMedia] = useState([]);
// const [aniAdvanceSearch, setAniAdvanceSearch] = useState([]);
const queryMedia = `
query ($username: String) {
MediaListCollection(userName: $username, type: ANIME) {
lists {
status
name
entries {
id
mediaId
status
progress
score
media {
id
title {
english
romaji
}
episodes
coverImage {
large
}
}
}
}
}
}
`;
const advance = `
query ($search: String, $type: MediaType, $status: MediaStatus, $season: MediaSeason, $year: Int, $genres: [String], $tags: [String], $sort: [MediaSort], $page: Int, $perPage: Int) {
Page (page: $page, perPage: $perPage) {
pageInfo {
total
currentPage
lastPage
hasNextPage
}
media (search: $search, type: $type, status: $status, season: $season, seasonYear: $year, genre_in: $genres, tag_in: $tags, sort: $sort) {
id
title {
userPreferred
}
type
episodes
status
format
coverImage {
extraLarge
color
}
averageScore
isAdult
}
}
}
`;
const username = session?.user?.name;
const accessToken = session?.user?.token;
useEffect(() => {
async function fetchData() {
if (!username || !accessToken) return;
const response = await fetch("https://graphql.anilist.co/", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
query: queryMedia,
variables: {
username: username,
},
}),
});
const data = await response.json();
setMedia(data.data.MediaListCollection.lists);
}
fetchData();
}, [queryMedia, username, accessToken]);
// useEffect(() => {
// async function fetchData() {}
// });
async function aniAdvanceSearch(
search,
type,
seasonYear,
season,
genres,
perPage,
sort
) {
const response = await fetch("https://graphql.anilist.co/", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
query: advance,
variables: {
search: search,
type: type,
seasonYear: seasonYear,
season: season,
genres: genres,
perPage: perPage,
sort: sort,
page: 1,
},
}),
});
const datas = await response.json();
console.log(search);
const data = datas.data.Page;
return data;
}
return {
media,
// updateMediaEntry,
aniAdvanceSearch,
};
}
|