Skip to content

Commit

Permalink
filterTypedMessage & fix style
Browse files Browse the repository at this point in the history
  • Loading branch information
lzwjava committed Sep 7, 2015
1 parent 7e38ba0 commit a39a374
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -98,22 +98,23 @@ - (void)viewDidLoad
[self.shareMenuView reloadData];

// 创建一个对话
self.loadingMoreMessage=YES;
self.loadingMoreMessage = YES;
WEAKSELF
[[LeanChatManager manager] createConversationsWithClientIDs:self.clientIDs conversationType:self.conversationType completion:^(BOOL succeeded, AVIMConversation *createConversation) {
if (succeeded) {
weakSelf.conversation = createConversation;
[weakSelf.conversation queryMessagesWithLimit:kOnePageSize callback:^(NSArray *typedMessages, NSError *error) {
[weakSelf.conversation queryMessagesWithLimit:kOnePageSize callback:^(NSArray *queryMessages, NSError *error) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSMutableArray* messages=[NSMutableArray array];
for(AVIMTypedMessage* typedMessage in typedMessages){
NSMutableArray *typedMessages = [self filterTypedMessage:queryMessages];
NSMutableArray *messages = [NSMutableArray array];
for(AVIMTypedMessage *typedMessage in typedMessages){
XHMessage *message = [weakSelf displayMessageByAVIMTypedMessage:typedMessage];
if (message) {
[messages addObject:message];
}
}
dispatch_async(dispatch_get_main_queue(), ^{
weakSelf.messages=messages;
weakSelf.messages = messages;
[weakSelf.messageTableView reloadData];
[weakSelf scrollToBottomAnimated:NO];
//延迟,以避免上面的滚动触发上拉加载消息
Expand Down Expand Up @@ -162,8 +163,18 @@ - (void)dealloc {

#pragma mark - LearnChat Message Handle Method

- (NSMutableArray *)filterTypedMessage:(NSArray *)messages {
NSMutableArray *typedMessages = [NSMutableArray array];
for (AVIMMessage *message in messages) {
if ([message isKindOfClass:[AVIMTypedMessage class]]) {
[typedMessages addObject:message];
}
}
return typedMessages;
}

- (NSString *)fetchDataOfMessageFile:(AVFile *)file fileName:(NSString*)fileName error:(NSError**)error{
NSString* path=[[NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingString:fileName];
NSString* path = [[NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingString:fileName];
NSData *data = [file getData:error];
if(*error == nil) {
[data writeToFile:path atomically:YES];
Expand All @@ -174,8 +185,8 @@ - (NSString *)fetchDataOfMessageFile:(AVFile *)file fileName:(NSString*)fileName
- (XHMessage *)displayMessageByAVIMTypedMessage:(AVIMTypedMessage*)typedMessage {
AVIMMessageMediaType msgType = typedMessage.mediaType;
XHMessage *message;
NSDate *timestamp=[NSDate dateWithTimeIntervalSince1970:typedMessage.sendTimestamp/1000];
NSString *displayName=[self displayNameByClientId:typedMessage.clientId];
NSDate *timestamp = [NSDate dateWithTimeIntervalSince1970:typedMessage.sendTimestamp/1000];
NSString *displayName = [self displayNameByClientId:typedMessage.clientId];
switch (msgType) {
case kAVIMMessageMediaTypeText: {
AVIMTextMessage *receiveTextMessage = (AVIMTextMessage *)typedMessage;
Expand All @@ -187,25 +198,25 @@ - (XHMessage *)displayMessageByAVIMTypedMessage:(AVIMTypedMessage*)typedMessage
message = [[XHMessage alloc] initWithPhoto:nil thumbnailUrl:imageMessage.file.url originPhotoUrl:nil sender:displayName timestamp:timestamp];
break;
}
case kAVIMMessageMediaTypeAudio:{
NSError* error;
NSString* path=[self fetchDataOfMessageFile:typedMessage.file fileName:typedMessage.messageId error:&error];
AVIMAudioMessage* audioMessage=(AVIMAudioMessage*)typedMessage;
case kAVIMMessageMediaTypeAudio: {
NSError *error;
NSString *path = [self fetchDataOfMessageFile:typedMessage.file fileName:typedMessage.messageId error:&error];
AVIMAudioMessage* audioMessage = (AVIMAudioMessage *)typedMessage;
message = [[XHMessage alloc] initWithVoicePath:path voiceUrl:nil voiceDuration:[NSString stringWithFormat:@"%.1f",audioMessage.duration] sender:displayName timestamp:timestamp];
break;
}
case kAVIMMessageMediaTypeEmotion:{
AVFile *file=[AVFile fileWithURL:typedMessage.text];
case kAVIMMessageMediaTypeEmotion: {
AVFile *file = [AVFile fileWithURL:typedMessage.text];
NSError *error;
NSString *path=[self fetchDataOfMessageFile:file fileName:typedMessage.messageId error:&error];
NSString *path = [self fetchDataOfMessageFile:file fileName:typedMessage.messageId error:&error];
message = [[XHMessage alloc] initWithEmotionPath:path sender:displayName timestamp:timestamp];
break;
}
case kAVIMMessageMediaTypeVideo:{
case kAVIMMessageMediaTypeVideo: {
AVIMVideoMessage *receiveVideoMessage=(AVIMVideoMessage*)typedMessage;
NSString *format=receiveVideoMessage.format;
NSString *format = receiveVideoMessage.format;
NSError *error;
NSString *path=[self fetchDataOfMessageFile:typedMessage.file fileName:[NSString stringWithFormat:@"%@.%@",typedMessage.messageId,format] error:&error];
NSString *path = [self fetchDataOfMessageFile:typedMessage.file fileName:[NSString stringWithFormat:@"%@.%@",typedMessage.messageId,format] error:&error];
message = [[XHMessage alloc] initWithVideoConverPhoto:[XHMessageVideoConverPhotoFactory videoConverPhotoWithVideoPath:path] videoPath:path videoUrl:nil sender:displayName timestamp:timestamp];
break;
}
Expand All @@ -224,7 +235,7 @@ - (XHMessage *)displayMessageByAVIMTypedMessage:(AVIMTypedMessage*)typedMessage
- (void)insertAVIMTypedMessage:(AVIMTypedMessage *)typedMessage {
WEAKSELF
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
XHMessage* message=[self displayMessageByAVIMTypedMessage:typedMessage];
XHMessage *message=[self displayMessageByAVIMTypedMessage:typedMessage];
[weakSelf addMessage:message];
});
}
Expand Down Expand Up @@ -360,12 +371,13 @@ - (void)loadMoreMessagesScrollTotop {
} else {
if (!self.loadingMoreMessage) {
self.loadingMoreMessage = YES;
XHMessage* message=self.messages[0];
XHMessage *message = self.messages[0];
WEAKSELF
[self.conversation queryMessagesBeforeId:nil timestamp:[message.timestamp timeIntervalSince1970]*1000 limit:kOnePageSize callback:^(NSArray *typedMessages, NSError *error) {
[self.conversation queryMessagesBeforeId:nil timestamp:[message.timestamp timeIntervalSince1970]*1000 limit:kOnePageSize callback:^(NSArray *queryMessages, NSError *error) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSMutableArray* messages=[NSMutableArray array];
for(AVIMTypedMessage* typedMessage in typedMessages){
NSMutableArray *messages=[NSMutableArray array];
NSMutableArray *typedMessages = [self filterTypedMessage:queryMessages];
for(AVIMTypedMessage *typedMessage in typedMessages){
if (weakSelf) {
XHMessage *message = [weakSelf displayMessageByAVIMTypedMessage:typedMessage];
if (message) {
Expand Down Expand Up @@ -430,7 +442,7 @@ - (void)didSendPhoto:(UIImage *)photo fromSender:(NSString *)sender onDate:(NSDa
* @param date 发送时间
*/
- (void)didSendVideoConverPhoto:(UIImage *)videoConverPhoto videoPath:(NSString *)videoPath fromSender:(NSString *)sender onDate:(NSDate *)date {
AVIMVideoMessage* sendVideoMessage=[AVIMVideoMessage messageWithText:nil attachedFilePath:videoPath attributes:nil];
AVIMVideoMessage* sendVideoMessage = [AVIMVideoMessage messageWithText:nil attachedFilePath:videoPath attributes:nil];
WEAKSELF
[self.conversation sendMessage:sendVideoMessage callback:^(BOOL succeeded, NSError *error) {
if([weakSelf filterError:error]){
Expand All @@ -449,7 +461,7 @@ - (void)didSendVideoConverPhoto:(UIImage *)videoConverPhoto videoPath:(NSString
* @param date 发送时间
*/
- (void)didSendVoice:(NSString *)voicePath voiceDuration:(NSString *)voiceDuration fromSender:(NSString *)sender onDate:(NSDate *)date {
AVIMAudioMessage* sendAudioMessage=[AVIMAudioMessage messageWithText:nil attachedFilePath:voicePath attributes:nil];
AVIMAudioMessage* sendAudioMessage = [AVIMAudioMessage messageWithText:nil attachedFilePath:voicePath attributes:nil];
WEAKSELF
[self.conversation sendMessage:sendAudioMessage callback:^(BOOL succeeded, NSError *error) {
DLog(@"succeed: %d, error:%@ ",succeeded,error);
Expand Down Expand Up @@ -503,15 +515,15 @@ - (void)didSendGeoLocationsPhoto:(UIImage *)geoLocationsPhoto geolocations:(NSSt
*/

- (BOOL)shouldDisplayTimestampForRowAtIndexPath:(NSIndexPath *)indexPath {
if(indexPath.row==0 || indexPath.row>=self.messages.count){
if(indexPath.row == 0 || indexPath.row >= self.messages.count) {
return YES;
}else{
XHMessage* message=[self.messages objectAtIndex:indexPath.row];
XHMessage* previousMessage=[self.messages objectAtIndex:indexPath.row-1];
NSInteger interval=[message.timestamp timeIntervalSinceDate:previousMessage.timestamp];
if(interval>60*3){
} else {
XHMessage *message = [self.messages objectAtIndex:indexPath.row];
XHMessage *previousMessage = [self.messages objectAtIndex:indexPath.row-1];
NSInteger interval = [message.timestamp timeIntervalSinceDate:previousMessage.timestamp];
if (interval > 60 * 3) {
return YES;
}else{
} else {
return NO;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -192,8 +192,6 @@
F7B9E7FB1A4D5E7B0072F81B /* FLAnimatedImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FLAnimatedImageView.m; sourceTree = "<group>"; };
F7B9E7FD1A4D5E7B0072F81B /* LKBadgeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LKBadgeView.h; sourceTree = "<group>"; };
F7B9E7FE1A4D5E7B0072F81B /* LKBadgeView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LKBadgeView.m; sourceTree = "<group>"; };
F7B9E8001A4D5E7B0072F81B /* NSMutableAttributedString+Helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableAttributedString+Helper.h"; sourceTree = "<group>"; };
F7B9E8011A4D5E7B0072F81B /* NSMutableAttributedString+Helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableAttributedString+Helper.m"; sourceTree = "<group>"; };
F7B9E8021A4D5E7B0072F81B /* SECompatibility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SECompatibility.h; sourceTree = "<group>"; };
F7B9E8031A4D5E7B0072F81B /* SECompatibility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SECompatibility.m; sourceTree = "<group>"; };
F7B9E8041A4D5E7B0072F81B /* SEConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SEConstants.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -655,8 +653,6 @@
F7B9E7FF1A4D5E7B0072F81B /* SECoreTextView */ = {
isa = PBXGroup;
children = (
F7B9E8001A4D5E7B0072F81B /* NSMutableAttributedString+Helper.h */,
F7B9E8011A4D5E7B0072F81B /* NSMutableAttributedString+Helper.m */,
F7B9E8021A4D5E7B0072F81B /* SECompatibility.h */,
F7B9E8031A4D5E7B0072F81B /* SECompatibility.m */,
F7B9E8041A4D5E7B0072F81B /* SEConstants.h */,
Expand Down

0 comments on commit a39a374

Please sign in to comment.