Ejemplo n.º 1
0
        public async Task <Task> RefreshThread()
        {
            return(Task.Run(async() =>
            {
                // 发送读取请求
                Send_ReadMessageJson readJson = new Send_ReadMessageJson("read", viewModel.GetUserService().GetCurrentUserName());
                await viewModel.SendMessageAsync(readJson);
                // 获得读取信息
                Receive_ReadJson receivedJson = await viewModel.ReadMessageAsync();

                if (receivedJson.jsonMessages == null)
                {
                    // 如果没有更新,则保持原状
                }
                else
                {
                    // 如果有更新
                    this.Invoke(async() =>
                    {
                        // 保存数据
                        await viewModel.SaveMessgaeAsync(receivedJson);
                        // 刷新
                        await RefreshCollectionAsync();
                        await RefreshMessageListAsync();
                    });
                }
            }));
        }
Ejemplo n.º 2
0
        public async Task SaveMessgaeAsync(Receive_ReadJson receivedJson)
        {
            // 将返回的信息提出,逐个保存
            if (receivedJson.jsonMessages != null)
            {
                foreach (var item in receivedJson.jsonMessages)
                {
                    Message message = new Message()
                    {
                        dateTime = _userService.FromUnixTime(item.time),
                        message  = item.message,
                        userName = item.from
                    };

                    List <string> member = new List <string>();
                    foreach (var friend in item.room)
                    {
                        if (friend != _userService.GetCurrentUserName())
                        {
                            member.Add(friend);
                        }
                    }
                    string folderName = _userService.GetDisplayName(member);

                    // 保存信息,如果不存在该会话,添加Detail.txt
                    bool result = await _userService.AddMessageAsync(_userService.GetCurrentUserName(), folderName, message);

                    if (!result)
                    {
                        await _userService.AddDetailAsync(_userService.GetCurrentUserName(), folderName, member);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public async Task <Receive_ReadJson> ReadMessageAsync()
        {
            // 读取信息,直到有响应/超过一段时间后再结束
            if (!_webService.GetConnectStatus())
            {
                await _webService.BuiildConnectionAsync();
            }
            string   data_received = _webService.Get_RawData();
            DateTime beginTime     = DateTime.Now;

            while (data_received == "" && ((DateTime.Now - beginTime).TotalSeconds < 10))
            {
                await _webService.ReceiveAsync();

                data_received = _webService.Get_RawData();
            }

            // 解析数据,返回
            Receive_ReadJson receive_ReadJson = new Receive_ReadJson()
            {
                jsonMessages = new List <JsonMessage>()
            };
            JObject jObject = JObject.Parse(data_received);

            receive_ReadJson.state = (bool)jObject["state"];
            JArray jarray = JArray.Parse(jObject["messages"].ToString());

            for (int i = 0; i < jarray.Count; i++)
            {
                JObject     messageObject = JObject.Parse(jarray[i].ToString());
                JsonMessage message       = new JsonMessage()
                {
                    room = new List <string>()
                };
                message.from    = (string)messageObject["from0"];
                message.message = (string)messageObject["message"];
                message.time    = (string)messageObject["time"];
                JArray nameArray = JArray.Parse(messageObject["room"].ToString());
                for (int j = 0; j < nameArray.Count; j++)
                {
                    message.room.Add(nameArray[j].ToString());
                }
                receive_ReadJson.jsonMessages.Add(message);
            }
            return(receive_ReadJson);
        }