Skip to content

Instantly share code, notes, and snippets.

@soulfly
Created March 17, 2015 15:45
Show Gist options
  • Save soulfly/e52b21261fe8c40f7d80 to your computer and use it in GitHub Desktop.
Save soulfly/e52b21261fe8c40f7d80 to your computer and use it in GitHub Desktop.
seemee17mar_update
1) ChatManager.m
-(void)chatDidNotSendMessage:(QBChatMessage *)message error:(NSError *)error {
[self lastMessageFailedWithMessage:message error:error];
}
-(void)lastMessageFailedWithMessage:(QBChatMessage*)message error:(NSError *)error {
[self.delegate lastMessageSendingFailedWithMessage:message error:error];
}
2) ChatManager.h
add next method to ChatManagerDelegate:
-(void)lastMessageSendingFailedWithMessage:(QBChatMessage*)message error:(NSError *)error;
3) ChatViewController.m
-(void)lastMessageSendingFailedWithMessage:(QBChatMessage *)message error:(NSError *)error {
// Search for exact message that was failed
// and update UI
//
NSString *sectionHeaderDateStr = arrayAllDays[[arrayAllDays count] - 1];
NSMutableArray *arrayMessages = localMessagesDictionary[sectionHeaderDateStr];
//
for(ChatMessage *chatMsg in arrayMessages){
if([chatMsg.remoteId isEqualToString:message.customParameters[@"MessageQueueID"]]){
chatMsg.hasFailed = [NSNumber numberWithBool:YES];
chatMsg.hasNotBeenSent = [NSNumber numberWithBool:NO];
[self.tableView reloadData];
break;
}
}
// Update entry in DB
//
NSString *remoteId = message.customParameters[@"MessageQueueID"];
ChatMessage *chatMessageFailedDBEntry = [[ChatManager sharedInstance] fetchThisObjectInLocalDatabaseByRemoteId:remoteId];
chatMessageFailedDBEntry.hasNotBeenSent = [NSNumber numberWithBool:NO];
chatMessageFailedDBEntry.hasFailed = [NSNumber numberWithBool:YES];
[[[ChatManager sharedInstance] chatMessageRepository] save:chatMessageFailedDBEntry];
}
4) ChatManager.m
-(id)fetchThisObjectInLocalDatabaseByRemoteId:(NSString *)remoteId {
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"ChatMessage"];
[request setPredicate:[NSPredicate predicateWithFormat:@"remoteId == %@", remoteId]];
[request setFetchLimit:1];
NSError *error;
NSArray *arrayObjects = [self.chatMessageRepository.context executeFetchRequest:request error:&error];
ChatMessage *message;
if (arrayObjects.count != 0){
message = arrayObjects[0];
}
return message;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment