public async Task <UserSubscription> UpdateUserSubscription(UserSubscription subscription) { var packet = new RequestPacket(nameof(IClientCalls.UpdateUserSubscription)); UserSubscription.AddToPacket(packet, subscription); var result = await _client.Connection.Request(packet); return(result.As <UserSubscription>()); }
public async Task <UserSubscription> AddUserSubscription(string name, string category) { var subscription = new UserSubscription { UserId = name, SubscriberUserId = _client.User.Id, Category = category }; var packet = new RequestPacket(nameof(IClientCalls.AddUserSubscription)); UserSubscription.AddToPacket(packet, subscription); var result = await _client.Connection.Request(packet); return(result.As <UserSubscription>()); }
private async void _dataProvider_UserSubscriptionUpdated(object sender, UserSubscriptionUpdatedEventArgs args) { try { var subscriberUsername = args.Subscription.SubscriberUserId; var subscription = args.Subscription; var userId = args.Subscription.UserId; var userConnection = _server.ConnectionProvider .GetConnections(userId) .Where(con => con.State == ConnectionState.Connected) .FirstOrDefault(); User user = null; if (userConnection != null) { user = userConnection.User; } else { user = new User(userId, null); } var subUpdatePacket = new RequestPacket(nameof(IServerCalls.UserSubscriptionUpdated)) { ["user"] = user, }; UserSubscription.AddToPacket(subUpdatePacket, subscription); if (subscription.UpdateType == UpdateType.Add || subscription.UpdateType == UpdateType.Update) { subUpdatePacket["userStatus"] = _dataProvider.GetUserStatus(userId); } try { await _server.Request(subUpdatePacket, subscriberUsername); } catch (ErrorResponseException ex) { Log.Warn(ex); } catch (Exception ex) { Signal.Exception(ex); } } catch (Exception ex) { Signal.Exception(ex); } }