diff options
author | crupest <crupest@outlook.com> | 2022-04-24 15:22:05 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-04-24 15:22:05 +0800 |
commit | 3bc8ee1de171f0bd8e226542d75c842c5b2e7175 (patch) | |
tree | 408cea3b767dc5768ad3c08d6e547c876ce1175e /BackEnd/Timeline/SignalRHub | |
parent | d8adfa6b141c8e3a8f11592b831c574dee8602b9 (diff) | |
download | timeline-3bc8ee1de171f0bd8e226542d75c842c5b2e7175.tar.gz timeline-3bc8ee1de171f0bd8e226542d75c842c5b2e7175.tar.bz2 timeline-3bc8ee1de171f0bd8e226542d75c842c5b2e7175.zip |
...
Diffstat (limited to 'BackEnd/Timeline/SignalRHub')
-rw-r--r-- | BackEnd/Timeline/SignalRHub/ITimelineClient.cs | 5 | ||||
-rw-r--r-- | BackEnd/Timeline/SignalRHub/TimelineHub.cs | 38 |
2 files changed, 42 insertions, 1 deletions
diff --git a/BackEnd/Timeline/SignalRHub/ITimelineClient.cs b/BackEnd/Timeline/SignalRHub/ITimelineClient.cs index 0d1be093..675643aa 100644 --- a/BackEnd/Timeline/SignalRHub/ITimelineClient.cs +++ b/BackEnd/Timeline/SignalRHub/ITimelineClient.cs @@ -1,9 +1,12 @@ -using System.Threading.Tasks;
+using System;
+using System.Threading.Tasks;
namespace Timeline.SignalRHub
{
public interface ITimelineClient
{
+ [Obsolete("Use v2.")]
Task OnTimelinePostChanged(string timelineName);
+ Task OnTimelinePostChangedV2(string owner, string timeline);
}
}
diff --git a/BackEnd/Timeline/SignalRHub/TimelineHub.cs b/BackEnd/Timeline/SignalRHub/TimelineHub.cs index 0bfda84c..1925a992 100644 --- a/BackEnd/Timeline/SignalRHub/TimelineHub.cs +++ b/BackEnd/Timeline/SignalRHub/TimelineHub.cs @@ -20,11 +20,18 @@ namespace Timeline.SignalRHub _timelineService = timelineService;
}
+ [Obsolete("Use overload with owner.")]
public static string GenerateTimelinePostChangeListeningGroupName(string timelineName)
{
return $"timeline-post-change-{timelineName}";
+ } + + public static string GenerateTimelinePostChangeListeningGroupName(string owner, string timeline)
+ {
+ return $"v2-timeline-post-change-{owner}/{timeline}";
}
+ [Obsolete("Use v2.")]
public async Task SubscribeTimelinePostChange(string timelineName)
{
try
@@ -48,11 +55,42 @@ namespace Timeline.SignalRHub }
}
+ public async Task SubscribeTimelinePostChangeV2(string owner, string timeline)
+ {
+ try
+ {
+ var timelineId = await _timelineService.GetTimelineIdAsync(owner, timeline);
+ var user = Context.User;
+ if (!user.HasPermission(UserPermission.AllTimelineManagement) && !await _timelineService.HasReadPermissionAsync(timelineId, user.GetOptionalUserId()))
+ throw new HubException(Resource.MessageForbidden);
+
+ var group = GenerateTimelinePostChangeListeningGroupName(owner, timeline);
+ await Groups.AddToGroupAsync(Context.ConnectionId, group);
+ _logger.LogInformation(Resource.LogSubscribeTimelinePostChange, Context.ConnectionId, group);
+ }
+ catch (ArgumentException)
+ {
+ throw new HubException(Resource.MessageTimelineNameInvalid);
+ }
+ catch (EntityNotExistException)
+ {
+ throw new HubException(Resource.MessageTimelineNotExist);
+ }
+ }
+
+ [Obsolete("Use v2.")]
public async Task UnsubscribeTimelinePostChange(string timelineName)
{
var group = GenerateTimelinePostChangeListeningGroupName(timelineName);
await Groups.RemoveFromGroupAsync(Context.ConnectionId, group);
_logger.LogInformation(Resource.LogUnsubscribeTimelinePostChange, Context.ConnectionId, group);
+ } + + public async Task UnsubscribeTimelinePostChangeV2(string owner, string timeline)
+ {
+ var group = GenerateTimelinePostChangeListeningGroupName(owner, timeline);
+ await Groups.RemoveFromGroupAsync(Context.ConnectionId, group);
+ _logger.LogInformation(Resource.LogUnsubscribeTimelinePostChange, Context.ConnectionId, group);
}
}
}
|