summaryrefslogtreecommitdiff
path: root/internal/media/processingmedia.go
diff options
context:
space:
mode:
authorLibravatar tsmethurst <tobi.smethurst@protonmail.com>2022-01-15 17:36:15 +0100
committerLibravatar tsmethurst <tobi.smethurst@protonmail.com>2022-01-15 17:36:15 +0100
commit6bf39d0fc1286bdf2f4760adab52c6eff234d01d (patch)
treee4916598a7a14eab4336909c5fec1de6ed8ad0d4 /internal/media/processingmedia.go
parentstart fixing up emoji processing code (diff)
downloadgotosocial-6bf39d0fc1286bdf2f4760adab52c6eff234d01d.tar.xz
emoji code passing muster
Diffstat (limited to 'internal/media/processingmedia.go')
-rw-r--r--internal/media/processingmedia.go25
1 files changed, 13 insertions, 12 deletions
diff --git a/internal/media/processingmedia.go b/internal/media/processingmedia.go
index 1bfd7b629..fade64c24 100644
--- a/internal/media/processingmedia.go
+++ b/internal/media/processingmedia.go
@@ -70,6 +70,9 @@ type ProcessingMedia struct {
storage *kv.KVStore
err error // error created during processing, if any
+
+ // track whether this media has already been put in the databse
+ insertedInDB bool
}
// AttachmentID returns the ID of the underlying media attachment without blocking processing.
@@ -92,6 +95,16 @@ func (p *ProcessingMedia) LoadAttachment(ctx context.Context) (*gtsmodel.MediaAt
return nil, err
}
+ // store the result in the database before returning it
+ p.mu.Lock()
+ defer p.mu.Unlock()
+ if !p.insertedInDB {
+ if err := p.database.Put(ctx, p.attachment); err != nil {
+ return nil, err
+ }
+ p.insertedInDB = true
+ }
+
return p.attachment, nil
}
@@ -143,12 +156,6 @@ func (p *ProcessingMedia) loadThumb(ctx context.Context) (*ImageMeta, error) {
}
p.attachment.Thumbnail.FileSize = len(thumb.image)
- if err := putOrUpdate(ctx, p.database, p.attachment); err != nil {
- p.err = err
- p.thumbstate = errored
- return nil, err
- }
-
// set the thumbnail of this media
p.thumb = thumb
@@ -216,12 +223,6 @@ func (p *ProcessingMedia) loadFullSize(ctx context.Context) (*ImageMeta, error)
p.attachment.File.UpdatedAt = time.Now()
p.attachment.Processing = gtsmodel.ProcessingStatusProcessed
- if err := putOrUpdate(ctx, p.database, p.attachment); err != nil {
- p.err = err
- p.fullSizeState = errored
- return nil, err
- }
-
// set the fullsize of this media
p.fullSize = decoded