aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/anilist/useAnilist.js53
-rw-r--r--lib/context/watchPageProvider.js7
2 files changed, 44 insertions, 16 deletions
diff --git a/lib/anilist/useAnilist.js b/lib/anilist/useAnilist.js
index 323dd29..36c1496 100644
--- a/lib/anilist/useAnilist.js
+++ b/lib/anilist/useAnilist.js
@@ -4,15 +4,21 @@ export const useAniList = (session) => {
const accessToken = session?.user?.token;
const fetchGraphQL = async (query, variables) => {
- const response = await fetch("https://graphql.anilist.co/", {
- method: "POST",
- headers: {
- "Content-Type": "application/json",
- ...(accessToken && { Authorization: `Bearer ${accessToken}` }),
- },
- body: JSON.stringify({ query, variables }),
- });
- return response.json();
+ try {
+ const response = await fetch("https://graphql.anilist.co/", {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ ...(accessToken && { Authorization: `Bearer ${accessToken}` }),
+ },
+ body: JSON.stringify({ query, variables }),
+ });
+ return response.json();
+ } catch (error) {
+ toast.error("An error occurred, please try again later", {
+ position: "bottom-right",
+ });
+ }
};
const quickSearch = async ({ search, type, isAdult = false }) => {
@@ -103,18 +109,22 @@ export const useAniList = (session) => {
return data;
};
- const markComplete = async (mediaId) => {
+ const markComplete = async (mediaId, { notes, scoreRaw }) => {
if (!accessToken) return;
const completeQuery = `
- mutation($mediaId: Int) {
- SaveMediaListEntry(mediaId: $mediaId, status: COMPLETED) {
+ mutation($mediaId: Int, $notes: String, $scoreRaw: Int) {
+ SaveMediaListEntry(mediaId: $mediaId, status: COMPLETED, scoreRaw: $scoreRaw, notes: $notes) {
id
mediaId
status
}
}
`;
- const data = await fetchGraphQL(completeQuery, { mediaId });
+ const data = await fetchGraphQL(completeQuery, {
+ mediaId,
+ scoreRaw,
+ notes,
+ });
console.log({ Complete: data });
};
@@ -162,11 +172,18 @@ export const useAniList = (session) => {
return data;
};
- const markProgress = async (mediaId, progress, stats, volumeProgress) => {
+ const markProgress = async ({
+ mediaId,
+ progress,
+ stats,
+ volumeProgress,
+ scoreRaw = 0,
+ notes,
+ }) => {
if (!accessToken) return;
const progressWatched = `
- mutation($mediaId: Int, $progress: Int, $status: MediaListStatus, $progressVolumes: Int, $lists: [String], $repeat: Int) {
- SaveMediaListEntry(mediaId: $mediaId, progress: $progress, status: $status, progressVolumes: $progressVolumes, customLists: $lists, repeat: $repeat) {
+ mutation($mediaId: Int, $progress: Int, $status: MediaListStatus, $progressVolumes: Int, $lists: [String], $repeat: Int, $scoreRaw: Int, $notes: String) {
+ SaveMediaListEntry(mediaId: $mediaId, progress: $progress, status: $status, progressVolumes: $progressVolumes, customLists: $lists, repeat: $repeat, scoreRaw: $scoreRaw, notes: $notes) {
id
mediaId
progress
@@ -214,6 +231,8 @@ export const useAniList = (session) => {
status,
progressVolumes: volumeProgress,
lists,
+ scoreRaw,
+ notes,
};
if (videoEpisode === mediaEpisode) {
@@ -235,6 +254,8 @@ export const useAniList = (session) => {
progress,
status: stats,
progressVolumes: volumeProgress,
+ scoreRaw,
+ notes,
};
await fetchGraphQL(progressWatched, variables);
diff --git a/lib/context/watchPageProvider.js b/lib/context/watchPageProvider.js
index c305710..b7d78b3 100644
--- a/lib/context/watchPageProvider.js
+++ b/lib/context/watchPageProvider.js
@@ -16,6 +16,11 @@ export const WatchPageProvider = ({ children }) => {
const [userData, setUserData] = useState(null);
const [dataMedia, setDataMedia] = useState(null);
+ const [ratingModalState, setRatingModalState] = useState({
+ isOpen: false,
+ isFullscreen: false,
+ });
+
const [track, setTrack] = useState(null);
return (
@@ -39,6 +44,8 @@ export const WatchPageProvider = ({ children }) => {
setDataMedia,
autoNext,
setAutoNext,
+ ratingModalState,
+ setRatingModalState,
}}
>
{children}