improve handling

This commit is contained in:
Darius
2026-02-03 23:00:12 +01:00
parent 1689f04a6e
commit 9c532f0f34

View File

@@ -37,7 +37,7 @@ export class TidalService extends BaseService<TidalClient> {
const response = await this.getClient().get<TidalGetCurrent>("current"); const response = await this.getClient().get<TidalGetCurrent>("current");
return this.getSuccessfulResult( return this.getSuccessfulResult(
this.decimalToPercentage(response.volume), response.volume * 100, // * 100 because it's a decimal and we want a percentage
); );
} catch { } catch {
const error_message = "error getting volume from tidal"; const error_message = "error getting volume from tidal";
@@ -47,18 +47,18 @@ export class TidalService extends BaseService<TidalClient> {
} }
clamp(value: number): number { clamp(value: number): number {
return Math.min(Math.max(value, 0.0), 1.0); return Math.min(Math.max(value, 0), 100);
} }
async setVolume(argument: string): Promise<ServiceResult<number | string>> { async setVolume(argument: string): Promise<ServiceResult<number | string>> {
const value = this.percentageToDecimal(parseInt(argument, 10)); const value = parseInt(argument, 10);
// relative // relative
const adjustMatch = argument.match(/^([+-])/); const adjustMatch = argument.match(/^([+-])/);
if (adjustMatch) { if (adjustMatch) {
const req = await this.getVolume(); const req = await this.getVolume();
if (req.successful) { if (req.successful) {
const volume = req.result as number; const volume = req.result as number;
const wantedVolume = this.percentageToDecimal(volume) + value; const wantedVolume = volume + value;
const clampWantedVolume = this.clamp(wantedVolume); const clampWantedVolume = this.clamp(wantedVolume);
return await this.setVolumeToTidal(clampWantedVolume); return await this.setVolumeToTidal(clampWantedVolume);
} }
@@ -80,21 +80,16 @@ export class TidalService extends BaseService<TidalClient> {
volume: number, volume: number,
): Promise<ServiceResult<number | string>> { ): Promise<ServiceResult<number | string>> {
try { try {
await this.getClient().put<number>(`player/volume?volume=${volume}`, {}); await this.getClient().put<number>(
`player/volume?volume=${volume / 100}`, // / 100 because it's a decimal and we want a percentage
{},
);
return this.getSuccessfulResult(this.decimalToPercentage(volume)); return this.getSuccessfulResult(volume.toFixed());
} catch { } catch {
const error_message = "error setting volume from tidal"; const error_message = "error setting volume from tidal";
logWarning(error_message); logWarning(error_message);
return this.getErrorResult(error_message); return this.getErrorResult(error_message);
} }
} }
decimalToPercentage(decimal: number): number {
return decimal * 100;
}
percentageToDecimal(percentage: number): number {
return percentage / 100;
}
} }