mirror of
https://github.com/jeffvli/feishin.git
synced 2026-07-22 02:16:39 +02:00
fix subsonic reportPlayback request chain so that starting resolves before playing (#2131)
This commit is contained in:
@@ -2239,41 +2239,35 @@ export const SubsonicController: InternalControllerEndpoint = {
|
|||||||
positionMs: Math.round(query.position ?? 0),
|
positionMs: Math.round(query.position ?? 0),
|
||||||
};
|
};
|
||||||
|
|
||||||
const reportPlayback = (state: 'paused' | 'playing' | 'starting' | 'stopped') => {
|
const reportPlayback = async (state: 'paused' | 'playing' | 'starting' | 'stopped') => {
|
||||||
return ssApiClient(apiClientProps).reportPlayback({
|
const res = await ssApiClient(apiClientProps).reportPlayback({
|
||||||
query: {
|
query: {
|
||||||
...defaultParams,
|
...defaultParams,
|
||||||
state,
|
state,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
|
||||||
|
|
||||||
const promises: Promise<any>[] = [];
|
|
||||||
|
|
||||||
switch (query.event) {
|
|
||||||
case 'pause':
|
|
||||||
promises.push(reportPlayback('paused'));
|
|
||||||
break;
|
|
||||||
case 'start':
|
|
||||||
promises.push(reportPlayback('starting'));
|
|
||||||
promises.push(reportPlayback('playing'));
|
|
||||||
break;
|
|
||||||
case 'stop':
|
|
||||||
promises.push(reportPlayback('stopped'));
|
|
||||||
break;
|
|
||||||
case 'unpause':
|
|
||||||
promises.push(reportPlayback('playing'));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const promise of promises) {
|
|
||||||
const res = await promise;
|
|
||||||
|
|
||||||
if (res.status !== 200) {
|
if (res.status !== 200) {
|
||||||
throw new Error('Failed to report playback');
|
throw new Error('Failed to report playback');
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
switch (query.event) {
|
||||||
|
case 'pause':
|
||||||
|
await reportPlayback('paused');
|
||||||
|
break;
|
||||||
|
case 'start':
|
||||||
|
await reportPlayback('starting');
|
||||||
|
await reportPlayback('playing');
|
||||||
|
break;
|
||||||
|
case 'stop':
|
||||||
|
await reportPlayback('stopped');
|
||||||
|
break;
|
||||||
|
case 'unpause':
|
||||||
|
await reportPlayback('playing');
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
Reference in New Issue
Block a user