diff --git a/proto/main.proto b/proto/main.proto index e6a0530..26702f5 100644 --- a/proto/main.proto +++ b/proto/main.proto @@ -382,6 +382,14 @@ service EveningDetectiveServer { }; } + rpc ReorderPlaylistTracks(ReorderPlaylistTracksReq) returns (ReorderPlaylistTracksRsp) { + option (google.api.http) = { put: "/api/playlists/{playlistID}/tracks/order" body: "*" }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags : "Музыка"; + summary: "Изменить порядок треков"; + }; + } + rpc DeletePlaylistTrack(DeletePlaylistTrackReq) returns (DeletePlaylistTrackRsp) { option (google.api.http) = { delete: "/api/playlists/{playlistID}/tracks/{trackID}" }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { @@ -1441,6 +1449,15 @@ message UploadPlaylistTrackRsp { Playlist playlist = 1; } +message ReorderPlaylistTracksReq { + int32 playlistID = 1; + repeated int32 trackIDs = 2; +} + +message ReorderPlaylistTracksRsp { + Playlist playlist = 1; +} + message DeletePlaylistTrackReq { int32 playlistID = 1; int32 trackID = 2; @@ -1892,6 +1909,7 @@ message BindScreenReq { string screenID = 1; string accessToken = 2; int32 gameID = 3; + bool initializeAudio = 4; } message BindScreenRsp { diff --git a/src/api/generated/crabs/evening_detective_server/index.ts b/src/api/generated/crabs/evening_detective_server/index.ts index e91897c..a64f8f9 100644 --- a/src/api/generated/crabs/evening_detective_server/index.ts +++ b/src/api/generated/crabs/evening_detective_server/index.ts @@ -259,6 +259,15 @@ export type UploadPlaylistTrackRsp = { playlist: Playlist | undefined; }; +export type ReorderPlaylistTracksReq = { + playlistID: number | undefined; + trackIDs: number[] | undefined; +}; + +export type ReorderPlaylistTracksRsp = { + playlist: Playlist | undefined; +}; + export type DeletePlaylistTrackReq = { playlistID: number | undefined; trackID: number | undefined; @@ -697,6 +706,7 @@ export type BindScreenReq = { screenID: string | undefined; accessToken: string | undefined; gameID: number | undefined; + initializeAudio: boolean | undefined; }; export type BindScreenRsp = { @@ -1395,6 +1405,7 @@ export interface EveningDetectiveServer { UpdatePlaylist(request: UpdatePlaylistReq): Promise; DeletePlaylist(request: DeletePlaylistReq): Promise; UploadPlaylistTrack(request: UploadPlaylistTrackReq): Promise; + ReorderPlaylistTracks(request: ReorderPlaylistTracksReq): Promise; DeletePlaylistTrack(request: DeletePlaylistTrackReq): Promise; SetScenarioPlaylist(request: SetScenarioPlaylistReq): Promise; AddScenario(request: AddScenarioReq): Promise; @@ -2119,6 +2130,26 @@ export function createEveningDetectiveServerClient( method: "UploadPlaylistTrack", }) as Promise; }, + ReorderPlaylistTracks(request) { // eslint-disable-line @typescript-eslint/no-unused-vars + if (!request.playlistID) { + throw new Error("missing required field request.playlistID"); + } + const path = `api/playlists/${request.playlistID}/tracks/order`; // eslint-disable-line quotes + const body = JSON.stringify(request); + const queryParams: string[] = []; + let uri = path; + if (queryParams.length > 0) { + uri += `?${queryParams.join("&")}` + } + return handler({ + path: uri, + method: "PUT", + body, + }, { + service: "EveningDetectiveServer", + method: "ReorderPlaylistTracks", + }) as Promise; + }, DeletePlaylistTrack(request) { // eslint-disable-line @typescript-eslint/no-unused-vars if (!request.playlistID) { throw new Error("missing required field request.playlistID"); diff --git a/src/components/GamePage.vue b/src/components/GamePage.vue index 630da45..5fda9c9 100644 --- a/src/components/GamePage.vue +++ b/src/components/GamePage.vue @@ -523,7 +523,12 @@ async function bindScannedScreen(screenID: string, accessToken: string) { if (screenBinding.value) return screenBinding.value = true try { - await client.BindScreen({ screenID, accessToken, gameID: Number(gameId) }) + await client.BindScreen({ + screenID, + accessToken, + gameID: Number(gameId), + initializeAudio: false, + }) message.success('Экран привязан к игре') await getGameScreens() } catch (err) { diff --git a/src/components/ScreenPage.vue b/src/components/ScreenPage.vue index b408dd9..d5c846b 100644 --- a/src/components/ScreenPage.vue +++ b/src/components/ScreenPage.vue @@ -268,6 +268,7 @@ async function bind() { screenID: String(route.query.screenID), accessToken: String(route.query.accessToken), gameID: selectedGameId.value, + initializeAudio: false, }) bindSuccess.value = true } catch (err) {