@@ -98,22 +98,23 @@ - (void)viewDidLoad
9898 [self .shareMenuView reloadData ];
9999
100100 // 创建一个对话
101- self.loadingMoreMessage = YES ;
101+ self.loadingMoreMessage = YES ;
102102 WEAKSELF
103103 [[LeanChatManager manager ] createConversationsWithClientIDs: self .clientIDs conversationType: self .conversationType completion: ^(BOOL succeeded, AVIMConversation *createConversation) {
104104 if (succeeded) {
105105 weakSelf.conversation = createConversation;
106- [weakSelf.conversation queryMessagesWithLimit: kOnePageSize callback: ^(NSArray *typedMessages , NSError *error) {
106+ [weakSelf.conversation queryMessagesWithLimit: kOnePageSize callback: ^(NSArray *queryMessages , NSError *error) {
107107 dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^{
108- NSMutableArray * messages=[NSMutableArray array ];
109- for (AVIMTypedMessage* typedMessage in typedMessages){
108+ NSMutableArray *typedMessages = [self filterTypedMessage: queryMessages];
109+ NSMutableArray *messages = [NSMutableArray array ];
110+ for (AVIMTypedMessage *typedMessage in typedMessages){
110111 XHMessage *message = [weakSelf displayMessageByAVIMTypedMessage: typedMessage];
111112 if (message) {
112113 [messages addObject: message];
113114 }
114115 }
115116 dispatch_async (dispatch_get_main_queue (), ^{
116- weakSelf.messages = messages;
117+ weakSelf.messages = messages;
117118 [weakSelf.messageTableView reloadData ];
118119 [weakSelf scrollToBottomAnimated: NO ];
119120 // 延迟,以避免上面的滚动触发上拉加载消息
@@ -162,8 +163,18 @@ - (void)dealloc {
162163
163164#pragma mark - LearnChat Message Handle Method
164165
166+ - (NSMutableArray *)filterTypedMessage : (NSArray *)messages {
167+ NSMutableArray *typedMessages = [NSMutableArray array ];
168+ for (AVIMMessage *message in messages) {
169+ if ([message isKindOfClass: [AVIMTypedMessage class ]]) {
170+ [typedMessages addObject: message];
171+ }
172+ }
173+ return typedMessages;
174+ }
175+
165176- (NSString *)fetchDataOfMessageFile : (AVFile *)file fileName : (NSString *)fileName error : (NSError **)error {
166- NSString * path= [[NSSearchPathForDirectoriesInDomains (NSDocumentationDirectory, NSUserDomainMask, YES ) firstObject ] stringByAppendingString: fileName];
177+ NSString * path = [[NSSearchPathForDirectoriesInDomains (NSDocumentationDirectory, NSUserDomainMask, YES ) firstObject ] stringByAppendingString: fileName];
167178 NSData *data = [file getData: error];
168179 if (*error == nil ) {
169180 [data writeToFile: path atomically: YES ];
@@ -174,8 +185,8 @@ - (NSString *)fetchDataOfMessageFile:(AVFile *)file fileName:(NSString*)fileName
174185- (XHMessage *)displayMessageByAVIMTypedMessage : (AVIMTypedMessage*)typedMessage {
175186 AVIMMessageMediaType msgType = typedMessage.mediaType ;
176187 XHMessage *message;
177- NSDate *timestamp= [NSDate dateWithTimeIntervalSince1970: typedMessage.sendTimestamp/1000 ];
178- NSString *displayName= [self displayNameByClientId: typedMessage.clientId];
188+ NSDate *timestamp = [NSDate dateWithTimeIntervalSince1970: typedMessage.sendTimestamp/1000 ];
189+ NSString *displayName = [self displayNameByClientId: typedMessage.clientId];
179190 switch (msgType) {
180191 case kAVIMMessageMediaTypeText : {
181192 AVIMTextMessage *receiveTextMessage = (AVIMTextMessage *)typedMessage;
@@ -187,25 +198,25 @@ - (XHMessage *)displayMessageByAVIMTypedMessage:(AVIMTypedMessage*)typedMessage
187198 message = [[XHMessage alloc ] initWithPhoto: nil thumbnailUrl: imageMessage.file.url originPhotoUrl: nil sender: displayName timestamp: timestamp];
188199 break ;
189200 }
190- case kAVIMMessageMediaTypeAudio :{
191- NSError * error;
192- NSString * path= [self fetchDataOfMessageFile: typedMessage.file fileName: typedMessage.messageId error: &error];
193- AVIMAudioMessage* audioMessage= (AVIMAudioMessage*)typedMessage;
201+ case kAVIMMessageMediaTypeAudio : {
202+ NSError * error;
203+ NSString * path = [self fetchDataOfMessageFile: typedMessage.file fileName: typedMessage.messageId error: &error];
204+ AVIMAudioMessage* audioMessage = (AVIMAudioMessage *)typedMessage;
194205 message = [[XHMessage alloc ] initWithVoicePath: path voiceUrl: nil voiceDuration: [NSString stringWithFormat: @" %.1f " ,audioMessage.duration] sender: displayName timestamp: timestamp];
195206 break ;
196207 }
197- case kAVIMMessageMediaTypeEmotion :{
198- AVFile *file= [AVFile fileWithURL: typedMessage.text];
208+ case kAVIMMessageMediaTypeEmotion : {
209+ AVFile *file = [AVFile fileWithURL: typedMessage.text];
199210 NSError *error;
200- NSString *path= [self fetchDataOfMessageFile: file fileName: typedMessage.messageId error: &error];
211+ NSString *path = [self fetchDataOfMessageFile: file fileName: typedMessage.messageId error: &error];
201212 message = [[XHMessage alloc ] initWithEmotionPath: path sender: displayName timestamp: timestamp];
202213 break ;
203214 }
204- case kAVIMMessageMediaTypeVideo :{
215+ case kAVIMMessageMediaTypeVideo : {
205216 AVIMVideoMessage *receiveVideoMessage=(AVIMVideoMessage*)typedMessage;
206- NSString *format= receiveVideoMessage.format ;
217+ NSString *format = receiveVideoMessage.format ;
207218 NSError *error;
208- NSString *path= [self fetchDataOfMessageFile: typedMessage.file fileName: [NSString stringWithFormat: @" %@ .%@ " ,typedMessage.messageId,format] error: &error];
219+ NSString *path = [self fetchDataOfMessageFile: typedMessage.file fileName: [NSString stringWithFormat: @" %@ .%@ " ,typedMessage.messageId,format] error: &error];
209220 message = [[XHMessage alloc ] initWithVideoConverPhoto: [XHMessageVideoConverPhotoFactory videoConverPhotoWithVideoPath: path] videoPath: path videoUrl: nil sender: displayName timestamp: timestamp];
210221 break ;
211222 }
@@ -224,7 +235,7 @@ - (XHMessage *)displayMessageByAVIMTypedMessage:(AVIMTypedMessage*)typedMessage
224235- (void )insertAVIMTypedMessage : (AVIMTypedMessage *)typedMessage {
225236 WEAKSELF
226237 dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^{
227- XHMessage* message=[self displayMessageByAVIMTypedMessage: typedMessage];
238+ XHMessage * message=[self displayMessageByAVIMTypedMessage: typedMessage];
228239 [weakSelf addMessage: message];
229240 });
230241}
@@ -360,12 +371,13 @@ - (void)loadMoreMessagesScrollTotop {
360371 } else {
361372 if (!self.loadingMoreMessage ) {
362373 self.loadingMoreMessage = YES ;
363- XHMessage* message= self.messages [0 ];
374+ XHMessage * message = self.messages [0 ];
364375 WEAKSELF
365- [self .conversation queryMessagesBeforeId: nil timestamp: [message.timestamp timeIntervalSince1970 ]*1000 limit: kOnePageSize callback: ^(NSArray *typedMessages , NSError *error) {
376+ [self .conversation queryMessagesBeforeId: nil timestamp: [message.timestamp timeIntervalSince1970 ]*1000 limit: kOnePageSize callback: ^(NSArray *queryMessages , NSError *error) {
366377 dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^{
367- NSMutableArray * messages=[NSMutableArray array ];
368- for (AVIMTypedMessage* typedMessage in typedMessages){
378+ NSMutableArray *messages=[NSMutableArray array ];
379+ NSMutableArray *typedMessages = [self filterTypedMessage: queryMessages];
380+ for (AVIMTypedMessage *typedMessage in typedMessages){
369381 if (weakSelf) {
370382 XHMessage *message = [weakSelf displayMessageByAVIMTypedMessage: typedMessage];
371383 if (message) {
@@ -430,7 +442,7 @@ - (void)didSendPhoto:(UIImage *)photo fromSender:(NSString *)sender onDate:(NSDa
430442 * @param date 发送时间
431443 */
432444- (void )didSendVideoConverPhoto : (UIImage *)videoConverPhoto videoPath : (NSString *)videoPath fromSender : (NSString *)sender onDate : (NSDate *)date {
433- AVIMVideoMessage* sendVideoMessage= [AVIMVideoMessage messageWithText: nil attachedFilePath: videoPath attributes: nil ];
445+ AVIMVideoMessage* sendVideoMessage = [AVIMVideoMessage messageWithText: nil attachedFilePath: videoPath attributes: nil ];
434446 WEAKSELF
435447 [self .conversation sendMessage: sendVideoMessage callback: ^(BOOL succeeded, NSError *error) {
436448 if ([weakSelf filterError: error]){
@@ -449,7 +461,7 @@ - (void)didSendVideoConverPhoto:(UIImage *)videoConverPhoto videoPath:(NSString
449461 * @param date 发送时间
450462 */
451463- (void )didSendVoice : (NSString *)voicePath voiceDuration : (NSString *)voiceDuration fromSender : (NSString *)sender onDate : (NSDate *)date {
452- AVIMAudioMessage* sendAudioMessage= [AVIMAudioMessage messageWithText: nil attachedFilePath: voicePath attributes: nil ];
464+ AVIMAudioMessage* sendAudioMessage = [AVIMAudioMessage messageWithText: nil attachedFilePath: voicePath attributes: nil ];
453465 WEAKSELF
454466 [self .conversation sendMessage: sendAudioMessage callback: ^(BOOL succeeded, NSError *error) {
455467 DLog (@" succeed: %d , error:%@ " ,succeeded,error);
@@ -503,15 +515,15 @@ - (void)didSendGeoLocationsPhoto:(UIImage *)geoLocationsPhoto geolocations:(NSSt
503515 */
504516
505517- (BOOL )shouldDisplayTimestampForRowAtIndexPath : (NSIndexPath *)indexPath {
506- if (indexPath.row == 0 || indexPath.row >= self.messages .count ){
518+ if (indexPath.row == 0 || indexPath.row >= self.messages .count ) {
507519 return YES ;
508- }else {
509- XHMessage* message= [self .messages objectAtIndex: indexPath.row];
510- XHMessage* previousMessage= [self .messages objectAtIndex: indexPath.row-1 ];
511- NSInteger interval= [message.timestamp timeIntervalSinceDate: previousMessage.timestamp];
512- if (interval> 60 * 3 ) {
520+ } else {
521+ XHMessage * message = [self .messages objectAtIndex: indexPath.row];
522+ XHMessage * previousMessage = [self .messages objectAtIndex: indexPath.row-1 ];
523+ NSInteger interval = [message.timestamp timeIntervalSinceDate: previousMessage.timestamp];
524+ if (interval > 60 * 3 ) {
513525 return YES ;
514- }else {
526+ } else {
515527 return NO ;
516528 }
517529 }
0 commit comments