From 21bb324156f582e918a097ea744e52fc21b2ddf4 Mon Sep 17 00:00:00 2001 From: kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com> Date: Wed, 26 Jun 2024 15:01:16 +0000 Subject: [chore] media and emoji refactoring (#3000) * start updating media manager interface ready for storing attachments / emoji right away * store emoji and media as uncached immediately, then (re-)cache on Processing{}.Load() * remove now unused media workers * fix tests and issues * fix another test! * fix emoji activitypub uri setting behaviour, fix remainder of test compilation issues * fix more tests * fix (most of) remaining tests, add debouncing to repeatedly failing media / emojis * whoops, rebase issue * remove kim's whacky experiments * do some reshuffling, ensure emoji uri gets set * ensure marked as not cached on cleanup * tweaks to media / emoji processing to handle context canceled better * ensure newly fetched emojis actually get set in returned slice * use different varnames to be a bit more obvious * move emoji refresh rate limiting to dereferencer * add exported dereferencer functions for remote media, use these for recaching in processor * add check for nil attachment in updateAttachment() * remove unused emoji and media fields + columns * see previous commit * fix old migrations expecting image_updated_at to exists (from copies of old models) * remove freshness checking code (seems to be broken...) * fix error arg causing nil ptr exception * finish documentating functions with comments, slight tweaks to media / emoji deref error logic * remove some extra unneeded boolean checking * finish writing documentation (code comments) for exported media manager methods * undo changes to migration snapshot gtsmodels, updated failing migration to have its own snapshot * move doesColumnExist() to util.go in migrations package --- internal/media/types.go | 76 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 57 insertions(+), 19 deletions(-) (limited to 'internal/media/types.go') diff --git a/internal/media/types.go b/internal/media/types.go index 6e7727cd5..cea026b98 100644 --- a/internal/media/types.go +++ b/internal/media/types.go @@ -61,47 +61,85 @@ const ( TypeEmoji Type = "emoji" // TypeEmoji is the key for emoji type requests ) -// AdditionalMediaInfo represents additional information that should be added to an attachment -// when processing a piece of media. +// AdditionalMediaInfo represents additional information that +// should be added to attachment when processing a piece of media. type AdditionalMediaInfo struct { - // Time that this media was created; defaults to time.Now(). + + // Time that this media was + // created; defaults to time.Now(). CreatedAt *time.Time - // ID of the status to which this media is attached; defaults to "". + + // ID of the status to which this + // media is attached; defaults to "". StatusID *string - // URL of the media on a remote instance; defaults to "". + + // URL of the media on a + // remote instance; defaults to "". RemoteURL *string - // Image description of this media; defaults to "". + + // Image description of + // this media; defaults to "". Description *string - // Blurhash of this media; defaults to "". + + // Blurhash of this + // media; defaults to "". Blurhash *string - // ID of the scheduled status to which this media is attached; defaults to "". + + // ID of the scheduled status to which + // this media is attached; defaults to "". ScheduledStatusID *string - // Mark this media as in-use as an avatar; defaults to false. + + // Mark this media as in-use + // as an avatar; defaults to false. Avatar *bool - // Mark this media as in-use as a header; defaults to false. + + // Mark this media as in-use + // as a header; defaults to false. Header *bool - // X focus coordinate for this media; defaults to 0. + + // X focus coordinate for + // this media; defaults to 0. FocusX *float32 - // Y focus coordinate for this media; defaults to 0. + + // Y focus coordinate for + // this media; defaults to 0. FocusY *float32 } // AdditionalEmojiInfo represents additional information // that should be taken into account when processing an emoji. type AdditionalEmojiInfo struct { - // Time that this emoji was created; defaults to time.Now(). + + // ActivityPub URI of + // this remote emoji. + URI *string + + // Time that this emoji was + // created; defaults to time.Now(). CreatedAt *time.Time - // Domain the emoji originated from. Blank for this instance's domain. Defaults to "". + + // Domain the emoji originated from. Blank + // for this instance's domain. Defaults to "". Domain *string - // URL of this emoji on a remote instance; defaults to "". + + // URL of this emoji on a + // remote instance; defaults to "". ImageRemoteURL *string - // URL of the static version of this emoji on a remote instance; defaults to "". + + // URL of the static version of this emoji + // on a remote instance; defaults to "". ImageStaticRemoteURL *string - // Whether this emoji should be disabled (not shown) on this instance; defaults to false. + + // Whether this emoji should be disabled (not + // shown) on this instance; defaults to false. Disabled *bool - // Whether this emoji should be visible in the instance's emoji picker; defaults to true. + + // Whether this emoji should be visible in + // the instance's emoji picker; defaults to true. VisibleInPicker *bool - // ID of the category this emoji should be placed in; defaults to "". + + // ID of the category this emoji + // should be placed in; defaults to "". CategoryID *string } -- cgit v1.2.3