diff --git a/src/Squidex.Domain.Apps.Core.Operations/HandleRules/Actions/WebhookActionHandler.cs b/src/Squidex.Domain.Apps.Core.Operations/HandleRules/Actions/WebhookActionHandler.cs index 5fe661d4f..bac9ef7fd 100644 --- a/src/Squidex.Domain.Apps.Core.Operations/HandleRules/Actions/WebhookActionHandler.cs +++ b/src/Squidex.Domain.Apps.Core.Operations/HandleRules/Actions/WebhookActionHandler.cs @@ -63,7 +63,14 @@ namespace Squidex.Domain.Apps.Core.HandleRules.Actions var responseString = await response.Content.ReadAsStringAsync(); var requestDump = DumpFormatter.BuildDump(requestMsg, response, requestBody, responseString, TimeSpan.Zero, false); - return (requestDump, null); + Exception ex = null; + + if (!response.IsSuccessStatusCode) + { + ex = new HttpRequestException($"Response code does not indicate success: {(int)response.StatusCode} ({response.StatusCode})."); + } + + return (requestDump, ex); } catch (Exception ex) { diff --git a/src/Squidex.Domain.Apps.Core.Operations/HandleRules/Triggers/ContentChangedTriggerHandler.cs b/src/Squidex.Domain.Apps.Core.Operations/HandleRules/Triggers/ContentChangedTriggerHandler.cs index 13ca5f459..6914f3d44 100644 --- a/src/Squidex.Domain.Apps.Core.Operations/HandleRules/Triggers/ContentChangedTriggerHandler.cs +++ b/src/Squidex.Domain.Apps.Core.Operations/HandleRules/Triggers/ContentChangedTriggerHandler.cs @@ -17,7 +17,7 @@ namespace Squidex.Domain.Apps.Core.HandleRules.Triggers { protected override bool Triggers(Envelope @event, ContentChangedTrigger trigger) { - if (trigger.HandleAll) + if (trigger.HandleAll && @event.Payload is ContentEvent) { return true; } diff --git a/src/Squidex.Infrastructure.MongoDb/MongoDb/BsonJsonConvention.cs b/src/Squidex.Infrastructure.MongoDb/MongoDb/BsonJsonConvention.cs index ab9f13d11..77019a716 100644 --- a/src/Squidex.Infrastructure.MongoDb/MongoDb/BsonJsonConvention.cs +++ b/src/Squidex.Infrastructure.MongoDb/MongoDb/BsonJsonConvention.cs @@ -11,6 +11,7 @@ using System.Reflection; using MongoDB.Bson.Serialization; using MongoDB.Bson.Serialization.Conventions; using Newtonsoft.Json; +using Newtonsoft.Json.Linq; namespace Squidex.Infrastructure.MongoDb { @@ -31,9 +32,21 @@ namespace Squidex.Infrastructure.MongoDb memberMap.SetSerializer((IBsonSerializer)bsonSerializer); } + else if (memberMap.MemberType == typeof(JToken)) + { + memberMap.SetSerializer(JTokenSerializer.Instance); + } + else if (memberMap.MemberType == typeof(JObject)) + { + memberMap.SetSerializer(JTokenSerializer.Instance); + } + else if (memberMap.MemberType == typeof(JValue)) + { + memberMap.SetSerializer(JTokenSerializer.Instance); + } }); ConventionRegistry.Register("json", pack, t => true); } } -} +} \ No newline at end of file diff --git a/src/Squidex.Infrastructure.MongoDb/MongoDb/BsonJsonSerializer.cs b/src/Squidex.Infrastructure.MongoDb/MongoDb/BsonJsonSerializer.cs index d06df02c9..eefb3e3e5 100644 --- a/src/Squidex.Infrastructure.MongoDb/MongoDb/BsonJsonSerializer.cs +++ b/src/Squidex.Infrastructure.MongoDb/MongoDb/BsonJsonSerializer.cs @@ -12,7 +12,7 @@ using Newtonsoft.Json; namespace Squidex.Infrastructure.MongoDb { - public class BsonJsonSerializer : ClassSerializerBase where T : class + public sealed class BsonJsonSerializer : ClassSerializerBase where T : class { private readonly JsonSerializer serializer; diff --git a/src/Squidex/AppServices.cs b/src/Squidex/AppServices.cs index baa614181..3a6e0e91f 100644 --- a/src/Squidex/AppServices.cs +++ b/src/Squidex/AppServices.cs @@ -26,17 +26,19 @@ namespace Squidex services.AddMyAssetServices(config); services.AddMyAuthentication(config); + services.AddMyEntitiesServices(config); services.AddMyEventPublishersServices(config); services.AddMyEventStoreServices(config); services.AddMyIdentityServer(); - services.AddMyInfrastructureServices(config); + services.AddMyInfrastructureServices(); + services.AddMyLoggingServices(config); + services.AddMyMigrationServices(); services.AddMyMvc(); - services.AddMyPubSubServices(config); - services.AddMyReadServices(config); + services.AddMyRuleServices(); services.AddMySerializers(); services.AddMyStoreServices(config); services.AddMySwaggerSettings(); - services.AddMyWriteServices(); + services.AddMySubscriptionServices(config); services.Configure( config.GetSection("urls")); diff --git a/src/Squidex/Config/Domain/AssetServices.cs b/src/Squidex/Config/Domain/AssetServices.cs index d2579c2ca..59297c8b6 100644 --- a/src/Squidex/Config/Domain/AssetServices.cs +++ b/src/Squidex/Config/Domain/AssetServices.cs @@ -9,6 +9,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Squidex.Infrastructure; using Squidex.Infrastructure.Assets; +using Squidex.Infrastructure.Assets.ImageSharp; using Squidex.Infrastructure.Log; namespace Squidex.Config.Domain @@ -45,6 +46,9 @@ namespace Squidex.Config.Domain .As(); } }); + + services.AddSingletonAs() + .As(); } } } diff --git a/src/Squidex/Config/Domain/WriteServices.cs b/src/Squidex/Config/Domain/EntitiesServices.cs similarity index 68% rename from src/Squidex/Config/Domain/WriteServices.cs rename to src/Squidex/Config/Domain/EntitiesServices.cs index 916302fd8..c8583e713 100644 --- a/src/Squidex/Config/Domain/WriteServices.cs +++ b/src/Squidex/Config/Domain/EntitiesServices.cs @@ -6,6 +6,7 @@ // ========================================================================== using System; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Migrate_01; @@ -19,25 +20,55 @@ using Squidex.Domain.Apps.Entities.Apps.Templates; using Squidex.Domain.Apps.Entities.Assets; using Squidex.Domain.Apps.Entities.Contents; using Squidex.Domain.Apps.Entities.Contents.Commands; +using Squidex.Domain.Apps.Entities.Contents.Edm; +using Squidex.Domain.Apps.Entities.Contents.GraphQL; +using Squidex.Domain.Apps.Entities.History; using Squidex.Domain.Apps.Entities.Rules; using Squidex.Domain.Apps.Entities.Rules.Commands; using Squidex.Domain.Apps.Entities.Schemas; -using Squidex.Domain.Users; +using Squidex.Infrastructure.Assets; using Squidex.Infrastructure.Commands; using Squidex.Infrastructure.Migrations; +using Squidex.Pipeline; using Squidex.Pipeline.CommandMiddlewares; namespace Squidex.Config.Domain { - public static class WriteServices + public static class EntitiesServices { - public static void AddMyWriteServices(this IServiceCollection services) + public static void AddMyEntitiesServices(this IServiceCollection services, IConfiguration config) { - services.AddSingletonAs() - .As(); + var exposeSourceUrl = config.GetOptionalValue("assetStore:exposeSourceUrl", true); - services.AddSingletonAs() - .As(); + services.AddSingletonAs(c => new GraphQLUrlGenerator( + c.GetRequiredService>(), + c.GetRequiredService(), + exposeSourceUrl)) + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .AsSelf(); + + services.AddSingletonAs() + .As(); services.AddSingletonAs() .As(); @@ -75,26 +106,8 @@ namespace Squidex.Config.Domain services.AddSingletonAs() .As(); - services.AddTransientAs() - .As(); - - services.AddTransientAs() - .As(); - - services.AddTransientAs() - .As(); - - services.AddTransientAs() - .As(); - - services.AddTransientAs() - .As(); - - services.AddTransientAs() - .As(); - - services.AddTransientAs() - .AsSelf(); + services.AddSingletonAs() + .As(); services.AddTransientAs() .AsSelf(); @@ -113,11 +126,11 @@ namespace Squidex.Config.Domain services.AddSingleton(c => { - var config = c.GetRequiredService>(); + var uiOptions = c.GetRequiredService>(); var result = new InitialPatterns(); - foreach (var pattern in config.Value.RegexSuggestions) + foreach (var pattern in uiOptions.Value.RegexSuggestions) { if (!string.IsNullOrWhiteSpace(pattern.Key) && !string.IsNullOrWhiteSpace(pattern.Value)) @@ -129,5 +142,32 @@ namespace Squidex.Config.Domain return result; }); } + + public static void AddMyMigrationServices(this IServiceCollection services) + { + services.AddSingletonAs() + .AsSelf(); + + services.AddTransientAs() + .As(); + + services.AddTransientAs() + .As(); + + services.AddTransientAs() + .As(); + + services.AddTransientAs() + .As(); + + services.AddTransientAs() + .As(); + + services.AddTransientAs() + .As(); + + services.AddTransientAs() + .AsSelf(); + } } } diff --git a/src/Squidex/Config/Domain/EventStoreServices.cs b/src/Squidex/Config/Domain/EventStoreServices.cs index 85f28033e..baa744514 100644 --- a/src/Squidex/Config/Domain/EventStoreServices.cs +++ b/src/Squidex/Config/Domain/EventStoreServices.cs @@ -5,12 +5,15 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== +using System.Linq; using EventStore.ClientAPI; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using MongoDB.Driver; using Squidex.Infrastructure; using Squidex.Infrastructure.EventSourcing; +using Squidex.Infrastructure.EventSourcing.Grains; +using Squidex.Infrastructure.States; namespace Squidex.Config.Domain { @@ -48,6 +51,23 @@ namespace Squidex.Config.Domain .As(); } }); + + services.AddSingletonAs() + .As() + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs(c => + { + var allEventConsumers = c.GetServices(); + + return new EventConsumerFactory(n => allEventConsumers.FirstOrDefault(x => x.Name == n)); + }); } } } diff --git a/src/Squidex/Config/Domain/InfrastructureServices.cs b/src/Squidex/Config/Domain/InfrastructureServices.cs index 96457224b..085e84e61 100644 --- a/src/Squidex/Config/Domain/InfrastructureServices.cs +++ b/src/Squidex/Config/Domain/InfrastructureServices.cs @@ -5,23 +5,11 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== -using System; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Infrastructure; -using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using Newtonsoft.Json; using NodaTime; -using Squidex.Infrastructure; -using Squidex.Infrastructure.Assets; -using Squidex.Infrastructure.Assets.ImageSharp; -using Squidex.Infrastructure.Commands; -using Squidex.Infrastructure.EventSourcing; -using Squidex.Infrastructure.Log; -using Squidex.Infrastructure.Migrations; -using Squidex.Infrastructure.States; using Squidex.Infrastructure.UsageTracking; -using Squidex.Pipeline; #pragma warning disable RECS0092 // Convert field to readonly @@ -29,47 +17,8 @@ namespace Squidex.Config.Domain { public static class InfrastructureServices { - private static ILogChannel console = new ConsoleLogChannel(); - private static ILogChannel file; - - public static void AddMyInfrastructureServices(this IServiceCollection services, IConfiguration config) + public static void AddMyInfrastructureServices(this IServiceCollection services) { - if (config.GetValue("logging:human")) - { - services.AddSingletonAs(c => new Func(() => new JsonLogWriter(Formatting.Indented, true))); - } - else - { - services.AddSingletonAs(c => new Func(() => new JsonLogWriter())); - } - - var loggingFile = config.GetValue("logging:file"); - - if (!string.IsNullOrWhiteSpace(loggingFile)) - { - services.AddSingletonAs(file ?? (file = new FileChannel(loggingFile))) - .As() - .As(); - } - - services.AddSingletonAs(console) - .As(); - - services.AddSingletonAs(c => new ApplicationInfoLogAppender(typeof(Program).Assembly, Guid.NewGuid())) - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - services.AddSingletonAs(SystemClock.Instance) .As(); @@ -81,23 +30,6 @@ namespace Squidex.Config.Domain services.AddSingletonAs() .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .AsSelf(); - - services.AddSingleton(typeof(IStore<>), typeof(Store<>)); } } } diff --git a/src/Squidex/Config/Domain/LoggingServices.cs b/src/Squidex/Config/Domain/LoggingServices.cs new file mode 100644 index 000000000..e4ee51850 --- /dev/null +++ b/src/Squidex/Config/Domain/LoggingServices.cs @@ -0,0 +1,64 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschränkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using Squidex.Infrastructure; +using Squidex.Infrastructure.Log; +using Squidex.Pipeline; + +#pragma warning disable RECS0092 // Convert field to readonly + +namespace Squidex.Config.Domain +{ + public static class LoggingServices + { + private static ILogChannel console = new ConsoleLogChannel(); + private static ILogChannel file; + + public static void AddMyLoggingServices(this IServiceCollection services, IConfiguration config) + { + if (config.GetValue("logging:human")) + { + services.AddSingletonAs(c => new Func(() => new JsonLogWriter(Formatting.Indented, true))); + } + else + { + services.AddSingletonAs(c => new Func(() => new JsonLogWriter())); + } + + var loggingFile = config.GetValue("logging:file"); + + if (!string.IsNullOrWhiteSpace(loggingFile)) + { + services.AddSingletonAs(file ?? (file = new FileChannel(loggingFile))) + .As() + .As(); + } + + services.AddSingletonAs(console) + .As(); + + services.AddSingletonAs(c => new ApplicationInfoLogAppender(typeof(Program).Assembly, Guid.NewGuid())) + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + } + } +} diff --git a/src/Squidex/Config/Domain/PubSubServices.cs b/src/Squidex/Config/Domain/PubSubServices.cs deleted file mode 100644 index e35611f06..000000000 --- a/src/Squidex/Config/Domain/PubSubServices.cs +++ /dev/null @@ -1,40 +0,0 @@ -// ========================================================================== -// Squidex Headless CMS -// ========================================================================== -// Copyright (c) Squidex UG (haftungsbeschränkt) -// All rights reserved. Licensed under the MIT license. -// ========================================================================== - -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Squidex.Infrastructure; -using Squidex.Infrastructure.Log; -using StackExchange.Redis; - -namespace Squidex.Config.Domain -{ - public static class PubSubServices - { - public static void AddMyPubSubServices(this IServiceCollection services, IConfiguration config) - { - config.ConfigureByOption("pubSub:type", new Options - { - ["InMemory"] = () => - { - services.AddSingletonAs() - .As(); - }, - ["Redis"] = () => - { - var configuration = config.GetRequiredValue("pubsub:redis:configuration"); - - var redis = Singletons.GetOrAddLazy(configuration, s => ConnectionMultiplexer.Connect(s)); - - services.AddSingletonAs(c => new RedisPubSub(redis, c.GetRequiredService())) - .As() - .As(); - } - }); - } - } -} diff --git a/src/Squidex/Config/Domain/ReadServices.cs b/src/Squidex/Config/Domain/ReadServices.cs deleted file mode 100644 index 3aafa1fd9..000000000 --- a/src/Squidex/Config/Domain/ReadServices.cs +++ /dev/null @@ -1,123 +0,0 @@ -// ========================================================================== -// Squidex Headless CMS -// ========================================================================== -// Copyright (c) Squidex UG (haftungsbeschränkt) -// All rights reserved. Licensed under the MIT license. -// ========================================================================== - -using System.Linq; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Options; -using Squidex.Domain.Apps.Core.HandleRules; -using Squidex.Domain.Apps.Core.HandleRules.Actions; -using Squidex.Domain.Apps.Core.HandleRules.Triggers; -using Squidex.Domain.Apps.Entities; -using Squidex.Domain.Apps.Entities.Apps; -using Squidex.Domain.Apps.Entities.Apps.Services; -using Squidex.Domain.Apps.Entities.Apps.Services.Implementations; -using Squidex.Domain.Apps.Entities.Contents; -using Squidex.Domain.Apps.Entities.Contents.Edm; -using Squidex.Domain.Apps.Entities.Contents.GraphQL; -using Squidex.Domain.Apps.Entities.History; -using Squidex.Domain.Apps.Entities.Rules; -using Squidex.Domain.Apps.Entities.Schemas; -using Squidex.Domain.Users; -using Squidex.Infrastructure; -using Squidex.Infrastructure.Assets; -using Squidex.Infrastructure.EventSourcing; -using Squidex.Infrastructure.EventSourcing.Grains; -using Squidex.Pipeline; - -namespace Squidex.Config.Domain -{ - public static class ReadServices - { - public static void AddMyReadServices(this IServiceCollection services, IConfiguration config) - { - services.AddSingletonAs() - .As() - .As(); - - var exposeSourceUrl = config.GetOptionalValue("assetStore:exposeSourceUrl", true); - - services.AddSingletonAs(c => new GraphQLUrlGenerator( - c.GetRequiredService>(), - c.GetRequiredService(), - exposeSourceUrl)) - .As(); - - services.AddSingletonAs(c => c.GetService>()?.Value?.Plans.OrEmpty()); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .AsSelf(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs() - .As(); - - services.AddSingletonAs(c => - { - var allEventConsumers = c.GetServices(); - - return new EventConsumerFactory(n => allEventConsumers.FirstOrDefault(x => x.Name == n)); - }); - - services.AddSingletonAs() - .AsSelf(); - - services.AddSingletonAs() - .AsSelf(); - } - } -} diff --git a/src/Squidex/Config/Domain/RuleServices.cs b/src/Squidex/Config/Domain/RuleServices.cs new file mode 100644 index 000000000..888d1eee4 --- /dev/null +++ b/src/Squidex/Config/Domain/RuleServices.cs @@ -0,0 +1,55 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschränkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using Microsoft.Extensions.DependencyInjection; +using Squidex.Domain.Apps.Core.HandleRules; +using Squidex.Domain.Apps.Core.HandleRules.Actions; +using Squidex.Domain.Apps.Core.HandleRules.Triggers; +using Squidex.Domain.Apps.Entities.Rules; +using Squidex.Infrastructure.EventSourcing; + +namespace Squidex.Config.Domain +{ + public static class RuleServices + { + public static void AddMyRuleServices(this IServiceCollection services) + { + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .AsSelf(); + + services.AddSingletonAs() + .AsSelf(); + } + } +} diff --git a/src/Squidex/Config/Domain/StoreServices.cs b/src/Squidex/Config/Domain/StoreServices.cs index f9b849af6..537b06688 100644 --- a/src/Squidex/Config/Domain/StoreServices.cs +++ b/src/Squidex/Config/Domain/StoreServices.cs @@ -73,17 +73,6 @@ namespace Squidex.Config.Domain .As>() .As(); - services.AddSingletonAs(c => new MongoUserStore(mongoDatabase)) - .As>() - .As() - .As() - .As(); - - services.AddSingletonAs(c => new MongoRoleStore(mongoDatabase)) - .As>() - .As() - .As(); - services.AddSingletonAs(c => new MongoPersistedGrantStore(mongoDatabase)) .As() .As(); @@ -96,6 +85,17 @@ namespace Squidex.Config.Domain .As() .As(); + services.AddSingletonAs(c => new MongoUserStore(mongoDatabase)) + .As>() + .As() + .As() + .As(); + + services.AddSingletonAs(c => new MongoRoleStore(mongoDatabase)) + .As>() + .As() + .As(); + services.AddSingletonAs(c => new MongoAppRepository(mongoDatabase)) .As() .As>() @@ -133,6 +133,8 @@ namespace Squidex.Config.Domain .As(); } }); + + services.AddSingleton(typeof(IStore<>), typeof(Store<>)); } } } diff --git a/src/Squidex/Config/Domain/SubscriptionServices.cs b/src/Squidex/Config/Domain/SubscriptionServices.cs new file mode 100644 index 000000000..92d4f9106 --- /dev/null +++ b/src/Squidex/Config/Domain/SubscriptionServices.cs @@ -0,0 +1,34 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using Squidex.Domain.Apps.Entities.Apps.Services; +using Squidex.Domain.Apps.Entities.Apps.Services.Implementations; +using Squidex.Domain.Users; +using Squidex.Infrastructure; + +namespace Squidex.Config.Domain +{ + public static class SubscriptionServices + { + public static void AddMySubscriptionServices(this IServiceCollection services, IConfiguration config) + { + services.AddSingletonAs(c => c.GetService>()?.Value?.Plans.OrEmpty()); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + + services.AddSingletonAs() + .As(); + } + } +} diff --git a/src/Squidex/app/features/rules/pages/events/rule-events-page.component.ts b/src/Squidex/app/features/rules/pages/events/rule-events-page.component.ts index 97b065926..a1f40d5e8 100644 --- a/src/Squidex/app/features/rules/pages/events/rule-events-page.component.ts +++ b/src/Squidex/app/features/rules/pages/events/rule-events-page.component.ts @@ -83,7 +83,7 @@ export class RuleEventsPageComponent implements OnInit { } else if (status === 'Failed') { return 'danger'; } else if (status === 'Pending') { - return 'default'; + return 'secondary'; } else { return status.toLowerCase(); } diff --git a/src/Squidex/appsettings.json b/src/Squidex/appsettings.json index be34052ab..d2ae2abd2 100644 --- a/src/Squidex/appsettings.json +++ b/src/Squidex/appsettings.json @@ -42,15 +42,6 @@ } }, - "orleans": { - /* - * Define the IP address or host name that is used for inter-silo communication. - * - * Special values: FirstIPAddressOfHost, Host - */ - "hostNameOrIPAddress": "localhost" - }, - "logging": { /* * Setting the flag to true, enables well formatteds json logs. @@ -58,26 +49,6 @@ "human": true }, - /* - * The pub sub mechanmism distributes messages between the nodes. - */ - "pubSub": { - /* - * Define the type of the read store. - * - * Supported: InMemory (for single node only), Redis (for cluster) - */ - "type": "InMemory", - "redis": { - /* - * Connection string to your redis server. - * - * Read More: https://github.com/ServiceStack/ServiceStack.Redis#redis-connection-strings - */ - "configuration": "localhost:6379,resolveDns=1" - } - }, - "assetStore": { /* * Define the type of the read store.