示例#1
0
        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>());
        }
示例#2
0
        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);
            }
        }