fix(anime): keep browser state in sync and alias HLS segments

- Toggle the player Anime Browser without losing its state
- Share active playback state and support rotating fake segment extensions
This commit is contained in:
2026-08-15 23:35:37 -07:00
parent 7a1450ddb7
commit 877f350353
34 changed files with 612 additions and 43 deletions
+12
View File
@@ -8,6 +8,7 @@ import type {
AnimeBrowserEpisodeWatchState,
AnimeBrowserPlayRequest,
AnimeBrowserPlayResult,
AnimeBrowserPlaybackState,
AnimeBrowserQueueState,
AnimeBrowserSearchResult,
AnimeBrowserSearchUpdate,
@@ -67,6 +68,8 @@ export function createAnimeBrowserAPI(ipcRenderer: AnimeBrowserIpcRenderer): Ani
ipcRenderer.invoke(request.animeBrowserClearQueue),
getQueue: (): Promise<AnimeBrowserQueueState> =>
ipcRenderer.invoke(request.animeBrowserGetQueue),
getPlaybackState: (): Promise<AnimeBrowserPlaybackState | null> =>
ipcRenderer.invoke(request.animeBrowserGetPlaybackState),
isPlaying: (): Promise<boolean> => ipcRenderer.invoke(request.animeBrowserIsPlaying),
getPreferences: (sourceId: string): Promise<SourcePreferenceView[]> =>
ipcRenderer.invoke(request.animeBrowserGetPreferences, sourceId),
@@ -101,5 +104,14 @@ export function createAnimeBrowserAPI(ipcRenderer: AnimeBrowserIpcRenderer): Ani
ipcRenderer.on(IPC_CHANNELS.event.animeBrowserQueueState, handler);
return () => ipcRenderer.removeListener(IPC_CHANNELS.event.animeBrowserQueueState, handler);
},
onPlaybackState: (
listener: (state: AnimeBrowserPlaybackState | null) => void,
): (() => void) => {
const handler = (_event: unknown, state: AnimeBrowserPlaybackState | null): void =>
listener(state);
ipcRenderer.on(IPC_CHANNELS.event.animeBrowserPlaybackState, handler);
return () =>
ipcRenderer.removeListener(IPC_CHANNELS.event.animeBrowserPlaybackState, handler);
},
};
}