mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-05-04 12:41:30 -07:00
fix: keep subtitle prefetch alive after cache hits
This commit is contained in:
@@ -49,8 +49,37 @@ test('subtitle change handler broadcasts cached annotated payload immediately wh
|
||||
assert.deepEqual(calls, [
|
||||
'set:line',
|
||||
'lookup:line',
|
||||
'broadcast:annotated',
|
||||
'process:line',
|
||||
'broadcast:annotated',
|
||||
'presence',
|
||||
]);
|
||||
});
|
||||
|
||||
test('subtitle change handler emits cached annotation after forwarding the subtitle change', () => {
|
||||
const calls: string[] = [];
|
||||
const handler = createHandleMpvSubtitleChangeHandler({
|
||||
setCurrentSubText: (text) => calls.push(`set:${text}`),
|
||||
getImmediateSubtitlePayload: (text) => {
|
||||
calls.push(`lookup:${text}`);
|
||||
return { text, tokens: [] };
|
||||
},
|
||||
emitImmediateSubtitle: (payload) => {
|
||||
calls.push(`emit:${payload.tokens === null ? 'plain' : 'annotated'}`);
|
||||
},
|
||||
broadcastSubtitle: (payload) => {
|
||||
calls.push(`broadcast:${payload.tokens === null ? 'plain' : 'annotated'}`);
|
||||
},
|
||||
onSubtitleChange: (text) => calls.push(`process:${text}`),
|
||||
refreshDiscordPresence: () => calls.push('presence'),
|
||||
});
|
||||
|
||||
handler({ text: 'line' });
|
||||
|
||||
assert.deepEqual(calls, [
|
||||
'set:line',
|
||||
'lookup:line',
|
||||
'process:line',
|
||||
'emit:annotated',
|
||||
'presence',
|
||||
]);
|
||||
});
|
||||
|
||||
@@ -12,14 +12,15 @@ export function createHandleMpvSubtitleChangeHandler(deps: {
|
||||
deps.setCurrentSubText(text);
|
||||
const immediatePayload = deps.getImmediateSubtitlePayload?.(text) ?? null;
|
||||
if (immediatePayload) {
|
||||
deps.onSubtitleChange(text);
|
||||
(deps.emitImmediateSubtitle ?? deps.broadcastSubtitle)(immediatePayload);
|
||||
} else {
|
||||
deps.broadcastSubtitle({
|
||||
text,
|
||||
tokens: null,
|
||||
});
|
||||
deps.onSubtitleChange(text);
|
||||
}
|
||||
deps.onSubtitleChange(text);
|
||||
deps.refreshDiscordPresence();
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user