[backend/database] Move emoji url generation to the Emoji entity

This commit is contained in:
Laura Hausmann 2024-04-18 20:46:46 +02:00
parent 333611f65e
commit c38ff71791
No known key found for this signature in database
GPG key ID: D044E84C5BE01605
3 changed files with 11 additions and 2 deletions

View file

@ -1,5 +1,6 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Iceshrimp.Backend.Core.Configuration;
using Microsoft.EntityFrameworkCore;
namespace Iceshrimp.Backend.Core.Database.Tables;
@ -55,4 +56,12 @@ public class Emoji
/// </summary>
[Column("height")]
public int? Height { get; set; }
public string GetPublicUri(Config.InstanceSection config) => Host == null
? $"https://{config.WebDomain}/emoji/{Name}"
: throw new Exception("Cannot access PublicUri for remote emoji");
public string? GetPublicUriOrNull(Config.InstanceSection config) => Host == null
? $"https://{config.WebDomain}/emoji/{Name}"
: null;
}

View file

@ -97,7 +97,7 @@ public class ActivityRenderer(
var e = new ASEmoji
{
Id = emoji.Host == null ? $"https://{config.Value.WebDomain}/emoji/{emoji.Name}" : null,
Id = emoji.GetPublicUriOrNull(config.Value),
Name = name,
Image = new ASImage { Url = new ASLink(emoji.PublicUrl) }
};

View file

@ -75,7 +75,7 @@ public class NoteRenderer(IOptions<Config.InstanceSection> config, MfmConverter
}))
.Concat(emoji.Select(e => new ASEmoji
{
Id = $"https://{config.Value.WebDomain}/emoji/{e.Name}",
Id = e.GetPublicUri(config.Value),
Name = e.Name,
Image = new ASImage { Url = new ASLink(e.PublicUrl) }
}))