Example #1
0
        public ChatSetting(Models.ChatSetting chatSetting, string requesterAddress = null, IEnumerable <Models.ChatUser> chatUsers = null, bool
                           includeUsers = true)
        {
            Id      = chatSetting.ChatId;
            Address = chatSetting.Address;

            Name        = chatSetting.Name;
            Description = chatSetting.Description;
            Image       = chatSetting.PictureUrl;

            PublicKey  = chatSetting.PublicKey;
            PrivateKey = chatSetting.PrivateKey;

            IsPublic = chatSetting.IsPublic;

            if (chatUsers != null)
            {
                var chatUserArray = chatUsers as Models.ChatUser[] ?? chatUsers.ToArray();

                if (!IsPublic && requesterAddress != null)
                {
                    PrivateKey = chatUserArray.FirstOrDefault(cu => cu.Address == requesterAddress)?.PrivateKey;
                }

                if (includeUsers)
                {
                    Users = new List <User>();
                    foreach (var chatUser in chatUserArray)
                    {
                        Users.Add(new Models.View.ChatUser(chatUser));
                    }
                }
            }
        }
Example #2
0
        private Chat CreateChat(IEnumerable <ChatUserSetting> chatUserSettings, bool isGroup, long userJoinedAt, ChatGroupInfo?chatGroupInfo)
        {
            if (isGroup && !chatGroupInfo.HasValue)
            {
                throw new ArgumentNullException(nameof(chatGroupInfo));
            }

            var time = DateTimeOffset.FromUnixTimeMilliseconds(userJoinedAt).DateTime;

            var chat = new Chat()
            {
                IsGroup   = isGroup,
                CreatedAt = time
            };

            Chats.Add(chat);

            Models.ChatSetting chatSetting = null;

            if (isGroup)
            {
                chatSetting = new Models.ChatSetting()
                {
                    Chat        = chat,
                    Address     = chatGroupInfo.Value.Address,
                    Name        = chatGroupInfo.Value.Name,
                    Description = chatGroupInfo.Value.Description,
                    PictureUrl  = chatGroupInfo.Value.Image,
                    PublicKey   = chatGroupInfo.Value.PublicKey,
                    PrivateKey  = chatGroupInfo.Value.PrivateKey,
                    IsPublic    = chatGroupInfo.Value.IsPublic,
                    CreatedAt   = time,
                };

                ChatSettings.Add(chatSetting);
            }

            foreach (var userSetting in chatUserSettings)
            {
                CreateChatUser(chat, userSetting, userJoinedAt);
            }

            chat.Setting = chatSetting;

            return(chat);
        }