Browse Source

Bugfix in UI when user has a single permission.

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

25
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,15 +59,21 @@ 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())
if (firstTask.Id != receiveTask.Task.Id)
{
throw new TaskCanceledException();
}
else
{ {
return await receiveTask.Task; var delayTask = Task.Delay(timeout, cts.Token);
var resultTask = await Task.WhenAny(receiveTask.Task, delayTask);
if (resultTask == delayTask)
{
throw new TaskCanceledException();
}
else
{
cts.Cancel();
return await receiveTask.Task;
}
} }
} }
finally finally

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