package Messages import ( "database/sql/driver" "encoding/json" "net/http" "net/url" "strconv" "strings" "git.tovijaeschke.xyz/tovi/Envelope/Backend/Api/Auth" "git.tovijaeschke.xyz/tovi/Envelope/Backend/Database" ) // ConversationList returns an encrypted list of all Conversations func ConversationList(w http.ResponseWriter, r *http.Request) { var ( conversationDetails []Database.UserConversation userSession Database.Session returnJSON []byte values url.Values page int err error ) values = r.URL.Query() page, err = strconv.Atoi(values.Get("page")) if err != nil { page = 0 } userSession, _ = Auth.CheckCookie(r) conversationDetails, err = Database.GetUserConversationsByUserId( userSession.UserID.String(), page, ) if err != nil { http.Error(w, "Error", http.StatusInternalServerError) return } returnJSON, err = json.MarshalIndent(conversationDetails, "", " ") if err != nil { http.Error(w, "Error", http.StatusInternalServerError) return } w.WriteHeader(http.StatusOK) w.Write(returnJSON) } // ConversationDetailsList returns an encrypted list of all ConversationDetails func ConversationDetailsList(w http.ResponseWriter, r *http.Request) { var ( conversationDetails []Database.ConversationDetail detail Database.ConversationDetail query url.Values conversationIds []string messageExpiryRaw driver.Value returnJSON []byte i int ok bool err error ) query = r.URL.Query() conversationIds, ok = query["conversation_detail_ids"] if !ok { http.Error(w, "Invalid Data", http.StatusBadGateway) return } conversationIds = strings.Split(conversationIds[0], ",") conversationDetails, err = Database.GetConversationDetailsByIds( conversationIds, ) if err != nil { http.Error(w, "Error", http.StatusInternalServerError) return } for i, detail = range conversationDetails { messageExpiryRaw, _ = detail.MessageExpiryDefault.Value() conversationDetails[i].MessageExpiry, _ = messageExpiryRaw.(string) if detail.AttachmentID == nil { continue } conversationDetails[i].Attachment.ImageLink = detail.Attachment.FilePath } returnJSON, err = json.MarshalIndent(conversationDetails, "", " ") if err != nil { http.Error(w, "Error", http.StatusInternalServerError) return } w.WriteHeader(http.StatusOK) w.Write(returnJSON) }