| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- /************************************************************
- * * Hyphenate CONFIDENTIAL
- * __________________
- * Copyright (C) 2016 Hyphenate Inc. All rights reserved.
- *
- * NOTICE: All information contained herein is, and remains
- * the property of Hyphenate Inc.
- * Dissemination of this information or reproduction of this material
- * is strictly forbidden unless prior written permission is obtained
- * from Hyphenate Inc.
- */
- #import "EaseMessageModel.h"
- #import "EaseEmotionEscape.h"
- #import "EaseConvertToCommonEmoticonsHelper.h"
- @implementation EaseMessageModel
- - (instancetype)initWithMessage:(EMMessage *)message
- {
- self = [super init];
- if (self) {
- _cellHeight = -1;
- _message = message;
- _firstMessageBody = message.body;
- _isMediaPlaying = NO;
-
- _nickname = message.from;
- _isSender = message.direction == EMMessageDirectionSend ? YES : NO;
-
- switch (_firstMessageBody.type) {
- case EMMessageBodyTypeText:
- {
- EMTextMessageBody *textBody = (EMTextMessageBody *)_firstMessageBody;
- NSString *didReceiveText = [EaseConvertToCommonEmoticonsHelper convertToSystemEmoticons:textBody.text];
- self.text = didReceiveText;
- }
- break;
- case EMMessageBodyTypeImage:
- {
- EMImageMessageBody *imgMessageBody = (EMImageMessageBody *)_firstMessageBody;
- NSData *imageData = [NSData dataWithContentsOfFile:imgMessageBody.localPath];
- if (imageData.length) {
- self.image = [UIImage imageWithData:imageData];
- }
-
- if ([imgMessageBody.thumbnailLocalPath length] > 0) {
- self.thumbnailImage = [UIImage imageWithContentsOfFile:imgMessageBody.thumbnailLocalPath];
- }
- else{
- CGSize size = self.image.size;
- self.thumbnailImage = size.width * size.height > 200 * 200 ? [self scaleImage:self.image toScale:sqrt((200 * 200) / (size.width * size.height))] : self.image;
- }
-
- self.thumbnailImageSize = self.thumbnailImage.size;
- self.imageSize = imgMessageBody.size;
- if (!_isSender) {
- self.fileURLPath = imgMessageBody.remotePath;
- }
- }
- break;
- case EMMessageBodyTypeLocation:
- {
- EMLocationMessageBody *locationBody = (EMLocationMessageBody *)_firstMessageBody;
- self.address = locationBody.address;
- self.latitude = locationBody.latitude;
- self.longitude = locationBody.longitude;
- }
- break;
- case EMMessageBodyTypeVoice:
- {
- EMVoiceMessageBody *voiceBody = (EMVoiceMessageBody *)_firstMessageBody;
- self.mediaDuration = voiceBody.duration;
- self.isMediaPlayed = NO;
- if (message.ext) {
- self.isMediaPlayed = [[message.ext objectForKey:@"isPlayed"] boolValue];
- }
-
- // audio file path
- self.fileURLPath = voiceBody.remotePath;
- }
- break;
- case EMMessageBodyTypeVideo:
- {
- EMVideoMessageBody *videoBody = (EMVideoMessageBody *)message.body;
- self.thumbnailImageSize = videoBody.thumbnailSize;
- if ([videoBody.thumbnailLocalPath length] > 0) {
- NSData *thumbnailImageData = [NSData dataWithContentsOfFile:videoBody.thumbnailLocalPath];
- if (thumbnailImageData.length) {
- self.thumbnailImage = [UIImage imageWithData:thumbnailImageData];
- }
- self.image = self.thumbnailImage;
- }
-
- // video file path
- self.fileURLPath = videoBody.remotePath;
- }
- break;
- case EMMessageBodyTypeFile:
- {
- EMFileMessageBody *fileMessageBody = (EMFileMessageBody *)_firstMessageBody;
- self.fileIconName = @"EaseUIResource.bundle/chat_item_file";
- self.fileName = fileMessageBody.displayName;
- self.fileSize = fileMessageBody.fileLength;
-
- if (self.fileSize < 1024) {
- self.fileSizeDes = [NSString stringWithFormat:@"%fB", self.fileSize];
- }
- else if(self.fileSize < 1024 * 1024){
- self.fileSizeDes = [NSString stringWithFormat:@"%.2fkB", self.fileSize / 1024];
- }
- else if (self.fileSize < 2014 * 1024 * 1024){
- self.fileSizeDes = [NSString stringWithFormat:@"%.2fMB", self.fileSize / (1024 * 1024)];
- }
- }
- break;
- default:
- break;
- }
- }
-
- return self;
- }
- - (NSString *)messageId
- {
- return _message.messageId;
- }
- - (EMMessageStatus)messageStatus
- {
- return _message.status;
- }
- - (EMChatType)messageType
- {
- return _message.chatType;
- }
- - (EMMessageBodyType)bodyType
- {
- return self.firstMessageBody.type;
- }
- - (BOOL)isMessageRead
- {
- return _message.isReadAcked;
- }
- - (NSString *)fileLocalPath
- {
- if (_firstMessageBody) {
- switch (_firstMessageBody.type) {
- case EMMessageBodyTypeVideo:
- case EMMessageBodyTypeImage:
- case EMMessageBodyTypeVoice:
- case EMMessageBodyTypeFile:
- {
- EMFileMessageBody *fileBody = (EMFileMessageBody *)_firstMessageBody;
- return fileBody.localPath;
- }
- break;
- default:
- break;
- }
- }
- return nil;
- }
- - (UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize
- {
- UIGraphicsBeginImageContext(CGSizeMake(image.size.width * scaleSize, image.size.height * scaleSize));
- [image drawInRect:CGRectMake(0, 0, image.size.width * scaleSize, image.size.height * scaleSize)];
- UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- return scaledImage;
- }
- @end
|