mirror of
https://github.com/Mastermindzh/tidal-hifi.git
synced 2024-11-21 21:13:00 +01:00
Added an API to add & delete entries from the skippedArtists list in the settings. fixes [#405]
This commit is contained in:
parent
b481108af1
commit
d47da91e93
5
.vscode/http/settings/skipped-artists/addArtists.http
vendored
Normal file
5
.vscode/http/settings/skipped-artists/addArtists.http
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
POST /settings/skipped-artists HTTP/1.1
|
||||||
|
Host: localhost:47836
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
["abc", "def"]
|
2
.vscode/http/settings/skipped-artists/addCurrent.http
vendored
Normal file
2
.vscode/http/settings/skipped-artists/addCurrent.http
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
POST /settings/skipped-artists/current HTTP/1.1
|
||||||
|
Host: localhost:47836
|
5
.vscode/http/settings/skipped-artists/removeArtists.http
vendored
Normal file
5
.vscode/http/settings/skipped-artists/removeArtists.http
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
POST /settings/skipped-artists/delete HTTP/1.1
|
||||||
|
Host: localhost:47836
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
["abc", "def"]
|
2
.vscode/http/settings/skipped-artists/removeCurrent.http
vendored
Normal file
2
.vscode/http/settings/skipped-artists/removeCurrent.http
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
DELETE /settings/skipped-artists/current HTTP/1.1
|
||||||
|
Host: localhost:47836
|
@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
## [next]
|
## [next]
|
||||||
|
|
||||||
- Fixed [#403](https://github.com/Mastermindzh/tidal-hifi/issues/403) "cannot read shuffle of undefined" error
|
- Fixed [#403](https://github.com/Mastermindzh/tidal-hifi/issues/403) "cannot read shuffle of undefined" error
|
||||||
|
- Added an API to add & delete entries from the skippedArtists list in the settings. fixes [#405](https://github.com/Mastermindzh/tidal-hifi/issues/405)
|
||||||
|
- `GET /settings/skipped-artists` -> get list of skipped artists
|
||||||
|
- `POST /settings/skipped-artists` -> add to the list of skipped artists
|
||||||
|
- `POST /settings/skipped-artists/delete` -> delete from the list of skipped artists
|
||||||
|
- `POST /settings/skipped-artists/current` -> skip the current artist
|
||||||
|
- `DELETE /settings/skipped-artists/current` -> delete the current artist from the skip list
|
||||||
|
|
||||||
## [5.12.0]
|
## [5.12.0]
|
||||||
|
|
||||||
|
39
src/features/api/features/settings/settings.ts
Normal file
39
src/features/api/features/settings/settings.ts
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
import { Request, Router } from "express";
|
||||||
|
import { settings } from "../../../../constants/settings";
|
||||||
|
import { mediaInfo } from "../../../../scripts/mediaInfo";
|
||||||
|
import {
|
||||||
|
addSkippedArtists,
|
||||||
|
removeSkippedArtists,
|
||||||
|
settingsStore,
|
||||||
|
} from "../../../../scripts/settings";
|
||||||
|
import { BrowserWindow } from "electron";
|
||||||
|
import { globalEvents } from "../../../../constants/globalEvents";
|
||||||
|
|
||||||
|
export const addSettingsAPI = (expressApp: Router, mainWindow: BrowserWindow) => {
|
||||||
|
expressApp.get("/settings/skipped-artists", (req, res) => {
|
||||||
|
res.json(settingsStore.get<string, string[]>(settings.skippedArtists));
|
||||||
|
});
|
||||||
|
|
||||||
|
expressApp.post("/settings/skipped-artists", (req: Request<object, object, string[]>, res) => {
|
||||||
|
addSkippedArtists(req.body);
|
||||||
|
res.sendStatus(200);
|
||||||
|
});
|
||||||
|
|
||||||
|
expressApp.post(
|
||||||
|
"/settings/skipped-artists/delete",
|
||||||
|
(req: Request<object, object, string[]>, res) => {
|
||||||
|
removeSkippedArtists(req.body);
|
||||||
|
res.sendStatus(200);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
expressApp.post("/settings/skipped-artists/current", (req, res) => {
|
||||||
|
addSkippedArtists([mediaInfo.artists]);
|
||||||
|
mainWindow.webContents.send("globalEvent", globalEvents.next);
|
||||||
|
res.sendStatus(200);
|
||||||
|
});
|
||||||
|
expressApp.delete("/settings/skipped-artists/current", (req, res) => {
|
||||||
|
removeSkippedArtists([mediaInfo.artists]);
|
||||||
|
res.sendStatus(200);
|
||||||
|
});
|
||||||
|
};
|
@ -4,6 +4,7 @@ import { settings } from "../../constants/settings";
|
|||||||
import { settingsStore } from "../../scripts/settings";
|
import { settingsStore } from "../../scripts/settings";
|
||||||
import { addCurrentInfo } from "./features/current";
|
import { addCurrentInfo } from "./features/current";
|
||||||
import { addPlaybackControl } from "./features/player";
|
import { addPlaybackControl } from "./features/player";
|
||||||
|
import { addSettingsAPI } from "./features/settings/settings";
|
||||||
import { addLegacyApi } from "./legacy";
|
import { addLegacyApi } from "./legacy";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -11,12 +12,14 @@ import { addLegacyApi } from "./legacy";
|
|||||||
*/
|
*/
|
||||||
export const startApi = (mainWindow: BrowserWindow) => {
|
export const startApi = (mainWindow: BrowserWindow) => {
|
||||||
const expressApp = express();
|
const expressApp = express();
|
||||||
|
expressApp.use(express.json());
|
||||||
expressApp.get("/", (req, res) => res.send("Hello World!"));
|
expressApp.get("/", (req, res) => res.send("Hello World!"));
|
||||||
|
|
||||||
// add features
|
// add features
|
||||||
addLegacyApi(expressApp, mainWindow);
|
addLegacyApi(expressApp, mainWindow);
|
||||||
addPlaybackControl(expressApp, mainWindow);
|
addPlaybackControl(expressApp, mainWindow);
|
||||||
addCurrentInfo(expressApp);
|
addCurrentInfo(expressApp);
|
||||||
|
addSettingsAPI(expressApp, mainWindow);
|
||||||
|
|
||||||
const port = settingsStore.get<string, number>(settings.apiSettings.port);
|
const port = settingsStore.get<string, number>(settings.apiSettings.port);
|
||||||
const expressInstance = expressApp.listen(port, "127.0.0.1");
|
const expressInstance = expressApp.listen(port, "127.0.0.1");
|
||||||
|
@ -159,3 +159,25 @@ export const hideSettingsWindow = function () {
|
|||||||
export const closeSettingsWindow = function () {
|
export const closeSettingsWindow = function () {
|
||||||
settingsWindow = null;
|
settingsWindow = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* add artists to the list of skipped artists
|
||||||
|
* @param artists list of artists to append
|
||||||
|
*/
|
||||||
|
export const addSkippedArtists = (artists: string[]) => {
|
||||||
|
const { skippedArtists } = settings;
|
||||||
|
const previousStoreValue = settingsStore.get<string, string[]>(skippedArtists);
|
||||||
|
settingsStore.set(skippedArtists, Array.from(new Set([...previousStoreValue, ...artists])));
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove artists from the list of skipped artists
|
||||||
|
* @param artists list of artists to remove
|
||||||
|
*/
|
||||||
|
export const removeSkippedArtists = (artists: string[]) => {
|
||||||
|
const { skippedArtists } = settings;
|
||||||
|
const previousStoreValue = settingsStore.get<string, string[]>(skippedArtists);
|
||||||
|
const filteredArtists = previousStoreValue.filter((value) => !artists.includes(value));
|
||||||
|
|
||||||
|
settingsStore.set(skippedArtists, filteredArtists);
|
||||||
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user