From c40edd5b2cc68c2b746ba588aa39e142ab99f01e Mon Sep 17 00:00:00 2001 From: Rajarshee Chatterjee Date: Sun, 25 Jan 2026 14:50:17 +0530 Subject: [PATCH] feat: Add Kitsu Tracker (Closes #416) --- assets/kitsu.png | Bin 0 -> 142923 bytes src/hooks/persisted/useTrackedNovel.ts | 1 + src/hooks/persisted/useTracker.ts | 2 + .../components/Tracker/ScoreSelectors.tsx | 36 ++ .../Tracker/SetTrackScoreDialog.tsx | 8 + .../novel/components/Tracker/TrackerCards.tsx | 11 +- .../novel/components/Tracker/constants.ts | 23 + .../settings/SettingsTrackerScreen.tsx | 158 ++++-- ...LoginDialog.tsx => TrackerLoginDialog.tsx} | 18 +- src/services/Trackers/index.ts | 2 +- src/services/Trackers/kitsu.ts | 489 ++++++++++++++++++ 11 files changed, 700 insertions(+), 48 deletions(-) create mode 100644 assets/kitsu.png rename src/screens/settings/components/{MangaUpdatesLoginDialog.tsx => TrackerLoginDialog.tsx} (90%) create mode 100644 src/services/Trackers/kitsu.ts diff --git a/assets/kitsu.png b/assets/kitsu.png new file mode 100644 index 0000000000000000000000000000000000000000..4d487aaad5f15db4879751cd68b8c4bb494316ea GIT binary patch literal 142923 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�^UG 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 T!pu1|)XxJW^Sj^g*vI}q1t|yb literal 0 HcmV?d00001 diff --git a/src/hooks/persisted/useTrackedNovel.ts b/src/hooks/persisted/useTrackedNovel.ts index e60a31e1..e02cad3f 100644 --- a/src/hooks/persisted/useTrackedNovel.ts +++ b/src/hooks/persisted/useTrackedNovel.ts @@ -56,6 +56,7 @@ export const useTrackedNovel = (novelId: number | 'NO_ID') => { 'AniList', 'MyAnimeList', 'MangaUpdates', + 'Kitsu', ]; trackerNames.forEach(trackerName => { diff --git a/src/hooks/persisted/useTracker.ts b/src/hooks/persisted/useTracker.ts index f854840b..9232928d 100644 --- a/src/hooks/persisted/useTracker.ts +++ b/src/hooks/persisted/useTracker.ts @@ -2,6 +2,7 @@ import { AuthenticationResult, Tracker, TrackerName } from '@services/Trackers'; import { aniListTracker } from '@services/Trackers/aniList'; import { myAnimeListTracker } from '@services/Trackers/myAnimeList'; import { mangaUpdatesTracker } from '@services/Trackers/mangaUpdates'; +import { kitsuTracker } from '@services/Trackers/kitsu'; import { useMMKVObject, useMMKVString } from 'react-native-mmkv'; import { useEffect } from 'react'; import { @@ -23,6 +24,7 @@ const trackers: Record = { AniList: aniListTracker, MyAnimeList: myAnimeListTracker, MangaUpdates: mangaUpdatesTracker, + Kitsu: kitsuTracker, }; export const getTracker = (name: TrackerName) => { diff --git a/src/screens/novel/components/Tracker/ScoreSelectors.tsx b/src/screens/novel/components/Tracker/ScoreSelectors.tsx index 8648dae5..1931da9b 100644 --- a/src/screens/novel/components/Tracker/ScoreSelectors.tsx +++ b/src/screens/novel/components/Tracker/ScoreSelectors.tsx @@ -6,6 +6,7 @@ import { RadioButton, RadioButtonGroup } from '@components/RadioButton'; import { useTheme } from '@hooks/persisted'; import { getAniListScoreFormatting, + getKitsuScoreFormatting, getMyAnimeListScoreLabel, } from './constants'; import { @@ -141,6 +142,41 @@ export const AniListScoreSelector: React.FC = ({ ); }; +/** + * Kitsu uses a 0.5-10 scale (displayed as half-increments). + * Score values: 0 (no score), 1 (0.5), 2 (1.0), 3 (1.5), ... 20 (10.0) + */ +export const KitsuScoreSelector: React.FC = ({ + trackItem, + onUpdateScore, +}) => { + const theme = useTheme(); + const formatting = getKitsuScoreFormatting(); + const scores = Array.from({ length: formatting.count }, (_, i) => i); + + const handleValueChange = (value: string) => { + onUpdateScore(Number(value)); + }; + + return ( + + + {scores.map(score => ( + + ))} + + + ); +}; + const styles = StyleSheet.create({ errorText: { fontSize: 12, diff --git a/src/screens/novel/components/Tracker/SetTrackScoreDialog.tsx b/src/screens/novel/components/Tracker/SetTrackScoreDialog.tsx index 70806793..92bb2b16 100644 --- a/src/screens/novel/components/Tracker/SetTrackScoreDialog.tsx +++ b/src/screens/novel/components/Tracker/SetTrackScoreDialog.tsx @@ -5,6 +5,7 @@ import { Button, DialogTitle, Modal } from '@components'; import { getString } from '@strings/translations'; import { AniListScoreSelector, + KitsuScoreSelector, MangaUpdatesScoreSelector, MyAnimeListScoreSelector, } from './ScoreSelectors'; @@ -46,6 +47,13 @@ const SetTrackScoreDialog: React.FC = ({ onUpdateScore={setSelectedScore} /> ); + case 'Kitsu': + return ( + + ); case 'AniList': default: return ( diff --git a/src/screens/novel/components/Tracker/TrackerCards.tsx b/src/screens/novel/components/Tracker/TrackerCards.tsx index a5e902c8..5944167d 100644 --- a/src/screens/novel/components/Tracker/TrackerCards.tsx +++ b/src/screens/novel/components/Tracker/TrackerCards.tsx @@ -3,7 +3,10 @@ import { Image, Pressable, StyleSheet, Text, View } from 'react-native'; import { IconButton } from 'react-native-paper'; import { useTheme } from '@hooks/persisted'; -import { getAniListScoreFormatting } from './constants'; +import { + getAniListScoreFormatting, + getKitsuScoreFormatting, +} from './constants'; import { AddTrackingCardProps, TrackedItemCardProps } from './types'; export const AddTrackingCard: React.FC = ({ @@ -60,12 +63,16 @@ export const TrackedItemCard: React.FC = ({ } if (tracker.name === 'MangaUpdates') { - // Show decimal for MangaUpdates if it has decimal places + /* Show decimal for MangaUpdates if it has decimal places */ return Number.isInteger(trackItem.score) ? trackItem.score.toString() : trackItem.score.toFixed(1); } + if (tracker.name === 'Kitsu') { + return getKitsuScoreFormatting().label(trackItem.score); + } + return trackItem.score; }, [tracker, trackItem.score]); diff --git a/src/screens/novel/components/Tracker/constants.ts b/src/screens/novel/components/Tracker/constants.ts index 9d0c0992..61dff640 100644 --- a/src/screens/novel/components/Tracker/constants.ts +++ b/src/screens/novel/components/Tracker/constants.ts @@ -7,6 +7,7 @@ export const TRACKER_ICONS: Record = { MyAnimeList: require('../../../../../assets/mal.png'), MangaUpdates: require('../../../../../assets/mangaupdates.png'), AniList: require('../../../../../assets/anilist.png'), + Kitsu: require('../../../../../assets/kitsu.png'), }; export const STATUS_LABELS: Record = { @@ -91,3 +92,25 @@ export const getAniListScoreFormatting = ( }; } }; + +/** + * Kitsu uses a 0.5-10 scale (displayed as half-increments). + * Internally stored as ratingTwenty (2-20), displayed as ratingTwenty/2. + * This provides 21 options: 0 (no score), 0.5, 1.0, 1.5, ... 10.0 + */ +export const getKitsuScoreFormatting = (): ScoreFormatting => { + return { + count: 21, + label: score => { + if (score === 0) { + return '-'; + } + /* Convert index to Kitsu's half-point scale (0.5-10) */ + const displayScore = score / 2; + return displayScore.toLocaleString(undefined, { + minimumFractionDigits: displayScore % 1 === 0 ? 0 : 1, + maximumFractionDigits: 1, + }); + }, + }; +}; diff --git a/src/screens/settings/SettingsTrackerScreen.tsx b/src/screens/settings/SettingsTrackerScreen.tsx index 80460cb8..f083d312 100644 --- a/src/screens/settings/SettingsTrackerScreen.tsx +++ b/src/screens/settings/SettingsTrackerScreen.tsx @@ -12,8 +12,9 @@ import { getTracker, useTheme, useTracker } from '@hooks/persisted'; import { Appbar, List, Modal, SafeAreaView } from '@components'; import { TrackerSettingsScreenProps } from '@navigators/types'; import { getString } from '@strings/translations'; -import MangaUpdatesLoginDialog from './components/MangaUpdatesLoginDialog'; -import { authenticateWithCredentials } from '@services/Trackers/mangaUpdates'; +import TrackerLoginDialog from './components/TrackerLoginDialog'; +import { authenticateWithCredentials as mangaUpdatesAuth } from '@services/Trackers/mangaUpdates'; +import { authenticateWithCredentials as kitsuAuth } from '@services/Trackers/kitsu'; import { showToast } from '@utils/showToast'; interface TrackerCheckIconProps { @@ -62,6 +63,15 @@ const MangaUpdatesLogo = () => ( ); +const KitsuLogo = () => ( + + + +); + const TrackerScreen = ({ navigation }: TrackerSettingsScreenProps) => { const theme = useTheme(); const { isTrackerAuthenticated, setTracker, removeTracker, getTrackerAuth } = @@ -79,26 +89,37 @@ const TrackerScreen = ({ navigation }: TrackerSettingsScreenProps) => { setLogoutTrackerName(''); }; - // MangaUpdates Login Dialog - const [mangaUpdatesLoginVisible, setMangaUpdatesLoginVisible] = - useState(false); - const showMangaUpdatesLogin = () => setMangaUpdatesLoginVisible(true); - const hideMangaUpdatesLogin = () => setMangaUpdatesLoginVisible(false); + // Credential-based Login Dialog (MangaUpdates, Kitsu) + const [credentialLoginTracker, setCredentialLoginTracker] = useState< + 'MangaUpdates' | 'Kitsu' | null + >(null); + const showCredentialLogin = (tracker: 'MangaUpdates' | 'Kitsu') => + setCredentialLoginTracker(tracker); + const hideCredentialLogin = () => setCredentialLoginTracker(null); + + const handleCredentialLogin = async (username: string, password: string) => { + if (!credentialLoginTracker) { + return; + } - const handleMangaUpdatesLogin = async ( - username: string, - password: string, - ) => { try { - const auth = await authenticateWithCredentials(username, password); - setTracker('MangaUpdates', auth); - hideMangaUpdatesLogin(); - showToast('Successfully logged in to MangaUpdates'); + let auth; + if (credentialLoginTracker === 'MangaUpdates') { + auth = await mangaUpdatesAuth(username, password); + } else if (credentialLoginTracker === 'Kitsu') { + auth = await kitsuAuth(username, password); + } else { + throw new Error('Unknown tracker'); + } + + setTracker(credentialLoginTracker, auth); + hideCredentialLogin(); + showToast(`Successfully logged in to ${credentialLoginTracker}`); } catch (error) { if (error instanceof Error) { - throw error; // Let the dialog handle the error display + throw error; /* Let the dialog handle the error display */ } - throw new Error('Failed to authenticate with MangaUpdates'); + throw new Error(`Failed to authenticate with ${credentialLoginTracker}`); } }; @@ -135,6 +156,17 @@ const TrackerScreen = ({ navigation }: TrackerSettingsScreenProps) => { [theme, isTrackerAuthenticated], ); + const renderKitsuRight = useCallback( + (props: any) => ( + + ), + [theme, isTrackerAuthenticated], + ); + return ( @@ -199,35 +231,81 @@ const TrackerScreen = ({ navigation }: TrackerSettingsScreenProps) => { if (isTrackerAuthenticated('MangaUpdates')) { showModal('MangaUpdates'); } else { - showMangaUpdatesLogin(); + showCredentialLogin('MangaUpdates'); } }} rippleColor={theme.rippleColor} style={styles.listItem} /> - {isTrackerAuthenticated('MyAnimeList') && + { + if (isTrackerAuthenticated('Kitsu')) { + showModal('Kitsu'); + } else { + showCredentialLogin('Kitsu'); + } + }} + rippleColor={theme.rippleColor} + style={styles.listItem} + /> + {(isTrackerAuthenticated('MyAnimeList') && getTrackerAuth('MyAnimeList')?.auth?.expiresAt && getTrackerAuth('MyAnimeList')!.auth.expiresAt < - new Date(Date.now()) ? ( + new Date(Date.now())) || + (isTrackerAuthenticated('Kitsu') && + getTrackerAuth('Kitsu')?.auth?.expiresAt && + getTrackerAuth('Kitsu')!.auth.expiresAt < new Date(Date.now())) ? ( <> {getString('common.settings')} - { - const trackerAuth = getTrackerAuth('MyAnimeList'); - const revalidate = getTracker('MyAnimeList')?.revalidate; - if (revalidate && trackerAuth) { - const auth = await revalidate(trackerAuth.auth); - setTracker('MyAnimeList', auth); - } - }} - theme={theme} - /> + {isTrackerAuthenticated('MyAnimeList') && + getTrackerAuth('MyAnimeList')?.auth?.expiresAt && + getTrackerAuth('MyAnimeList')!.auth.expiresAt < + new Date(Date.now()) && ( + { + const trackerAuth = getTrackerAuth('MyAnimeList'); + const revalidate = getTracker('MyAnimeList')?.revalidate; + if (revalidate && trackerAuth) { + const auth = await revalidate(trackerAuth.auth); + setTracker('MyAnimeList', auth); + } + }} + theme={theme} + /> + )} + {isTrackerAuthenticated('Kitsu') && + getTrackerAuth('Kitsu')?.auth?.expiresAt && + getTrackerAuth('Kitsu')!.auth.expiresAt < + new Date(Date.now()) && ( + { + const trackerAuth = getTrackerAuth('Kitsu'); + const revalidate = getTracker('Kitsu')?.revalidate; + if (revalidate && trackerAuth) { + try { + const auth = await revalidate(trackerAuth.auth); + setTracker('Kitsu', auth); + showToast('Successfully refreshed Kitsu session'); + } catch (error) { + showToast('Failed to refresh Kitsu session. Please log in again.'); + removeTracker('Kitsu'); + } + } + }} + theme={theme} + /> + )} ) : null} @@ -265,10 +343,14 @@ const TrackerScreen = ({ navigation }: TrackerSettingsScreenProps) => { - diff --git a/src/screens/settings/components/MangaUpdatesLoginDialog.tsx b/src/screens/settings/components/TrackerLoginDialog.tsx similarity index 90% rename from src/screens/settings/components/MangaUpdatesLoginDialog.tsx rename to src/screens/settings/components/TrackerLoginDialog.tsx index b55724c8..c24716a9 100644 --- a/src/screens/settings/components/MangaUpdatesLoginDialog.tsx +++ b/src/screens/settings/components/TrackerLoginDialog.tsx @@ -4,16 +4,20 @@ import { Text, Button } from 'react-native-paper'; import { Modal } from '@components'; import { useTheme } from '@hooks/persisted'; -interface MangaUpdatesLoginDialogProps { +interface TrackerLoginDialogProps { visible: boolean; + trackerName: string; onDismiss: () => void; onSubmit: (username: string, password: string) => Promise; + usernameLabel?: string; } -const MangaUpdatesLoginDialog: React.FC = ({ +const TrackerLoginDialog: React.FC = ({ visible, + trackerName, onDismiss, onSubmit, + usernameLabel = 'Username', }) => { const theme = useTheme(); @@ -24,7 +28,7 @@ const MangaUpdatesLoginDialog: React.FC = ({ const handleSubmit = async () => { if (!username.trim() || !password.trim()) { - setError('Username and password are required'); + setError(`${usernameLabel} and password are required`); return; } @@ -33,7 +37,7 @@ const MangaUpdatesLoginDialog: React.FC = ({ try { await onSubmit(username.trim(), password); - // Clear form on success + /* Clear form on success */ setUsername(''); setPassword(''); } catch (err) { @@ -54,7 +58,7 @@ const MangaUpdatesLoginDialog: React.FC = ({ - Login to MangaUpdates + Login to {trackerName} = ({ borderColor: theme.outline, }, ]} - placeholder="Username" + placeholder={usernameLabel} placeholderTextColor={theme.onSurfaceVariant} value={username} onChangeText={setUsername} @@ -124,7 +128,7 @@ const MangaUpdatesLoginDialog: React.FC = ({ ); }; -export default MangaUpdatesLoginDialog; +export default TrackerLoginDialog; const styles = StyleSheet.create({ container: { diff --git a/src/services/Trackers/index.ts b/src/services/Trackers/index.ts index 736a614e..db5e00ec 100644 --- a/src/services/Trackers/index.ts +++ b/src/services/Trackers/index.ts @@ -1,4 +1,4 @@ -export type TrackerName = 'AniList' | 'MyAnimeList' | 'MangaUpdates'; +export type TrackerName = 'AniList' | 'MyAnimeList' | 'MangaUpdates' | 'Kitsu'; /** * Normalized list status values. * Not all trackers will use all of these. diff --git a/src/services/Trackers/kitsu.ts b/src/services/Trackers/kitsu.ts new file mode 100644 index 00000000..780fc999 --- /dev/null +++ b/src/services/Trackers/kitsu.ts @@ -0,0 +1,489 @@ +import { AuthenticationResult, Tracker, UserListStatus } from './index'; + +/** + * Kitsu Tracker Implementation + * + * Kitsu uses username/password authentication with OAuth2 client credentials. + * It supports refresh tokens for session renewal. + */ + +const BASE_URL = 'https://kitsu.app/api/edge/'; +const LOGIN_URL = 'https://kitsu.app/api/oauth/token'; +const ALGOLIA_KEY_URL = 'https://kitsu.app/api/edge/algolia-keys/media/'; + +const ALGOLIA_APP_ID = 'AWQO5J657S'; +const ALGOLIA_URL = `https://${ALGOLIA_APP_ID}-dsn.algolia.net/1/indexes/production_media/query/`; +const ALGOLIA_FILTER = + '&facetFilters=%5B%22kind%3Amanga%22%5D&attributesToRetrieve=' + + '%5B%22synopsis%22%2C%22averageRating%22%2C%22canonicalTitle%22%2C%22chapterCount%22%2C%22' + + 'posterImage%22%2C%22startDate%22%2C%22subtype%22%2C%22endDate%22%2C%20%22id%22%5D'; + +/* Kitsu public OAuth credentials */ +const CLIENT_ID = + 'dd031b32d2f56c990b1425efe6c42ad847e7fe3ab46bf1299f05ecd856bdb7dd'; +const CLIENT_SECRET = + '54d7307928f63414defd96399fc31ba847961ceaecef3a5fd93144e960c0e151'; + +const VND_API_JSON = 'application/vnd.api+json'; + +/* Kitsu status mapping */ +const KITSU_STATUS = { + CURRENT: 'current', + COMPLETED: 'completed', + ON_HOLD: 'on_hold', + DROPPED: 'dropped', + PLAN_TO_READ: 'planned', +} as const; + +export const kitsuToNormalized: Record = { + current: 'CURRENT', + completed: 'COMPLETED', + on_hold: 'PAUSED', + dropped: 'DROPPED', + planned: 'PLANNING', +}; + +const normalizedToKitsu: Record = { + CURRENT: 'current', + COMPLETED: 'completed', + PAUSED: 'on_hold', + DROPPED: 'dropped', + PLANNING: 'planned', + REPEATING: 'current', +}; + +type KitsuAuthMeta = { + userId: string; + refreshToken: string; + createdAt: number; +}; + +type KitsuOAuth = { + access_token: string; + token_type: string; + created_at: number; + expires_in: number; + refresh_token: string; +}; + +type KitsuAlgoliaSearchItem = { + id: number; + canonicalTitle: string; + chapterCount: number | null; + subtype: string | null; + posterImage: { + original: string; + large?: string; + medium?: string; + small?: string; + tiny?: string; + } | null; + synopsis: string | null; +}; + +type KitsuLibraryEntry = { + id: string; + attributes: { + status: string; + progress: number; + ratingTwenty: number | null; + startedAt: string | null; + finishedAt: string | null; + }; +}; + +/** + * Authenticates with Kitsu using username and password. + * This function is called from the login dialog in settings. + */ +export async function authenticateWithCredentials( + username: string, + password: string, +): Promise> { + const formBody = new URLSearchParams({ + username, + password, + grant_type: 'password', + client_id: CLIENT_ID, + client_secret: CLIENT_SECRET, + }).toString(); + + const response = await fetch(LOGIN_URL, { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: formBody, + }); + + if (response.status !== 200) { + const error = await response.json().catch(() => ({})); + throw new Error(error.error_description || 'Invalid username or password'); + } + + const oauth: KitsuOAuth = await response.json(); + + /* Get current user ID */ + const userId = await getCurrentUser(oauth.access_token); + + return { + accessToken: oauth.access_token, + refreshToken: oauth.refresh_token, + expiresAt: new Date((oauth.created_at + oauth.expires_in) * 1000), + meta: { + userId, + refreshToken: oauth.refresh_token, + createdAt: oauth.created_at, + }, + }; +} + +async function getCurrentUser(accessToken: string): Promise { + const url = `${BASE_URL}users?filter[self]=true`; + const response = await fetch(url, { + headers: { + Authorization: `Bearer ${accessToken}`, + Accept: VND_API_JSON, + }, + }); + + if (response.status !== 200) { + throw new Error('Failed to get current user'); + } + + const data = await response.json(); + return data.data[0].id; +} + +async function getAlgoliaKey(accessToken: string): Promise { + const response = await fetch(ALGOLIA_KEY_URL, { + headers: { + Authorization: `Bearer ${accessToken}`, + Accept: VND_API_JSON, + }, + }); + + if (response.status !== 200) { + throw new Error('Failed to get Algolia key'); + } + + const data = await response.json(); + return data.media.key; +} + +async function algoliaSearch( + key: string, + query: string, +): Promise { + const jsonBody = JSON.stringify({ + params: `query=${encodeURIComponent(query)}${ALGOLIA_FILTER}`, + }); + + const response = await fetch(ALGOLIA_URL, { + method: 'POST', + headers: { + 'X-Algolia-Application-Id': ALGOLIA_APP_ID, + 'X-Algolia-API-Key': key, + 'Content-Type': 'application/json', + }, + body: jsonBody, + }); + + if (response.status !== 200) { + return []; + } + + const data = await response.json(); + return data.hits || []; +} + +async function findLibraryEntry( + mediaId: number | string, + userId: string, + accessToken: string, +): Promise<{ libraryId: string; entry: KitsuLibraryEntry } | null> { + const url = `${BASE_URL}library-entries?filter[manga_id]=${mediaId}&filter[user_id]=${userId}&include=manga`; + + const response = await fetch(url, { + headers: { + Authorization: `Bearer ${accessToken}`, + Accept: VND_API_JSON, + }, + }); + + if (response.status !== 200) { + return null; + } + + const data = await response.json(); + + if (data.data && data.data.length > 0) { + return { + libraryId: data.data[0].id, + entry: data.data[0], + }; + } + + return null; +} + +async function addToLibrary( + mediaId: number | string, + userId: string, + status: string, + progress: number, + accessToken: string, +): Promise { + const body = JSON.stringify({ + data: { + type: 'libraryEntries', + attributes: { + status, + progress, + }, + relationships: { + user: { + data: { + id: userId, + type: 'users', + }, + }, + media: { + data: { + id: String(mediaId), + type: 'manga', + }, + }, + }, + }, + }); + + const response = await fetch(`${BASE_URL}library-entries`, { + method: 'POST', + headers: { + 'Authorization': `Bearer ${accessToken}`, + 'Content-Type': VND_API_JSON, + 'Accept': VND_API_JSON, + }, + body, + }); + + if (response.status !== 201 && response.status !== 200) { + throw new Error('Failed to add to library'); + } + + const data = await response.json(); + return data.data.id; +} + +async function updateLibraryEntry( + libraryId: string, + status: string, + progress: number, + ratingTwenty: number | null, + accessToken: string, +): Promise { + const body = JSON.stringify({ + data: { + type: 'libraryEntries', + id: libraryId, + attributes: { + status, + progress, + ratingTwenty, + }, + }, + }); + + const response = await fetch(`${BASE_URL}library-entries/${libraryId}`, { + method: 'PATCH', + headers: { + 'Authorization': `Bearer ${accessToken}`, + 'Content-Type': VND_API_JSON, + 'Accept': VND_API_JSON, + }, + body, + }); + + if (response.status !== 200) { + throw new Error('Failed to update library entry'); + } +} + +/** + * Converts a 0-10 score to Kitsu's ratingTwenty (0-20 scale). + * Kitsu uses a 20-point scale internally (2-20), displayed as 0.5-10.0. + */ +function scoreToRatingTwenty(score: number): number | null { + if (score <= 0) { + return null; + } + /* Convert 0-10 to 0-20, ensuring minimum of 2 if score > 0 */ + return Math.max(2, Math.round(score * 2)); +} + +/** + * Converts Kitsu's ratingTwenty (0-20 scale) to a 0-10 score. + */ +function ratingTwentyToScore(ratingTwenty: number | null): number { + if (ratingTwenty === null || ratingTwenty <= 0) { + return 0; + } + return ratingTwenty / 2; +} + +export const kitsuTracker: Tracker = { + authenticate: async () => { + /** + * Authentication is handled by authenticateWithCredentials + * which is called from the login dialog in settings. + */ + throw new Error('Please use the login dialog to authenticate with Kitsu'); + }, + + revalidate: async auth => { + if (!auth.meta?.refreshToken) { + throw new Error('No refresh token available'); + } + + const formBody = new URLSearchParams({ + grant_type: 'refresh_token', + refresh_token: auth.meta.refreshToken, + client_id: CLIENT_ID, + client_secret: CLIENT_SECRET, + }).toString(); + + const response = await fetch(LOGIN_URL, { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: formBody, + }); + + if (response.status !== 200) { + throw new Error('Session expired, please re-authenticate'); + } + + const oauth: KitsuOAuth = await response.json(); + + return { + accessToken: oauth.access_token, + refreshToken: oauth.refresh_token, + expiresAt: new Date((oauth.created_at + oauth.expires_in) * 1000), + meta: { + userId: auth.meta.userId, + refreshToken: oauth.refresh_token, + createdAt: oauth.created_at, + }, + }; + }, + + handleSearch: async (search, auth) => { + try { + const algoliaKey = await getAlgoliaKey(auth.accessToken); + const hits = await algoliaSearch(algoliaKey, search); + + /* Filter to only include novels (subtype === 'novel') */ + return hits + .filter(hit => hit.subtype === 'novel') + .map(hit => ({ + id: hit.id, + title: hit.canonicalTitle, + coverImage: hit.posterImage?.original || '', + totalChapters: hit.chapterCount || undefined, + })); + } catch (error) { + return []; + } + }, + + getUserListEntry: async (id, auth) => { + try { + const entry = await findLibraryEntry( + id, + auth.meta!.userId, + auth.accessToken, + ); + + if (entry) { + return { + status: kitsuToNormalized[entry.entry.attributes.status] || 'CURRENT', + progress: entry.entry.attributes.progress || 0, + score: ratingTwentyToScore(entry.entry.attributes.ratingTwenty), + }; + } + + /* Entry not found, return defaults */ + return { + status: 'CURRENT', + progress: 0, + score: 0, + }; + } catch (error) { + return { + status: 'CURRENT', + progress: 0, + score: 0, + }; + } + }, + + updateUserListEntry: async (id, payload, auth) => { + const status = payload.status + ? normalizedToKitsu[payload.status] + : KITSU_STATUS.CURRENT; + const progress = Math.round(payload.progress || 0); + const ratingTwenty = scoreToRatingTwenty(payload.score || 0); + + try { + /* Check if entry exists */ + const existingEntry = await findLibraryEntry( + id, + auth.meta!.userId, + auth.accessToken, + ); + + let libraryId: string; + + if (existingEntry) { + libraryId = existingEntry.libraryId; + await updateLibraryEntry( + libraryId, + status, + progress, + ratingTwenty, + auth.accessToken, + ); + } else { + /* Create new entry */ + libraryId = await addToLibrary( + id, + auth.meta!.userId, + status, + progress, + auth.accessToken, + ); + + /* Update with score if provided */ + if (ratingTwenty !== null) { + await updateLibraryEntry( + libraryId, + status, + progress, + ratingTwenty, + auth.accessToken, + ); + } + } + + return { + status: payload.status || 'CURRENT', + progress, + score: payload.score || 0, + }; + } catch (error) { + throw new Error('Failed to update Kitsu entry'); + } + }, +};