{"version":3,"file":"useUserBookService-D86GMuGh.js","sources":["../../../app/javascript/services/UserBookReadService/actions/update.ts","../../../app/javascript/services/UserBookReadService/actions/insert.ts","../../../app/javascript/services/UserBookReadService/actions/delete.ts","../../../app/javascript/services/UserBookReadService/useUserBookReadService.ts","../../../app/javascript/services/UserBookService/useUserBookService.ts"],"sourcesContent":["import { gql } from \"graphql-tag\";\nimport { ApolloClient } from \"@apollo/client/core\";\nimport { UserBookSerializersUserBookDate } from \"types/serializers\";\n\n// UPDATE\nconst updateUserBookReadMutation = gql`\n mutation UpdateUserBookReadMutation($id: Int!, $object: DatesReadInput!) {\n updateResult: update_user_book_read(id: $id, object: $object) {\n error\n userBookRead: user_book_read {\n ...UserBookReadFragment\n }\n }\n }\n`;\n\nexport async function updateUserBookRead({\n client,\n id,\n object,\n}: {\n client: ApolloClient;\n id: number;\n object: UserBookSerializersUserBookDate;\n}): Promise {\n return new Promise((resolve, reject) => {\n client\n .mutate({\n mutation: updateUserBookReadMutation,\n variables: {\n id,\n object: {\n started_at: object.startedAt,\n finished_at: object.finishedAt,\n edition_id: object.editionId,\n progress_pages: object.progressPages,\n progress_seconds: object.progressSeconds,\n },\n },\n })\n .then((result) => {\n if (result.data.updateResult.error) {\n reject(result.data.updateResult.error);\n } else {\n resolve(result.data.updateResult.userBookRead);\n }\n })\n .catch((e) => {\n reject(e.message);\n });\n });\n}\n","import { gql } from \"graphql-tag\";\nimport { ApolloClient } from \"@apollo/client/core\";\nimport { UserBookSerializersUserBookDate } from \"types/serializers\";\n\n// INSERT\nconst insertUserBookReadMutation = gql`\n mutation InsertUserBookReadMutation(\n $userBookId: Int!\n $userBookRead: DatesReadInput!\n ) {\n insertResult: insert_user_book_read(\n user_book_id: $userBookId\n user_book_read: $userBookRead\n ) {\n error\n userBookRead: user_book_read {\n ...UserBookReadFragment\n user_book {\n ...UserBookFragment\n }\n }\n }\n }\n`;\nexport async function insertUserBookRead({\n client,\n userBookId,\n userBookRead,\n}: {\n client: ApolloClient;\n userBookId: number;\n userBookRead?: UserBookSerializersUserBookDate;\n}): Promise {\n return new Promise((resolve, reject) => {\n client\n .mutate({\n mutation: insertUserBookReadMutation,\n variables: {\n userBookId,\n userBookRead: {\n started_at: userBookRead?.startedAt,\n finished_at: userBookRead?.finishedAt,\n edition_id: userBookRead?.editionId,\n progress_pages: userBookRead?.progressPages,\n progress_seconds: userBookRead?.progressSeconds,\n },\n },\n })\n .then((result) => {\n if (result.data.insertResult.error) {\n reject(result.data.insertResult.error);\n } else {\n resolve(result.data.insertResult.userBookRead);\n }\n })\n .catch((e) => {\n reject(e.message);\n });\n });\n}\n","import { gql } from \"graphql-tag\";\nimport { ApolloClient } from \"lib/apollo/client\";\n\n// Delete\nconst deleteUserBookReadMutation = gql`\n mutation DeleteUserBookReadMutation($id: Int!) {\n deleteResponse: delete_user_book_read(id: $id) {\n error\n id\n }\n }\n`;\n\ninterface DeleteUserBookReadMutationType {\n deleteResponse: {\n error: string;\n id: number;\n };\n}\nexport async function deleteUserBookRead({\n client,\n id,\n}: {\n client: ApolloClient;\n id: number;\n}): Promise {\n return new Promise((resolve, reject) => {\n client\n .mutate({\n mutation: deleteUserBookReadMutation,\n variables: {\n id,\n },\n update: (cache, result) => {\n const deletedId = result.data.deleteResponse.id;\n if (deletedId) {\n const normalizedId = cache.identify({\n __typename: \"user_book_reads\",\n id: deletedId,\n });\n cache.evict({ id: normalizedId });\n }\n },\n })\n .then((result) => {\n if (result.data.deleteResponse.id) {\n resolve(result.data.deleteResponse.id);\n } else {\n reject();\n }\n })\n .catch((e) => {\n reject(e.message);\n });\n });\n}\n","import { parsedDate } from \"lib/dateUtils\";\nimport { useState } from \"react\";\nimport { toast } from \"sonner\";\nimport { audioReadingFormat } from \"types/ReadingFormatType\";\nimport { useApolloClient } from \"lib/apollo/client\";\nimport { updateUserBookRead } from \"./actions/update\";\nimport { insertUserBookRead } from \"./actions/insert\";\nimport { deleteUserBookRead } from \"./actions/delete\";\nimport { UserBookSerializersUserBookDate } from \"types/serializers\";\nimport { useUserBookRead } from \"store/books/booksSelector\";\nimport { useDispatch } from \"react-redux\";\nimport { removeUserBookRead, setUserBookRead } from \"store/books/booksSlice\";\n\nexport interface FromToDate {\n from?: Date;\n to?: Date;\n}\n\nconst catchErrorMessage = (error: string) => {\n toast.error(`Something went wrong: ${error}`);\n return error;\n};\n\ninterface Props {\n bookId: number;\n userBookReadId: number | null;\n settings?: {\n userBookRead?: UserBookSerializersUserBookDate;\n }\n}\nexport default function useUserBookReadService({\n bookId,\n userBookReadId: initialUserBookReadId,\n settings = {}\n}: Props) {\n const dispatch = useDispatch();\n const client = useApolloClient();\n const [userBookReadId, setUserBookReadId] = useState(initialUserBookReadId || null);\n const storeUserBookRead = useUserBookRead(bookId, userBookReadId);\n const userBookRead = settings.userBookRead || storeUserBookRead;\n\n async function updateUserBookReadCache(newUserBookRead: UserBookSerializersUserBookDate | null) {\n if (newUserBookRead) {\n dispatch(setUserBookRead({ bookId, userBookRead: newUserBookRead }));\n }\n return newUserBookRead;\n }\n\n const updateEdition = (editionId: number) => {\n if (userBookRead?.id) {\n // Update\n return updateUserBookRead({\n client,\n id: userBookRead.id,\n object: {\n ...userBookRead,\n ...{ editionId },\n },\n })\n .then(updateUserBookReadCache)\n .catch(catchErrorMessage);\n } else {\n // Insert\n return insertUserBookRead({\n client,\n userBookId: userBookRead.userBookId,\n userBookRead: {\n ...userBookRead,\n ...{ editionId },\n } as unknown as UserBookSerializersUserBookDate,\n }).then(updateUserBookReadCache).catch(catchErrorMessage);\n }\n };\n\n const updateDates = (date: FromToDate) => {\n const startedAt = date.from ? parsedDate(date.from) : null;\n const finishedAt = date.to ? parsedDate(date.to) : null;\n\n if (userBookRead?.id) {\n // Update\n return updateUserBookRead({\n client,\n id: userBookRead.id,\n object: {\n ...userBookRead,\n ...{\n startedAt,\n finishedAt,\n },\n },\n }).then(updateUserBookReadCache);\n } else {\n // Insert\n return insertUserBookRead({\n client,\n userBookId: userBookRead.userBookId,\n userBookRead: {\n startedAt,\n finishedAt,\n } as unknown as UserBookSerializersUserBookDate,\n }).then(updateUserBookReadCache);\n }\n };\n\n const updateProgress = (newProgress) => {\n if (!userBookRead?.id) {\n toast.error(\n \"Something went wrong updating your progress. Please refresh the page.\"\n );\n return Promise.resolve(\"No date read to update.\");\n }\n const progressPages =\n userBookRead?.edition?.readingFormatId === audioReadingFormat.id\n ? 0\n : newProgress;\n const progressSeconds =\n userBookRead?.edition?.readingFormatId === audioReadingFormat.id\n ? newProgress\n : 0;\n\n return updateUserBookRead({\n client,\n id: userBookRead.id,\n object: {\n ...userBookRead,\n ...{ progressPages, progressSeconds },\n },\n }).then(updateUserBookReadCache).catch(catchErrorMessage);\n };\n\n const deleteDate = () => {\n return deleteUserBookRead({ client, id: userBookRead.id }).then((newUserBookReadId) => {\n if (bookId) {\n dispatch(removeUserBookRead({ bookId, userBookReadId }));\n }\n return newUserBookReadId;\n })\n };\n\n return {\n deleteDate,\n setUserBookReadId,\n userBookRead,\n updateEdition,\n updateDates,\n updateProgress,\n };\n}\n","import { useDispatch } from \"react-redux\";\nimport { useApolloClient } from \"lib/apollo/client\";\nimport {\n deleteUserBook as destroyUserBook,\n insertUserBook,\n updateUserBook,\n} from \"services/UserBookService/UserBookServiceClient\";\nimport {\n ReadStatus,\n WantToReadStatus,\n} from \"components/shared/UserBookStatuses\";\nimport { PrivacySettingType } from \"constants/PrivacySettings\";\nimport { toast } from \"sonner\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\nimport useCurrentUserId from \"hooks/user/useCurrentUserId\";\nimport { useUserBook } from \"store/books/booksSelector\";\nimport { setUserBook, removeUserBook, setUserBookRead } from \"store/books/booksSlice\";\nimport { bookButtonActions } from \"store/bookButton/bookButtonSlice\";\nimport { UserBookSerializersUserBook } from \"types/serializers\";\nimport { insertUserBookRead } from \"services/UserBookReadService\";\n\nconst catchErrorMessage = (error: string) => {\n toast.error(`Something went wrong: ${error}`);\n return error;\n};\n\nexport default function useUserBookService(bookId: number, settings?: { referrerUserId?: number }) {\n const client = useApolloClient();\n const dispatch = useDispatch();\n const userId = useCurrentUserId();\n const defaultPrivacySettingId = useCurrentUser(\n (u) => u.accountPrivacySettingId\n );\n const userBook = useUserBook(bookId);\n\n async function updateUserBookCache(newUserBook: UserBookSerializersUserBook | null) {\n if (newUserBook) {\n dispatch(setUserBook({ userBook: newUserBook }));\n dispatch(bookButtonActions.setUserBook({ userBook: newUserBook }));\n \n }\n return newUserBook;\n }\n\n const insertDateRead = () => {\n if(userBook) {\n // Insert\n const promise = insertUserBookRead({\n client,\n userBookId: userBook.id,\n })\n promise.then((newUserBookRead) => {\n dispatch(setUserBookRead({ bookId, userBookRead: newUserBookRead }));\n });\n return promise;\n } else {\n return insertUserBook({\n client,\n userBook: {\n bookId,\n userId,\n statusId: ReadStatus.id,\n privacySettingId: defaultPrivacySettingId,\n referrerUserId: settings?.referrerUserId,\n } as unknown as UserBookSerializersUserBook,\n }).then(updateUserBookCache).then((newUserBook) => {\n dispatch(setUserBookRead({ bookId, userBookRead: newUserBook.datesRead[0] }));\n }).catch(catchErrorMessage)\n }\n };\n\n const updateRating = (newRating: number) => {\n if (userBook?.id) {\n // Update\n return updateUserBook({\n client,\n id: userBook.id,\n userBook: {\n ...userBook,\n rating: newRating,\n },\n }).then(updateUserBookCache).catch(catchErrorMessage);\n } else {\n // Create\n return insertUserBook({\n client,\n userBook: {\n bookId,\n userId,\n statusId: ReadStatus.id,\n privacySettingId: defaultPrivacySettingId,\n rating: newRating,\n referrerUserId: settings?.referrerUserId,\n } as unknown as UserBookSerializersUserBook,\n }).then(updateUserBookCache).catch(catchErrorMessage);\n }\n };\n\n const updateStatus = (statusId: number) => {\n if (userBook?.id) {\n // Update\n return updateUserBook({\n client,\n id: userBook.id,\n userBook: {\n ...userBook,\n statusId: statusId,\n },\n }).then(updateUserBookCache).catch(catchErrorMessage);\n } else {\n // Create\n return insertUserBook({\n client,\n userBook: {\n bookId,\n privacySettingId: defaultPrivacySettingId,\n userId,\n statusId: statusId,\n referrerUserId: settings?.referrerUserId,\n } as unknown as UserBookSerializersUserBook,\n }).then(updateUserBookCache).catch(catchErrorMessage);\n }\n };\n\n const updateEdition = (editionId: number):Promise => {\n if (userBook?.id) {\n // Update\n const result = updateUserBook({\n client,\n id: userBook.id,\n userBook: {\n ...userBook,\n editionId,\n },\n })\n result.then(updateUserBookCache)\n .catch(catchErrorMessage);\n return result;\n } else {\n // Create\n const result = insertUserBook({\n client,\n userBook: {\n bookId,\n userId,\n editionId,\n privacySettingId: defaultPrivacySettingId,\n statusId: WantToReadStatus.id,\n referrerUserId: settings?.referrerUserId,\n } as unknown as UserBookSerializersUserBook,\n })\n result.then(updateUserBookCache).catch(catchErrorMessage);\n return result;\n }\n };\n\n const updatePrivacy = (privacySettingId: PrivacySettingType) => {\n if (userBook?.id) {\n // Update\n return updateUserBook({\n client,\n id: userBook.id,\n userBook: {\n ...userBook,\n privacySettingId,\n },\n }).then(updateUserBookCache).catch(catchErrorMessage);\n } else {\n // Create\n return insertUserBook({\n client,\n userBook: {\n bookId,\n userId,\n statusId: WantToReadStatus.id,\n privacySettingId,\n referrerUserId: settings?.referrerUserId,\n } as unknown as UserBookSerializersUserBook,\n }).then(updateUserBookCache).catch(catchErrorMessage);\n }\n };\n\n const deleteUserBook = () => {\n return destroyUserBook(userBook.id, client).then((newUserBook) => {\n if (bookId) {\n dispatch(removeUserBook({ bookId: newUserBook.bookId }));\n dispatch(bookButtonActions.removeUserBook({ bookId: newUserBook.bookId }));\n }\n return newUserBook;\n })\n };\n\n return {\n deleteUserBook,\n insertDateRead,\n userBook,\n updateEdition,\n updateRating,\n updateStatus,\n updatePrivacy,\n };\n}\n"],"names":["updateUserBookReadMutation","gql","updateUserBookRead","client","id","object","resolve","reject","result","e","insertUserBookReadMutation","insertUserBookRead","userBookId","userBookRead","deleteUserBookReadMutation","deleteUserBookRead","cache","deletedId","normalizedId","catchErrorMessage","error","toast","useUserBookReadService","bookId","initialUserBookReadId","settings","dispatch","useDispatch","useApolloClient","userBookReadId","setUserBookReadId","useState","storeUserBookRead","useUserBookRead","updateUserBookReadCache","newUserBookRead","setUserBookRead","newUserBookReadId","removeUserBookRead","editionId","date","startedAt","parsedDate","finishedAt","newProgress","progressPages","_a","audioReadingFormat","progressSeconds","_b","useUserBookService","userId","useCurrentUserId","defaultPrivacySettingId","useCurrentUser","u","userBook","useUserBook","updateUserBookCache","newUserBook","setUserBook","bookButtonActions","destroyUserBook","removeUserBook","promise","insertUserBook","ReadStatus","updateUserBook","WantToReadStatus","newRating","statusId","privacySettingId"],"mappings":"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"}