From: 2weiEmu Date: Sat, 13 Jun 2026 23:39:48 +0000 (+0200) Subject: updated: removing and adding functions (bad it seems, some better ideas on how errors... X-Git-Url: https://git.saalbach.dev/?a=commitdiff_plain;h=886af986a1344635e74ba4fad429e92ce8e68d36;p=binbsis50-sm.git updated: removing and adding functions (bad it seems, some better ideas on how errors should be communicated though) --- diff --git a/pkg/dbhandling/roomsapi.go b/pkg/dbhandling/roomsapi.go index 6359890..eeeaa74 100644 --- a/pkg/dbhandling/roomsapi.go +++ b/pkg/dbhandling/roomsapi.go @@ -111,20 +111,22 @@ func (dbw *DBWrapper) RoomsAddByNameAndId(w http.ResponseWriter, r *http.Request * (if they are present) **/ func (dbw *DBWrapper) RoomsRemoveByNameAndId(w http.ResponseWriter, r *http.Request) { - var assignedSongKeys []int - err := json.NewDecoder(r.Body).Decode(&assignedSongKeys) + var songKeysString []string + err := json.NewDecoder(r.Body).Decode(&songKeysString) if err != nil { w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte("Failed to get JSON from the body: " + err.Error())) return } name := r.PathValue("name") // TODO: again, is there some way roll this into one command? - for _, k := range assignedSongKeys { + for _, k := range songKeysString { _, err = dbw.RedisDb.ZRem(dbw.Ctx, name, k).Result() if err != nil { w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte("Error occured when calling ZRem on Database: " + err.Error())) return } } diff --git a/public/js/room.js b/public/js/room.js index b34396a..6866e11 100644 --- a/public/js/room.js +++ b/public/js/room.js @@ -3,13 +3,45 @@ **/ let currentRoom = "" +let inRoomList = document.getElementById("inRoomList") +let outRoomList = document.getElementById("outRoomList") + +async function removeSongFromRoom(event) { + // first make the request + let changeId = event.target.id.replace("song:", "") + + let response = await fetch("/api/rooms/remove/" + currentRoom, { + method: "PUT", + body: JSON.stringify([changeId]) + }) -function removeSongFromRoom(event) { + if (response.status != 200) { + alert(await response.text()) + return + } + // then we just manually move elements + outRoomList.appendChild(target) + inRoomList.removeChild(target) } -function addSongToRoom(event) { +async function addSongToRoom(event) { + // first make the request + let changeId = event.target.id.replace("song:", "") + let response = await fetch("/api/rooms/add/" + currentRoom, { + method: "PUT", + body: JSON.stringify([changeId]) + }) + + if (response.status != 200) { + alert(await response.text()) + return + } + + // then we just manually move elements + inRoomList.appendChild(target) + outRoomList.removeChild(target) } /** @@ -100,8 +132,6 @@ async function populateRoomSelect() { } } -let inRoomList = document.getElementById("inRoomList") -let outRoomList = document.getElementById("outRoomList") roomSelect.addEventListener("change", async (event) => { let room = event.target.value diff --git a/songmanager b/songmanager index c6c1549..8ce5698 100755 Binary files a/songmanager and b/songmanager differ