Наследование: ExtensibleDataObject
Пример #1
0
        public static ChannelSummaryResponse ToChannelSummaryResponse(this Domain.Channel.Channel channel,
                                                                      bool isMuted,
                                                                      Domain.Message.Message lastReadMessage,
                                                                      MemberSummary creator,
                                                                      CloudStorageConfiguration configuration)
        {
            var channelListResponse = new ChannelSummaryResponse();

            if (channel != null)
            {
                channelListResponse.Id                  = channel.Id;
                channelListResponse.IsClosed            = channel.IsClosed;
                channelListResponse.Created             = channel.Created;
                channelListResponse.Updated             = channel.Updated;
                channelListResponse.Name                = channel.Name;
                channelListResponse.Description         = channel.Description;
                channelListResponse.WelcomeMessage      = channel.WelcomeMessage;
                channelListResponse.Type                = channel.Type;
                channelListResponse.IsMuted             = isMuted;
                channelListResponse.CreatorId           = channel.CreatorId ?? creator?.Id;
                channelListResponse.Creator             = channel.Creator?.ToMemberSummary(configuration) ?? creator;
                channelListResponse.CreatorSaasUserId   = channel.Creator?.SaasUserId ?? creator?.SaasUserId;
                channelListResponse.LastMessage         = channel.Messages?.FirstOrDefault()?.ToMessageResponse(lastReadMessage, configuration);
                channelListResponse.UnreadMessagesCount = lastReadMessage != null?channel.Messages?.Count(x => x.Created > lastReadMessage.Created) ?? 0 : channel.Messages?.Count ?? 0;
            }

            return(channelListResponse);
        }
Пример #2
0
        async Task IChannelNotificationHub.OnJoinChannel(MemberSummary member, ChannelSummaryResponse channel)
        {
            var clientIds = await GetChannelClientsAsync(new ChannelRequest(member.SaasUserId, channel.Id));

            // Tell the people in this room that you've joined
            await Clients.Clients(clientIds).SendAsync(HubEvents.MemberJoined, member, channel);
        }
Пример #3
0
        async Task IMessageNotificationHub.OnDeleteMessageAttachment(MemberSummary member, MessageResponse message)
        {
            var channel = await _channelService.GetChannelByIdAsync(new ChannelRequest(member.SaasUserId, message.ChannelId));

            var clientIds = await GetChannelClientsAsync(new ChannelRequest(member.SaasUserId, channel.Id));

            // Notify all clients for the uploaded message
            await Clients.Clients(clientIds).SendAsync(HubEvents.AttachmentDeleted, channel.Name);
        }
Пример #4
0
        async Task IMessageNotificationHub.OnDeleteMessage(MemberSummary member, MessageResponse message)
        {
            var channelSummary = await _channelService.GetChannelSummaryAsync(new ChannelRequest(member.SaasUserId, message.ChannelId));

            var clientIds = await GetChannelClientsAsync(new ChannelRequest(member.SaasUserId, channelSummary.Id));

            // Notify all clients for the deleted message
            await Clients.Clients(clientIds).SendAsync(HubEvents.MessageDeleted, message.Id, channelSummary);
        }
Пример #5
0
        async Task IMessageNotificationHub.OnAddMessage(MemberSummary member, MessageResponse message, string clientConnectionId)
        {
            var getChannelClientsExceptCallerRequest = new ChannelRequest(member.SaasUserId, message.ChannelId);

            var clientIds = await GetChannelClientsExceptCallerAsync(getChannelClientsExceptCallerRequest, clientConnectionId);

            // Notify all clients for the uploaded message
            await Clients.Clients(clientIds).SendAsync(HubEvents.MessageAdded, message);
        }
Пример #6
0
        async Task IChannelNotificationHub.OnLeaveChannel(MemberSummary member, ChannelSummaryResponse channel)
        {
            var clientIds = await GetChannelClientsAsync(new ChannelRequest(member.SaasUserId, channel.Id));

            var senderClients = await _memberService.GetMemberClientsAsync(member.Id);

            clientIds.AddRange(senderClients.Select(x => x.ClientConnectionId));

            // Tell the people in this room that you've leaved
            await Clients.Clients(clientIds).SendAsync(HubEvents.MemberLeft, member, channel?.Id);
        }
Пример #7
0
        async Task IChannelNotificationHub.OnAddChannel(MemberSummary member, ChannelSummaryResponse channel, string clientConnectionId)
        {
            var getClientsExceptCallerRequest = new ChannelRequest(member.SaasUserId, channel.Id)
            {
                ClientConnectionId = clientConnectionId
            };

            var clientIds = await GetChannelClientsExceptCallerAsync(getClientsExceptCallerRequest, clientConnectionId);

            // Tell the people in this room that you've joined
            await Clients.Clients(clientIds).SendAsync(HubEvents.ChannelCreated, channel);
        }
Пример #8
0
        public static MemberSummary ToMemberSummary(this Domain.Member.Member member, CloudStorageConfiguration configuration)
        {
            var summary = new MemberSummary();

            if (member != null)
            {
                summary.Id           = member.Id;
                summary.SaasUserId   = member.SaasUserId;
                summary.UserName     = member.Name;
                summary.Status       = member.Status;
                summary.Role         = member.Role;
                summary.IsAfk        = member.IsAfk;
                summary.Email        = member.Email;
                summary.LastActivity = member.LastActivity;
                summary.AvatarUrl    = member.PhotoName != null ? $"{configuration.ContentStorageHost}/{configuration.MemberAvatarsContainer}/{member.PhotoName}" : null;
            }
            return(summary);
        }