diff --git a/backend/Squidex.ruleset b/backend/Squidex.ruleset
index 1f62259db..e56b72abe 100644
--- a/backend/Squidex.ruleset
+++ b/backend/Squidex.ruleset
@@ -89,6 +89,7 @@
+
diff --git a/backend/extensions/Squidex.Extensions/Squidex.Extensions.csproj b/backend/extensions/Squidex.Extensions/Squidex.Extensions.csproj
index b83294232..7c3bbb353 100644
--- a/backend/extensions/Squidex.Extensions/Squidex.Extensions.csproj
+++ b/backend/extensions/Squidex.Extensions/Squidex.Extensions.csproj
@@ -13,12 +13,12 @@
-
-
+
+
-
+
diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Squidex.Domain.Apps.Core.Model.csproj b/backend/src/Squidex.Domain.Apps.Core.Model/Squidex.Domain.Apps.Core.Model.csproj
index 9becff324..45d175f39 100644
--- a/backend/src/Squidex.Domain.Apps.Core.Model/Squidex.Domain.Apps.Core.Model.csproj
+++ b/backend/src/Squidex.Domain.Apps.Core.Model/Squidex.Domain.Apps.Core.Model.csproj
@@ -10,7 +10,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj b/backend/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj
index 0ce84d00e..850248033 100644
--- a/backend/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj
+++ b/backend/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj
@@ -18,11 +18,11 @@
-
-
+
+
-
+
diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Squidex.Domain.Apps.Entities.MongoDb.csproj b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Squidex.Domain.Apps.Entities.MongoDb.csproj
index 7bdbc822f..6afd3b14a 100644
--- a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Squidex.Domain.Apps.Entities.MongoDb.csproj
+++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Squidex.Domain.Apps.Entities.MongoDb.csproj
@@ -17,7 +17,7 @@
-
+
diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Primitives/InstantGraphType.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Primitives/InstantGraphType.cs
index 127933ef3..338b7a7ff 100644
--- a/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Primitives/InstantGraphType.cs
+++ b/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Primitives/InstantGraphType.cs
@@ -13,14 +13,14 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Primitives
{
public sealed class InstantGraphType : DateTimeGraphType
{
- public override object Serialize(object value)
+ public override object? Serialize(object? value)
{
return value;
}
- public override object ParseValue(object value)
+ public override object? ParseValue(object? value)
{
- return InstantPattern.ExtendedIso.Parse(value.ToString()!).Value;
+ return InstantPattern.ExtendedIso.Parse(value?.ToString()!).Value;
}
public override object? ParseLiteral(IValue value)
diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Primitives/JsonGraphType.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Primitives/JsonGraphType.cs
index 74cf0ec0f..7c37276ef 100644
--- a/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Primitives/JsonGraphType.cs
+++ b/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Primitives/JsonGraphType.cs
@@ -13,17 +13,17 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Primitives
{
public sealed class JsonGraphType : JsonNoopGraphType
{
- public override object Serialize(object value)
+ public override object? Serialize(object? value)
{
return value;
}
- public override object ParseValue(object value)
+ public override object? ParseValue(object? value)
{
return ParseJson(value);
}
- public static IJsonValue ParseJson(object value)
+ public static IJsonValue ParseJson(object? value)
{
switch (value)
{
@@ -72,7 +72,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Primitives
return value;
}
- public override IValue ToAST(object value)
+ public override IValue ToAST(object? value)
{
return new JsonValueNode(ParseJson(value));
}
diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Primitives/JsonNoopGraphType.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Primitives/JsonNoopGraphType.cs
index 4c4d7a78d..6dd1a4d3f 100644
--- a/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Primitives/JsonNoopGraphType.cs
+++ b/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Primitives/JsonNoopGraphType.cs
@@ -19,17 +19,17 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Primitives
Description = "Unstructured Json object";
}
- public override object ParseLiteral(IValue value)
+ public override object? ParseLiteral(IValue value)
{
return value.Value;
}
- public override object ParseValue(object value)
+ public override object? ParseValue(object? value)
{
return value;
}
- public override object Serialize(object value)
+ public override object? Serialize(object? value)
{
return value;
}
diff --git a/backend/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj b/backend/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj
index 6abc4d527..bfc21f7e9 100644
--- a/backend/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj
+++ b/backend/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj
@@ -17,21 +17,21 @@
-
-
+
+
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
-
+
all
runtime; build; native; contentfiles; analyzers
-
+
diff --git a/backend/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj b/backend/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj
index 981894fab..912002e1e 100644
--- a/backend/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj
+++ b/backend/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj
@@ -20,7 +20,7 @@
-
+
diff --git a/backend/src/Squidex.Domain.Users/Squidex.Domain.Users.csproj b/backend/src/Squidex.Domain.Users/Squidex.Domain.Users.csproj
index 537b082d2..f1039e7eb 100644
--- a/backend/src/Squidex.Domain.Users/Squidex.Domain.Users.csproj
+++ b/backend/src/Squidex.Domain.Users/Squidex.Domain.Users.csproj
@@ -17,7 +17,7 @@
-
+
diff --git a/backend/src/Squidex.Infrastructure.MongoDb/Squidex.Infrastructure.MongoDb.csproj b/backend/src/Squidex.Infrastructure.MongoDb/Squidex.Infrastructure.MongoDb.csproj
index d43df3f3e..7fe217e37 100644
--- a/backend/src/Squidex.Infrastructure.MongoDb/Squidex.Infrastructure.MongoDb.csproj
+++ b/backend/src/Squidex.Infrastructure.MongoDb/Squidex.Infrastructure.MongoDb.csproj
@@ -13,8 +13,8 @@
-
-
+
+
diff --git a/backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj b/backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj
index 08d096914..f33b976ff 100644
--- a/backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj
+++ b/backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj
@@ -13,18 +13,18 @@
-
+
-
+
all
runtime; build; native; contentfiles; analyzers
-
-
-
-
+
+
+
+
-
+
@@ -36,7 +36,7 @@
-
+
diff --git a/backend/src/Squidex.Web/Squidex.Web.csproj b/backend/src/Squidex.Web/Squidex.Web.csproj
index 78f27cf8f..3ee3d51e6 100644
--- a/backend/src/Squidex.Web/Squidex.Web.csproj
+++ b/backend/src/Squidex.Web/Squidex.Web.csproj
@@ -12,11 +12,11 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
diff --git a/backend/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetContentQueryDto.cs b/backend/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetContentQueryDto.cs
index 3056bdaa2..8000f8360 100644
--- a/backend/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetContentQueryDto.cs
+++ b/backend/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetContentQueryDto.cs
@@ -57,6 +57,12 @@ namespace Squidex.Areas.Api.Controllers.Assets.Models
[FromQuery(Name = "mode")]
public ResizeMode? Mode { get; set; }
+ ///
+ /// Optional background color.
+ ///
+ [FromQuery(Name = "bg")]
+ public string? Background { get; set; }
+
///
/// Override the y focus point.
///
diff --git a/backend/src/Squidex/Areas/Api/Controllers/News/Service/FeaturesService.cs b/backend/src/Squidex/Areas/Api/Controllers/News/Service/FeaturesService.cs
index cfa10a875..272515baf 100644
--- a/backend/src/Squidex/Areas/Api/Controllers/News/Service/FeaturesService.cs
+++ b/backend/src/Squidex/Areas/Api/Controllers/News/Service/FeaturesService.cs
@@ -44,18 +44,28 @@ namespace Squidex.Areas.Api.Controllers.News.Service
public async Task GetFeaturesAsync(int version = 0)
{
- var result = new FeaturesDto { Features = new List(), Version = FeatureVersion };
+ var result = new FeaturesDto
+ {
+ Version = FeatureVersion
+ };
if (client != null && version < FeatureVersion)
{
- var query = new ContentQuery
+ try
{
- Filter = $"data/version/iv ge {FeatureVersion}"
- };
+ var query = new ContentQuery
+ {
+ Filter = $"data/version/iv ge {FeatureVersion}"
+ };
- var features = await client.GetAsync(query, flatten);
+ var features = await client.GetAsync(query, flatten);
- result.Features.AddRange(features.Items.Select(x => x.Data));
+ result.Features = features.Items.Select(x => x.Data).ToList();
+ }
+ catch
+ {
+ result.Features = new List();
+ }
}
return result;
diff --git a/backend/src/Squidex/Squidex.csproj b/backend/src/Squidex/Squidex.csproj
index 7f2d8568b..7b158b929 100644
--- a/backend/src/Squidex/Squidex.csproj
+++ b/backend/src/Squidex/Squidex.csproj
@@ -33,40 +33,40 @@
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
+
-
-
-
-
-
+
+
+
+
+
diff --git a/backend/src/Squidex/appsettings.json b/backend/src/Squidex/appsettings.json
index 4b4c11a73..d7e6d6b70 100644
--- a/backend/src/Squidex/appsettings.json
+++ b/backend/src/Squidex/appsettings.json
@@ -676,7 +676,7 @@
/*
* The credentials to the app (Readonly).
*/
- "clientId": "squidex-website:default",
+ "clientId": "squidex-website:default2",
"clientSecret": "QGgqxd7bDHBTEkpC6fj8sbdPWgZrPrPfr3xzb3LKoec="
},
diff --git a/backend/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj b/backend/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj
index e7e4f2842..354647526 100644
--- a/backend/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj
+++ b/backend/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj
@@ -12,11 +12,11 @@
-
+
-
+
diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj
index 38ebc0548..1ef202994 100644
--- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj
+++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj
@@ -17,15 +17,15 @@
-
+
-
-
+
+
-
-
+
+
diff --git a/backend/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj b/backend/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj
index c8a4fa277..66c0654bb 100644
--- a/backend/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj
+++ b/backend/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj
@@ -13,9 +13,9 @@
-
+
-
+
diff --git a/backend/tests/Squidex.Infrastructure.Tests/Json/Newtonsoft/ReadOnlyCollectionTests.cs b/backend/tests/Squidex.Infrastructure.Tests/Json/Newtonsoft/ReadOnlyCollectionTests.cs
index 5e2b2a449..278f2bdfe 100644
--- a/backend/tests/Squidex.Infrastructure.Tests/Json/Newtonsoft/ReadOnlyCollectionTests.cs
+++ b/backend/tests/Squidex.Infrastructure.Tests/Json/Newtonsoft/ReadOnlyCollectionTests.cs
@@ -37,7 +37,7 @@ namespace Squidex.Infrastructure.Json.Newtonsoft
var json = JsonConvert.SerializeObject(source, serializerSettings);
- var serialized = JsonConvert.DeserializeObject>>(json);
+ var serialized = JsonConvert.DeserializeObject>>(json)!;
Assert.DoesNotContain("$type", json);
Assert.Equal(2, serialized.Values.Count);
@@ -62,7 +62,7 @@ namespace Squidex.Infrastructure.Json.Newtonsoft
var json = JsonConvert.SerializeObject(source, serializerSettings);
- var serialized = JsonConvert.DeserializeObject>>(json);
+ var serialized = JsonConvert.DeserializeObject>>(json)!;
Assert.DoesNotContain("$type", json);
Assert.Equal(2, serialized.Values.Count);
diff --git a/backend/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj b/backend/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj
index 971c1267e..8bb399776 100644
--- a/backend/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj
+++ b/backend/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj
@@ -13,13 +13,13 @@
-
+
-
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/backend/tests/Squidex.Web.Tests/Squidex.Web.Tests.csproj b/backend/tests/Squidex.Web.Tests/Squidex.Web.Tests.csproj
index 37667f789..56b3f4a2a 100644
--- a/backend/tests/Squidex.Web.Tests/Squidex.Web.Tests.csproj
+++ b/backend/tests/Squidex.Web.Tests/Squidex.Web.Tests.csproj
@@ -11,10 +11,10 @@
-
+
-
+