From cc005e5baf4ad094e129047c247c65913b5744ba Mon Sep 17 00:00:00 2001 From: Seongmin Lee Date: Fri, 08 May 2026 19:22:29 +0000 Subject: [PATCH] appview: don't notify on replayed events Signed-off-by: Seongmin Lee --- appview/ingester.go | 4 ++-- appview/db/comments.go | 18 ++++++++---------- appview/state/comment.go | 4 ++-- 3 file(s) changed, 12 insertion(s)(+), 14 deletion(s)(-) diff --git a/appview/ingester.go b/appview/ingester.go --- a/appview/ingester.go +++ b/appview/ingester.go @@ -1633,7 +1633,7 @@ } defer tx.Rollback() - err = db.PutComment(tx, comment, references) + updated, err := db.PutComment(tx, comment, references) if err != nil { return fmt.Errorf("failed to create comment: %w", err) } @@ -1642,7 +1642,7 @@ return err } - if e.Commit.Operation == jmodels.CommitOperationCreate { + if e.Commit.Operation == jmodels.CommitOperationCreate && updated { i.Notifier.NewComment(ctx, comment, mentions) } diff --git a/appview/db/comments.go b/appview/db/comments.go --- a/appview/db/comments.go +++ b/appview/db/comments.go @@ -4,7 +4,6 @@ "database/sql" "encoding/json" "fmt" - "log" "sort" "strings" "time" @@ -15,12 +14,12 @@ "tangled.org/core/orm" ) -func PutComment(tx *sql.Tx, c *models.Comment, references []syntax.ATURI) error { +func PutComment(tx *sql.Tx, c *models.Comment, references []syntax.ATURI) (bool, error) { var bodyBlobs, replyToUri, replyToCid *string if len(c.Body.Blobs) > 0 { encoded, err := json.Marshal(c.Body.Blobs) if err != nil { - return fmt.Errorf("encoding blobs to json: %w", err) + return false, fmt.Errorf("encoding blobs to json: %w", err) } encodedStr := string(encoded) bodyBlobs = &encodedStr @@ -78,30 +77,29 @@ time.Now().Format(time.RFC3339), ) if err != nil { - return err + return false, err } c.Id, err = result.LastInsertId() if err != nil { - return err + return false, err } affected, err := result.RowsAffected() if err != nil { - return err + return false, err } if affected < 1 { - log.Println("record is already stored. skipping operation") - return nil + return false, nil } // update references when comment is updated if err := putReferences(tx, c.AtUri(), references); err != nil { - return fmt.Errorf("put reference_links: %w", err) + return false, fmt.Errorf("put reference_links: %w", err) } - return nil + return true, nil } // PurgeComments actually purges a comment row from db instead of marking it as "deleted" diff --git a/appview/state/comment.go b/appview/state/comment.go --- a/appview/state/comment.go +++ b/appview/state/comment.go @@ -279,7 +279,7 @@ } defer tx.Rollback() - err = db.PutComment(tx, &comment, references) + _, err = db.PutComment(tx, &comment, references) if err != nil { l.Error("failed to create comment", "err", err) s.pages.Notice(w, noticeId, "Failed to create comment.") @@ -377,7 +377,7 @@ } defer tx.Rollback() - err = db.PutComment(tx, &newComment, references) + _, err = db.PutComment(tx, &newComment, references) if err != nil { l.Error("failed to perform update-description query", "err", err) s.pages.Notice(w, noticeId, "Failed to update comment, try again later.") -- tangled.sh