Skip to content

Commit 5beadca

Browse files
committed
Only bother users about projects tags in the message changed.
1 parent dac497a commit 5beadca

1 file changed

Lines changed: 19 additions & 13 deletions

File tree

src/discord/message_handling.go

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -286,13 +286,13 @@ func UpdateInternedMessage(
286286
return err
287287
}
288288
} else {
289-
err = SaveMessageContents(ctx, tx, interned, msg, notifyUser)
289+
contentChanged, err := SaveMessageContents(ctx, tx, interned, msg, notifyUser)
290290
if err != nil {
291291
return err
292292
}
293293

294294
createSnippet := canCreateSnippet && shouldAutomaticallyCreateSnippet(interned)
295-
err = UpdateSnippetForInternedMessage(ctx, tx, interned, createSnippet, notifyUser)
295+
err = UpdateSnippetForInternedMessage(ctx, tx, interned, createSnippet, notifyUser && contentChanged)
296296
if err != nil {
297297
return err
298298
}
@@ -357,6 +357,9 @@ Processes a single Discord message, saving as much of the message's content
357357
and attachments as allowed by our rules and user settings. Does NOT create
358358
snippets.
359359
360+
contentChanged is true if we have no stored content or the new content is different from the stored version.
361+
Only checks content! Not attachments/embeds.
362+
360363
Idempotent; can be called any time whether the contents exist or not.
361364
362365
NOTE!!: Replaces interned.MessageContent if it was created or updated!!
@@ -367,7 +370,7 @@ func SaveMessageContents(
367370
interned *InternedMessage,
368371
msg *Message,
369372
notifyUser bool,
370-
) error {
373+
) (contentChanged bool, err error) {
371374
if interned.DiscordUser == nil {
372375
// We do not save message contents unless a Discord account is linked.
373376

@@ -383,16 +386,19 @@ func SaveMessageContents(
383386
),
384387
)
385388
if err != nil {
386-
return oops.New(err, "failed to send unlinked account warning message")
389+
return true, oops.New(err, "failed to send unlinked account warning message")
387390
}
388391
}
389392

390-
return nil
393+
return true, nil
391394
}
392395

393396
// We have a linked Discord account, so save the message contents (regardless of
394397
// whether we create a snippet or not).
395398
if msg.OriginalHasFields("content") {
399+
newContent := CleanUpMarkdown(ctx, msg.Content)
400+
contentChanged = interned.MessageContent == nil || interned.MessageContent.LastContent != newContent
401+
396402
_, err := dbConn.Exec(ctx,
397403
`
398404
INSERT INTO discord_message_content (message_id, discord_id, last_content)
@@ -403,10 +409,10 @@ func SaveMessageContents(
403409
`,
404410
interned.Message.ID,
405411
interned.DiscordUser.ID,
406-
CleanUpMarkdown(ctx, msg.Content),
412+
newContent,
407413
)
408414
if err != nil {
409-
return oops.New(err, "failed to create or update message contents")
415+
return contentChanged, oops.New(err, "failed to create or update message contents")
410416
}
411417

412418
content, err := db.QueryOne[models.DiscordMessageContent](ctx, dbConn,
@@ -420,7 +426,7 @@ func SaveMessageContents(
420426
interned.Message.ID,
421427
)
422428
if err != nil {
423-
return oops.New(err, "failed to fetch message contents")
429+
return contentChanged, oops.New(err, "failed to fetch message contents")
424430
}
425431
interned.MessageContent = content
426432
}
@@ -430,7 +436,7 @@ func SaveMessageContents(
430436
for _, attachment := range msg.Attachments {
431437
_, err := saveAttachment(ctx, dbConn, &attachment, interned.DiscordUser.HMNUserId, msg.ID)
432438
if err != nil {
433-
return oops.New(err, "failed to save attachment")
439+
return contentChanged, oops.New(err, "failed to save attachment")
434440
}
435441
}
436442
}
@@ -446,14 +452,14 @@ func SaveMessageContents(
446452
msg.ID,
447453
)
448454
if err != nil {
449-
return oops.New(err, "failed to count existing embeds")
455+
return contentChanged, oops.New(err, "failed to count existing embeds")
450456
}
451457
if numSavedEmbeds == 0 {
452458
// No embeds yet, so save new ones
453459
for _, embed := range msg.Embeds {
454460
_, err := saveEmbed(ctx, dbConn, &embed, interned.DiscordUser.HMNUserId, msg.ID)
455461
if err != nil {
456-
return oops.New(err, "failed to save embed")
462+
return contentChanged, oops.New(err, "failed to save embed")
457463
}
458464
}
459465
} else if len(msg.Embeds) > 0 {
@@ -466,12 +472,12 @@ func SaveMessageContents(
466472
msg.ID,
467473
)
468474
if err != nil {
469-
return oops.New(err, "failed to delete embeds")
475+
return contentChanged, oops.New(err, "failed to delete embeds")
470476
}
471477
}
472478
}
473479

474-
return nil
480+
return contentChanged, nil
475481
}
476482

477483
var discordDownloadClient = &http.Client{

0 commit comments

Comments
 (0)