From 40907f7b7fbff590ee98c2f94eea21d8e1380606 Mon Sep 17 00:00:00 2001 From: Rick van Lieshout Date: Mon, 1 Sep 2025 13:08:42 +0200 Subject: [PATCH] changed mediaSessionController to API Controller --- .../TidalApiController.ts} | 5 +- src/constants/controller.ts | 2 +- src/features/api/swagger.json | 95 ++++++++++++++----- src/pages/settings/settings.html | 2 +- src/preload.ts | 12 ++- 5 files changed, 82 insertions(+), 34 deletions(-) rename src/TidalControllers/{mediaSessionController/MediaSessionController.ts => apiController/TidalApiController.ts} (96%) diff --git a/src/TidalControllers/mediaSessionController/MediaSessionController.ts b/src/TidalControllers/apiController/TidalApiController.ts similarity index 96% rename from src/TidalControllers/mediaSessionController/MediaSessionController.ts rename to src/TidalControllers/apiController/TidalApiController.ts index 4623838..eee47a6 100644 --- a/src/TidalControllers/mediaSessionController/MediaSessionController.ts +++ b/src/TidalControllers/apiController/TidalApiController.ts @@ -5,13 +5,12 @@ import { RepeatState } from "../../models/repeatState"; import { DomTidalController } from "../DomController/DomTidalController"; import { TidalController } from "../TidalController"; -export class MediaSessionController implements TidalController { +export class TidalApiController implements TidalController { public domMediaController: TidalController; constructor() { this.domMediaController = new DomTidalController(); - - Logger.log("Initialized domController as a backup controller"); + Logger.log("[TidalApiController] - Initialized domController as a backup controller"); } // eslint-disable-next-line @typescript-eslint/no-unused-vars onMediaInfoUpdate(callback: (state: Partial) => void): void { diff --git a/src/constants/controller.ts b/src/constants/controller.ts index 318f66f..aa18d0f 100644 --- a/src/constants/controller.ts +++ b/src/constants/controller.ts @@ -1,4 +1,4 @@ export const tidalControllers = { domController: "domController", - mediaSessionController: "mediaSessionController", + tidalApiController: "tidalApiController", }; diff --git a/src/features/api/swagger.json b/src/features/api/swagger.json index e97d676..14babbf 100644 --- a/src/features/api/swagger.json +++ b/src/features/api/swagger.json @@ -21,7 +21,9 @@ "/current": { "get": { "summary": "Get current media info", - "tags": ["current"], + "tags": [ + "current" + ], "responses": { "200": { "description": "Current media info", @@ -39,7 +41,9 @@ "/current/image": { "get": { "summary": "Get current media image", - "tags": ["current"], + "tags": [ + "current" + ], "responses": { "200": { "description": "Current media image", @@ -61,7 +65,9 @@ "/player/play": { "post": { "summary": "Play the current media", - "tags": ["player"], + "tags": [ + "player" + ], "responses": { "200": { "description": "Ok", @@ -79,7 +85,9 @@ "/player/favorite/toggle": { "post": { "summary": "Add the current media to your favorites, or remove it if its already added to your favorites", - "tags": ["player"], + "tags": [ + "player" + ], "responses": { "200": { "description": "Ok", @@ -97,7 +105,9 @@ "/player/pause": { "post": { "summary": "Pause the current media", - "tags": ["player"], + "tags": [ + "player" + ], "responses": { "200": { "description": "Ok", @@ -115,7 +125,9 @@ "/player/next": { "post": { "summary": "Play the next song", - "tags": ["player"], + "tags": [ + "player" + ], "responses": { "200": { "description": "Ok", @@ -133,7 +145,9 @@ "/player/previous": { "post": { "summary": "Play the previous song", - "tags": ["player"], + "tags": [ + "player" + ], "responses": { "200": { "description": "Ok", @@ -151,7 +165,9 @@ "/player/shuffle/toggle": { "post": { "summary": "Play the previous song", - "tags": ["player"], + "tags": [ + "player" + ], "responses": { "200": { "description": "Ok", @@ -169,7 +185,9 @@ "/player/repeat/toggle": { "post": { "summary": "Toggle the repeat status, toggles between \"off\" , \"single\" and \"all\"", - "tags": ["player"], + "tags": [ + "player" + ], "responses": { "200": { "description": "Ok", @@ -187,7 +205,9 @@ "/player/playpause": { "post": { "summary": "Start playing the media if paused, or pause the media if playing", - "tags": ["player"], + "tags": [ + "player" + ], "responses": { "200": { "description": "Ok", @@ -205,7 +225,9 @@ "/settings/skipped-artists": { "get": { "summary": "get a list of artists that TIDAL Hi-Fi will skip if skipping is enabled", - "tags": ["settings"], + "tags": [ + "settings" + ], "responses": { "200": { "description": "The list book.", @@ -221,7 +243,9 @@ }, "post": { "summary": "Add new artists to the list of skipped artists", - "tags": ["settings"], + "tags": [ + "settings" + ], "requestBody": { "required": true, "content": { @@ -242,7 +266,9 @@ "/settings/skipped-artists/delete": { "post": { "summary": "Remove artists from the list of skipped artists", - "tags": ["settings"], + "tags": [ + "settings" + ], "requestBody": { "required": true, "content": { @@ -263,7 +289,9 @@ "/settings/skipped-artists/current": { "post": { "summary": "Add the current artist to the list of skipped artists", - "tags": ["settings"], + "tags": [ + "settings" + ], "responses": { "200": { "description": "Ok" @@ -272,7 +300,9 @@ }, "delete": { "summary": "Remove the current artist from the list of skipped artists", - "tags": ["settings"], + "tags": [ + "settings" + ], "responses": { "200": { "description": "Ok" @@ -283,7 +313,9 @@ "/image": { "get": { "summary": "Get current image", - "tags": ["legacy"], + "tags": [ + "legacy" + ], "deprecated": true, "responses": { "200": { @@ -306,7 +338,9 @@ "/play": { "get": { "summary": "Play the current media", - "tags": ["legacy"], + "tags": [ + "legacy" + ], "deprecated": true, "responses": { "200": { @@ -325,7 +359,9 @@ "/favorite/toggle": { "get": { "summary": "Add the current media to your favorites, or remove it if its already added to your favorites", - "tags": ["legacy"], + "tags": [ + "legacy" + ], "deprecated": true, "responses": { "200": { @@ -344,7 +380,9 @@ "/pause": { "get": { "summary": "Pause the current media", - "tags": ["legacy"], + "tags": [ + "legacy" + ], "deprecated": true, "responses": { "200": { @@ -363,7 +401,9 @@ "/next": { "get": { "summary": "Play the next song", - "tags": ["legacy"], + "tags": [ + "legacy" + ], "deprecated": true, "responses": { "200": { @@ -382,7 +422,9 @@ "/previous": { "get": { "summary": "Play the previous song", - "tags": ["legacy"], + "tags": [ + "legacy" + ], "deprecated": true, "responses": { "200": { @@ -401,7 +443,9 @@ "/playpause": { "get": { "summary": "Toggle play/pause", - "tags": ["legacy"], + "tags": [ + "legacy" + ], "deprecated": true, "responses": { "200": { @@ -514,7 +558,10 @@ "items": { "type": "string" }, - "example": ["Artist1", "Artist2"] + "example": [ + "Artist1", + "Artist2" + ] } } }, @@ -532,4 +579,4 @@ "description": "The settings management API" } ] -} +} \ No newline at end of file diff --git a/src/pages/settings/settings.html b/src/pages/settings/settings.html index 5794e13..2b7789b 100644 --- a/src/pages/settings/settings.html +++ b/src/pages/settings/settings.html @@ -388,7 +388,7 @@

Select the type of controller to use.

diff --git a/src/preload.ts b/src/preload.ts index 13b0536..10b8a19 100644 --- a/src/preload.ts +++ b/src/preload.ts @@ -1,6 +1,7 @@ import { app, dialog, Notification } from "@electron/remote"; import { clipboard, ipcRenderer } from "electron"; import Player from "mpris-service"; +import { tidalControllers } from "./constants/controller"; import { globalEvents } from "./constants/globalEvents"; import { settings } from "./constants/settings"; import { downloadIcon } from "./features/icon/downloadIcon"; @@ -20,10 +21,10 @@ import { addHotkey } from "./scripts/hotkeys"; import { ObjectToDotNotation } from "./scripts/objectUtilities"; import { settingsStore } from "./scripts/settings"; import { setTitle } from "./scripts/window-functions"; +import { TidalApiController } from "./TidalControllers/apiController/TidalApiController"; import { DomControllerOptions } from "./TidalControllers/DomController/DomControllerOptions"; import { DomTidalController } from "./TidalControllers/DomController/DomTidalController"; import { TidalController } from "./TidalControllers/TidalController"; -import { tidalControllers } from "./constants/controller"; const notificationPath = `${app.getPath("userData")}/notification.jpg`; const staticTitle = "TIDAL Hi-Fi"; @@ -40,8 +41,9 @@ let controllerOptions = {}; let currentMediaInfo = getEmptyMediaInfo(); switch (settingsStore.get(settings.advanced.controllerType)) { - case tidalControllers.mediaSessionController: { - Logger.log("mediaSessionController initialized"); + case tidalControllers.tidalApiController: { + tidalController = new TidalApiController(); + Logger.log("TidalApiController initialized"); break; } @@ -348,11 +350,11 @@ function updateListenBrainz(mediaInfo: MediaInfo) { mediaInfo.title, mediaInfo.artists, mediaInfo.status, - convertDurationToSeconds(mediaInfo.duration) + convertDurationToSeconds(mediaInfo.duration), ); scrobbleWaitingForDelay = false; }, - settingsStore.get(settings.ListenBrainz.delay) ?? 0 + settingsStore.get(settings.ListenBrainz.delay) ?? 0, ); } }