diff --git a/Iceshrimp.Backend/Core/Database/Tables/DriveFile.cs b/Iceshrimp.Backend/Core/Database/Tables/DriveFile.cs index 17435fed..2b50cd1f 100644 --- a/Iceshrimp.Backend/Core/Database/Tables/DriveFile.cs +++ b/Iceshrimp.Backend/Core/Database/Tables/DriveFile.cs @@ -72,7 +72,6 @@ public class DriveFile : IEntity { /// The comment of the DriveFile. /// [Column("comment")] - [StringLength(8192)] public string? Comment { get; set; } /// diff --git a/Iceshrimp.Backend/Core/Federation/ActivityPub/NoteRenderer.cs b/Iceshrimp.Backend/Core/Federation/ActivityPub/NoteRenderer.cs index 8082d211..5f35efc0 100644 --- a/Iceshrimp.Backend/Core/Federation/ActivityPub/NoteRenderer.cs +++ b/Iceshrimp.Backend/Core/Federation/ActivityPub/NoteRenderer.cs @@ -56,7 +56,8 @@ public class NoteRenderer(IOptions config, MfmConverter Type = $"{Constants.ActivityStreamsNs}#Document", Sensitive = p.IsSensitive, Url = new ASObjectBase(p.Url), - MediaType = p.Type + MediaType = p.Type, + Description = p.Comment }) .Cast() .ToListAsync() diff --git a/Iceshrimp.Backend/Core/Federation/ActivityStreams/Types/ASAttachment.cs b/Iceshrimp.Backend/Core/Federation/ActivityStreams/Types/ASAttachment.cs index ea7cd01b..7c79ffd5 100644 --- a/Iceshrimp.Backend/Core/Federation/ActivityStreams/Types/ASAttachment.cs +++ b/Iceshrimp.Backend/Core/Federation/ActivityStreams/Types/ASAttachment.cs @@ -24,6 +24,10 @@ public class ASDocument : ASAttachment { [J("https://www.w3.org/ns/activitystreams#sensitive")] [JC(typeof(ValueObjectConverter))] public bool? Sensitive { get; set; } + + [J("https://www.w3.org/ns/activitystreams#name")] + [JC(typeof(ValueObjectConverter))] + public string? Description { get; set; } } public sealed class ASAttachmentConverter : JsonConverter { diff --git a/Iceshrimp.Backend/Core/Services/DriveService.cs b/Iceshrimp.Backend/Core/Services/DriveService.cs index a86acfa0..a74cf8aa 100644 --- a/Iceshrimp.Backend/Core/Services/DriveService.cs +++ b/Iceshrimp.Backend/Core/Services/DriveService.cs @@ -23,7 +23,9 @@ public class DriveService( QueueService queueSvc, ILogger logger ) { - public async Task StoreFile(string? uri, User user, bool sensitive) { + public async Task StoreFile( + string? uri, User user, bool sensitive, string? description = null, string? mimeType = null + ) { if (uri == null) return null; logger.LogDebug("Storing file {uri} for user {userId}", uri, user.Id); @@ -63,7 +65,8 @@ public class DriveService( Uri = uri, Filename = new Uri(uri).AbsolutePath.Split('/').LastOrDefault() ?? "", IsSensitive = sensitive, - MimeType = CleanMimeType(res.Content.Headers.ContentType?.MediaType) + Comment = description, + MimeType = CleanMimeType(mimeType ?? res.Content.Headers.ContentType?.MediaType) }; return await StoreFile(await res.Content.ReadAsStreamAsync(), user, request); diff --git a/Iceshrimp.Backend/Core/Services/NoteService.cs b/Iceshrimp.Backend/Core/Services/NoteService.cs index fb7e753b..73cd0d55 100644 --- a/Iceshrimp.Backend/Core/Services/NoteService.cs +++ b/Iceshrimp.Backend/Core/Services/NoteService.cs @@ -283,7 +283,7 @@ public class NoteService( if (attachments is not { Count: > 0 }) return []; var result = await attachments .OfType() - .Select(p => driveSvc.StoreFile(p.Url?.Id, user, p.Sensitive ?? sensitive)) + .Select(p => driveSvc.StoreFile(p.Url?.Id, user, p.Sensitive ?? sensitive, p.Description, p.MediaType)) .AwaitAllNoConcurrencyAsync(); return result.Where(p => p != null).Cast().ToList();