Messages: if thread already open, go directly there instead of dedicated Compose page

face-detect
Noah Petherbridge 2023-09-24 14:29:54 -07:00
parent 6c618d1a0c
commit 8456c5d0f5
3 changed files with 22 additions and 1 deletions

View File

@ -41,6 +41,12 @@ func Compose() http.HandlerFunc {
return
}
// If we already have a thread open with them, go to that instead of the stand-alone compose page.
if msgID, ok := models.HasMessageThread(currentUser, user); ok {
templates.Redirect(w, fmt.Sprintf("/messages/read/%d", msgID))
return
}
// POSTing?
if r.Method == http.MethodPost {
var (

View File

@ -75,6 +75,21 @@ func GetMessageThread(sourceUserID, targetUserID uint64, pager *Pagination) ([]*
return m, result.Error
}
// HasMessageThread returns if a message thread exists between two users (either direction).
// Returns the ID of the thread and a boolean OK that it existed.
func HasMessageThread(a, b *User) (uint64, bool) {
var pager = &Pagination{
Page: 1,
PerPage: 1,
Sort: "updated_at desc",
}
messages, err := GetMessageThread(a.ID, b.ID, pager)
if err == nil && len(messages) > 0 {
return messages[0].ID, true
}
return 0, false
}
// DeleteMessageThread removes all message history between two people.
func DeleteMessageThread(message *Message) error {
return DB.Where(

View File

@ -133,7 +133,7 @@ document.addEventListener('DOMContentLoaded', () => {
node.addEventListener("click", e => {
if (node.classList.contains("blurred-explicit")) {
node.classList.remove("blurred-explicit");
if (node.tagName.toLowerCase() !== "video") {
if (node.tagName !== "VIDEO") {
e.preventDefault();
e.stopPropagation();
}