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.

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