Browse Source

Bugfix in UI when user has a single permission.

pull/332/head
Sebastian Stehle 7 years ago
parent
commit
89539c165e
  1. 13
      src/Squidex.Infrastructure/PubSubExtensions.cs
  2. 2
      src/Squidex/app/shared/services/auth.service.ts

13
src/Squidex.Infrastructure/PubSubExtensions.cs

@ -6,6 +6,7 @@
// ========================================================================== // ==========================================================================
using System; using System;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
#pragma warning disable 4014 #pragma warning disable 4014
@ -46,7 +47,7 @@ namespace Squidex.Infrastructure
IDisposable subscription = null; IDisposable subscription = null;
try try
{ {
var receiveTask = new TaskCompletionSource<TResponse>(); var receiveTask = new TaskCompletionSource<TResponse>(TaskCreationOptions.RunContinuationsAsynchronously);
subscription = pubsub.Subscribe<Response<TResponse>>(response => subscription = pubsub.Subscribe<Response<TResponse>>(response =>
{ {
@ -58,17 +59,23 @@ namespace Squidex.Infrastructure
Task.Run(() => pubsub.Publish(request, self)); Task.Run(() => pubsub.Publish(request, self));
var firstTask = await Task.WhenAny(receiveTask.Task, Task.Delay(timeout)); using (var cts = new CancellationTokenSource())
{
var delayTask = Task.Delay(timeout, cts.Token);
if (firstTask.Id != receiveTask.Task.Id) var resultTask = await Task.WhenAny(receiveTask.Task, delayTask);
if (resultTask == delayTask)
{ {
throw new TaskCanceledException(); throw new TaskCanceledException();
} }
else else
{ {
cts.Cancel();
return await receiveTask.Task; return await receiveTask.Task;
} }
} }
}
finally finally
{ {
subscription?.Dispose(); subscription?.Dispose();

2
src/Squidex/app/shared/services/auth.service.ts

@ -56,6 +56,8 @@ export class Profile {
if (Types.isArrayOfString(permissions)) { if (Types.isArrayOfString(permissions)) {
this.permissions = permissions.map(x => new Permission(x)); this.permissions = permissions.map(x => new Permission(x));
} else if (Types.isString(permissions)) {
this.permissions = [new Permission(permissions)];
} else { } else {
this.permissions = []; this.permissions = [];
} }

Loading…
Cancel
Save