✨ New version of sticker rendering support
This commit is contained in:
@@ -109,9 +109,25 @@ public class StickerService(
|
|||||||
// If not in cache, fetch from the database
|
// If not in cache, fetch from the database
|
||||||
IQueryable<SnSticker> query = db.Stickers
|
IQueryable<SnSticker> query = db.Stickers
|
||||||
.Include(e => e.Pack);
|
.Include(e => e.Pack);
|
||||||
query = Guid.TryParse(identifier, out var guid)
|
|
||||||
? query.Where(e => e.Id == guid)
|
var isV2 = identifier.Contains("+");
|
||||||
: query.Where(e => EF.Functions.ILike(e.Pack.Prefix + e.Slug, identifier));
|
|
||||||
|
var identifierParts = identifier.Split('+');
|
||||||
|
if (identifierParts.Length < 2) isV2 = false;
|
||||||
|
|
||||||
|
if (isV2)
|
||||||
|
{
|
||||||
|
var packPart = identifierParts[0];
|
||||||
|
var stickerPart = identifierParts[1];
|
||||||
|
query = query.Where(e => EF.Functions.ILike(e.Pack.Prefix, packPart) && EF.Functions.ILike(e.Slug, stickerPart));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
query = Guid.TryParse(identifier, out var guid)
|
||||||
|
? query.Where(e => e.Id == guid)
|
||||||
|
: query.Where(e => EF.Functions.ILike(e.Pack.Prefix + e.Slug, identifier));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
var sticker = await query.FirstOrDefaultAsync();
|
var sticker = await query.FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user