]> git.example.dev Git - binbsis50-sm.git/commitdiff
updated: removing and adding functions (bad it seems, some better ideas on how errors...
author2weiEmu <saalbach.robert@outlook.de>
Sat, 13 Jun 2026 23:39:48 +0000 (01:39 +0200)
committer2weiEmu <saalbach.robert@outlook.de>
Sat, 13 Jun 2026 23:39:48 +0000 (01:39 +0200)
pkg/dbhandling/roomsapi.go
public/js/room.js
songmanager

index 6359890e5f8cc0b05c526186bed922bd98198c5a..eeeaa74eeb74a465c5c7e0a7f52da715a4cfaeba 100644 (file)
@@ -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
                }
        }
index b34396a03e0191b23ff992e5d077396c33f4e433..6866e1192f93be86bea817f587f4b9bc0fba90ff 100644 (file)
@@ -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
index c6c154982959f6452351b40e5eeb3e61d5479a7a..8ce569828d7804769078b5f8e05581c56d6a55f7 100755 (executable)
Binary files a/songmanager and b/songmanager differ