Browse Source

Resolve SVGs.

pull/728/head
Sebastian 5 years ago
parent
commit
ff05745d7e
  1. 5
      backend/src/Squidex.Domain.Apps.Entities/Assets/ImageAssetMetadataSource.cs
  2. 9
      backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/Steps/ResolveAssets.cs
  3. 12
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Assets/ImageAssetMetadataSourceTests.cs
  4. 17
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ResolveAssetsTests.cs

5
backend/src/Squidex.Domain.Apps.Entities/Assets/ImageAssetMetadataSource.cs

@ -115,6 +115,11 @@ namespace Squidex.Domain.Apps.Entities.Assets
command.Tags.Add("image/small");
}
}
if (command.File.MimeType == "image/svg+xml")
{
command.Tags.Add("image");
}
}
public IEnumerable<string> Format(IAssetEntity asset)

9
backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/Steps/ResolveAssets.cs

@ -90,7 +90,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries.Steps
{
IJsonValue array;
if (referencedAsset.Type == AssetType.Image)
if (IsImage(referencedAsset))
{
var url = urlGenerator.AssetContent(
referencedAsset.AppId,
@ -113,6 +113,13 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries.Steps
}
}
private static bool IsImage(IEnrichedAssetEntity asset)
{
const int PreviewLimit = 10 * 1024;
return asset.Type == AssetType.Image || (asset.MimeType == "image/svg+xml" && asset.FileSize < PreviewLimit);
}
private async Task<ILookup<DomainId, IEnrichedAssetEntity>> GetAssetsAsync(Context context, HashSet<DomainId> ids,
CancellationToken ct)
{

12
backend/tests/Squidex.Domain.Apps.Entities.Tests/Assets/ImageAssetMetadataSourceTests.cs

@ -132,6 +132,18 @@ namespace Squidex.Domain.Apps.Entities.Assets
Assert.Contains("image/large", command.Tags);
}
[Fact]
public async Task Should_add_image_tag_if_svg()
{
var svg = new DelegateAssetFile("MyImage.png", "image/svg+xml", 1024, () => stream);
var command = new CreateAsset { File = svg };
await sut.EnhanceAsync(command);
Assert.Contains("image", command.Tags);
}
[Fact]
public void Should_format_image()
{

17
backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ResolveAssetsTests.cs

@ -106,10 +106,10 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries
public async Task Should_enrich_with_asset_urls()
{
var img1 = CreateAsset(DomainId.NewGuid(), 1, AssetType.Image, "Image1.png");
var img2 = CreateAsset(DomainId.NewGuid(), 2, AssetType.Image, "Image2.png");
var img2 = CreateAsset(DomainId.NewGuid(), 2, AssetType.Unknown, "Image2.png", "image/svg+xml");
var doc1 = CreateAsset(DomainId.NewGuid(), 3, AssetType.Unknown, "Document1.png");
var doc2 = CreateAsset(DomainId.NewGuid(), 4, AssetType.Unknown, "Document2.png");
var doc2 = CreateAsset(DomainId.NewGuid(), 4, AssetType.Unknown, "Document2.png", "image/svg+xml", 20_000);
var contents = new[]
{
@ -236,9 +236,18 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries
};
}
private IEnrichedAssetEntity CreateAsset(DomainId id, int version, AssetType type, string fileName)
private IEnrichedAssetEntity CreateAsset(DomainId id, int version, AssetType type, string fileName, string? fileType = null, int fileSize = 100)
{
return new AssetEntity { AppId = appId, Id = id, Type = type, Version = version, FileName = fileName };
return new AssetEntity
{
AppId = appId,
Id = id,
Type = type,
FileName = fileName,
FileSize = fileSize,
MimeType = fileType!,
Version = version,
};
}
}
}

Loading…
Cancel
Save