From 24da574684b965e2f98a04eae795cc70eff22c39 Mon Sep 17 00:00:00 2001 From: kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com> Date: Mon, 3 Mar 2025 16:14:27 +0000 Subject: [PATCH] [bugfix] fix refreshed additional media info being ignored (#3867) * fix refreshed additional media info being ignored when force flag already set * also update to always iterate through all additional info fields * make similar changes for emoji, even if not necessary, just to keep in-sync --- internal/federation/dereferencing/emoji.go | 22 +++++++++------- internal/federation/dereferencing/media.go | 29 ++++++++++++---------- 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/internal/federation/dereferencing/emoji.go b/internal/federation/dereferencing/emoji.go index 1ac27f2b2..0a117f762 100644 --- a/internal/federation/dereferencing/emoji.go +++ b/internal/federation/dereferencing/emoji.go @@ -134,19 +134,23 @@ func (d *Dereferencer) RefreshEmoji( *gtsmodel.Emoji, error, ) { - // Check emoji is up-to-date - // with provided extra info. - switch { - case info.URI != nil && - *info.URI != emoji.URI: + // Check uri up-to-date. + if info.URI != nil && + *info.URI != emoji.URI { emoji.URI = *info.URI force = true - case info.ImageRemoteURL != nil && - *info.ImageRemoteURL != emoji.ImageRemoteURL: + } + + // Check image remote URL up-to-date. + if info.ImageRemoteURL != nil && + *info.ImageRemoteURL != emoji.ImageRemoteURL { emoji.ImageRemoteURL = *info.ImageRemoteURL force = true - case info.ImageStaticRemoteURL != nil && - *info.ImageStaticRemoteURL != emoji.ImageStaticRemoteURL: + } + + // Check image static remote URL up-to-date. + if info.ImageStaticRemoteURL != nil && + *info.ImageStaticRemoteURL != emoji.ImageStaticRemoteURL { emoji.ImageStaticRemoteURL = *info.ImageStaticRemoteURL force = true } diff --git a/internal/federation/dereferencing/media.go b/internal/federation/dereferencing/media.go index d22eeb237..7fc9f9aef 100644 --- a/internal/federation/dereferencing/media.go +++ b/internal/federation/dereferencing/media.go @@ -125,20 +125,23 @@ func (d *Dereferencer) RefreshMedia( return attach, nil } - // Check emoji is up-to-date - // with provided extra info. - switch { - case force: - case info.Blurhash != nil && - *info.Blurhash != attach.Blurhash: + // Check blurhash up-to-date. + if info.Blurhash != nil && + *info.Blurhash != attach.Blurhash { attach.Blurhash = *info.Blurhash force = true - case info.Description != nil && - *info.Description != attach.Description: + } + + // Check description up-to-date. + if info.Description != nil && + *info.Description != attach.Description { attach.Description = *info.Description force = true - case info.RemoteURL != nil && - *info.RemoteURL != attach.RemoteURL: + } + + // Check remote URL up-to-date. + if info.RemoteURL != nil && + *info.RemoteURL != attach.RemoteURL { attach.RemoteURL = *info.RemoteURL force = true } @@ -214,10 +217,10 @@ func (d *Dereferencer) updateAttachment( ) } -// processingEmojiSafely provides concurrency-safe processing of -// an emoji with given shortcode+domain. if a copy of the emoji is +// processingMediaSafely provides concurrency-safe processing of +// a media with given remote URL string. if a copy of the media is // not already being processed, the given 'process' callback will -// be used to generate new *media.ProcessingEmoji{} instance. +// be used to generate new *media.ProcessingMedia{} instance. func (d *Dereferencer) processMediaSafeley( ctx context.Context, remoteURL string,