Encrypted messaging app
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.5 KiB

  1. package Messages
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "github.com/gofrs/uuid"
  6. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Database"
  7. )
  8. type rawUpdateConversationData struct {
  9. ID string `json:"id"`
  10. Name string `json:"name"`
  11. Users []Database.ConversationDetailUser `json:"users"`
  12. UserConversations Database.UserConversationList `json:"user_conversations"`
  13. }
  14. // UpdateConversation updates the conversation data, such as title, users, etc
  15. func UpdateConversation(w http.ResponseWriter, r *http.Request) {
  16. var (
  17. rawConversationData rawUpdateConversationData
  18. messageThread Database.ConversationDetail
  19. err error
  20. )
  21. err = json.NewDecoder(r.Body).Decode(&rawConversationData)
  22. if err != nil {
  23. http.Error(w, "Error", http.StatusInternalServerError)
  24. return
  25. }
  26. messageThread = Database.ConversationDetail{
  27. Base: Database.Base{
  28. ID: uuid.FromStringOrNil(rawConversationData.ID),
  29. },
  30. Name: rawConversationData.Name,
  31. Users: rawConversationData.Users,
  32. }
  33. err = (&messageThread).UpdateConversationDetail()
  34. if err != nil {
  35. http.Error(w, "Error", http.StatusInternalServerError)
  36. return
  37. }
  38. if len(rawConversationData.UserConversations) > 0 {
  39. err = (&rawConversationData.UserConversations).UpdateOrCreateUserConversations()
  40. if err != nil {
  41. http.Error(w, "Error", http.StatusInternalServerError)
  42. return
  43. }
  44. }
  45. w.WriteHeader(http.StatusNoContent)
  46. }