fix: try to fix continue watching not updating in rare cases
Some checks are pending
Check / check (push) Waiting to run

This commit is contained in:
ThaUnknown 2025-07-16 21:51:25 +02:00
parent c8af048473
commit 9bd6b6b12b
No known key found for this signature in database
3 changed files with 8 additions and 9 deletions

View file

@ -1,6 +1,6 @@
{
"name": "ui",
"version": "6.4.45",
"version": "6.4.46",
"license": "BUSL-1.1",
"private": true,
"packageManager": "pnpm@9.15.5",

View file

@ -214,7 +214,7 @@ class AnilistClient {
MediaCoverImage: () => null,
AiringSchedule: () => null,
MediaListCollection: e => (e.user as {id: string | null}).id,
MediaListGroup: () => null,
MediaListGroup: e => e.status as string | null,
UserAvatar: () => null,
UserOptions: () => null,
UserStatisticTypes: () => null,
@ -329,7 +329,7 @@ class AnilistClient {
// WARN: these 3 sections are hacky, i use oldvalue to prevent re-running loops, I DO NOT KNOW WHY THE LOOPS HAPPEN!
continueIDs = readable<number[]>([], set => {
let oldvalue: number[] = []
const sub = this.userlists.subscribe(values => {
return this.userlists.subscribe(values => {
if (!values.data?.MediaListCollection?.lists) return []
const mediaList = values.data.MediaListCollection.lists.reduce<NonNullable<NonNullable<NonNullable<NonNullable<ResultOf<typeof UserLists>['MediaListCollection']>['lists']>[0]>['entries']>>((filtered, list) => {
return (list?.status === 'CURRENT' || list?.status === 'REPEATING') ? filtered.concat(list.entries) : filtered
@ -338,6 +338,7 @@ class AnilistClient {
const ids = mediaList.filter(entry => {
if (entry?.media?.status === 'FINISHED') return true
const progress = entry?.media?.mediaListEntry?.progress ?? 0
// +2 is for series that don't have the next airing episode scheduled, but are still some-how airing, AL likes to fuck this up a lot, -1 is because we care about the latest aired available episode, not the next aired episode
return progress < (entry?.media?.nextAiringEpisode?.episode ?? (progress + 2)) - 1
}).map(entry => entry?.media?.id) as number[]
@ -345,12 +346,11 @@ class AnilistClient {
oldvalue = ids
set(ids)
})
return sub
})
sequelIDs = readable<number[]>([], set => {
let oldvalue: number[] = []
const sub = this.userlists.subscribe(values => {
return this.userlists.subscribe(values => {
if (!values.data?.MediaListCollection?.lists) return []
const mediaList = values.data.MediaListCollection.lists.find(list => list?.status === 'COMPLETED')?.entries
if (!mediaList) return []
@ -363,12 +363,11 @@ class AnilistClient {
oldvalue = ids
set(ids)
})
return sub
})
planningIDs = readable<number[]>([], set => {
let oldvalue: number[] = []
const sub = this.userlists.subscribe(userLists => {
return this.userlists.subscribe(userLists => {
if (!userLists.data?.MediaListCollection?.lists) return []
const mediaList = userLists.data.MediaListCollection.lists.find(list => list?.status === 'PLANNING')?.entries
if (!mediaList) return []
@ -378,7 +377,6 @@ class AnilistClient {
oldvalue = ids
set(ids)
})
return sub
})
search (variables: VariablesOf<typeof Search>, pause?: boolean) {

View file

@ -13,6 +13,7 @@
import { Toaster } from '$lib/components/ui/sonner'
import native from '$lib/modules/native'
import { settings, SUPPORTS } from '$lib/modules/settings'
import { cn } from '$lib/utils'
let root: HTMLDivElement
@ -39,7 +40,7 @@
<meta name='viewport' content='width=device-width, initial-scale={SUPPORTS.isAndroidTV ? $settings.uiScale / devicePixelRatio : SUPPORTS.isAndroid ? $settings.uiScale : 1}, maximum-scale=2, user-scalable=0, viewport-fit=cover' />
</svelte:head>
<div class='w-full h-full flex flex-col backface-hidden bg-black relative overflow-clip md:border-l-2 [border-image:linear-gradient(to_bottom,white_var(--progress),#2dcf58_var(--progress))_1] preserve-3d' bind:this={root} id='root' style:--progress='{100 - updateProgress}%'>
<div class={cn('w-full h-full flex flex-col backface-hidden bg-black relative overflow-clip [border-image:linear-gradient(to_bottom,white_var(--progress),#2dcf58_var(--progress))_1] preserve-3d', !SUPPORTS.isAndroid && 'md:border-l-2')} bind:this={root} id='root' style:--progress='{100 - updateProgress}%'>
<ProgressBar zIndex={100} bind:complete {displayThresholdMs} />
<Toaster position='top-right' expand={true} />