diff --git a/proto/main.proto b/proto/main.proto index 75db0a7..520948e 100644 --- a/proto/main.proto +++ b/proto/main.proto @@ -1544,6 +1544,7 @@ message UploadPlaylistTrackReq { string name = 2; string filename = 3; bytes data = 4; + int32 groupID = 5; } message UploadPlaylistTrackRsp { diff --git a/src/api/generated/crabs/evening_detective_server/index.ts b/src/api/generated/crabs/evening_detective_server/index.ts index 044bda8..d867c09 100644 --- a/src/api/generated/crabs/evening_detective_server/index.ts +++ b/src/api/generated/crabs/evening_detective_server/index.ts @@ -309,6 +309,7 @@ export type UploadPlaylistTrackReq = { name: string | undefined; filename: string | undefined; data: string | undefined; + groupID: number | undefined; }; export type UploadPlaylistTrackRsp = { diff --git a/src/components/GameMusicPlanPanel.vue b/src/components/GameMusicPlanPanel.vue index b672e95..993e2ea 100644 --- a/src/components/GameMusicPlanPanel.vue +++ b/src/components/GameMusicPlanPanel.vue @@ -37,7 +37,7 @@ const emit = defineEmits<{ renamePlaylist: [id: number, name: string] reorderTracks: [playlistID: number, trackIDs: number[]] deletePlaylist: [id: number] - uploadTrack: [playlistID: number, file: File] + uploadTrack: [playlistID: number, file: File, groupID: number] deleteTrack: [playlistID: number, trackID: number] }>() @@ -137,7 +137,7 @@ watch( @rename-playlist="(id, name) => emit('renamePlaylist', id, name)" @reorder-tracks="(playlistID, trackIDs) => emit('reorderTracks', playlistID, trackIDs)" @delete-playlist="(id) => emit('deletePlaylist', id)" - @upload-track="(playlistID, file) => emit('uploadTrack', playlistID, file)" + @upload-track="(playlistID, file, groupID) => emit('uploadTrack', playlistID, file, groupID)" @delete-track="(playlistID, trackID) => emit('deleteTrack', playlistID, trackID)" /> diff --git a/src/components/PlaylistEditor.vue b/src/components/PlaylistEditor.vue index 423d16d..c482081 100644 --- a/src/components/PlaylistEditor.vue +++ b/src/components/PlaylistEditor.vue @@ -44,7 +44,7 @@ const emit = defineEmits<{ renamePlaylist: [id: number, name: string] reorderTracks: [playlistID: number, trackIDs: number[]] deletePlaylist: [id: number] - uploadTrack: [playlistID: number, file: File] + uploadTrack: [playlistID: number, file: File, groupID: number] deleteTrack: [playlistID: number, trackID: number] }>() @@ -108,6 +108,12 @@ const isPlaylistActive = computed( selectedId.value === props.music?.playlist?.ID && props.music?.playback !== 'MUSIC_PLAYBACK_STOPPED', ) +function isGroupMissing(groupID: number) { + return ( + isSelectedMissing.value || + (groupID !== 0 && !selected.value?.groups?.some((group) => group.ID === groupID)) + ) +} function isGroupLocked(groupID: number) { return isPlaylistActive.value && (!props.music?.groupId || props.music.groupId === groupID) } @@ -150,9 +156,9 @@ function move(id: number, groupID: number, offset: number) { order.value[from] = targetID order.value[to] = id } -function uploadTrack(options: { file: UploadFileInfo }) { +function uploadTrack(options: { file: UploadFileInfo }, groupID: number) { if (selectedId.value && options.file.file) - emit('uploadTrack', selectedId.value, options.file.file) + emit('uploadTrack', selectedId.value, options.file.file, groupID) } watch(selectedId, () => { lastSelected.value = props.playlists.find((item) => item.ID === selectedId.value) @@ -279,17 +285,6 @@ reset() @click="emit('renamePlaylist', selectedId, name.trim())" >Сохранить название - - Добавить MP3 - + + Добавить MP3 +

Треков пока нет.

64 * 1024 * 1024) { message.error('Выберите непустой MP3 размером до 64 МиБ') @@ -138,7 +138,13 @@ export function usePlaylistActions( onBeforeSave() try { const data = uint8ToBase64(new Uint8Array(await file.arrayBuffer())) - await client.UploadPlaylistTrack({ playlistID, name: file.name, filename: file.name, data }) + await client.UploadPlaylistTrack({ + playlistID, + groupID, + name: file.name, + filename: file.name, + data, + }) await onSaved() } catch (err) { message.error(err instanceof Error ? err.message : 'Не удалось загрузить MP3')