public void Service_MessageGetNewCompleted(object sender, MessageGetNewCompletedEventArgs e) { LOLMessageClient service = (LOLMessageClient)sender; service.MessageGetNewCompleted -= Service_MessageGetNewCompleted; if (null == e.Error) { Message[] result = e.Result.ToArray(); #if(DEBUG) System.Diagnostics.Debug.WriteLine("Received {0} new messages!", result.Length); #endif List<Message> msgList = new List<Message>(); Queue<Guid> userQ = new Queue<Guid>(); foreach (Message eachMessage in result) { if (eachMessage.Errors.Count > 0) { #if(DEBUG) System.Diagnostics.Debug.WriteLine("Error retrieving new messages: {0}", StringUtils.CreateErrorMessageFromMessageGeneralErrors(eachMessage.Errors)); #endif } else { msgList.Add(eachMessage); if (!dbm.CheckUserExists(eachMessage.FromAccountID.ToString())) { userQ.Enqueue(eachMessage.FromAccountID); } } } // Insert the messages to the database List<MessageDB> msgListForDB = new List<MessageDB>(); msgList.ForEach(s => msgListForDB.Add(MessageDB.ConvertFromMessage(s))); dbm.InsertOrUpdateMessages(msgListForDB); // Trigger the event only if the app is active. #if DEBUG System.Diagnostics.Debug.WriteLine("IsAppActive = {0}, msgList.Count = {1}", AndroidData.IsAppActive, msgList.Count); #endif if (AndroidData.IsAppActive == true && msgList.Count > 0) { if (null != this.ReceivedMessages) { this.ReceivedMessages(this, new IncomingMessageEventArgs(msgList)); }//end if }//end if if (userQ.Count > 0) { LOLConnectClient clientService = new LOLConnectClient(LOLConstants.DefaultHttpBinding, LOLConstants.LOLConnectEndpoint); clientService.UserGetSpecificCompleted += Service_UserGetSpecificCompleted; clientService.UserGetSpecificAsync(AndroidData.CurrentUser.AccountID, userQ.Peek(), new Guid(AndroidData.ServiceAuthToken), userQ); } else this.isMsgInProgress = false; } else { this.isMsgInProgress = false; #if(DEBUG) System.Diagnostics.Debug.WriteLine("Exception receiving message! {0}--{1}", e.Error.Message, e.Error.StackTrace); #endif }//end if else }
private void Service_MessageGetNewCompleted(object sender, MessageGetNewCompletedEventArgs e) { LOLMessageClient service = (LOLMessageClient)sender; service.MessageGetNewCompleted -= Service_MessageGetNewCompleted; if (null == e.Error) { LOLMessageDelivery.Message[] result = e.Result.ToArray(); List<MessageDB> msgList = new List<MessageDB>(); UserDB contactUser = null; foreach (LOLMessageDelivery.Message eachMessage in result) { if (eachMessage.Errors.Count > 0) { #if DEBUG System.Diagnostics.Debug.WriteLine("Error retrieving message: {0}", StringUtils.CreateErrorMessageFromMessageGeneralErrors(eachMessage.Errors)); #endif } else { #if DEBUG System.Diagnostics.Debug.WriteLine("**Message id received: {0}", eachMessage.MessageID); #endif MessageDB msgDB = MessageDB.ConvertFromMessage(eachMessage); msgList.Add(msgDB); #if DEBUG System.Diagnostics.Debug.WriteLine("Message in conversation received! {0}", msgDB); #endif contactUser = msgDB.FromAccountID == AndroidData.CurrentUser.AccountID ? UserDB.ConvertFromUser(AndroidData.CurrentUser) : dbm.GetUserWithAccountID(msgDB.FromAccountGuid); this.MessageItems [eachMessage.MessageID] = new Messages.MessageInfo(msgDB, contactUser); }//end if else }//end foreach if (msgList.Count > 0) dbm.InsertOrUpdateMessages(msgList); if (!killed) grabAndDisplayLastTen(); } }