From a6ac1cc8549dc0ff286197803338a26e804c0c8f Mon Sep 17 00:00:00 2001 From: KenChoi Date: Tue, 6 Mar 2018 16:17:17 +0800 Subject: [PATCH 01/23] send files event & take picture return file size --- .../imui/messagelist/ReactChatInputManager.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactChatInputManager.java b/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactChatInputManager.java index cf4a81ef..2d6cfb32 100644 --- a/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactChatInputManager.java +++ b/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactChatInputManager.java @@ -1,6 +1,7 @@ package cn.jiguang.imui.messagelist; import android.app.Activity; +import android.graphics.BitmapFactory; import android.graphics.Color; import android.media.MediaPlayer; import android.net.Uri; @@ -188,14 +189,20 @@ public void onSendFiles(List list) { } WritableMap event = Arguments.createMap(); WritableArray array = new WritableNativeArray(); + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inJustDecodeBounds = true; for (FileItem fileItem : list) { WritableMap map = new WritableNativeMap(); if (fileItem.getType().ordinal() == 0) { map.putString("mediaType", "image"); + BitmapFactory.decodeFile(fileItem.getFilePath(), options); + map.putInt("width", options.outWidth); + map.putInt("height", options.outHeight); } else { map.putString("mediaType", "video"); map.putInt("duration", (int) ((VideoItem) fileItem).getDuration()); } + map.putDouble("size", fileItem.getLongFileSize()); map.putString("mediaPath", fileItem.getFilePath()); array.pushMap(map); } @@ -241,6 +248,13 @@ public boolean switchToEmojiMode() { public void onTakePictureCompleted(String photoPath) { WritableMap event = Arguments.createMap(); event.putString("mediaPath", photoPath); + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inJustDecodeBounds = true; + BitmapFactory.decodeFile(photoPath, options); + event.putInt("width", options.outWidth); + event.putInt("height", options.outHeight); + File file = new File(photoPath); + event.putDouble("size", file.length()); reactContext.getJSModule(RCTEventEmitter.class).receiveEvent(mChatInput.getId(), TAKE_PICTURE_EVENT, event); } From c64ea0b3ea6d54c42cf977d47c4422047ee8e3c3 Mon Sep 17 00:00:00 2001 From: huangminlinux <380108184@qq.com> Date: Tue, 6 Mar 2018 17:05:21 +0800 Subject: [PATCH 02/23] add width height and size --- ReactNative/chatinput.ios.js | 2 +- .../RCTAuroraIMUI/RCTAuroraIMUIFileManager.h | 1 + .../RCTAuroraIMUI/RCTAuroraIMUIFileManager.m | 12 +++++++++- .../ios/RCTAuroraIMUI/RCTInputViewManager.m | 24 +++++++++++++++---- 4 files changed, 33 insertions(+), 6 deletions(-) diff --git a/ReactNative/chatinput.ios.js b/ReactNative/chatinput.ios.js index 8802156c..803ae7ca 100644 --- a/ReactNative/chatinput.ios.js +++ b/ReactNative/chatinput.ios.js @@ -52,7 +52,7 @@ export default class ChatInput extends Component { if (!this.props.onTakePicture) { return; } - this.props.onTakePicture(event.nativeEvent.mediaPath); + this.props.onTakePicture(event.nativeEvent); } _startVideoRecord() { diff --git a/ReactNative/ios/RCTAuroraIMUI/RCTAuroraIMUIFileManager.h b/ReactNative/ios/RCTAuroraIMUI/RCTAuroraIMUIFileManager.h index 773c959f..18b14f9e 100644 --- a/ReactNative/ios/RCTAuroraIMUI/RCTAuroraIMUIFileManager.h +++ b/ReactNative/ios/RCTAuroraIMUI/RCTAuroraIMUIFileManager.h @@ -11,4 +11,5 @@ @interface RCTAuroraIMUIFileManager : NSObject + (NSString *)getPath; + (void)createDirectory:(NSString *)directoryName atFilePath:(NSString *)filePath; ++ (int)getFileSize:(NSString *)path; @end diff --git a/ReactNative/ios/RCTAuroraIMUI/RCTAuroraIMUIFileManager.m b/ReactNative/ios/RCTAuroraIMUI/RCTAuroraIMUIFileManager.m index 0afa37aa..ba8ebc09 100644 --- a/ReactNative/ios/RCTAuroraIMUI/RCTAuroraIMUIFileManager.m +++ b/ReactNative/ios/RCTAuroraIMUI/RCTAuroraIMUIFileManager.m @@ -7,7 +7,7 @@ // #import "RCTAuroraIMUIFileManager.h" - +#import @implementation RCTAuroraIMUIFileManager + (NSString *)getPath {//"\(NSHomeDirectory())/Documents/RCTAuroraIMUI" @@ -34,4 +34,14 @@ + (void)createDirectory:(NSString *)directoryName atFilePath:(NSString *)filePat NSLog(@"Create directory error: %@", error); } } + ++ (int)getFileSize:(NSString *)path { + if (![[NSFileManager defaultManager] fileExistsAtPath:path]) { + return 0; + } + NSDictionary *attrs = [[NSFileManager defaultManager] attributesOfItemAtPath: path error: NULL]; + int result = (int)[attrs fileSize]; + return result; +} + @end diff --git a/ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m b/ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m index 0e249655..cb2e1b75 100644 --- a/ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m +++ b/ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m @@ -172,6 +172,7 @@ - (void)didSeletedGalleryWithAssetArr:(NSArray * _Nonnull)AssetArr { options.networkAccessAllowed = YES; PHCachingImageManager *imageManage = [[PHCachingImageManager alloc] init]; + [imageManage requestImageForAsset: asset targetSize: CGSizeMake(asset.pixelWidth * scale, asset.pixelHeight * scale) contentMode: PHImageContentModeAspectFill @@ -179,7 +180,14 @@ - (void)didSeletedGalleryWithAssetArr:(NSArray * _Nonnull)AssetArr { NSData *imageData = UIImagePNGRepresentation(result); NSString *filePath = [RCTAuroraIMUIFileManager getPath]; if ([imageData writeToFile: filePath atomically: true]) { - [imagePathArr addObject: @{@"mediaPath": filePath, @"mediaType": @"image"}]; + int fileSize = [RCTAuroraIMUIFileManager getFileSize: filePath]; + + [imagePathArr addObject: @{@"mediaPath": filePath, + @"mediaType": @"image", + @"size": @(fileSize), + @"width": @(result.size.width), + @"height": @(result.size.height), + }]; } }]; break; @@ -191,7 +199,9 @@ - (void)didSeletedGalleryWithAssetArr:(NSArray * _Nonnull)AssetArr { } dispatch_async(dispatch_get_main_queue(), ^(void){ - _rctInputView.onSendGalleryFiles(@{@"mediaFiles": imagePathArr}); + _rctInputView.onSendGalleryFiles(@{@"mediaFiles": imagePathArr, + + }); }); }); } @@ -218,9 +228,15 @@ - (void)didShootPictureWithPicture:(NSData * _Nonnull)picture { if(!_rctInputView.onTakePicture) { return; } // TODO: save to file NSString *filePath = [RCTAuroraIMUIFileManager getPath]; - + UIImage *image = [UIImage imageWithData:picture]; [picture writeToFile: filePath atomically: false]; - _rctInputView.onTakePicture(@{@"mediaPath": filePath}); + int size = (int)picture.length/1024.0f/1024.0f; + NSNumber *sizeNumber = @(size); + _rctInputView.onTakePicture(@{@"mediaPath": filePath, + @"size": sizeNumber, + @"width": @(image.size.width), + @"height": @(image.size.height) + }); } /// Tells the delegate when starting record video From 7491d5cdcec8d1f741873611e548cf7fd295c479 Mon Sep 17 00:00:00 2001 From: huangminlinux <380108184@qq.com> Date: Tue, 6 Mar 2018 17:27:25 +0800 Subject: [PATCH 03/23] fix ontake pic -react-native --- ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m b/ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m index cb2e1b75..ab721df3 100644 --- a/ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m +++ b/ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m @@ -228,9 +228,11 @@ - (void)didShootPictureWithPicture:(NSData * _Nonnull)picture { if(!_rctInputView.onTakePicture) { return; } // TODO: save to file NSString *filePath = [RCTAuroraIMUIFileManager getPath]; + + [picture writeToFile: filePath atomically: true]; + UIImage *image = [UIImage imageWithData:picture]; - [picture writeToFile: filePath atomically: false]; - int size = (int)picture.length/1024.0f/1024.0f; + int size = (int)picture.length; NSNumber *sizeNumber = @(size); _rctInputView.onTakePicture(@{@"mediaPath": filePath, @"size": sizeNumber, From e918769bc5b3a9b5b10737b83b9aaa254e5262b0 Mon Sep 17 00:00:00 2001 From: huangminlinux <380108184@qq.com> Date: Tue, 6 Mar 2018 17:41:09 +0800 Subject: [PATCH 04/23] fix demo --- ReactNative/chatinput.android.js | 2 +- ReactNative/sample/App.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ReactNative/chatinput.android.js b/ReactNative/chatinput.android.js index 41b69145..999f33ca 100644 --- a/ReactNative/chatinput.android.js +++ b/ReactNative/chatinput.android.js @@ -55,7 +55,7 @@ export default class ChatInput extends Component { if (!this.props.onSendGalleryFiles) { return; } - this.props.onSendGalleryFiles(event.nativeEvent.mediaFiles); + this.props.onSendGalleryFiles(event.nativeEvent); } _takePicture(event: Event) { diff --git a/ReactNative/sample/App.js b/ReactNative/sample/App.js index 4e0dcc90..3e1f2e3e 100644 --- a/ReactNative/sample/App.js +++ b/ReactNative/sample/App.js @@ -244,11 +244,11 @@ export default class TestRNIMUI extends Component { AuroraIController.appendMessages([message]) } - onTakePicture = (mediaPath) => { + onTakePicture = (media) => { var message = constructNormalMessage() message.msgType = 'image' - message.mediaPath = mediaPath + message.mediaPath = mediaPath.mediaPath AuroraIController.appendMessages([message]) this.resetMenu() AuroraIController.scrollToBottom(true) From 68004b57bbd16ff2644c33f8855d49d526fd106e Mon Sep 17 00:00:00 2001 From: KenChoi Date: Tue, 6 Mar 2018 18:01:17 +0800 Subject: [PATCH 05/23] rn media return size --- .../cn/jiguang/imui/messagelist/ReactChatInputManager.java | 2 ++ .../java/cn/jiguang/imui/messagelist/ReactMsgListManager.java | 2 +- ReactNative/chatinput.android.js | 2 +- ReactNative/sample/App.js | 4 ++-- package.json | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactChatInputManager.java b/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactChatInputManager.java index 2d6cfb32..cdca3875 100644 --- a/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactChatInputManager.java +++ b/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactChatInputManager.java @@ -272,6 +272,8 @@ public void onFinishVideoRecord(String videoPath) { MediaPlayer mediaPlayer = MediaPlayer.create(reactContext, Uri.parse(videoPath)); int duration = mediaPlayer.getDuration() / 1000; // Millisecond to second. mediaPlayer.release(); + File file = new File(videoPath); + event.putDouble("size", file.length()); event.putInt("duration", duration); reactContext.getJSModule(RCTEventEmitter.class).receiveEvent(mChatInput.getId(), FINISH_RECORD_VIDEO_EVENT, event); diff --git a/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactMsgListManager.java b/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactMsgListManager.java index 0ca25da1..318918ec 100644 --- a/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactMsgListManager.java +++ b/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactMsgListManager.java @@ -403,7 +403,7 @@ public void setAvatarWidth(PullToRefreshLayout root, ReadableMap map) { @ReactProp(name = "avatarCornerRadius") public void setAvatarCornerRadius(PullToRefreshLayout root, int radius) { - mMessageList.setAvatarRadius(radius); + mMessageList.setAvatarRadius(dip2px(radius)); } /** diff --git a/ReactNative/chatinput.android.js b/ReactNative/chatinput.android.js index 999f33ca..1870b5d9 100644 --- a/ReactNative/chatinput.android.js +++ b/ReactNative/chatinput.android.js @@ -62,7 +62,7 @@ export default class ChatInput extends Component { if (!this.props.onTakePicture) { return; } - this.props.onTakePicture(event.nativeEvent.mediaPath); + this.props.onTakePicture(event.nativeEvent); } _startVideoRecord() { diff --git a/ReactNative/sample/App.js b/ReactNative/sample/App.js index 3e1f2e3e..05aba7aa 100644 --- a/ReactNative/sample/App.js +++ b/ReactNative/sample/App.js @@ -245,10 +245,10 @@ export default class TestRNIMUI extends Component { } onTakePicture = (media) => { - + console.log("media " + JSON.stringify(media)) var message = constructNormalMessage() message.msgType = 'image' - message.mediaPath = mediaPath.mediaPath + message.mediaPath = media.mediaPath AuroraIController.appendMessages([message]) this.resetMenu() AuroraIController.scrollToBottom(true) diff --git a/package.json b/package.json index 63205fae..83a08f93 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aurora-imui-react-native", - "version": "0.9.2", + "version": "0.9.3", "description": "aurora imui plugin for react native application", "main": "index.js", From ece459f4d4b6912ea041684a7827eb68deb94746 Mon Sep 17 00:00:00 2001 From: KenChoi Date: Wed, 7 Mar 2018 10:29:28 +0800 Subject: [PATCH 06/23] update custom message style --- .../imui/messagelist/CustomViewHolder.java | 65 ++++++++++++++++--- ReactNative/chatinput.android.js | 2 +- ReactNative/sample/App.js | 3 +- package.json | 2 +- 4 files changed, 61 insertions(+), 11 deletions(-) diff --git a/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/CustomViewHolder.java b/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/CustomViewHolder.java index b58174db..60249f37 100644 --- a/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/CustomViewHolder.java +++ b/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/CustomViewHolder.java @@ -9,7 +9,6 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Build; -import android.text.Editable; import android.text.Html; import android.text.TextUtils; import android.util.Log; @@ -20,7 +19,6 @@ import android.widget.RelativeLayout; import android.widget.TextView; -import org.xml.sax.XMLReader; import java.io.File; @@ -29,13 +27,14 @@ import cn.jiguang.imui.messages.MessageListStyle; import cn.jiguang.imui.messages.MsgListAdapter; import cn.jiguang.imui.view.RoundImageView; +import cn.jiguang.imui.view.RoundTextView; public class CustomViewHolder extends BaseMessageViewHolder implements MsgListAdapter.DefaultMessageViewHolder { private TextView mMsgTv; - private TextView mDateTv; + private RoundTextView mDateTv; private TextView mDisplayNameTv; private RoundImageView mAvatarIv; private ImageButton mResendIb; @@ -47,7 +46,7 @@ public CustomViewHolder(View itemView, boolean isSender) { super(itemView); this.mIsSender = isSender; mMsgTv = (TextView) itemView.findViewById(R.id.aurora_tv_msgitem_message); - mDateTv = (TextView) itemView.findViewById(R.id.aurora_tv_msgitem_date); + mDateTv = (RoundTextView) itemView.findViewById(R.id.aurora_tv_msgitem_date); mAvatarIv = (RoundImageView) itemView.findViewById(R.id.aurora_iv_msgitem_avatar); if (isSender) { mDisplayNameTv = (TextView) itemView.findViewById(R.id.aurora_tv_msgitem_sender_display_name); @@ -63,8 +62,8 @@ public void onBind(final MESSAGE message) { int memClass = ((ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass(); mCache = new LruCache<>(1024 * 1024 * memClass / 8); RCTMessage rctMessage = (RCTMessage) message; - int width = rctMessage.getWidth(); - int height = rctMessage.getHeight(); + int width = (int) (rctMessage.getWidth() * mDensity + 0.5); + int height = (int) (rctMessage.getHeight() * mDensity + 0.5); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(width, height); if (mIsSender) { params.addRule(RelativeLayout.LEFT_OF, mAvatarIv.getId()); @@ -84,8 +83,10 @@ public void onBind(final MESSAGE message) { } } - if (message.getTimeString() != null) { + if (message.getTimeString() != null && !TextUtils.isEmpty(message.getTimeString())) { mDateTv.setText(message.getTimeString()); + } else { + mDateTv.setVisibility(View.GONE); } boolean isAvatarExists = message.getFromUser().getAvatarFilePath() != null && !message.getFromUser().getAvatarFilePath().isEmpty(); @@ -224,7 +225,55 @@ public void draw(Canvas canvas) { @Override - public void applyStyle(MessageListStyle messageListStyle) { + public void applyStyle(MessageListStyle style) { + mMsgTv.setMaxWidth((int) (style.getWindowWidth() * style.getBubbleMaxWidth())); + mMsgTv.setLineSpacing(style.getLineSpacingExtra(), style.getLineSpacingMultiplier()); + mDisplayNameTv.setTextSize(style.getDisplayNameTextSize()); + mDisplayNameTv.setPadding(style.getDisplayNamePaddingLeft(), style.getDisplayNamePaddingTop(), + style.getDisplayNamePaddingRight(), style.getDisplayNamePaddingBottom()); + mDisplayNameTv.setTextColor(style.getDisplayNameTextColor()); + if (mIsSender) { + mMsgTv.setBackground(style.getSendBubbleDrawable()); + mMsgTv.setTextColor(style.getSendBubbleTextColor()); + mMsgTv.setTextSize(style.getSendBubbleTextSize()); + mMsgTv.setPadding(style.getSendBubblePaddingLeft(), + style.getSendBubblePaddingTop(), + style.getSendBubblePaddingRight(), + style.getSendBubblePaddingBottom()); + if (style.getSendingProgressDrawable() != null) { + mSendingPb.setProgressDrawable(style.getSendingProgressDrawable()); + } + if (style.getSendingIndeterminateDrawable() != null) { + mSendingPb.setIndeterminateDrawable(style.getSendingIndeterminateDrawable()); + } + if (style.getShowSenderDisplayName()) { + mDisplayNameTv.setVisibility(View.VISIBLE); + } else { + mDisplayNameTv.setVisibility(View.GONE); + } + } else { + mMsgTv.setBackground(style.getReceiveBubbleDrawable()); + mMsgTv.setTextColor(style.getReceiveBubbleTextColor()); + mMsgTv.setTextSize(style.getReceiveBubbleTextSize()); + mMsgTv.setPadding(style.getReceiveBubblePaddingLeft(), + style.getReceiveBubblePaddingTop(), + style.getReceiveBubblePaddingRight(), + style.getReceiveBubblePaddingBottom()); + if (style.getShowReceiverDisplayName()) { + mDisplayNameTv.setVisibility(View.VISIBLE); + } else { + mDisplayNameTv.setVisibility(View.GONE); + } + } + mAvatarIv.setBorderRadius(style.getAvatarRadius()); + android.view.ViewGroup.LayoutParams layoutParams = mAvatarIv.getLayoutParams(); + layoutParams.width = style.getAvatarWidth(); + layoutParams.height = style.getAvatarHeight(); + mAvatarIv.setLayoutParams(layoutParams); + mDateTv.setTextSize(style.getDateTextSize()); + mDateTv.setTextColor(style.getDateTextColor()); + mDateTv.setBgColor(style.getDateBgColor()); + mDateTv.setBgCornerRadius(style.getDateBgCornerRadius()); } } diff --git a/ReactNative/chatinput.android.js b/ReactNative/chatinput.android.js index 1870b5d9..e9bacf07 100644 --- a/ReactNative/chatinput.android.js +++ b/ReactNative/chatinput.android.js @@ -55,7 +55,7 @@ export default class ChatInput extends Component { if (!this.props.onSendGalleryFiles) { return; } - this.props.onSendGalleryFiles(event.nativeEvent); + this.props.onSendGalleryFiles(event.nativeEvent.mediaFiles); } _takePicture(event: Event) { diff --git a/ReactNative/sample/App.js b/ReactNative/sample/App.js index 05aba7aa..ab18e3b0 100644 --- a/ReactNative/sample/App.js +++ b/ReactNative/sample/App.js @@ -37,7 +37,8 @@ function constructNormalMessage() { themsgid += 1 message.status = "send_going" message.isOutgoing = true - message.timeString = "" + var date = new Date() + message.timeString = date.getHours() + ":" + date.getMinutes() var user = { userId: "", displayName: "replace your nickname", diff --git a/package.json b/package.json index 83a08f93..c0fd3ef2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aurora-imui-react-native", - "version": "0.9.3", + "version": "0.9.4", "description": "aurora imui plugin for react native application", "main": "index.js", From e66caf8d4d39da314d3c7e2ceb24a3c5f64e244b Mon Sep 17 00:00:00 2001 From: KenChoi Date: Wed, 7 Mar 2018 11:29:59 +0800 Subject: [PATCH 07/23] modify finishRecordVideo --- .../cn/jiguang/imui/messagelist/ReactChatInputManager.java | 1 + ReactNative/chatinput.android.js | 2 +- ReactNative/sample/App.js | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactChatInputManager.java b/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactChatInputManager.java index cdca3875..48fb072b 100644 --- a/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactChatInputManager.java +++ b/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactChatInputManager.java @@ -302,6 +302,7 @@ public void onFinishRecord(File voiceFile, int duration) { WritableMap event = Arguments.createMap(); event.putString("mediaPath", voiceFile.getAbsolutePath()); event.putInt("duration", duration); + event.putDouble("size", voiceFile.length()); reactContext.getJSModule(RCTEventEmitter.class).receiveEvent(mChatInput.getId(), FINISH_RECORD_VOICE_EVENT, event); } diff --git a/ReactNative/chatinput.android.js b/ReactNative/chatinput.android.js index e9bacf07..cf8729cf 100644 --- a/ReactNative/chatinput.android.js +++ b/ReactNative/chatinput.android.js @@ -76,7 +76,7 @@ export default class ChatInput extends Component { if (!this.props.onFinishRecordVideo) { return; } - this.props.onFinishRecordVideo(event.nativeEvent.mediaPath, event.nativeEvent.duration); + this.props.onFinishRecordVideo(event.nativeEvent); } _cancelVideoRecord() { diff --git a/ReactNative/sample/App.js b/ReactNative/sample/App.js index ab18e3b0..97041ffb 100644 --- a/ReactNative/sample/App.js +++ b/ReactNative/sample/App.js @@ -277,12 +277,12 @@ export default class TestRNIMUI extends Component { console.log("on start record video") } - onFinishRecordVideo = (mediaPath, duration) => { + onFinishRecordVideo = (video) => { var message = constructNormalMessage() message.msgType = "video" - message.mediaPath = mediaPath - message.duration = duration + message.mediaPath = video.mediaPath + message.duration = video.duration AuroraIController.appendMessages([message]) } From 3c6554f080ad5877e7198319c9a1449875e3b620 Mon Sep 17 00:00:00 2001 From: huangminlinux <380108184@qq.com> Date: Wed, 7 Mar 2018 13:15:19 +0800 Subject: [PATCH 08/23] add size in recroded video call back --- ReactNative/chatinput.ios.js | 2 +- ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ReactNative/chatinput.ios.js b/ReactNative/chatinput.ios.js index 803ae7ca..271a0009 100644 --- a/ReactNative/chatinput.ios.js +++ b/ReactNative/chatinput.ios.js @@ -66,7 +66,7 @@ export default class ChatInput extends Component { if (!this.props.onFinishRecordVideo) { return; } - this.props.onFinishRecordVideo(event.nativeEvent.mediaPath,event.nativeEvent.durationTime); + this.props.onFinishRecordVideo(event.nativeEvent); } _onStartRecordVoice() { diff --git a/ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m b/ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m index ab721df3..b47e66ad 100644 --- a/ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m +++ b/ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m @@ -249,9 +249,12 @@ - (void)startRecordVideo { /// Tells the delegate when user did shoot video in camera mode - (void)finishRecordVideoWithVideoPath:(NSString * _Nonnull)videoPath durationTime:(double)durationTime { - + int size = [RCTAuroraIMUIFileManager getFileSize:videoPath]; if(!_rctInputView.onFinishRecordVideo) { return; } - _rctInputView.onFinishRecordVideo(@{@"mediaPath": videoPath, @"durationTime": @(durationTime)}); + _rctInputView.onFinishRecordVideo(@{@"mediaPath": videoPath, + @"durationTime": @(durationTime), + @"size": @(size) + }); } - (void)keyBoardWillShowWithHeight:(CGFloat)height durationTime:(double)durationTime { From 6fd89b595896331f51b5f064611b9a9d42b82280 Mon Sep 17 00:00:00 2001 From: huangminlinux <380108184@qq.com> Date: Wed, 7 Mar 2018 13:39:16 +0800 Subject: [PATCH 09/23] add compressionQuality configuration in ios --- ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m | 12 +++++++++--- ReactNative/sample/App.js | 3 ++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m b/ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m index b47e66ad..78abe69f 100644 --- a/ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m +++ b/ReactNative/ios/RCTAuroraIMUI/RCTInputViewManager.m @@ -92,11 +92,17 @@ - (UIView *)view _rctInputView.imuiIntputView.inputTextViewLineHeight = height.floatValue; } -RCT_CUSTOM_VIEW_PROPERTY(galleryScale, NSString, RCTInputView) { +RCT_CUSTOM_VIEW_PROPERTY(galleryScale, NSNumber, RCTInputView) { NSNumber *galleryScale = [RCTConvert NSNumber: json]; _rctInputView.galleryScale = galleryScale; } +RCT_CUSTOM_VIEW_PROPERTY(compressionQuality, NSNumber, RCTInputView) { + NSNumber *compressionQuality = [RCTConvert NSNumber: json]; + _rctInputView.compressionQuality = compressionQuality; +} + + /// Tells the delegate that user tap send button and text input string is not empty - (void)sendTextMessage:(NSString * _Nonnull)messageText { if(!_rctInputView.onSendText) { return; } @@ -171,13 +177,13 @@ - (void)didSeletedGalleryWithAssetArr:(NSArray * _Nonnull)AssetArr { options.synchronous = YES; options.networkAccessAllowed = YES; PHCachingImageManager *imageManage = [[PHCachingImageManager alloc] init]; - + CGFloat compressionQuality = _rctInputView.compressionQuality.floatValue; [imageManage requestImageForAsset: asset targetSize: CGSizeMake(asset.pixelWidth * scale, asset.pixelHeight * scale) contentMode: PHImageContentModeAspectFill options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) { - NSData *imageData = UIImagePNGRepresentation(result); + NSData *imageData = UIImageJPEGRepresentation(result, compressionQuality); NSString *filePath = [RCTAuroraIMUIFileManager getPath]; if ([imageData writeToFile: filePath atomically: true]) { int fileSize = [RCTAuroraIMUIFileManager getFileSize: filePath]; diff --git a/ReactNative/sample/App.js b/ReactNative/sample/App.js index 97041ffb..3799d2a8 100644 --- a/ReactNative/sample/App.js +++ b/ReactNative/sample/App.js @@ -279,7 +279,6 @@ export default class TestRNIMUI extends Component { onFinishRecordVideo = (video) => { var message = constructNormalMessage() - message.msgType = "video" message.mediaPath = video.mediaPath message.duration = video.duration @@ -298,6 +297,7 @@ export default class TestRNIMUI extends Component { * * 代码用例不做裁剪操作。 */ + Alert.alert('fas',JSON.stringify(mediaFiles)) for (index in mediaFiles) { var message = constructNormalMessage() if (mediaFiles[index].mediaType == "image") { @@ -437,6 +437,7 @@ export default class TestRNIMUI extends Component { showSelectAlbumBtn={true} onClickSelectAlbum={this.onClickSelectAlbum} galleryScale={0.6}//default = 0.5 + compressionQuality={0.6} /> ); From d5ccdf8c5804800dc518f34c43fd8a5efda6c26e Mon Sep 17 00:00:00 2001 From: huangminlinux <380108184@qq.com> Date: Wed, 7 Mar 2018 13:44:10 +0800 Subject: [PATCH 10/23] rn update to 0.9.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c0fd3ef2..8047e041 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aurora-imui-react-native", - "version": "0.9.4", + "version": "0.9.5", "description": "aurora imui plugin for react native application", "main": "index.js", From 15f805a6611ef530a03cd2e777a960923420f6f1 Mon Sep 17 00:00:00 2001 From: huangminlinux <380108184@qq.com> Date: Wed, 7 Mar 2018 14:13:45 +0800 Subject: [PATCH 11/23] fix timelabel edge bug --- .../Layout/IMUIMessageCellLayout.swift | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/iOS/IMUIMessageCollectionView/Layout/IMUIMessageCellLayout.swift b/iOS/IMUIMessageCollectionView/Layout/IMUIMessageCellLayout.swift index 7f931a48..0a80161a 100644 --- a/iOS/IMUIMessageCollectionView/Layout/IMUIMessageCellLayout.swift +++ b/iOS/IMUIMessageCollectionView/Layout/IMUIMessageCellLayout.swift @@ -178,13 +178,13 @@ import UIKit open var timeLabelFrame: CGRect { if self.isNeedShowTime { - let timeWidth = IMUIMessageCellLayout.timeLabelPadding.left + + let timeWidth = (IMUIMessageCellLayout.timeLabelPadding.left + timeLabelContentSize.width + - IMUIMessageCellLayout.timeLabelPadding.right + IMUIMessageCellLayout.timeLabelPadding.right + 0.5).rounded() - let timeHeight = IMUIMessageCellLayout.timeLabelPadding.top + + let timeHeight = (IMUIMessageCellLayout.timeLabelPadding.top + timeLabelContentSize.height + - IMUIMessageCellLayout.timeLabelPadding.bottom + IMUIMessageCellLayout.timeLabelPadding.bottom + 0.5).rounded() let timeX = (IMUIMessageCellLayout.cellWidth - timeWidth)/2 diff --git a/package.json b/package.json index 8047e041..355e6bb2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aurora-imui-react-native", - "version": "0.9.5", + "version": "0.9.6", "description": "aurora imui plugin for react native application", "main": "index.js", From 1823ffe33500dae7df745c34d3f2bfe657d06a58 Mon Sep 17 00:00:00 2001 From: huangminlinux <380108184@qq.com> Date: Wed, 7 Mar 2018 15:00:22 +0800 Subject: [PATCH 12/23] update carmera when full screen will hidden statusBar --- .../RCTAuroraIMUI.xcodeproj/project.pbxproj | 660 +++++++++--------- iOS/IMUIInputView/Views/IMUICameraCell.swift | 2 +- .../Views/IMUIHidenStatusViewController.swift | 39 ++ iOS/sample/sample.xcodeproj/project.pbxproj | 4 + 4 files changed, 376 insertions(+), 329 deletions(-) create mode 100644 iOS/IMUIInputView/Views/IMUIHidenStatusViewController.swift diff --git a/ReactNative/ios/RCTAuroraIMUI.xcodeproj/project.pbxproj b/ReactNative/ios/RCTAuroraIMUI.xcodeproj/project.pbxproj index d7aed628..f1cec4be 100644 --- a/ReactNative/ios/RCTAuroraIMUI.xcodeproj/project.pbxproj +++ b/ReactNative/ios/RCTAuroraIMUI.xcodeproj/project.pbxproj @@ -33,82 +33,83 @@ 624B82DD1EE57653006C3C03 /* RCTAuroraIMUIModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 623EA9771EE55CB200EC43AE /* RCTAuroraIMUIModule.m */; }; 624F239F1F039DBF00D11E4E /* MessageEventCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 624F239D1F039DBF00D11E4E /* MessageEventCollectionViewCell.swift */; }; 624F23A01F039DBF00D11E4E /* MessageEventModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 624F239E1F039DBF00D11E4E /* MessageEventModel.swift */; }; - 626BCDD92001F5C4006F7C15 /* IMUIInputViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD802001F5C3006F7C15 /* IMUIInputViewDelegate.swift */; }; - 626BCDDA2001F5C4006F7C15 /* BundleInputViewExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD822001F5C3006F7C15 /* BundleInputViewExtension.swift */; }; - 626BCDDB2001F5C4006F7C15 /* IMUIFeatureIconModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD842001F5C3006F7C15 /* IMUIFeatureIconModel.swift */; }; - 626BCDDC2001F5C4006F7C15 /* IMUIEmojiModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD852001F5C3006F7C15 /* IMUIEmojiModel.swift */; }; - 626BCDDD2001F5C4006F7C15 /* IMUIRecordVoiceHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD872001F5C3006F7C15 /* IMUIRecordVoiceHelper.swift */; }; - 626BCDDE2001F5C4006F7C15 /* IMUIInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD882001F5C3006F7C15 /* IMUIInputView.swift */; }; - 626BCDDF2001F5C4006F7C15 /* IMUIGalleryDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD892001F5C3006F7C15 /* IMUIGalleryDataManager.swift */; }; - 626BCDE02001F5C4006F7C15 /* IMUIInputView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 626BCD8A2001F5C3006F7C15 /* IMUIInputView.xib */; }; - 626BCDE12001F5C4006F7C15 /* IMUICameraCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD8C2001F5C3006F7C15 /* IMUICameraCell.swift */; }; - 626BCDE22001F5C4006F7C15 /* IMUIFeatureListIconCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD8D2001F5C3006F7C15 /* IMUIFeatureListIconCell.swift */; }; - 626BCDE32001F5C4006F7C15 /* IMUIFeatureListView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 626BCD8E2001F5C3006F7C15 /* IMUIFeatureListView.xib */; }; - 626BCDE42001F5C4006F7C15 /* IMUICameraView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD8F2001F5C3006F7C15 /* IMUICameraView.swift */; }; - 626BCDE52001F5C4006F7C15 /* IMUIGalleryContainerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD902001F5C3006F7C15 /* IMUIGalleryContainerCell.swift */; }; - 626BCDE62001F5C4006F7C15 /* IMUIRecordVoiceCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD912001F5C3006F7C15 /* IMUIRecordVoiceCell.swift */; }; - 626BCDE72001F5C4006F7C15 /* IMUIFeatureView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 626BCD922001F5C3006F7C15 /* IMUIFeatureView.xib */; }; - 626BCDE82001F5C4006F7C15 /* IMUIProgressButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD932001F5C3006F7C15 /* IMUIProgressButton.swift */; }; - 626BCDE92001F5C4006F7C15 /* IMUIFeatureView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD942001F5C3006F7C15 /* IMUIFeatureView.swift */; }; - 626BCDEA2001F5C4006F7C15 /* IMUIEmojiCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 626BCD952001F5C3006F7C15 /* IMUIEmojiCell.xib */; }; - 626BCDEB2001F5C4006F7C15 /* IMUICameraCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 626BCD962001F5C3006F7C15 /* IMUICameraCell.xib */; }; - 626BCDEC2001F5C4006F7C15 /* IMUIEmojiCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD972001F5C3006F7C15 /* IMUIEmojiCell.swift */; }; - 626BCDED2001F5C4006F7C15 /* IMUICameraView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 626BCD982001F5C3006F7C15 /* IMUICameraView.xib */; }; - 626BCDEE2001F5C4006F7C15 /* IMUIGalleryContainerCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 626BCD992001F5C3006F7C15 /* IMUIGalleryContainerCell.xib */; }; - 626BCDEF2001F5C4006F7C15 /* IMUIPermissionDenyedView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 626BCD9A2001F5C3006F7C15 /* IMUIPermissionDenyedView.xib */; }; - 626BCDF02001F5C4006F7C15 /* IMUIGalleryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD9B2001F5C3006F7C15 /* IMUIGalleryCell.swift */; }; - 626BCDF12001F5C4006F7C15 /* IMUIEmojiItemCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD9C2001F5C3006F7C15 /* IMUIEmojiItemCell.swift */; }; - 626BCDF22001F5C4006F7C15 /* IMUIPermissionDenyedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD9D2001F5C3006F7C15 /* IMUIPermissionDenyedView.swift */; }; - 626BCDF32001F5C4006F7C15 /* IMUICameraPreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCD9E2001F5C3006F7C15 /* IMUICameraPreviewView.swift */; }; - 626BCDF42001F5C4006F7C15 /* IMUIEmojiItemCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 626BCD9F2001F5C3006F7C15 /* IMUIEmojiItemCell.xib */; }; - 626BCDF52001F5C4006F7C15 /* IMUIGalleryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 626BCDA02001F5C3006F7C15 /* IMUIGalleryCell.xib */; }; - 626BCDF62001F5C4006F7C15 /* IMUIPhotoCaptureDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDA12001F5C3006F7C15 /* IMUIPhotoCaptureDelegate.swift */; }; - 626BCDF72001F5C4006F7C15 /* IMUIRecordVoiceCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 626BCDA22001F5C3006F7C15 /* IMUIRecordVoiceCell.xib */; }; - 626BCDF82001F5C4006F7C15 /* IMUIFeatureListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDA32001F5C3006F7C15 /* IMUIFeatureListView.swift */; }; - 626BCDF92001F5C4006F7C15 /* IMUIFeatureListIconCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 626BCDA42001F5C3006F7C15 /* IMUIFeatureListIconCell.xib */; }; - 626BCDFA2001F5C4006F7C15 /* IMUIInputViewAssets.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 626BCDA62001F5C3006F7C15 /* IMUIInputViewAssets.bundle */; }; - 626BCDFB2001F5C4006F7C15 /* UIColorExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDA92001F5C4006F7C15 /* UIColorExtension.swift */; }; - 626BCDFC2001F5C4006F7C15 /* CMSampleBufferExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDAA2001F5C4006F7C15 /* CMSampleBufferExtension.swift */; }; - 626BCDFD2001F5C4006F7C15 /* CIImageExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDAB2001F5C4006F7C15 /* CIImageExtension.swift */; }; - 626BCDFE2001F5C4006F7C15 /* UIViewExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDAC2001F5C4006F7C15 /* UIViewExtension.swift */; }; - 626BCDFF2001F5C4006F7C15 /* CGRectExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDAD2001F5C4006F7C15 /* CGRectExtension.swift */; }; - 626BCE002001F5C4006F7C15 /* StringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDAE2001F5C4006F7C15 /* StringExtension.swift */; }; - 626BCE012001F5C4006F7C15 /* UIImageExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDAF2001F5C4006F7C15 /* UIImageExtension.swift */; }; - 626BCE022001F5C4006F7C15 /* DateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDB02001F5C4006F7C15 /* DateExtension.swift */; }; - 626BCE032001F5C4006F7C15 /* IMUIAudioPlayerHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDB22001F5C4006F7C15 /* IMUIAudioPlayerHelper.swift */; }; - 626BCE042001F5C4006F7C15 /* IMUI.h in Headers */ = {isa = PBXBuildFile; fileRef = 626BCDB42001F5C4006F7C15 /* IMUI.h */; }; - 626BCE052001F5C4006F7C15 /* BundleMessageListExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDB62001F5C4006F7C15 /* BundleMessageListExtension.swift */; }; - 626BCE062001F5C4006F7C15 /* UIImageMessageListExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDB72001F5C4006F7C15 /* UIImageMessageListExtension.swift */; }; - 626BCE072001F5C4006F7C15 /* IMUIMessageCellLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDB92001F5C4006F7C15 /* IMUIMessageCellLayout.swift */; }; - 626BCE082001F5C4006F7C15 /* IMUIMessageModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDBB2001F5C4006F7C15 /* IMUIMessageModel.swift */; }; - 626BCE092001F5C4006F7C15 /* IMUIViewCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDBC2001F5C4006F7C15 /* IMUIViewCache.swift */; }; - 626BCE0A2001F5C4006F7C15 /* IMUIReuseViewCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDBD2001F5C4006F7C15 /* IMUIReuseViewCache.swift */; }; - 626BCE0B2001F5C4006F7C15 /* IMUIMessageContentViewProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDBF2001F5C4006F7C15 /* IMUIMessageContentViewProtocol.swift */; }; - 626BCE0C2001F5C4006F7C15 /* IMUIMessageProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDC02001F5C4006F7C15 /* IMUIMessageProtocol.swift */; }; - 626BCE0D2001F5C4006F7C15 /* IMUIUserProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDC12001F5C4006F7C15 /* IMUIUserProtocol.swift */; }; - 626BCE0E2001F5C4006F7C15 /* IMUIMessageMessageCollectionViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDC22001F5C4006F7C15 /* IMUIMessageMessageCollectionViewDelegate.swift */; }; - 626BCE0F2001F5C4006F7C15 /* IMUIMessageCellProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDC32001F5C4006F7C15 /* IMUIMessageCellProtocol.swift */; }; - 626BCE102001F5C4006F7C15 /* IMUIMessageStatusViewProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDC42001F5C4006F7C15 /* IMUIMessageStatusViewProtocol.swift */; }; - 626BCE112001F5C4006F7C15 /* IMUIMessageModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDC52001F5C4006F7C15 /* IMUIMessageModelProtocol.swift */; }; - 626BCE122001F5C4006F7C15 /* IMUIMessageCellLayoutProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDC62001F5C4006F7C15 /* IMUIMessageCellLayoutProtocol.swift */; }; - 626BCE132001F5C4006F7C15 /* IMUIChatDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDC82001F5C4006F7C15 /* IMUIChatDataManager.swift */; }; - 626BCE142001F5C4006F7C15 /* IMUIVideoFileLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDC92001F5C4006F7C15 /* IMUIVideoFileLoader.swift */; }; - 626BCE152001F5C4006F7C15 /* IMUIChatLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDCA2001F5C4006F7C15 /* IMUIChatLayout.swift */; }; - 626BCE162001F5C4006F7C15 /* IMUIMessageStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDCC2001F5C4006F7C15 /* IMUIMessageStatusView.swift */; }; - 626BCE172001F5C4006F7C15 /* IMUIMessageCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDCD2001F5C4006F7C15 /* IMUIMessageCollectionView.swift */; }; - 626BCE182001F5C4006F7C15 /* IMUIMessageBubbleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDCE2001F5C4006F7C15 /* IMUIMessageBubbleView.swift */; }; - 626BCE192001F5C4006F7C15 /* IMUITextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDCF2001F5C4006F7C15 /* IMUITextView.swift */; }; - 626BCE1A2001F5C4006F7C15 /* CIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDD02001F5C4006F7C15 /* CIImageView.swift */; }; - 626BCE1B2001F5C4006F7C15 /* IMUIVoiceMessageContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDD12001F5C4006F7C15 /* IMUIVoiceMessageContentView.swift */; }; - 626BCE1C2001F5C4006F7C15 /* IMUITextMessageContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDD22001F5C4006F7C15 /* IMUITextMessageContentView.swift */; }; - 626BCE1D2001F5C4006F7C15 /* IMUIMessageCollectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 626BCDD32001F5C4006F7C15 /* IMUIMessageCollectionView.xib */; }; - 626BCE1E2001F5C4006F7C15 /* IMUIVideoMessageContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDD42001F5C4006F7C15 /* IMUIVideoMessageContentView.swift */; }; - 626BCE1F2001F5C4006F7C15 /* IMUIBaseMessageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDD52001F5C4006F7C15 /* IMUIBaseMessageCell.swift */; }; - 626BCE202001F5C4006F7C15 /* IMUIImageMessageContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626BCDD62001F5C4006F7C15 /* IMUIImageMessageContentView.swift */; }; - 626BCE212001F5C4006F7C15 /* IMUIAssets.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 626BCDD82001F5C4006F7C15 /* IMUIAssets.bundle */; }; 6298E7F21FB40D3400E53CAF /* IMUICustomMessageContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6298E7F11FB40D3400E53CAF /* IMUICustomMessageContentView.swift */; }; 62B0CB35204E41C100D87F94 /* RCTAuroraIMUIFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB33204E41C100D87F94 /* RCTAuroraIMUIFileManager.m */; }; 62B0CB36204E41C100D87F94 /* RCTAuroraIMUIFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 62B0CB34204E41C100D87F94 /* RCTAuroraIMUIFileManager.h */; }; + 62B0CBD9204FC52C00D87F94 /* IMUIInputViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB7F204FC52C00D87F94 /* IMUIInputViewDelegate.swift */; }; + 62B0CBDA204FC52C00D87F94 /* BundleInputViewExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB81204FC52C00D87F94 /* BundleInputViewExtension.swift */; }; + 62B0CBDB204FC52C00D87F94 /* IMUIFeatureIconModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB83204FC52C00D87F94 /* IMUIFeatureIconModel.swift */; }; + 62B0CBDC204FC52C00D87F94 /* IMUIEmojiModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB84204FC52C00D87F94 /* IMUIEmojiModel.swift */; }; + 62B0CBDD204FC52C00D87F94 /* IMUIRecordVoiceHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB86204FC52C00D87F94 /* IMUIRecordVoiceHelper.swift */; }; + 62B0CBDE204FC52C00D87F94 /* IMUIInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB87204FC52C00D87F94 /* IMUIInputView.swift */; }; + 62B0CBDF204FC52C00D87F94 /* IMUIGalleryDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB88204FC52C00D87F94 /* IMUIGalleryDataManager.swift */; }; + 62B0CBE0204FC52C00D87F94 /* IMUIInputView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 62B0CB89204FC52C00D87F94 /* IMUIInputView.xib */; }; + 62B0CBE1204FC52C00D87F94 /* IMUICameraCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB8B204FC52C00D87F94 /* IMUICameraCell.swift */; }; + 62B0CBE2204FC52C00D87F94 /* IMUIFeatureListIconCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB8C204FC52C00D87F94 /* IMUIFeatureListIconCell.swift */; }; + 62B0CBE3204FC52C00D87F94 /* IMUIFeatureListView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 62B0CB8D204FC52C00D87F94 /* IMUIFeatureListView.xib */; }; + 62B0CBE4204FC52C00D87F94 /* IMUICameraView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB8E204FC52C00D87F94 /* IMUICameraView.swift */; }; + 62B0CBE5204FC52C00D87F94 /* IMUIHidenStatusViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB8F204FC52C00D87F94 /* IMUIHidenStatusViewController.swift */; }; + 62B0CBE6204FC52C00D87F94 /* IMUIGalleryContainerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB90204FC52C00D87F94 /* IMUIGalleryContainerCell.swift */; }; + 62B0CBE7204FC52C00D87F94 /* IMUIRecordVoiceCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB91204FC52C00D87F94 /* IMUIRecordVoiceCell.swift */; }; + 62B0CBE8204FC52C00D87F94 /* IMUIFeatureView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 62B0CB92204FC52C00D87F94 /* IMUIFeatureView.xib */; }; + 62B0CBE9204FC52C00D87F94 /* IMUIProgressButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB93204FC52C00D87F94 /* IMUIProgressButton.swift */; }; + 62B0CBEA204FC52C00D87F94 /* IMUIFeatureView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB94204FC52C00D87F94 /* IMUIFeatureView.swift */; }; + 62B0CBEB204FC52C00D87F94 /* IMUIEmojiCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 62B0CB95204FC52C00D87F94 /* IMUIEmojiCell.xib */; }; + 62B0CBEC204FC52C00D87F94 /* IMUICameraCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 62B0CB96204FC52C00D87F94 /* IMUICameraCell.xib */; }; + 62B0CBED204FC52C00D87F94 /* IMUIEmojiCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB97204FC52C00D87F94 /* IMUIEmojiCell.swift */; }; + 62B0CBEE204FC52C00D87F94 /* IMUICameraView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 62B0CB98204FC52C00D87F94 /* IMUICameraView.xib */; }; + 62B0CBEF204FC52C00D87F94 /* IMUIGalleryContainerCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 62B0CB99204FC52C00D87F94 /* IMUIGalleryContainerCell.xib */; }; + 62B0CBF0204FC52C00D87F94 /* IMUIPermissionDenyedView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 62B0CB9A204FC52C00D87F94 /* IMUIPermissionDenyedView.xib */; }; + 62B0CBF1204FC52C00D87F94 /* IMUIGalleryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB9B204FC52C00D87F94 /* IMUIGalleryCell.swift */; }; + 62B0CBF2204FC52C00D87F94 /* IMUIEmojiItemCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB9C204FC52C00D87F94 /* IMUIEmojiItemCell.swift */; }; + 62B0CBF3204FC52C00D87F94 /* IMUIPermissionDenyedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB9D204FC52C00D87F94 /* IMUIPermissionDenyedView.swift */; }; + 62B0CBF4204FC52C00D87F94 /* IMUICameraPreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB9E204FC52C00D87F94 /* IMUICameraPreviewView.swift */; }; + 62B0CBF5204FC52C00D87F94 /* IMUIEmojiItemCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 62B0CB9F204FC52C00D87F94 /* IMUIEmojiItemCell.xib */; }; + 62B0CBF6204FC52C00D87F94 /* IMUIGalleryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 62B0CBA0204FC52C00D87F94 /* IMUIGalleryCell.xib */; }; + 62B0CBF7204FC52C00D87F94 /* IMUIPhotoCaptureDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBA1204FC52C00D87F94 /* IMUIPhotoCaptureDelegate.swift */; }; + 62B0CBF8204FC52C00D87F94 /* IMUIRecordVoiceCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 62B0CBA2204FC52C00D87F94 /* IMUIRecordVoiceCell.xib */; }; + 62B0CBF9204FC52C00D87F94 /* IMUIFeatureListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBA3204FC52C00D87F94 /* IMUIFeatureListView.swift */; }; + 62B0CBFA204FC52C00D87F94 /* IMUIFeatureListIconCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 62B0CBA4204FC52C00D87F94 /* IMUIFeatureListIconCell.xib */; }; + 62B0CBFB204FC52C00D87F94 /* IMUIInputViewAssets.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 62B0CBA6204FC52C00D87F94 /* IMUIInputViewAssets.bundle */; }; + 62B0CBFC204FC52C00D87F94 /* UIColorExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBA9204FC52C00D87F94 /* UIColorExtension.swift */; }; + 62B0CBFD204FC52C00D87F94 /* CMSampleBufferExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBAA204FC52C00D87F94 /* CMSampleBufferExtension.swift */; }; + 62B0CBFE204FC52C00D87F94 /* CIImageExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBAB204FC52C00D87F94 /* CIImageExtension.swift */; }; + 62B0CBFF204FC52C00D87F94 /* UIViewExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBAC204FC52C00D87F94 /* UIViewExtension.swift */; }; + 62B0CC00204FC52C00D87F94 /* CGRectExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBAD204FC52C00D87F94 /* CGRectExtension.swift */; }; + 62B0CC01204FC52C00D87F94 /* StringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBAE204FC52C00D87F94 /* StringExtension.swift */; }; + 62B0CC02204FC52C00D87F94 /* UIImageExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBAF204FC52C00D87F94 /* UIImageExtension.swift */; }; + 62B0CC03204FC52C00D87F94 /* DateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBB0204FC52C00D87F94 /* DateExtension.swift */; }; + 62B0CC04204FC52C00D87F94 /* IMUIAudioPlayerHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBB2204FC52C00D87F94 /* IMUIAudioPlayerHelper.swift */; }; + 62B0CC05204FC52C00D87F94 /* IMUI.h in Headers */ = {isa = PBXBuildFile; fileRef = 62B0CBB4204FC52C00D87F94 /* IMUI.h */; }; + 62B0CC06204FC52C00D87F94 /* BundleMessageListExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBB6204FC52C00D87F94 /* BundleMessageListExtension.swift */; }; + 62B0CC07204FC52C00D87F94 /* UIImageMessageListExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBB7204FC52C00D87F94 /* UIImageMessageListExtension.swift */; }; + 62B0CC08204FC52C00D87F94 /* IMUIMessageCellLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBB9204FC52C00D87F94 /* IMUIMessageCellLayout.swift */; }; + 62B0CC09204FC52C00D87F94 /* IMUIMessageModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBBB204FC52C00D87F94 /* IMUIMessageModel.swift */; }; + 62B0CC0A204FC52C00D87F94 /* IMUIViewCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBBC204FC52C00D87F94 /* IMUIViewCache.swift */; }; + 62B0CC0B204FC52C00D87F94 /* IMUIReuseViewCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBBD204FC52C00D87F94 /* IMUIReuseViewCache.swift */; }; + 62B0CC0C204FC52C00D87F94 /* IMUIMessageContentViewProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBBF204FC52C00D87F94 /* IMUIMessageContentViewProtocol.swift */; }; + 62B0CC0D204FC52C00D87F94 /* IMUIMessageProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBC0204FC52C00D87F94 /* IMUIMessageProtocol.swift */; }; + 62B0CC0E204FC52C00D87F94 /* IMUIUserProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBC1204FC52C00D87F94 /* IMUIUserProtocol.swift */; }; + 62B0CC0F204FC52C00D87F94 /* IMUIMessageMessageCollectionViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBC2204FC52C00D87F94 /* IMUIMessageMessageCollectionViewDelegate.swift */; }; + 62B0CC10204FC52C00D87F94 /* IMUIMessageCellProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBC3204FC52C00D87F94 /* IMUIMessageCellProtocol.swift */; }; + 62B0CC11204FC52C00D87F94 /* IMUIMessageStatusViewProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBC4204FC52C00D87F94 /* IMUIMessageStatusViewProtocol.swift */; }; + 62B0CC12204FC52C00D87F94 /* IMUIMessageModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBC5204FC52C00D87F94 /* IMUIMessageModelProtocol.swift */; }; + 62B0CC13204FC52C00D87F94 /* IMUIMessageCellLayoutProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBC6204FC52C00D87F94 /* IMUIMessageCellLayoutProtocol.swift */; }; + 62B0CC14204FC52C00D87F94 /* IMUIChatDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBC8204FC52C00D87F94 /* IMUIChatDataManager.swift */; }; + 62B0CC15204FC52C00D87F94 /* IMUIVideoFileLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBC9204FC52C00D87F94 /* IMUIVideoFileLoader.swift */; }; + 62B0CC16204FC52C00D87F94 /* IMUIChatLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBCA204FC52C00D87F94 /* IMUIChatLayout.swift */; }; + 62B0CC17204FC52C00D87F94 /* IMUIMessageStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBCC204FC52C00D87F94 /* IMUIMessageStatusView.swift */; }; + 62B0CC18204FC52C00D87F94 /* IMUIMessageCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBCD204FC52C00D87F94 /* IMUIMessageCollectionView.swift */; }; + 62B0CC19204FC52C00D87F94 /* IMUIMessageBubbleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBCE204FC52C00D87F94 /* IMUIMessageBubbleView.swift */; }; + 62B0CC1A204FC52C00D87F94 /* IMUITextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBCF204FC52C00D87F94 /* IMUITextView.swift */; }; + 62B0CC1B204FC52C00D87F94 /* CIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBD0204FC52C00D87F94 /* CIImageView.swift */; }; + 62B0CC1C204FC52C00D87F94 /* IMUIVoiceMessageContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBD1204FC52C00D87F94 /* IMUIVoiceMessageContentView.swift */; }; + 62B0CC1D204FC52C00D87F94 /* IMUITextMessageContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBD2204FC52C00D87F94 /* IMUITextMessageContentView.swift */; }; + 62B0CC1E204FC52C00D87F94 /* IMUIMessageCollectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 62B0CBD3204FC52C00D87F94 /* IMUIMessageCollectionView.xib */; }; + 62B0CC1F204FC52C00D87F94 /* IMUIVideoMessageContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBD4204FC52C00D87F94 /* IMUIVideoMessageContentView.swift */; }; + 62B0CC20204FC52C00D87F94 /* IMUIBaseMessageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBD5204FC52C00D87F94 /* IMUIBaseMessageCell.swift */; }; + 62B0CC21204FC52C00D87F94 /* IMUIImageMessageContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CBD6204FC52C00D87F94 /* IMUIImageMessageContentView.swift */; }; + 62B0CC22204FC52C00D87F94 /* IMUIAssets.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 62B0CBD8204FC52C00D87F94 /* IMUIAssets.bundle */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -167,82 +168,83 @@ 623EA9A81EE55D0800EC43AE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 624F239D1F039DBF00D11E4E /* MessageEventCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageEventCollectionViewCell.swift; sourceTree = ""; }; 624F239E1F039DBF00D11E4E /* MessageEventModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageEventModel.swift; sourceTree = ""; }; - 626BCD802001F5C3006F7C15 /* IMUIInputViewDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIInputViewDelegate.swift; sourceTree = ""; }; - 626BCD822001F5C3006F7C15 /* BundleInputViewExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BundleInputViewExtension.swift; sourceTree = ""; }; - 626BCD842001F5C3006F7C15 /* IMUIFeatureIconModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIFeatureIconModel.swift; sourceTree = ""; }; - 626BCD852001F5C3006F7C15 /* IMUIEmojiModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIEmojiModel.swift; sourceTree = ""; }; - 626BCD872001F5C3006F7C15 /* IMUIRecordVoiceHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIRecordVoiceHelper.swift; sourceTree = ""; }; - 626BCD882001F5C3006F7C15 /* IMUIInputView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIInputView.swift; sourceTree = ""; }; - 626BCD892001F5C3006F7C15 /* IMUIGalleryDataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIGalleryDataManager.swift; sourceTree = ""; }; - 626BCD8A2001F5C3006F7C15 /* IMUIInputView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIInputView.xib; sourceTree = ""; }; - 626BCD8C2001F5C3006F7C15 /* IMUICameraCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUICameraCell.swift; sourceTree = ""; }; - 626BCD8D2001F5C3006F7C15 /* IMUIFeatureListIconCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIFeatureListIconCell.swift; sourceTree = ""; }; - 626BCD8E2001F5C3006F7C15 /* IMUIFeatureListView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIFeatureListView.xib; sourceTree = ""; }; - 626BCD8F2001F5C3006F7C15 /* IMUICameraView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUICameraView.swift; sourceTree = ""; }; - 626BCD902001F5C3006F7C15 /* IMUIGalleryContainerCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIGalleryContainerCell.swift; sourceTree = ""; }; - 626BCD912001F5C3006F7C15 /* IMUIRecordVoiceCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIRecordVoiceCell.swift; sourceTree = ""; }; - 626BCD922001F5C3006F7C15 /* IMUIFeatureView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIFeatureView.xib; sourceTree = ""; }; - 626BCD932001F5C3006F7C15 /* IMUIProgressButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIProgressButton.swift; sourceTree = ""; }; - 626BCD942001F5C3006F7C15 /* IMUIFeatureView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIFeatureView.swift; sourceTree = ""; }; - 626BCD952001F5C3006F7C15 /* IMUIEmojiCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIEmojiCell.xib; sourceTree = ""; }; - 626BCD962001F5C3006F7C15 /* IMUICameraCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUICameraCell.xib; sourceTree = ""; }; - 626BCD972001F5C3006F7C15 /* IMUIEmojiCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIEmojiCell.swift; sourceTree = ""; }; - 626BCD982001F5C3006F7C15 /* IMUICameraView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUICameraView.xib; sourceTree = ""; }; - 626BCD992001F5C3006F7C15 /* IMUIGalleryContainerCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIGalleryContainerCell.xib; sourceTree = ""; }; - 626BCD9A2001F5C3006F7C15 /* IMUIPermissionDenyedView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIPermissionDenyedView.xib; sourceTree = ""; }; - 626BCD9B2001F5C3006F7C15 /* IMUIGalleryCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIGalleryCell.swift; sourceTree = ""; }; - 626BCD9C2001F5C3006F7C15 /* IMUIEmojiItemCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIEmojiItemCell.swift; sourceTree = ""; }; - 626BCD9D2001F5C3006F7C15 /* IMUIPermissionDenyedView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIPermissionDenyedView.swift; sourceTree = ""; }; - 626BCD9E2001F5C3006F7C15 /* IMUICameraPreviewView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUICameraPreviewView.swift; sourceTree = ""; }; - 626BCD9F2001F5C3006F7C15 /* IMUIEmojiItemCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIEmojiItemCell.xib; sourceTree = ""; }; - 626BCDA02001F5C3006F7C15 /* IMUIGalleryCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIGalleryCell.xib; sourceTree = ""; }; - 626BCDA12001F5C3006F7C15 /* IMUIPhotoCaptureDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIPhotoCaptureDelegate.swift; sourceTree = ""; }; - 626BCDA22001F5C3006F7C15 /* IMUIRecordVoiceCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIRecordVoiceCell.xib; sourceTree = ""; }; - 626BCDA32001F5C3006F7C15 /* IMUIFeatureListView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIFeatureListView.swift; sourceTree = ""; }; - 626BCDA42001F5C3006F7C15 /* IMUIFeatureListIconCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIFeatureListIconCell.xib; sourceTree = ""; }; - 626BCDA62001F5C3006F7C15 /* IMUIInputViewAssets.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = IMUIInputViewAssets.bundle; sourceTree = ""; }; - 626BCDA92001F5C4006F7C15 /* UIColorExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIColorExtension.swift; sourceTree = ""; }; - 626BCDAA2001F5C4006F7C15 /* CMSampleBufferExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CMSampleBufferExtension.swift; sourceTree = ""; }; - 626BCDAB2001F5C4006F7C15 /* CIImageExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CIImageExtension.swift; sourceTree = ""; }; - 626BCDAC2001F5C4006F7C15 /* UIViewExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIViewExtension.swift; sourceTree = ""; }; - 626BCDAD2001F5C4006F7C15 /* CGRectExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGRectExtension.swift; sourceTree = ""; }; - 626BCDAE2001F5C4006F7C15 /* StringExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringExtension.swift; sourceTree = ""; }; - 626BCDAF2001F5C4006F7C15 /* UIImageExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIImageExtension.swift; sourceTree = ""; }; - 626BCDB02001F5C4006F7C15 /* DateExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DateExtension.swift; sourceTree = ""; }; - 626BCDB22001F5C4006F7C15 /* IMUIAudioPlayerHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIAudioPlayerHelper.swift; sourceTree = ""; }; - 626BCDB42001F5C4006F7C15 /* IMUI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IMUI.h; sourceTree = ""; }; - 626BCDB62001F5C4006F7C15 /* BundleMessageListExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BundleMessageListExtension.swift; sourceTree = ""; }; - 626BCDB72001F5C4006F7C15 /* UIImageMessageListExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIImageMessageListExtension.swift; sourceTree = ""; }; - 626BCDB92001F5C4006F7C15 /* IMUIMessageCellLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageCellLayout.swift; sourceTree = ""; }; - 626BCDBB2001F5C4006F7C15 /* IMUIMessageModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageModel.swift; sourceTree = ""; }; - 626BCDBC2001F5C4006F7C15 /* IMUIViewCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIViewCache.swift; sourceTree = ""; }; - 626BCDBD2001F5C4006F7C15 /* IMUIReuseViewCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIReuseViewCache.swift; sourceTree = ""; }; - 626BCDBF2001F5C4006F7C15 /* IMUIMessageContentViewProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageContentViewProtocol.swift; sourceTree = ""; }; - 626BCDC02001F5C4006F7C15 /* IMUIMessageProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageProtocol.swift; sourceTree = ""; }; - 626BCDC12001F5C4006F7C15 /* IMUIUserProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIUserProtocol.swift; sourceTree = ""; }; - 626BCDC22001F5C4006F7C15 /* IMUIMessageMessageCollectionViewDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageMessageCollectionViewDelegate.swift; sourceTree = ""; }; - 626BCDC32001F5C4006F7C15 /* IMUIMessageCellProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageCellProtocol.swift; sourceTree = ""; }; - 626BCDC42001F5C4006F7C15 /* IMUIMessageStatusViewProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageStatusViewProtocol.swift; sourceTree = ""; }; - 626BCDC52001F5C4006F7C15 /* IMUIMessageModelProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageModelProtocol.swift; sourceTree = ""; }; - 626BCDC62001F5C4006F7C15 /* IMUIMessageCellLayoutProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageCellLayoutProtocol.swift; sourceTree = ""; }; - 626BCDC82001F5C4006F7C15 /* IMUIChatDataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIChatDataManager.swift; sourceTree = ""; }; - 626BCDC92001F5C4006F7C15 /* IMUIVideoFileLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIVideoFileLoader.swift; sourceTree = ""; }; - 626BCDCA2001F5C4006F7C15 /* IMUIChatLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIChatLayout.swift; sourceTree = ""; }; - 626BCDCC2001F5C4006F7C15 /* IMUIMessageStatusView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageStatusView.swift; sourceTree = ""; }; - 626BCDCD2001F5C4006F7C15 /* IMUIMessageCollectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageCollectionView.swift; sourceTree = ""; }; - 626BCDCE2001F5C4006F7C15 /* IMUIMessageBubbleView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageBubbleView.swift; sourceTree = ""; }; - 626BCDCF2001F5C4006F7C15 /* IMUITextView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUITextView.swift; sourceTree = ""; }; - 626BCDD02001F5C4006F7C15 /* CIImageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CIImageView.swift; sourceTree = ""; }; - 626BCDD12001F5C4006F7C15 /* IMUIVoiceMessageContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIVoiceMessageContentView.swift; sourceTree = ""; }; - 626BCDD22001F5C4006F7C15 /* IMUITextMessageContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUITextMessageContentView.swift; sourceTree = ""; }; - 626BCDD32001F5C4006F7C15 /* IMUIMessageCollectionView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIMessageCollectionView.xib; sourceTree = ""; }; - 626BCDD42001F5C4006F7C15 /* IMUIVideoMessageContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIVideoMessageContentView.swift; sourceTree = ""; }; - 626BCDD52001F5C4006F7C15 /* IMUIBaseMessageCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIBaseMessageCell.swift; sourceTree = ""; }; - 626BCDD62001F5C4006F7C15 /* IMUIImageMessageContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIImageMessageContentView.swift; sourceTree = ""; }; - 626BCDD82001F5C4006F7C15 /* IMUIAssets.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = IMUIAssets.bundle; sourceTree = ""; }; 6298E7F11FB40D3400E53CAF /* IMUICustomMessageContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUICustomMessageContentView.swift; sourceTree = ""; }; 62B0CB33204E41C100D87F94 /* RCTAuroraIMUIFileManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTAuroraIMUIFileManager.m; sourceTree = ""; }; 62B0CB34204E41C100D87F94 /* RCTAuroraIMUIFileManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTAuroraIMUIFileManager.h; sourceTree = ""; }; + 62B0CB7F204FC52C00D87F94 /* IMUIInputViewDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIInputViewDelegate.swift; sourceTree = ""; }; + 62B0CB81204FC52C00D87F94 /* BundleInputViewExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BundleInputViewExtension.swift; sourceTree = ""; }; + 62B0CB83204FC52C00D87F94 /* IMUIFeatureIconModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIFeatureIconModel.swift; sourceTree = ""; }; + 62B0CB84204FC52C00D87F94 /* IMUIEmojiModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIEmojiModel.swift; sourceTree = ""; }; + 62B0CB86204FC52C00D87F94 /* IMUIRecordVoiceHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIRecordVoiceHelper.swift; sourceTree = ""; }; + 62B0CB87204FC52C00D87F94 /* IMUIInputView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIInputView.swift; sourceTree = ""; }; + 62B0CB88204FC52C00D87F94 /* IMUIGalleryDataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIGalleryDataManager.swift; sourceTree = ""; }; + 62B0CB89204FC52C00D87F94 /* IMUIInputView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIInputView.xib; sourceTree = ""; }; + 62B0CB8B204FC52C00D87F94 /* IMUICameraCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUICameraCell.swift; sourceTree = ""; }; + 62B0CB8C204FC52C00D87F94 /* IMUIFeatureListIconCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIFeatureListIconCell.swift; sourceTree = ""; }; + 62B0CB8D204FC52C00D87F94 /* IMUIFeatureListView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIFeatureListView.xib; sourceTree = ""; }; + 62B0CB8E204FC52C00D87F94 /* IMUICameraView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUICameraView.swift; sourceTree = ""; }; + 62B0CB8F204FC52C00D87F94 /* IMUIHidenStatusViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIHidenStatusViewController.swift; sourceTree = ""; }; + 62B0CB90204FC52C00D87F94 /* IMUIGalleryContainerCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIGalleryContainerCell.swift; sourceTree = ""; }; + 62B0CB91204FC52C00D87F94 /* IMUIRecordVoiceCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIRecordVoiceCell.swift; sourceTree = ""; }; + 62B0CB92204FC52C00D87F94 /* IMUIFeatureView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIFeatureView.xib; sourceTree = ""; }; + 62B0CB93204FC52C00D87F94 /* IMUIProgressButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIProgressButton.swift; sourceTree = ""; }; + 62B0CB94204FC52C00D87F94 /* IMUIFeatureView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIFeatureView.swift; sourceTree = ""; }; + 62B0CB95204FC52C00D87F94 /* IMUIEmojiCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIEmojiCell.xib; sourceTree = ""; }; + 62B0CB96204FC52C00D87F94 /* IMUICameraCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUICameraCell.xib; sourceTree = ""; }; + 62B0CB97204FC52C00D87F94 /* IMUIEmojiCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIEmojiCell.swift; sourceTree = ""; }; + 62B0CB98204FC52C00D87F94 /* IMUICameraView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUICameraView.xib; sourceTree = ""; }; + 62B0CB99204FC52C00D87F94 /* IMUIGalleryContainerCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIGalleryContainerCell.xib; sourceTree = ""; }; + 62B0CB9A204FC52C00D87F94 /* IMUIPermissionDenyedView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIPermissionDenyedView.xib; sourceTree = ""; }; + 62B0CB9B204FC52C00D87F94 /* IMUIGalleryCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIGalleryCell.swift; sourceTree = ""; }; + 62B0CB9C204FC52C00D87F94 /* IMUIEmojiItemCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIEmojiItemCell.swift; sourceTree = ""; }; + 62B0CB9D204FC52C00D87F94 /* IMUIPermissionDenyedView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIPermissionDenyedView.swift; sourceTree = ""; }; + 62B0CB9E204FC52C00D87F94 /* IMUICameraPreviewView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUICameraPreviewView.swift; sourceTree = ""; }; + 62B0CB9F204FC52C00D87F94 /* IMUIEmojiItemCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIEmojiItemCell.xib; sourceTree = ""; }; + 62B0CBA0204FC52C00D87F94 /* IMUIGalleryCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIGalleryCell.xib; sourceTree = ""; }; + 62B0CBA1204FC52C00D87F94 /* IMUIPhotoCaptureDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIPhotoCaptureDelegate.swift; sourceTree = ""; }; + 62B0CBA2204FC52C00D87F94 /* IMUIRecordVoiceCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIRecordVoiceCell.xib; sourceTree = ""; }; + 62B0CBA3204FC52C00D87F94 /* IMUIFeatureListView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIFeatureListView.swift; sourceTree = ""; }; + 62B0CBA4204FC52C00D87F94 /* IMUIFeatureListIconCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIFeatureListIconCell.xib; sourceTree = ""; }; + 62B0CBA6204FC52C00D87F94 /* IMUIInputViewAssets.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = IMUIInputViewAssets.bundle; sourceTree = ""; }; + 62B0CBA9204FC52C00D87F94 /* UIColorExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIColorExtension.swift; sourceTree = ""; }; + 62B0CBAA204FC52C00D87F94 /* CMSampleBufferExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CMSampleBufferExtension.swift; sourceTree = ""; }; + 62B0CBAB204FC52C00D87F94 /* CIImageExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CIImageExtension.swift; sourceTree = ""; }; + 62B0CBAC204FC52C00D87F94 /* UIViewExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIViewExtension.swift; sourceTree = ""; }; + 62B0CBAD204FC52C00D87F94 /* CGRectExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGRectExtension.swift; sourceTree = ""; }; + 62B0CBAE204FC52C00D87F94 /* StringExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringExtension.swift; sourceTree = ""; }; + 62B0CBAF204FC52C00D87F94 /* UIImageExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIImageExtension.swift; sourceTree = ""; }; + 62B0CBB0204FC52C00D87F94 /* DateExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DateExtension.swift; sourceTree = ""; }; + 62B0CBB2204FC52C00D87F94 /* IMUIAudioPlayerHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIAudioPlayerHelper.swift; sourceTree = ""; }; + 62B0CBB4204FC52C00D87F94 /* IMUI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IMUI.h; sourceTree = ""; }; + 62B0CBB6204FC52C00D87F94 /* BundleMessageListExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BundleMessageListExtension.swift; sourceTree = ""; }; + 62B0CBB7204FC52C00D87F94 /* UIImageMessageListExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIImageMessageListExtension.swift; sourceTree = ""; }; + 62B0CBB9204FC52C00D87F94 /* IMUIMessageCellLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageCellLayout.swift; sourceTree = ""; }; + 62B0CBBB204FC52C00D87F94 /* IMUIMessageModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageModel.swift; sourceTree = ""; }; + 62B0CBBC204FC52C00D87F94 /* IMUIViewCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIViewCache.swift; sourceTree = ""; }; + 62B0CBBD204FC52C00D87F94 /* IMUIReuseViewCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIReuseViewCache.swift; sourceTree = ""; }; + 62B0CBBF204FC52C00D87F94 /* IMUIMessageContentViewProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageContentViewProtocol.swift; sourceTree = ""; }; + 62B0CBC0204FC52C00D87F94 /* IMUIMessageProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageProtocol.swift; sourceTree = ""; }; + 62B0CBC1204FC52C00D87F94 /* IMUIUserProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIUserProtocol.swift; sourceTree = ""; }; + 62B0CBC2204FC52C00D87F94 /* IMUIMessageMessageCollectionViewDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageMessageCollectionViewDelegate.swift; sourceTree = ""; }; + 62B0CBC3204FC52C00D87F94 /* IMUIMessageCellProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageCellProtocol.swift; sourceTree = ""; }; + 62B0CBC4204FC52C00D87F94 /* IMUIMessageStatusViewProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageStatusViewProtocol.swift; sourceTree = ""; }; + 62B0CBC5204FC52C00D87F94 /* IMUIMessageModelProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageModelProtocol.swift; sourceTree = ""; }; + 62B0CBC6204FC52C00D87F94 /* IMUIMessageCellLayoutProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageCellLayoutProtocol.swift; sourceTree = ""; }; + 62B0CBC8204FC52C00D87F94 /* IMUIChatDataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIChatDataManager.swift; sourceTree = ""; }; + 62B0CBC9204FC52C00D87F94 /* IMUIVideoFileLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIVideoFileLoader.swift; sourceTree = ""; }; + 62B0CBCA204FC52C00D87F94 /* IMUIChatLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIChatLayout.swift; sourceTree = ""; }; + 62B0CBCC204FC52C00D87F94 /* IMUIMessageStatusView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageStatusView.swift; sourceTree = ""; }; + 62B0CBCD204FC52C00D87F94 /* IMUIMessageCollectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageCollectionView.swift; sourceTree = ""; }; + 62B0CBCE204FC52C00D87F94 /* IMUIMessageBubbleView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIMessageBubbleView.swift; sourceTree = ""; }; + 62B0CBCF204FC52C00D87F94 /* IMUITextView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUITextView.swift; sourceTree = ""; }; + 62B0CBD0204FC52C00D87F94 /* CIImageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CIImageView.swift; sourceTree = ""; }; + 62B0CBD1204FC52C00D87F94 /* IMUIVoiceMessageContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIVoiceMessageContentView.swift; sourceTree = ""; }; + 62B0CBD2204FC52C00D87F94 /* IMUITextMessageContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUITextMessageContentView.swift; sourceTree = ""; }; + 62B0CBD3204FC52C00D87F94 /* IMUIMessageCollectionView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIMessageCollectionView.xib; sourceTree = ""; }; + 62B0CBD4204FC52C00D87F94 /* IMUIVideoMessageContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIVideoMessageContentView.swift; sourceTree = ""; }; + 62B0CBD5204FC52C00D87F94 /* IMUIBaseMessageCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIBaseMessageCell.swift; sourceTree = ""; }; + 62B0CBD6204FC52C00D87F94 /* IMUIImageMessageContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IMUIImageMessageContentView.swift; sourceTree = ""; }; + 62B0CBD8204FC52C00D87F94 /* IMUIAssets.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = IMUIAssets.bundle; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -303,9 +305,9 @@ 623EA99A1EE55D0800EC43AE /* RCTAuroraIMUI */ = { isa = PBXGroup; children = ( - 626BCDA72001F5C4006F7C15 /* IMUICommon */, - 626BCD7E2001F5C3006F7C15 /* IMUIInputView */, - 626BCDB32001F5C4006F7C15 /* IMUIMessageCollectionView */, + 62B0CBA7204FC52C00D87F94 /* IMUICommon */, + 62B0CB7D204FC52C00D87F94 /* IMUIInputView */, + 62B0CBB3204FC52C00D87F94 /* IMUIMessageCollectionView */, 623EA99B1EE55D0800EC43AE /* RCTAuroraIMUI.h */, 623EA99C1EE55D0800EC43AE /* Info.plist */, ); @@ -341,219 +343,220 @@ name = Products; sourceTree = ""; }; - 626BCD7E2001F5C3006F7C15 /* IMUIInputView */ = { + 62B0CB7D204FC52C00D87F94 /* IMUIInputView */ = { isa = PBXGroup; children = ( - 626BCD7F2001F5C3006F7C15 /* Protocal */, - 626BCD812001F5C3006F7C15 /* Extension */, - 626BCD832001F5C3006F7C15 /* Models */, - 626BCD862001F5C3006F7C15 /* Controllers */, - 626BCD8B2001F5C3006F7C15 /* Views */, - 626BCDA52001F5C3006F7C15 /* Assets */, + 62B0CB7E204FC52C00D87F94 /* Protocal */, + 62B0CB80204FC52C00D87F94 /* Extension */, + 62B0CB82204FC52C00D87F94 /* Models */, + 62B0CB85204FC52C00D87F94 /* Controllers */, + 62B0CB8A204FC52C00D87F94 /* Views */, + 62B0CBA5204FC52C00D87F94 /* Assets */, ); name = IMUIInputView; path = ../../../iOS/IMUIInputView; sourceTree = ""; }; - 626BCD7F2001F5C3006F7C15 /* Protocal */ = { + 62B0CB7E204FC52C00D87F94 /* Protocal */ = { isa = PBXGroup; children = ( - 626BCD802001F5C3006F7C15 /* IMUIInputViewDelegate.swift */, + 62B0CB7F204FC52C00D87F94 /* IMUIInputViewDelegate.swift */, ); path = Protocal; sourceTree = ""; }; - 626BCD812001F5C3006F7C15 /* Extension */ = { + 62B0CB80204FC52C00D87F94 /* Extension */ = { isa = PBXGroup; children = ( - 626BCD822001F5C3006F7C15 /* BundleInputViewExtension.swift */, + 62B0CB81204FC52C00D87F94 /* BundleInputViewExtension.swift */, ); path = Extension; sourceTree = ""; }; - 626BCD832001F5C3006F7C15 /* Models */ = { + 62B0CB82204FC52C00D87F94 /* Models */ = { isa = PBXGroup; children = ( - 626BCD842001F5C3006F7C15 /* IMUIFeatureIconModel.swift */, - 626BCD852001F5C3006F7C15 /* IMUIEmojiModel.swift */, + 62B0CB83204FC52C00D87F94 /* IMUIFeatureIconModel.swift */, + 62B0CB84204FC52C00D87F94 /* IMUIEmojiModel.swift */, ); path = Models; sourceTree = ""; }; - 626BCD862001F5C3006F7C15 /* Controllers */ = { + 62B0CB85204FC52C00D87F94 /* Controllers */ = { isa = PBXGroup; children = ( - 626BCD872001F5C3006F7C15 /* IMUIRecordVoiceHelper.swift */, - 626BCD882001F5C3006F7C15 /* IMUIInputView.swift */, - 626BCD892001F5C3006F7C15 /* IMUIGalleryDataManager.swift */, - 626BCD8A2001F5C3006F7C15 /* IMUIInputView.xib */, + 62B0CB86204FC52C00D87F94 /* IMUIRecordVoiceHelper.swift */, + 62B0CB87204FC52C00D87F94 /* IMUIInputView.swift */, + 62B0CB88204FC52C00D87F94 /* IMUIGalleryDataManager.swift */, + 62B0CB89204FC52C00D87F94 /* IMUIInputView.xib */, ); path = Controllers; sourceTree = ""; }; - 626BCD8B2001F5C3006F7C15 /* Views */ = { + 62B0CB8A204FC52C00D87F94 /* Views */ = { isa = PBXGroup; children = ( - 626BCD8C2001F5C3006F7C15 /* IMUICameraCell.swift */, - 626BCD8D2001F5C3006F7C15 /* IMUIFeatureListIconCell.swift */, - 626BCD8E2001F5C3006F7C15 /* IMUIFeatureListView.xib */, - 626BCD8F2001F5C3006F7C15 /* IMUICameraView.swift */, - 626BCD902001F5C3006F7C15 /* IMUIGalleryContainerCell.swift */, - 626BCD912001F5C3006F7C15 /* IMUIRecordVoiceCell.swift */, - 626BCD922001F5C3006F7C15 /* IMUIFeatureView.xib */, - 626BCD932001F5C3006F7C15 /* IMUIProgressButton.swift */, - 626BCD942001F5C3006F7C15 /* IMUIFeatureView.swift */, - 626BCD952001F5C3006F7C15 /* IMUIEmojiCell.xib */, - 626BCD962001F5C3006F7C15 /* IMUICameraCell.xib */, - 626BCD972001F5C3006F7C15 /* IMUIEmojiCell.swift */, - 626BCD982001F5C3006F7C15 /* IMUICameraView.xib */, - 626BCD992001F5C3006F7C15 /* IMUIGalleryContainerCell.xib */, - 626BCD9A2001F5C3006F7C15 /* IMUIPermissionDenyedView.xib */, - 626BCD9B2001F5C3006F7C15 /* IMUIGalleryCell.swift */, - 626BCD9C2001F5C3006F7C15 /* IMUIEmojiItemCell.swift */, - 626BCD9D2001F5C3006F7C15 /* IMUIPermissionDenyedView.swift */, - 626BCD9E2001F5C3006F7C15 /* IMUICameraPreviewView.swift */, - 626BCD9F2001F5C3006F7C15 /* IMUIEmojiItemCell.xib */, - 626BCDA02001F5C3006F7C15 /* IMUIGalleryCell.xib */, - 626BCDA12001F5C3006F7C15 /* IMUIPhotoCaptureDelegate.swift */, - 626BCDA22001F5C3006F7C15 /* IMUIRecordVoiceCell.xib */, - 626BCDA32001F5C3006F7C15 /* IMUIFeatureListView.swift */, - 626BCDA42001F5C3006F7C15 /* IMUIFeatureListIconCell.xib */, + 62B0CB8B204FC52C00D87F94 /* IMUICameraCell.swift */, + 62B0CB8C204FC52C00D87F94 /* IMUIFeatureListIconCell.swift */, + 62B0CB8D204FC52C00D87F94 /* IMUIFeatureListView.xib */, + 62B0CB8E204FC52C00D87F94 /* IMUICameraView.swift */, + 62B0CB8F204FC52C00D87F94 /* IMUIHidenStatusViewController.swift */, + 62B0CB90204FC52C00D87F94 /* IMUIGalleryContainerCell.swift */, + 62B0CB91204FC52C00D87F94 /* IMUIRecordVoiceCell.swift */, + 62B0CB92204FC52C00D87F94 /* IMUIFeatureView.xib */, + 62B0CB93204FC52C00D87F94 /* IMUIProgressButton.swift */, + 62B0CB94204FC52C00D87F94 /* IMUIFeatureView.swift */, + 62B0CB95204FC52C00D87F94 /* IMUIEmojiCell.xib */, + 62B0CB96204FC52C00D87F94 /* IMUICameraCell.xib */, + 62B0CB97204FC52C00D87F94 /* IMUIEmojiCell.swift */, + 62B0CB98204FC52C00D87F94 /* IMUICameraView.xib */, + 62B0CB99204FC52C00D87F94 /* IMUIGalleryContainerCell.xib */, + 62B0CB9A204FC52C00D87F94 /* IMUIPermissionDenyedView.xib */, + 62B0CB9B204FC52C00D87F94 /* IMUIGalleryCell.swift */, + 62B0CB9C204FC52C00D87F94 /* IMUIEmojiItemCell.swift */, + 62B0CB9D204FC52C00D87F94 /* IMUIPermissionDenyedView.swift */, + 62B0CB9E204FC52C00D87F94 /* IMUICameraPreviewView.swift */, + 62B0CB9F204FC52C00D87F94 /* IMUIEmojiItemCell.xib */, + 62B0CBA0204FC52C00D87F94 /* IMUIGalleryCell.xib */, + 62B0CBA1204FC52C00D87F94 /* IMUIPhotoCaptureDelegate.swift */, + 62B0CBA2204FC52C00D87F94 /* IMUIRecordVoiceCell.xib */, + 62B0CBA3204FC52C00D87F94 /* IMUIFeatureListView.swift */, + 62B0CBA4204FC52C00D87F94 /* IMUIFeatureListIconCell.xib */, ); path = Views; sourceTree = ""; }; - 626BCDA52001F5C3006F7C15 /* Assets */ = { + 62B0CBA5204FC52C00D87F94 /* Assets */ = { isa = PBXGroup; children = ( - 626BCDA62001F5C3006F7C15 /* IMUIInputViewAssets.bundle */, + 62B0CBA6204FC52C00D87F94 /* IMUIInputViewAssets.bundle */, ); path = Assets; sourceTree = ""; }; - 626BCDA72001F5C4006F7C15 /* IMUICommon */ = { + 62B0CBA7204FC52C00D87F94 /* IMUICommon */ = { isa = PBXGroup; children = ( - 626BCDA82001F5C4006F7C15 /* Extension */, - 626BCDB12001F5C4006F7C15 /* Controllers */, + 62B0CBA8204FC52C00D87F94 /* Extension */, + 62B0CBB1204FC52C00D87F94 /* Controllers */, ); name = IMUICommon; path = ../../../iOS/IMUICommon; sourceTree = ""; }; - 626BCDA82001F5C4006F7C15 /* Extension */ = { + 62B0CBA8204FC52C00D87F94 /* Extension */ = { isa = PBXGroup; children = ( - 626BCDA92001F5C4006F7C15 /* UIColorExtension.swift */, - 626BCDAA2001F5C4006F7C15 /* CMSampleBufferExtension.swift */, - 626BCDAB2001F5C4006F7C15 /* CIImageExtension.swift */, - 626BCDAC2001F5C4006F7C15 /* UIViewExtension.swift */, - 626BCDAD2001F5C4006F7C15 /* CGRectExtension.swift */, - 626BCDAE2001F5C4006F7C15 /* StringExtension.swift */, - 626BCDAF2001F5C4006F7C15 /* UIImageExtension.swift */, - 626BCDB02001F5C4006F7C15 /* DateExtension.swift */, + 62B0CBA9204FC52C00D87F94 /* UIColorExtension.swift */, + 62B0CBAA204FC52C00D87F94 /* CMSampleBufferExtension.swift */, + 62B0CBAB204FC52C00D87F94 /* CIImageExtension.swift */, + 62B0CBAC204FC52C00D87F94 /* UIViewExtension.swift */, + 62B0CBAD204FC52C00D87F94 /* CGRectExtension.swift */, + 62B0CBAE204FC52C00D87F94 /* StringExtension.swift */, + 62B0CBAF204FC52C00D87F94 /* UIImageExtension.swift */, + 62B0CBB0204FC52C00D87F94 /* DateExtension.swift */, ); path = Extension; sourceTree = ""; }; - 626BCDB12001F5C4006F7C15 /* Controllers */ = { + 62B0CBB1204FC52C00D87F94 /* Controllers */ = { isa = PBXGroup; children = ( - 626BCDB22001F5C4006F7C15 /* IMUIAudioPlayerHelper.swift */, + 62B0CBB2204FC52C00D87F94 /* IMUIAudioPlayerHelper.swift */, ); path = Controllers; sourceTree = ""; }; - 626BCDB32001F5C4006F7C15 /* IMUIMessageCollectionView */ = { + 62B0CBB3204FC52C00D87F94 /* IMUIMessageCollectionView */ = { isa = PBXGroup; children = ( - 626BCDB42001F5C4006F7C15 /* IMUI.h */, - 626BCDB52001F5C4006F7C15 /* Extension */, - 626BCDB82001F5C4006F7C15 /* Layout */, - 626BCDBA2001F5C4006F7C15 /* Models */, - 626BCDBE2001F5C4006F7C15 /* Protocol */, - 626BCDC72001F5C4006F7C15 /* Controllers */, - 626BCDCB2001F5C4006F7C15 /* Views */, - 626BCDD72001F5C4006F7C15 /* Assets */, + 62B0CBB4204FC52C00D87F94 /* IMUI.h */, + 62B0CBB5204FC52C00D87F94 /* Extension */, + 62B0CBB8204FC52C00D87F94 /* Layout */, + 62B0CBBA204FC52C00D87F94 /* Models */, + 62B0CBBE204FC52C00D87F94 /* Protocol */, + 62B0CBC7204FC52C00D87F94 /* Controllers */, + 62B0CBCB204FC52C00D87F94 /* Views */, + 62B0CBD7204FC52C00D87F94 /* Assets */, ); name = IMUIMessageCollectionView; path = ../../../iOS/IMUIMessageCollectionView; sourceTree = ""; }; - 626BCDB52001F5C4006F7C15 /* Extension */ = { + 62B0CBB5204FC52C00D87F94 /* Extension */ = { isa = PBXGroup; children = ( - 626BCDB62001F5C4006F7C15 /* BundleMessageListExtension.swift */, - 626BCDB72001F5C4006F7C15 /* UIImageMessageListExtension.swift */, + 62B0CBB6204FC52C00D87F94 /* BundleMessageListExtension.swift */, + 62B0CBB7204FC52C00D87F94 /* UIImageMessageListExtension.swift */, ); path = Extension; sourceTree = ""; }; - 626BCDB82001F5C4006F7C15 /* Layout */ = { + 62B0CBB8204FC52C00D87F94 /* Layout */ = { isa = PBXGroup; children = ( - 626BCDB92001F5C4006F7C15 /* IMUIMessageCellLayout.swift */, + 62B0CBB9204FC52C00D87F94 /* IMUIMessageCellLayout.swift */, ); path = Layout; sourceTree = ""; }; - 626BCDBA2001F5C4006F7C15 /* Models */ = { + 62B0CBBA204FC52C00D87F94 /* Models */ = { isa = PBXGroup; children = ( - 626BCDBB2001F5C4006F7C15 /* IMUIMessageModel.swift */, - 626BCDBC2001F5C4006F7C15 /* IMUIViewCache.swift */, - 626BCDBD2001F5C4006F7C15 /* IMUIReuseViewCache.swift */, + 62B0CBBB204FC52C00D87F94 /* IMUIMessageModel.swift */, + 62B0CBBC204FC52C00D87F94 /* IMUIViewCache.swift */, + 62B0CBBD204FC52C00D87F94 /* IMUIReuseViewCache.swift */, ); path = Models; sourceTree = ""; }; - 626BCDBE2001F5C4006F7C15 /* Protocol */ = { + 62B0CBBE204FC52C00D87F94 /* Protocol */ = { isa = PBXGroup; children = ( - 626BCDBF2001F5C4006F7C15 /* IMUIMessageContentViewProtocol.swift */, - 626BCDC02001F5C4006F7C15 /* IMUIMessageProtocol.swift */, - 626BCDC12001F5C4006F7C15 /* IMUIUserProtocol.swift */, - 626BCDC22001F5C4006F7C15 /* IMUIMessageMessageCollectionViewDelegate.swift */, - 626BCDC32001F5C4006F7C15 /* IMUIMessageCellProtocol.swift */, - 626BCDC42001F5C4006F7C15 /* IMUIMessageStatusViewProtocol.swift */, - 626BCDC52001F5C4006F7C15 /* IMUIMessageModelProtocol.swift */, - 626BCDC62001F5C4006F7C15 /* IMUIMessageCellLayoutProtocol.swift */, + 62B0CBBF204FC52C00D87F94 /* IMUIMessageContentViewProtocol.swift */, + 62B0CBC0204FC52C00D87F94 /* IMUIMessageProtocol.swift */, + 62B0CBC1204FC52C00D87F94 /* IMUIUserProtocol.swift */, + 62B0CBC2204FC52C00D87F94 /* IMUIMessageMessageCollectionViewDelegate.swift */, + 62B0CBC3204FC52C00D87F94 /* IMUIMessageCellProtocol.swift */, + 62B0CBC4204FC52C00D87F94 /* IMUIMessageStatusViewProtocol.swift */, + 62B0CBC5204FC52C00D87F94 /* IMUIMessageModelProtocol.swift */, + 62B0CBC6204FC52C00D87F94 /* IMUIMessageCellLayoutProtocol.swift */, ); path = Protocol; sourceTree = ""; }; - 626BCDC72001F5C4006F7C15 /* Controllers */ = { + 62B0CBC7204FC52C00D87F94 /* Controllers */ = { isa = PBXGroup; children = ( - 626BCDC82001F5C4006F7C15 /* IMUIChatDataManager.swift */, - 626BCDC92001F5C4006F7C15 /* IMUIVideoFileLoader.swift */, - 626BCDCA2001F5C4006F7C15 /* IMUIChatLayout.swift */, + 62B0CBC8204FC52C00D87F94 /* IMUIChatDataManager.swift */, + 62B0CBC9204FC52C00D87F94 /* IMUIVideoFileLoader.swift */, + 62B0CBCA204FC52C00D87F94 /* IMUIChatLayout.swift */, ); path = Controllers; sourceTree = ""; }; - 626BCDCB2001F5C4006F7C15 /* Views */ = { + 62B0CBCB204FC52C00D87F94 /* Views */ = { isa = PBXGroup; children = ( - 626BCDCC2001F5C4006F7C15 /* IMUIMessageStatusView.swift */, - 626BCDCD2001F5C4006F7C15 /* IMUIMessageCollectionView.swift */, - 626BCDCE2001F5C4006F7C15 /* IMUIMessageBubbleView.swift */, - 626BCDCF2001F5C4006F7C15 /* IMUITextView.swift */, - 626BCDD02001F5C4006F7C15 /* CIImageView.swift */, - 626BCDD12001F5C4006F7C15 /* IMUIVoiceMessageContentView.swift */, - 626BCDD22001F5C4006F7C15 /* IMUITextMessageContentView.swift */, - 626BCDD32001F5C4006F7C15 /* IMUIMessageCollectionView.xib */, - 626BCDD42001F5C4006F7C15 /* IMUIVideoMessageContentView.swift */, - 626BCDD52001F5C4006F7C15 /* IMUIBaseMessageCell.swift */, - 626BCDD62001F5C4006F7C15 /* IMUIImageMessageContentView.swift */, + 62B0CBCC204FC52C00D87F94 /* IMUIMessageStatusView.swift */, + 62B0CBCD204FC52C00D87F94 /* IMUIMessageCollectionView.swift */, + 62B0CBCE204FC52C00D87F94 /* IMUIMessageBubbleView.swift */, + 62B0CBCF204FC52C00D87F94 /* IMUITextView.swift */, + 62B0CBD0204FC52C00D87F94 /* CIImageView.swift */, + 62B0CBD1204FC52C00D87F94 /* IMUIVoiceMessageContentView.swift */, + 62B0CBD2204FC52C00D87F94 /* IMUITextMessageContentView.swift */, + 62B0CBD3204FC52C00D87F94 /* IMUIMessageCollectionView.xib */, + 62B0CBD4204FC52C00D87F94 /* IMUIVideoMessageContentView.swift */, + 62B0CBD5204FC52C00D87F94 /* IMUIBaseMessageCell.swift */, + 62B0CBD6204FC52C00D87F94 /* IMUIImageMessageContentView.swift */, ); path = Views; sourceTree = ""; }; - 626BCDD72001F5C4006F7C15 /* Assets */ = { + 62B0CBD7204FC52C00D87F94 /* Assets */ = { isa = PBXGroup; children = ( - 626BCDD82001F5C4006F7C15 /* IMUIAssets.bundle */, + 62B0CBD8204FC52C00D87F94 /* IMUIAssets.bundle */, ); path = Assets; sourceTree = ""; @@ -565,8 +568,8 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 626BCE042001F5C4006F7C15 /* IMUI.h in Headers */, 623EA9A91EE55D0800EC43AE /* RCTAuroraIMUI.h in Headers */, + 62B0CC05204FC52C00D87F94 /* IMUI.h in Headers */, 62B0CB36204E41C100D87F94 /* RCTAuroraIMUIFileManager.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -678,23 +681,23 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 626BCDF52001F5C4006F7C15 /* IMUIGalleryCell.xib in Resources */, - 626BCDE02001F5C4006F7C15 /* IMUIInputView.xib in Resources */, + 62B0CBF6204FC52C00D87F94 /* IMUIGalleryCell.xib in Resources */, + 62B0CBE0204FC52C00D87F94 /* IMUIInputView.xib in Resources */, 624B82DA1EE57482006C3C03 /* RCTInputView.xib in Resources */, - 626BCDEA2001F5C4006F7C15 /* IMUIEmojiCell.xib in Resources */, - 626BCDF72001F5C4006F7C15 /* IMUIRecordVoiceCell.xib in Resources */, - 626BCDED2001F5C4006F7C15 /* IMUICameraView.xib in Resources */, - 626BCDE72001F5C4006F7C15 /* IMUIFeatureView.xib in Resources */, + 62B0CBEB204FC52C00D87F94 /* IMUIEmojiCell.xib in Resources */, + 62B0CBF8204FC52C00D87F94 /* IMUIRecordVoiceCell.xib in Resources */, + 62B0CBEE204FC52C00D87F94 /* IMUICameraView.xib in Resources */, + 62B0CBE8204FC52C00D87F94 /* IMUIFeatureView.xib in Resources */, 624B82DB1EE57482006C3C03 /* RCTMessageListView.xib in Resources */, - 626BCDF42001F5C4006F7C15 /* IMUIEmojiItemCell.xib in Resources */, - 626BCDF92001F5C4006F7C15 /* IMUIFeatureListIconCell.xib in Resources */, - 626BCDE32001F5C4006F7C15 /* IMUIFeatureListView.xib in Resources */, - 626BCDFA2001F5C4006F7C15 /* IMUIInputViewAssets.bundle in Resources */, - 626BCDEE2001F5C4006F7C15 /* IMUIGalleryContainerCell.xib in Resources */, - 626BCDEF2001F5C4006F7C15 /* IMUIPermissionDenyedView.xib in Resources */, - 626BCE1D2001F5C4006F7C15 /* IMUIMessageCollectionView.xib in Resources */, - 626BCE212001F5C4006F7C15 /* IMUIAssets.bundle in Resources */, - 626BCDEB2001F5C4006F7C15 /* IMUICameraCell.xib in Resources */, + 62B0CBF5204FC52C00D87F94 /* IMUIEmojiItemCell.xib in Resources */, + 62B0CBFA204FC52C00D87F94 /* IMUIFeatureListIconCell.xib in Resources */, + 62B0CBE3204FC52C00D87F94 /* IMUIFeatureListView.xib in Resources */, + 62B0CBFB204FC52C00D87F94 /* IMUIInputViewAssets.bundle in Resources */, + 62B0CBEF204FC52C00D87F94 /* IMUIGalleryContainerCell.xib in Resources */, + 62B0CBF0204FC52C00D87F94 /* IMUIPermissionDenyedView.xib in Resources */, + 62B0CC1E204FC52C00D87F94 /* IMUIMessageCollectionView.xib in Resources */, + 62B0CC22204FC52C00D87F94 /* IMUIAssets.bundle in Resources */, + 62B0CBEC204FC52C00D87F94 /* IMUICameraCell.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -723,82 +726,83 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 626BCE022001F5C4006F7C15 /* DateExtension.swift in Sources */, - 626BCE062001F5C4006F7C15 /* UIImageMessageListExtension.swift in Sources */, - 626BCE112001F5C4006F7C15 /* IMUIMessageModelProtocol.swift in Sources */, + 62B0CC08204FC52C00D87F94 /* IMUIMessageCellLayout.swift in Sources */, + 62B0CC0D204FC52C00D87F94 /* IMUIMessageProtocol.swift in Sources */, + 62B0CC15204FC52C00D87F94 /* IMUIVideoFileLoader.swift in Sources */, + 62B0CBD9204FC52C00D87F94 /* IMUIInputViewDelegate.swift in Sources */, + 62B0CC0C204FC52C00D87F94 /* IMUIMessageContentViewProtocol.swift in Sources */, + 62B0CC0B204FC52C00D87F94 /* IMUIReuseViewCache.swift in Sources */, + 62B0CC1B204FC52C00D87F94 /* CIImageView.swift in Sources */, 624B828D1EE5710E006C3C03 /* imuiDemo-Bridging-Header.h in Sources */, - 626BCDF32001F5C4006F7C15 /* IMUICameraPreviewView.swift in Sources */, - 626BCDD92001F5C4006F7C15 /* IMUIInputViewDelegate.swift in Sources */, + 62B0CC20204FC52C00D87F94 /* IMUIBaseMessageCell.swift in Sources */, + 62B0CC16204FC52C00D87F94 /* IMUIChatLayout.swift in Sources */, + 62B0CBF2204FC52C00D87F94 /* IMUIEmojiItemCell.swift in Sources */, + 62B0CC18204FC52C00D87F94 /* IMUIMessageCollectionView.swift in Sources */, + 62B0CC00204FC52C00D87F94 /* CGRectExtension.swift in Sources */, 624B828E1EE5710E006C3C03 /* IMUIInputViewManager.m in Sources */, - 626BCE0B2001F5C4006F7C15 /* IMUIMessageContentViewProtocol.swift in Sources */, - 626BCE172001F5C4006F7C15 /* IMUIMessageCollectionView.swift in Sources */, - 626BCDDA2001F5C4006F7C15 /* BundleInputViewExtension.swift in Sources */, - 626BCE052001F5C4006F7C15 /* BundleMessageListExtension.swift in Sources */, + 62B0CC01204FC52C00D87F94 /* StringExtension.swift in Sources */, 624B82901EE5710E006C3C03 /* MyMessageModel.swift in Sources */, - 626BCDDE2001F5C4006F7C15 /* IMUIInputView.swift in Sources */, + 62B0CBDF204FC52C00D87F94 /* IMUIGalleryDataManager.swift in Sources */, + 62B0CC1D204FC52C00D87F94 /* IMUITextMessageContentView.swift in Sources */, 624B82911EE5710E006C3C03 /* MyUser.swift in Sources */, + 62B0CBF4204FC52C00D87F94 /* IMUICameraPreviewView.swift in Sources */, + 62B0CBFD204FC52C00D87F94 /* CMSampleBufferExtension.swift in Sources */, 6298E7F21FB40D3400E53CAF /* IMUICustomMessageContentView.swift in Sources */, - 626BCDE82001F5C4006F7C15 /* IMUIProgressButton.swift in Sources */, + 62B0CBEA204FC52C00D87F94 /* IMUIFeatureView.swift in Sources */, + 62B0CBF1204FC52C00D87F94 /* IMUIGalleryCell.swift in Sources */, + 62B0CBE9204FC52C00D87F94 /* IMUIProgressButton.swift in Sources */, + 62B0CC06204FC52C00D87F94 /* BundleMessageListExtension.swift in Sources */, + 62B0CC21204FC52C00D87F94 /* IMUIImageMessageContentView.swift in Sources */, + 62B0CC04204FC52C00D87F94 /* IMUIAudioPlayerHelper.swift in Sources */, + 62B0CC0F204FC52C00D87F94 /* IMUIMessageMessageCollectionViewDelegate.swift in Sources */, + 62B0CBE5204FC52C00D87F94 /* IMUIHidenStatusViewController.swift in Sources */, + 62B0CC1C204FC52C00D87F94 /* IMUIVoiceMessageContentView.swift in Sources */, + 62B0CC12204FC52C00D87F94 /* IMUIMessageModelProtocol.swift in Sources */, 624B82921EE5710E006C3C03 /* RCTSwiftBridgeModule.h in Sources */, - 626BCDF02001F5C4006F7C15 /* IMUIGalleryCell.swift in Sources */, + 62B0CBFF204FC52C00D87F94 /* UIViewExtension.swift in Sources */, + 62B0CBDB204FC52C00D87F94 /* IMUIFeatureIconModel.swift in Sources */, 624B82931EE5710E006C3C03 /* RCTAuroraIMUIModule.h in Sources */, - 626BCE0D2001F5C4006F7C15 /* IMUIUserProtocol.swift in Sources */, - 626BCDE92001F5C4006F7C15 /* IMUIFeatureView.swift in Sources */, - 626BCDE22001F5C4006F7C15 /* IMUIFeatureListIconCell.swift in Sources */, - 626BCE122001F5C4006F7C15 /* IMUIMessageCellLayoutProtocol.swift in Sources */, 624B82941EE5710E006C3C03 /* RCTAuroraIMUIModule.m in Sources */, - 626BCDFE2001F5C4006F7C15 /* UIViewExtension.swift in Sources */, 624B82951EE5710E006C3C03 /* RCTAuroraIMUI-Bridging-Header.h in Sources */, - 626BCDFD2001F5C4006F7C15 /* CIImageExtension.swift in Sources */, - 626BCE0C2001F5C4006F7C15 /* IMUIMessageProtocol.swift in Sources */, - 626BCDE62001F5C4006F7C15 /* IMUIRecordVoiceCell.swift in Sources */, - 626BCE1B2001F5C4006F7C15 /* IMUIVoiceMessageContentView.swift in Sources */, - 626BCDFC2001F5C4006F7C15 /* CMSampleBufferExtension.swift in Sources */, - 626BCE202001F5C4006F7C15 /* IMUIImageMessageContentView.swift in Sources */, - 626BCE0A2001F5C4006F7C15 /* IMUIReuseViewCache.swift in Sources */, - 626BCDFF2001F5C4006F7C15 /* CGRectExtension.swift in Sources */, - 626BCDF82001F5C4006F7C15 /* IMUIFeatureListView.swift in Sources */, 624B82961EE5710E006C3C03 /* RCTInputView.h in Sources */, - 626BCDDD2001F5C4006F7C15 /* IMUIRecordVoiceHelper.swift in Sources */, - 626BCE012001F5C4006F7C15 /* UIImageExtension.swift in Sources */, - 626BCDE42001F5C4006F7C15 /* IMUICameraView.swift in Sources */, - 626BCDDC2001F5C4006F7C15 /* IMUIEmojiModel.swift in Sources */, - 626BCE082001F5C4006F7C15 /* IMUIMessageModel.swift in Sources */, - 626BCE162001F5C4006F7C15 /* IMUIMessageStatusView.swift in Sources */, - 626BCDDF2001F5C4006F7C15 /* IMUIGalleryDataManager.swift in Sources */, + 62B0CBE2204FC52C00D87F94 /* IMUIFeatureListIconCell.swift in Sources */, 624B82971EE5710E006C3C03 /* RCTInputView.m in Sources */, - 626BCDDB2001F5C4006F7C15 /* IMUIFeatureIconModel.swift in Sources */, 624B82991EE5710E006C3C03 /* RCTInputViewManager.m in Sources */, - 626BCDFB2001F5C4006F7C15 /* UIColorExtension.swift in Sources */, - 626BCE002001F5C4006F7C15 /* StringExtension.swift in Sources */, + 62B0CBDC204FC52C00D87F94 /* IMUIEmojiModel.swift in Sources */, + 62B0CC11204FC52C00D87F94 /* IMUIMessageStatusViewProtocol.swift in Sources */, + 62B0CBE1204FC52C00D87F94 /* IMUICameraCell.swift in Sources */, 624B829A1EE5710E006C3C03 /* RCTMessageListView.h in Sources */, - 626BCE072001F5C4006F7C15 /* IMUIMessageCellLayout.swift in Sources */, - 626BCDE12001F5C4006F7C15 /* IMUICameraCell.swift in Sources */, + 62B0CBE4204FC52C00D87F94 /* IMUICameraView.swift in Sources */, 62B0CB35204E41C100D87F94 /* RCTAuroraIMUIFileManager.m in Sources */, - 626BCDE52001F5C4006F7C15 /* IMUIGalleryContainerCell.swift in Sources */, - 626BCE132001F5C4006F7C15 /* IMUIChatDataManager.swift in Sources */, + 62B0CC07204FC52C00D87F94 /* UIImageMessageListExtension.swift in Sources */, 624F23A01F039DBF00D11E4E /* MessageEventModel.swift in Sources */, - 626BCE1A2001F5C4006F7C15 /* CIImageView.swift in Sources */, - 626BCE0E2001F5C4006F7C15 /* IMUIMessageMessageCollectionViewDelegate.swift in Sources */, - 626BCE102001F5C4006F7C15 /* IMUIMessageStatusViewProtocol.swift in Sources */, 624B829B1EE5710E006C3C03 /* RCTMessageListView.m in Sources */, - 626BCDF12001F5C4006F7C15 /* IMUIEmojiItemCell.swift in Sources */, - 626BCE152001F5C4006F7C15 /* IMUIChatLayout.swift in Sources */, - 626BCE142001F5C4006F7C15 /* IMUIVideoFileLoader.swift in Sources */, - 626BCE1F2001F5C4006F7C15 /* IMUIBaseMessageCell.swift in Sources */, - 626BCE032001F5C4006F7C15 /* IMUIAudioPlayerHelper.swift in Sources */, - 626BCDF62001F5C4006F7C15 /* IMUIPhotoCaptureDelegate.swift in Sources */, + 62B0CBFC204FC52C00D87F94 /* UIColorExtension.swift in Sources */, + 62B0CBDA204FC52C00D87F94 /* BundleInputViewExtension.swift in Sources */, + 62B0CC14204FC52C00D87F94 /* IMUIChatDataManager.swift in Sources */, + 62B0CC1A204FC52C00D87F94 /* IMUITextView.swift in Sources */, + 62B0CC09204FC52C00D87F94 /* IMUIMessageModel.swift in Sources */, + 62B0CBE6204FC52C00D87F94 /* IMUIGalleryContainerCell.swift in Sources */, + 62B0CC03204FC52C00D87F94 /* DateExtension.swift in Sources */, + 62B0CBFE204FC52C00D87F94 /* CIImageExtension.swift in Sources */, 624B829D1EE5710E006C3C03 /* RCTMessageListViewManager.m in Sources */, - 626BCE192001F5C4006F7C15 /* IMUITextView.swift in Sources */, - 626BCDEC2001F5C4006F7C15 /* IMUIEmojiCell.swift in Sources */, - 626BCE0F2001F5C4006F7C15 /* IMUIMessageCellProtocol.swift in Sources */, 624F239F1F039DBF00D11E4E /* MessageEventCollectionViewCell.swift in Sources */, - 626BCDF22001F5C4006F7C15 /* IMUIPermissionDenyedView.swift in Sources */, - 626BCE092001F5C4006F7C15 /* IMUIViewCache.swift in Sources */, - 626BCE1E2001F5C4006F7C15 /* IMUIVideoMessageContentView.swift in Sources */, - 626BCE182001F5C4006F7C15 /* IMUIMessageBubbleView.swift in Sources */, - 626BCE1C2001F5C4006F7C15 /* IMUITextMessageContentView.swift in Sources */, + 62B0CBF3204FC52C00D87F94 /* IMUIPermissionDenyedView.swift in Sources */, + 62B0CBDE204FC52C00D87F94 /* IMUIInputView.swift in Sources */, + 62B0CC10204FC52C00D87F94 /* IMUIMessageCellProtocol.swift in Sources */, + 62B0CBF9204FC52C00D87F94 /* IMUIFeatureListView.swift in Sources */, + 62B0CC17204FC52C00D87F94 /* IMUIMessageStatusView.swift in Sources */, + 62B0CBED204FC52C00D87F94 /* IMUIEmojiCell.swift in Sources */, + 62B0CC0E204FC52C00D87F94 /* IMUIUserProtocol.swift in Sources */, + 62B0CBE7204FC52C00D87F94 /* IMUIRecordVoiceCell.swift in Sources */, 624B82D61EE5710E006C3C03 /* RCTAuroraIMUI.h in Sources */, + 62B0CC0A204FC52C00D87F94 /* IMUIViewCache.swift in Sources */, + 62B0CBF7204FC52C00D87F94 /* IMUIPhotoCaptureDelegate.swift in Sources */, + 62B0CC19204FC52C00D87F94 /* IMUIMessageBubbleView.swift in Sources */, + 62B0CBDD204FC52C00D87F94 /* IMUIRecordVoiceHelper.swift in Sources */, + 62B0CC02204FC52C00D87F94 /* UIImageExtension.swift in Sources */, + 62B0CC1F204FC52C00D87F94 /* IMUIVideoMessageContentView.swift in Sources */, + 62B0CC13204FC52C00D87F94 /* IMUIMessageCellLayoutProtocol.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/iOS/IMUIInputView/Views/IMUICameraCell.swift b/iOS/IMUIInputView/Views/IMUICameraCell.swift index 95e4df02..4c168b1f 100644 --- a/iOS/IMUIInputView/Views/IMUICameraCell.swift +++ b/iOS/IMUIInputView/Views/IMUICameraCell.swift @@ -29,7 +29,7 @@ class IMUICameraCell: UICollectionViewCell, IMUIFeatureCellProtocol { @IBOutlet weak var cameraView: IMUICameraView! - open var cameraVC = UIViewController() // use to present full size mode viewcontroller + open var cameraVC = IMUIHidenStatusViewController() // use to present full size mode viewcontroller var isFullScreenMode = false var isActivity = true var featureDelegate: IMUIFeatureViewDelegate? diff --git a/iOS/IMUIInputView/Views/IMUIHidenStatusViewController.swift b/iOS/IMUIInputView/Views/IMUIHidenStatusViewController.swift new file mode 100644 index 00000000..29ff0f55 --- /dev/null +++ b/iOS/IMUIInputView/Views/IMUIHidenStatusViewController.swift @@ -0,0 +1,39 @@ +// +// IMUIHidenStatusViewController.swift +// sample +// +// Created by oshumini on 2018/3/7. +// Copyright © 2018年 HXHG. All rights reserved. +// + +import UIKit + +class IMUIHidenStatusViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + + override var prefersStatusBarHidden: Bool { + return true + } +// override func stat + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/iOS/sample/sample.xcodeproj/project.pbxproj b/iOS/sample/sample.xcodeproj/project.pbxproj index 84098153..e6c55dd0 100644 --- a/iOS/sample/sample.xcodeproj/project.pbxproj +++ b/iOS/sample/sample.xcodeproj/project.pbxproj @@ -88,6 +88,7 @@ 6284D92A1F7235400014C314 /* IMUIFeatureListIconCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6284D9281F7235400014C314 /* IMUIFeatureListIconCell.xib */; }; 629BA82B1F8F02C600EB4FD5 /* IMUIGalleryContainerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 629BA8291F8F02C600EB4FD5 /* IMUIGalleryContainerCell.swift */; }; 629BA82C1F8F02C600EB4FD5 /* IMUIGalleryContainerCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 629BA82A1F8F02C600EB4FD5 /* IMUIGalleryContainerCell.xib */; }; + 62B0CB7C204FC2F500D87F94 /* IMUIHidenStatusViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B0CB7B204FC2F500D87F94 /* IMUIHidenStatusViewController.swift */; }; 62D26AA21F7A17EC0093FE3D /* IMUIEmojiCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62D26AA01F7A17EC0093FE3D /* IMUIEmojiCell.swift */; }; 62D26AA31F7A17EC0093FE3D /* IMUIEmojiCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 62D26AA11F7A17EC0093FE3D /* IMUIEmojiCell.xib */; }; 62D26AA61F7A21A60093FE3D /* IMUIEmojiItemCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62D26AA41F7A21A60093FE3D /* IMUIEmojiItemCell.swift */; }; @@ -201,6 +202,7 @@ 6284D9281F7235400014C314 /* IMUIFeatureListIconCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IMUIFeatureListIconCell.xib; sourceTree = ""; }; 629BA8291F8F02C600EB4FD5 /* IMUIGalleryContainerCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IMUIGalleryContainerCell.swift; sourceTree = ""; }; 629BA82A1F8F02C600EB4FD5 /* IMUIGalleryContainerCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = IMUIGalleryContainerCell.xib; sourceTree = ""; }; + 62B0CB7B204FC2F500D87F94 /* IMUIHidenStatusViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IMUIHidenStatusViewController.swift; sourceTree = ""; }; 62D26AA01F7A17EC0093FE3D /* IMUIEmojiCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IMUIEmojiCell.swift; sourceTree = ""; }; 62D26AA11F7A17EC0093FE3D /* IMUIEmojiCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = IMUIEmojiCell.xib; sourceTree = ""; }; 62D26AA41F7A21A60093FE3D /* IMUIEmojiItemCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IMUIEmojiItemCell.swift; sourceTree = ""; }; @@ -337,6 +339,7 @@ 625961161F6BA19900571467 /* IMUICameraView.xib */, 6255393C1EF28F8800F6A239 /* IMUICameraCell.swift */, 6255393D1EF28F8800F6A239 /* IMUICameraCell.xib */, + 62B0CB7B204FC2F500D87F94 /* IMUIHidenStatusViewController.swift */, 6255393E1EF28F8800F6A239 /* IMUICameraPreviewView.swift */, 629BA8291F8F02C600EB4FD5 /* IMUIGalleryContainerCell.swift */, 629BA82A1F8F02C600EB4FD5 /* IMUIGalleryContainerCell.xib */, @@ -679,6 +682,7 @@ 625539A81EF3870E00F6A239 /* IMUIMessageProtocol.swift in Sources */, 6255399B1EF28F8800F6A239 /* IMUIMessageBubbleView.swift in Sources */, 625539A61EF3853700F6A239 /* MessageEventModel.swift in Sources */, + 62B0CB7C204FC2F500D87F94 /* IMUIHidenStatusViewController.swift in Sources */, 62D26AA61F7A21A60093FE3D /* IMUIEmojiItemCell.swift in Sources */, 6255396F1EF28F8800F6A239 /* CMSampleBufferExtension.swift in Sources */, 6255397B1EF28F8800F6A239 /* IMUIInputViewDelegate.swift in Sources */, From bf3949f3d641bb67f18372f86527772dc80edeb4 Mon Sep 17 00:00:00 2001 From: huangminlinux <380108184@qq.com> Date: Wed, 7 Mar 2018 16:32:41 +0800 Subject: [PATCH 13/23] update demo --- ReactNative/sample/App.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ReactNative/sample/App.js b/ReactNative/sample/App.js index 3799d2a8..6eb8d205 100644 --- a/ReactNative/sample/App.js +++ b/ReactNative/sample/App.js @@ -232,7 +232,10 @@ export default class TestRNIMUI extends Component { AuroraIController.insertMessagesToTop([message]) } AuroraIController.insertMessagesToTop(messages) - this.refs["MessageList"].refreshComplete() + if (Platform.OS === 'android') { + this.refs["MessageList"].refreshComplete() + } + } onSendText = (text) => { @@ -412,6 +415,7 @@ export default class TestRNIMUI extends Component { sendBubblePadding={{ left: 10, top: 10, right: 15, bottom: 10 }} datePadding={{ left: 5, top: 5, right: 5, bottom: 5 }} dateBackgroundColor={"#39ef23"} + isAllowPullToRefresh={true} /> Date: Wed, 7 Mar 2018 16:34:26 +0800 Subject: [PATCH 14/23] udpate demo --- ReactNative/sample/App.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ReactNative/sample/App.js b/ReactNative/sample/App.js index 6eb8d205..34f1d9a1 100644 --- a/ReactNative/sample/App.js +++ b/ReactNative/sample/App.js @@ -44,7 +44,11 @@ function constructNormalMessage() { displayName: "replace your nickname", avatarPath: "images" } - // user.avatarPath = RNFS.MainBundlePath + '/default_header.png' + + if (Platform.OS === "ios") { + user.avatarPath = RNFS.MainBundlePath + '/default_header.png' + } + message.fromUser = user return message From 4367270b87158376509c49bb972be60d0a1a075e Mon Sep 17 00:00:00 2001 From: huangminlinux <380108184@qq.com> Date: Wed, 7 Mar 2018 16:35:37 +0800 Subject: [PATCH 15/23] update demo --- ReactNative/sample/App.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ReactNative/sample/App.js b/ReactNative/sample/App.js index 34f1d9a1..1bd23ca4 100644 --- a/ReactNative/sample/App.js +++ b/ReactNative/sample/App.js @@ -44,7 +44,7 @@ function constructNormalMessage() { displayName: "replace your nickname", avatarPath: "images" } - + if (Platform.OS === "ios") { user.avatarPath = RNFS.MainBundlePath + '/default_header.png' } @@ -403,7 +403,7 @@ export default class TestRNIMUI extends Component { Date: Wed, 7 Mar 2018 17:30:44 +0800 Subject: [PATCH 16/23] upgrade android build tools/compile version --- Android/chatinput/build.gradle | 14 +++++++------- .../jiguang/imui/chatinput/photo/PhotoAdapter.java | 5 ++++- Android/messagelist/build.gradle | 12 ++++++------ Android/sample/build.gradle | 2 ++ Android/sample/exampleui/build.gradle | 10 +++++----- .../imuisample/messages/MessageListActivity.java | 7 +++---- ReactNative/android/build.gradle | 10 +++++----- .../imui/messagelist/ReactMsgListManager.java | 9 ++++----- ReactNative/sample/android/app/build.gradle | 8 ++++---- ReactNative/sample/android/build.gradle | 1 + 10 files changed, 41 insertions(+), 37 deletions(-) diff --git a/Android/chatinput/build.gradle b/Android/chatinput/build.gradle index 6d735e88..cd1c6707 100644 --- a/Android/chatinput/build.gradle +++ b/Android/chatinput/build.gradle @@ -7,11 +7,11 @@ ext { } android { - compileSdkVersion 25 - buildToolsVersion "26.0.2" + compileSdkVersion 27 + buildToolsVersion "27.0.3" defaultConfig { minSdkVersion 16 - targetSdkVersion 25 + targetSdkVersion 27 versionCode 2 versionName "0.1.1" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" @@ -34,11 +34,11 @@ dependencies { androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) - compile 'com.android.support:appcompat-v7:25.3.1' - compile 'com.android.support:design:25.3.1' + compileOnly 'com.android.support:appcompat-v7:27.0.2' + compileOnly 'com.android.support:design:27.0.2' compile 'com.google.android:flexbox:0.2.5' - compile 'com.github.bumptech.glide:glide:3.7.0' - compile 'com.android.support:support-v4:25.3.1' + compile 'com.github.bumptech.glide:glide:4.6.1' + compile 'com.android.support:support-v4:27.0.2' testCompile 'junit:junit:4.12' } diff --git a/Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/photo/PhotoAdapter.java b/Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/photo/PhotoAdapter.java index 675c6210..93ed1a52 100644 --- a/Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/photo/PhotoAdapter.java +++ b/Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/photo/PhotoAdapter.java @@ -14,6 +14,7 @@ import android.widget.TextView; import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import java.util.ArrayList; import java.util.List; @@ -77,9 +78,11 @@ public void onBindViewHolder(final PhotoViewHolder holder, int position) { } FileItem item = mMedias.get(position); + RequestOptions requestOptions = new RequestOptions(); + requestOptions.placeholder(R.drawable.aurora_picture_not_found); Glide.with(mContext) + .setDefaultRequestOptions(requestOptions) .load(item.getFilePath()) - .placeholder(R.drawable.aurora_picture_not_found) .into(holder.ivPhoto); if (mSelectedItems.contains(position)) { // Current photo is selected diff --git a/Android/messagelist/build.gradle b/Android/messagelist/build.gradle index 041ff49d..ffbb691d 100644 --- a/Android/messagelist/build.gradle +++ b/Android/messagelist/build.gradle @@ -7,11 +7,11 @@ ext { } android { - compileSdkVersion 25 - buildToolsVersion "26.0.2" + compileSdkVersion 27 + buildToolsVersion "27.0.3" defaultConfig { minSdkVersion 16 - targetSdkVersion 25 + targetSdkVersion 27 versionCode 2 versionName "0.1.1" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" @@ -27,9 +27,9 @@ dependencies { androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) - compile 'com.android.support:appcompat-v7:25.3.1' - compile 'com.android.support:design:25.3.1' - compile 'com.android.support:support-v4:25.3.1' + compileOnly 'com.android.support:appcompat-v7:27.0.2' + compileOnly 'com.android.support:design:27.0.2' + compileOnly 'com.android.support:support-v4:27.0.2' testCompile 'junit:junit:4.12' } diff --git a/Android/sample/build.gradle b/Android/sample/build.gradle index 303cdf9c..9c933253 100644 --- a/Android/sample/build.gradle +++ b/Android/sample/build.gradle @@ -12,6 +12,7 @@ buildscript { maven { url 'https://dl.google.com/dl/android/maven2/' } + google() } dependencies { classpath 'com.android.tools.build:gradle:3.0.1' @@ -25,6 +26,7 @@ allprojects { mavenCentral() jcenter() maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } + google() } tasks.withType(Javadoc) { options.addStringOption('Xdoclint:none', '-quiet') diff --git a/Android/sample/exampleui/build.gradle b/Android/sample/exampleui/build.gradle index e4ace821..fd44900d 100644 --- a/Android/sample/exampleui/build.gradle +++ b/Android/sample/exampleui/build.gradle @@ -2,14 +2,14 @@ apply plugin: 'com.android.application' apply from: "$project.rootDir/tools/script-git-version.gradle" android { - compileSdkVersion 25 - buildToolsVersion "26.0.2" + compileSdkVersion 27 + buildToolsVersion "27.0.3" flavorDimensions "versionCode" defaultConfig { applicationId "imui.jiguang.cn.imuisample" minSdkVersion 16 - targetSdkVersion 19 + targetSdkVersion 27 versionCode 1 versionName "1.0" @@ -58,8 +58,8 @@ dependencies { androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) - compile 'com.android.support:appcompat-v7:25.3.1' - compile 'com.android.support:design:25.3.1' + compile 'com.android.support:appcompat-v7:27.0.2' + compile 'com.android.support:design:27.0.2' compile 'pub.devrel:easypermissions:0.4.0' compile project(':messagelist') compile project(':chatinput') diff --git a/Android/sample/exampleui/src/main/java/imui/jiguang/cn/imuisample/messages/MessageListActivity.java b/Android/sample/exampleui/src/main/java/imui/jiguang/cn/imuisample/messages/MessageListActivity.java index 6c4062cd..32f0eb3d 100644 --- a/Android/sample/exampleui/src/main/java/imui/jiguang/cn/imuisample/messages/MessageListActivity.java +++ b/Android/sample/exampleui/src/main/java/imui/jiguang/cn/imuisample/messages/MessageListActivity.java @@ -30,6 +30,7 @@ import android.widget.Toast; import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; import java.io.File; @@ -423,7 +424,7 @@ public void loadAvatarImage(ImageView avatarImageView, String string) { } else { Glide.with(getApplicationContext()) .load(string) - .placeholder(R.drawable.aurora_headicon_default) + .apply(new RequestOptions().placeholder(R.drawable.aurora_headicon_default)) .into(avatarImageView); } } @@ -433,9 +434,7 @@ public void loadImage(ImageView imageView, String string) { // You can use other image load libraries. Glide.with(getApplicationContext()) .load(string) - .fitCenter() - .placeholder(R.drawable.aurora_picture_not_found) - .override(400, Target.SIZE_ORIGINAL) + .apply(new RequestOptions().fitCenter().placeholder(R.drawable.aurora_picture_not_found).override(400, Target.SIZE_ORIGINAL)) .into(imageView); } }; diff --git a/ReactNative/android/build.gradle b/ReactNative/android/build.gradle index efad38ad..1dde5c2a 100644 --- a/ReactNative/android/build.gradle +++ b/ReactNative/android/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 25 - buildToolsVersion "26.0.2" + compileSdkVersion 27 + buildToolsVersion "27.0.3" flavorDimensions "prod" defaultConfig { minSdkVersion 16 - targetSdkVersion 25 + targetSdkVersion 27 versionCode 1 versionName "1.0" @@ -30,9 +30,9 @@ dependencies { compile 'cn.jiguang.imui:messagelist:0.6.3' compile 'cn.jiguang.imui:chatinput:0.6.4' compile 'org.greenrobot:eventbus:3.0.0' - compile 'com.android.support:appcompat-v7:25.3.1' + compile 'com.android.support:appcompat-v7:27.0.2' compile 'com.facebook.react:react-native:+' compile 'com.google.code.gson:gson:2.8.0' - compile 'com.github.bumptech.glide:glide:3.7.0' + compile 'com.github.bumptech.glide:glide:4.6.1' testCompile 'junit:junit:4.12' } diff --git a/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactMsgListManager.java b/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactMsgListManager.java index 318918ec..590eaa4d 100644 --- a/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactMsgListManager.java +++ b/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactMsgListManager.java @@ -24,6 +24,7 @@ import android.widget.ImageView; import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.ReactContext; @@ -153,7 +154,7 @@ public void loadAvatarImage(ImageView avatarImageView, String string) { } else { Glide.with(reactContext) .load(string) - .placeholder(IdHelper.getDrawable(reactContext, "aurora_headicon_default")) + .apply(new RequestOptions().placeholder(IdHelper.getDrawable(reactContext, "aurora_headicon_default"))) .into(avatarImageView); } } @@ -163,9 +164,7 @@ public void loadImage(ImageView imageView, String string) { // You can use other image load libraries. Glide.with(reactContext) .load(string) - .fitCenter() - .placeholder(IdHelper.getDrawable(reactContext, "aurora_picture_not_found")) - .override(400, Target.SIZE_ORIGINAL) + .apply(new RequestOptions().fitCenter().placeholder(IdHelper.getDrawable(reactContext, "aurora_picture_not_found")).override(400, Target.SIZE_ORIGINAL)) .into(imageView); } }; @@ -270,7 +269,7 @@ public void onEvent(MessageEvent event) { Log.d("RCTMessageListManager", "updating message, message: " + rctMessage); if (activity != null) { mAdapter.updateMessage(rctMessage.getMsgId(), rctMessage); - mMessageList.smoothScrollToPosition(0); + mMessageList.smoothScrollBy(0, 1); } break; case RCT_INSERT_MESSAGES_ACTION: diff --git a/ReactNative/sample/android/app/build.gradle b/ReactNative/sample/android/app/build.gradle index 55835eb1..bed4c9c8 100644 --- a/ReactNative/sample/android/app/build.gradle +++ b/ReactNative/sample/android/app/build.gradle @@ -87,13 +87,13 @@ def enableSeparateBuildPerCPUArchitecture = false def enableProguardInReleaseBuilds = false android { - compileSdkVersion 25 - buildToolsVersion "26.0.2" + compileSdkVersion 27 + buildToolsVersion "27.0.3" defaultConfig { applicationId "com.testrnimuiexample" minSdkVersion 16 - targetSdkVersion 19 + targetSdkVersion 27 versionCode 1 versionName "1.0" ndk { @@ -140,7 +140,7 @@ dependencies { }) compile project(':aurora-imui-react-native') compile project(':react-native-fs') - compile 'com.android.support:appcompat-v7:25.3.1' + compile 'com.android.support:appcompat-v7:27.0.2' compile 'com.facebook.react:react-native:+' testCompile 'junit:junit:4.12' } diff --git a/ReactNative/sample/android/build.gradle b/ReactNative/sample/android/build.gradle index bf0d6801..f3bc7c88 100644 --- a/ReactNative/sample/android/build.gradle +++ b/ReactNative/sample/android/build.gradle @@ -20,6 +20,7 @@ allprojects { url "$rootDir/../node_modules/react-native/android" } maven { url "https://jitpack.io" } + google() } tasks.withType(Javadoc) { options.addStringOption('Xdoclint:none', '-quiet') From 5db5d4d15736305d5036ed9b85ca6fd497036c83 Mon Sep 17 00:00:00 2001 From: KenChoi Date: Wed, 7 Mar 2018 17:34:52 +0800 Subject: [PATCH 17/23] add timeString empty judgement --- .../imui/messages/PhotoViewHolder.java | 6 +++-- .../jiguang/imui/messages/TxtViewHolder.java | 6 +++-- .../imui/messages/VideoViewHolder.java | 22 ++++++++++--------- .../imui/messages/VoiceViewHolder.java | 6 +++-- 4 files changed, 24 insertions(+), 16 deletions(-) diff --git a/Android/messagelist/src/main/java/cn/jiguang/imui/messages/PhotoViewHolder.java b/Android/messagelist/src/main/java/cn/jiguang/imui/messages/PhotoViewHolder.java index bfb70f7b..dd8f8c15 100644 --- a/Android/messagelist/src/main/java/cn/jiguang/imui/messages/PhotoViewHolder.java +++ b/Android/messagelist/src/main/java/cn/jiguang/imui/messages/PhotoViewHolder.java @@ -1,6 +1,7 @@ package cn.jiguang.imui.messages; +import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.ImageButton; @@ -45,8 +46,9 @@ public PhotoViewHolder(View itemView, boolean isSender) { @Override public void onBind(final MESSAGE message) { - if (message.getTimeString() != null) { - mDateTv.setText(message.getTimeString()); + String timeString = message.getTimeString(); + if (timeString != null && !TextUtils.isEmpty(timeString)) { + mDateTv.setText(timeString); } else { mDateTv.setVisibility(View.GONE); } diff --git a/Android/messagelist/src/main/java/cn/jiguang/imui/messages/TxtViewHolder.java b/Android/messagelist/src/main/java/cn/jiguang/imui/messages/TxtViewHolder.java index 4c471842..802b081e 100644 --- a/Android/messagelist/src/main/java/cn/jiguang/imui/messages/TxtViewHolder.java +++ b/Android/messagelist/src/main/java/cn/jiguang/imui/messages/TxtViewHolder.java @@ -1,5 +1,6 @@ package cn.jiguang.imui.messages; +import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.ImageButton; @@ -43,8 +44,9 @@ public TxtViewHolder(View itemView, boolean isSender) { @Override public void onBind(final MESSAGE message) { mMsgTv.setText(message.getText()); - if (message.getTimeString() != null) { - mDateTv.setText(message.getTimeString()); + String timeString = message.getTimeString(); + if (timeString != null && !TextUtils.isEmpty(timeString)) { + mDateTv.setText(timeString); } else { mDateTv.setVisibility(View.GONE); } diff --git a/Android/messagelist/src/main/java/cn/jiguang/imui/messages/VideoViewHolder.java b/Android/messagelist/src/main/java/cn/jiguang/imui/messages/VideoViewHolder.java index f663efa4..0d67ceca 100644 --- a/Android/messagelist/src/main/java/cn/jiguang/imui/messages/VideoViewHolder.java +++ b/Android/messagelist/src/main/java/cn/jiguang/imui/messages/VideoViewHolder.java @@ -3,6 +3,7 @@ import android.graphics.Bitmap; import android.media.ThumbnailUtils; import android.provider.MediaStore; +import android.text.TextUtils; import android.view.View; import android.widget.ImageButton; import android.widget.ImageView; @@ -22,7 +23,7 @@ public class VideoViewHolder extends BaseMessageViewHolder implements MsgListAdapter.DefaultMessageViewHolder { - private final RoundTextView mTextDate; + private final RoundTextView mDateTv; private final RoundImageView mImageAvatar; private TextView mDisplayNameTv; private final ImageView mImageCover; @@ -35,7 +36,7 @@ public class VideoViewHolder extends BaseMessageViewHo public VideoViewHolder(View itemView, boolean isSender) { super(itemView); this.mIsSender = isSender; - mTextDate = (RoundTextView) itemView.findViewById(R.id.aurora_tv_msgitem_date); + mDateTv = (RoundTextView) itemView.findViewById(R.id.aurora_tv_msgitem_date); mImageAvatar = (RoundImageView) itemView.findViewById(R.id.aurora_iv_msgitem_avatar); mImageCover = (ImageView) itemView.findViewById(R.id.aurora_iv_msgitem_cover); mImagePlay = (ImageView) itemView.findViewById(R.id.aurora_iv_msgitem_play); @@ -51,10 +52,11 @@ public VideoViewHolder(View itemView, boolean isSender) { @Override public void onBind(final Message message) { - if (message.getTimeString() != null) { - mTextDate.setText(message.getTimeString()); + String timeString = message.getTimeString(); + if (timeString != null && !TextUtils.isEmpty(timeString)) { + mDateTv.setText(timeString); } else { - mTextDate.setVisibility(View.GONE); + mDateTv.setVisibility(View.GONE); } boolean isAvatarExists = message.getFromUser().getAvatarFilePath() != null && !message.getFromUser().getAvatarFilePath().isEmpty(); @@ -130,12 +132,12 @@ public void onClick(View view) { @Override public void applyStyle(MessageListStyle style) { - mTextDate.setTextSize(style.getDateTextSize()); - mTextDate.setTextColor(style.getDateTextColor()); - mTextDate.setPadding(style.getDatePaddingLeft(), style.getDatePaddingTop(), + mDateTv.setTextSize(style.getDateTextSize()); + mDateTv.setTextColor(style.getDateTextColor()); + mDateTv.setPadding(style.getDatePaddingLeft(), style.getDatePaddingTop(), style.getDatePaddingRight(), style.getDatePaddingBottom()); - mTextDate.setBgCornerRadius(style.getDateBgCornerRadius()); - mTextDate.setBgColor(style.getDateBgColor()); + mDateTv.setBgCornerRadius(style.getDateBgCornerRadius()); + mDateTv.setBgColor(style.getDateBgColor()); if (mIsSender) { if (style.getSendingProgressDrawable() != null) { mSendingPb.setProgressDrawable(style.getSendingProgressDrawable()); diff --git a/Android/messagelist/src/main/java/cn/jiguang/imui/messages/VoiceViewHolder.java b/Android/messagelist/src/main/java/cn/jiguang/imui/messages/VoiceViewHolder.java index f9caa91a..07297e3f 100644 --- a/Android/messagelist/src/main/java/cn/jiguang/imui/messages/VoiceViewHolder.java +++ b/Android/messagelist/src/main/java/cn/jiguang/imui/messages/VoiceViewHolder.java @@ -3,6 +3,7 @@ import android.graphics.drawable.AnimationDrawable; import android.media.AudioManager; import android.media.MediaPlayer; +import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.ImageButton; @@ -71,8 +72,9 @@ public boolean onError(MediaPlayer mp, int what, int extra) { return false; } }); - if (message.getTimeString() != null) { - mDateTv.setText(message.getTimeString()); + String timeString = message.getTimeString(); + if (timeString != null && !TextUtils.isEmpty(timeString)) { + mDateTv.setText(timeString); } else { mDateTv.setVisibility(View.GONE); } From d2b962ff431218cf1632c8ce07b38ae63a9c4ecc Mon Sep 17 00:00:00 2001 From: KenChoi Date: Thu, 8 Mar 2018 14:42:08 +0800 Subject: [PATCH 18/23] fix rn bug, adjust messagelist, chatinput dependencies --- Android/chatinput/build.gradle | 10 ++--- .../aurora_picture_not_found.png | Bin 3844 -> 4398 bytes .../chatinput/src/main/res/values/styles.xml | 5 --- Android/messagelist/build.gradle | 8 ++-- .../jiguang/imui/messages/MsgListAdapter.java | 8 ++-- .../imui/messages/PhotoViewHolder.java | 2 +- .../jiguang/imui/messages/TxtViewHolder.java | 2 +- .../imui/messages/VideoViewHolder.java | 2 +- .../imui/messages/VoiceViewHolder.java | 2 +- .../cn/jiguang/imui/utils/BitmapCache.java | 8 ---- .../aurora_picture_not_found.png | Bin 3844 -> 4398 bytes .../main/res/layout/item_receive_photo.xml | 2 +- .../src/main/res/layout/item_receive_txt.xml | 2 +- .../main/res/layout/item_receive_video.xml | 2 +- .../main/res/layout/item_receive_voice.xml | 2 +- .../src/main/res/layout/item_send_photo.xml | 2 +- .../src/main/res/layout/item_send_text.xml | 2 +- .../src/main/res/layout/item_send_video.xml | 2 +- .../src/main/res/layout/item_send_voice.xml | 2 +- .../src/main/res/values/styles.xml | 6 --- Android/sample/exampleui/build.gradle | 5 ++- .../messages/BrowserImageActivity.java | 2 + .../messages/MessageListActivity.java | 5 +-- ReactNative/android/build.gradle | 3 +- .../imui/messagelist/ReactMsgListManager.java | 42 +++++++++--------- .../src/main/res/layout/ptr_layout.xml | 2 + ReactNative/messagelist.android.js | 4 ++ ReactNative/sample/App.js | 8 ++-- ReactNative/sample/android/app/build.gradle | 13 +++++- 29 files changed, 75 insertions(+), 78 deletions(-) diff --git a/Android/chatinput/build.gradle b/Android/chatinput/build.gradle index cd1c6707..3d754a0d 100644 --- a/Android/chatinput/build.gradle +++ b/Android/chatinput/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'com.android.library' ext { PUBLISH_GROUP_ID = 'cn.jiguang.imui' PUBLISH_ARTIFACT_ID = 'chatinput' - PUBLISH_VERSION = '0.6.4' + PUBLISH_VERSION = '0.6.5' } android { @@ -34,11 +34,11 @@ dependencies { androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) - compileOnly 'com.android.support:appcompat-v7:27.0.2' - compileOnly 'com.android.support:design:27.0.2' + implementation 'com.android.support:appcompat-v7:27.1.0' + implementation 'com.android.support:design:27.1.0' compile 'com.google.android:flexbox:0.2.5' - compile 'com.github.bumptech.glide:glide:4.6.1' - compile 'com.android.support:support-v4:27.0.2' + implementation 'com.github.bumptech.glide:glide:4.6.1' + implementation 'com.android.support:support-v4:27.1.0' testCompile 'junit:junit:4.12' } diff --git a/Android/chatinput/src/main/res/drawable-xhdpi/aurora_picture_not_found.png b/Android/chatinput/src/main/res/drawable-xhdpi/aurora_picture_not_found.png index 2f7ef1d3465f4f42ef5b7deda062de8e16f34947..9dfb76db6dd0570ae5ebd72852b1bfb369ceb04c 100644 GIT binary patch literal 4398 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 - - - diff --git a/Android/messagelist/build.gradle b/Android/messagelist/build.gradle index ffbb691d..0a1c7c9f 100644 --- a/Android/messagelist/build.gradle +++ b/Android/messagelist/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'com.android.library' ext { PUBLISH_GROUP_ID = 'cn.jiguang.imui' PUBLISH_ARTIFACT_ID = 'messagelist' - PUBLISH_VERSION = '0.6.3' + PUBLISH_VERSION = '0.6.4' } android { @@ -27,9 +27,9 @@ dependencies { androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) - compileOnly 'com.android.support:appcompat-v7:27.0.2' - compileOnly 'com.android.support:design:27.0.2' - compileOnly 'com.android.support:support-v4:27.0.2' + implementation 'com.android.support:appcompat-v7:27.1.0' + implementation 'com.android.support:design:27.1.0' + implementation 'com.android.support:support-v4:27.1.0' testCompile 'junit:junit:4.12' } diff --git a/Android/messagelist/src/main/java/cn/jiguang/imui/messages/MsgListAdapter.java b/Android/messagelist/src/main/java/cn/jiguang/imui/messages/MsgListAdapter.java index 3ae336a7..61b34942 100644 --- a/Android/messagelist/src/main/java/cn/jiguang/imui/messages/MsgListAdapter.java +++ b/Android/messagelist/src/main/java/cn/jiguang/imui/messages/MsgListAdapter.java @@ -572,7 +572,7 @@ private View.OnLongClickListener getMessageLongClickListener(final Wrapper { * @param */ public interface OnMsgLongClickListener { - void onMessageLongClick(MESSAGE message); + void onMessageLongClick(View view, MESSAGE message); } public interface OnAvatarClickListener { diff --git a/Android/messagelist/src/main/java/cn/jiguang/imui/messages/PhotoViewHolder.java b/Android/messagelist/src/main/java/cn/jiguang/imui/messages/PhotoViewHolder.java index dd8f8c15..cc431927 100644 --- a/Android/messagelist/src/main/java/cn/jiguang/imui/messages/PhotoViewHolder.java +++ b/Android/messagelist/src/main/java/cn/jiguang/imui/messages/PhotoViewHolder.java @@ -87,7 +87,7 @@ public void onClick(View view) { @Override public boolean onLongClick(View view) { if (mMsgLongClickListener != null) { - mMsgLongClickListener.onMessageLongClick(message); + mMsgLongClickListener.onMessageLongClick(view, message); } else { if (BuildConfig.DEBUG) { Log.w("MsgListAdapter", "Didn't set long click listener! Drop event."); diff --git a/Android/messagelist/src/main/java/cn/jiguang/imui/messages/TxtViewHolder.java b/Android/messagelist/src/main/java/cn/jiguang/imui/messages/TxtViewHolder.java index 802b081e..47c84516 100644 --- a/Android/messagelist/src/main/java/cn/jiguang/imui/messages/TxtViewHolder.java +++ b/Android/messagelist/src/main/java/cn/jiguang/imui/messages/TxtViewHolder.java @@ -101,7 +101,7 @@ public void onClick(View view) { @Override public boolean onLongClick(View view) { if (mMsgLongClickListener != null) { - mMsgLongClickListener.onMessageLongClick(message); + mMsgLongClickListener.onMessageLongClick(view, message); } else { if (BuildConfig.DEBUG) { Log.w("MsgListAdapter", "Didn't set long click listener! Drop event."); diff --git a/Android/messagelist/src/main/java/cn/jiguang/imui/messages/VideoViewHolder.java b/Android/messagelist/src/main/java/cn/jiguang/imui/messages/VideoViewHolder.java index 0d67ceca..7489b431 100644 --- a/Android/messagelist/src/main/java/cn/jiguang/imui/messages/VideoViewHolder.java +++ b/Android/messagelist/src/main/java/cn/jiguang/imui/messages/VideoViewHolder.java @@ -77,7 +77,7 @@ public void onClick(View view) { @Override public boolean onLongClick(View view) { - mMsgLongClickListener.onMessageLongClick(message); + mMsgLongClickListener.onMessageLongClick(view, message); return false; } }); diff --git a/Android/messagelist/src/main/java/cn/jiguang/imui/messages/VoiceViewHolder.java b/Android/messagelist/src/main/java/cn/jiguang/imui/messages/VoiceViewHolder.java index 07297e3f..44b6e12b 100644 --- a/Android/messagelist/src/main/java/cn/jiguang/imui/messages/VoiceViewHolder.java +++ b/Android/messagelist/src/main/java/cn/jiguang/imui/messages/VoiceViewHolder.java @@ -182,7 +182,7 @@ public void onClick(View view) { @Override public boolean onLongClick(View view) { if (mMsgLongClickListener != null) { - mMsgLongClickListener.onMessageLongClick(message); + mMsgLongClickListener.onMessageLongClick(view, message); } else { if (BuildConfig.DEBUG) { Log.w("MsgListAdapter", "Didn't set long click listener! Drop event."); diff --git a/Android/messagelist/src/main/java/cn/jiguang/imui/utils/BitmapCache.java b/Android/messagelist/src/main/java/cn/jiguang/imui/utils/BitmapCache.java index 116169bd..daf2eb5c 100644 --- a/Android/messagelist/src/main/java/cn/jiguang/imui/utils/BitmapCache.java +++ b/Android/messagelist/src/main/java/cn/jiguang/imui/utils/BitmapCache.java @@ -3,9 +3,6 @@ import android.graphics.Bitmap; import android.util.LruCache; -/** - * Created by caiyaoguan on 2017/7/6. - */ public class BitmapCache { @@ -28,11 +25,6 @@ protected int sizeOf(String key, Bitmap bitmap) { }; } - /** - * 通过此方法来获取NativeImageLoader的实例 - * - * @return NativeImageLoader - */ public static BitmapCache getInstance() { return mInstance; } diff --git a/Android/messagelist/src/main/res/drawable-xhdpi/aurora_picture_not_found.png b/Android/messagelist/src/main/res/drawable-xhdpi/aurora_picture_not_found.png index 2f7ef1d3465f4f42ef5b7deda062de8e16f34947..9dfb76db6dd0570ae5ebd72852b1bfb369ceb04c 100644 GIT binary patch literal 4398 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 + android:layout_marginTop="10dp"> + android:layout_marginTop="10dp"> + android:layout_marginTop="10dp"> + android:layout_marginTop="10dp"> diff --git a/Android/messagelist/src/main/res/layout/item_send_text.xml b/Android/messagelist/src/main/res/layout/item_send_text.xml index 300045df..6d6ce7c3 100644 --- a/Android/messagelist/src/main/res/layout/item_send_text.xml +++ b/Android/messagelist/src/main/res/layout/item_send_text.xml @@ -10,7 +10,7 @@ diff --git a/Android/messagelist/src/main/res/layout/item_send_video.xml b/Android/messagelist/src/main/res/layout/item_send_video.xml index d759bce0..681ca4a4 100644 --- a/Android/messagelist/src/main/res/layout/item_send_video.xml +++ b/Android/messagelist/src/main/res/layout/item_send_video.xml @@ -11,7 +11,7 @@ + android:layout_marginTop="10dp"> + android:layout_marginTop="10dp"> - - - - diff --git a/Android/sample/exampleui/build.gradle b/Android/sample/exampleui/build.gradle index fd44900d..76f4e0bb 100644 --- a/Android/sample/exampleui/build.gradle +++ b/Android/sample/exampleui/build.gradle @@ -58,8 +58,9 @@ dependencies { androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) - compile 'com.android.support:appcompat-v7:27.0.2' - compile 'com.android.support:design:27.0.2' + implementation 'com.android.support:appcompat-v7:27.1.0' + implementation 'com.android.support:design:27.1.0' + implementation 'com.github.bumptech.glide:glide:4.6.1' compile 'pub.devrel:easypermissions:0.4.0' compile project(':messagelist') compile project(':chatinput') diff --git a/Android/sample/exampleui/src/main/java/imui/jiguang/cn/imuisample/messages/BrowserImageActivity.java b/Android/sample/exampleui/src/main/java/imui/jiguang/cn/imuisample/messages/BrowserImageActivity.java index 56158043..3fc5172a 100644 --- a/Android/sample/exampleui/src/main/java/imui/jiguang/cn/imuisample/messages/BrowserImageActivity.java +++ b/Android/sample/exampleui/src/main/java/imui/jiguang/cn/imuisample/messages/BrowserImageActivity.java @@ -10,6 +10,7 @@ import android.util.LruCache; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; import java.io.File; import java.util.ArrayList; @@ -93,6 +94,7 @@ public boolean isViewFromObject(View view, Object object) { @Override public Object instantiateItem(ViewGroup container, int position) { PhotoView photoView = new PhotoView(true, BrowserImageActivity.this); + photoView.setScaleType(ImageView.ScaleType.CENTER_CROP); photoView.setTag(position); String path = mPathList.get(position); if (path != null) { diff --git a/Android/sample/exampleui/src/main/java/imui/jiguang/cn/imuisample/messages/MessageListActivity.java b/Android/sample/exampleui/src/main/java/imui/jiguang/cn/imuisample/messages/MessageListActivity.java index 32f0eb3d..f94dba8f 100644 --- a/Android/sample/exampleui/src/main/java/imui/jiguang/cn/imuisample/messages/MessageListActivity.java +++ b/Android/sample/exampleui/src/main/java/imui/jiguang/cn/imuisample/messages/MessageListActivity.java @@ -31,7 +31,6 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; -import com.bumptech.glide.request.target.Target; import java.io.File; import java.text.SimpleDateFormat; @@ -434,7 +433,7 @@ public void loadImage(ImageView imageView, String string) { // You can use other image load libraries. Glide.with(getApplicationContext()) .load(string) - .apply(new RequestOptions().fitCenter().placeholder(R.drawable.aurora_picture_not_found).override(400, Target.SIZE_ORIGINAL)) + .apply(new RequestOptions().fitCenter().placeholder(R.drawable.aurora_picture_not_found)) .into(imageView); } }; @@ -476,7 +475,7 @@ public void onMessageClick(MyMessage message) { mAdapter.setMsgLongClickListener(new MsgListAdapter.OnMsgLongClickListener() { @Override - public void onMessageLongClick(MyMessage message) { + public void onMessageLongClick(View view, MyMessage message) { Toast.makeText(getApplicationContext(), getApplicationContext().getString(R.string.message_long_click_hint), Toast.LENGTH_SHORT).show(); diff --git a/ReactNative/android/build.gradle b/ReactNative/android/build.gradle index 1dde5c2a..148452ca 100644 --- a/ReactNative/android/build.gradle +++ b/ReactNative/android/build.gradle @@ -30,8 +30,7 @@ dependencies { compile 'cn.jiguang.imui:messagelist:0.6.3' compile 'cn.jiguang.imui:chatinput:0.6.4' compile 'org.greenrobot:eventbus:3.0.0' - compile 'com.android.support:appcompat-v7:27.0.2' - compile 'com.facebook.react:react-native:+' + implementation 'com.facebook.react:react-native:+' compile 'com.google.code.gson:gson:2.8.0' compile 'com.github.bumptech.glide:glide:4.6.1' testCompile 'junit:junit:4.12' diff --git a/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactMsgListManager.java b/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactMsgListManager.java index 590eaa4d..1b9c3dc8 100644 --- a/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactMsgListManager.java +++ b/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactMsgListManager.java @@ -357,7 +357,7 @@ private float dip2sp(int dip) { } @ReactProp(name = "receiveBubblePadding") - public void setReceiveBubblePaddingLeft(PullToRefreshLayout root, ReadableMap map) { + public void setReceiveBubblePadding(PullToRefreshLayout root, ReadableMap map) { mMessageList.setReceiveBubblePaddingLeft(dip2px(map.getInt("left"))); mMessageList.setReceiveBubblePaddingTop(dip2px(map.getInt("top"))); mMessageList.setReceiveBubblePaddingRight(dip2px(map.getInt("right"))); @@ -443,7 +443,7 @@ public void setDisplayNamePadding(PullToRefreshLayout root, ReadableMap map) { int top = map.getInt("top"); int right = map.getInt("right"); int bottom = map.getInt("bottom"); - mMessageList.setDatePadding(dip2px(left), dip2px(top), dip2px(right), dip2px(bottom)); + mMessageList.setDisplayNamePadding(dip2px(left), dip2px(top), dip2px(right), dip2px(bottom)); } @ReactProp(name = "isAllowPullToRefresh") @@ -503,25 +503,25 @@ public void setMessageTextLineSpacing(PullToRefreshLayout root, int spacing) { mMessageList.setLineSpacingExtra(dip2px(spacing)); } -// @ReactProp(name = "videoMessageRadius") -// public void setVideoMessageRadius(PullToRefreshLayout root, int radius) { -// mMessageList.setVideoMessageRadius(dip2px(radius)); -// } -// -// @ReactProp(name = "videoDurationTextColor") -// public void setVideoDurationTextColor(PullToRefreshLayout root, String color) { -// mMessageList.setVideoDurationTextColor(Color.parseColor(color)); -// } -// -// @ReactProp(name = "videoDurationTextSize") -// public void setVideoDurationTextSize(PullToRefreshLayout root, int size) { -// mMessageList.setVideoDurationTextSize(dip2sp(size)); -// } -// -// @ReactProp(name = "photoMessageRadius") -// public void setPhotoMessageRadius(PullToRefreshLayout root, int radius) { -// mMessageList.setPhotoMessageRadius(dip2px(radius)); -// } + @ReactProp(name = "videoMessageRadius") + public void setVideoMessageRadius(PullToRefreshLayout root, int radius) { + mMessageList.setVideoMessageRadius(dip2px(radius)); + } + + @ReactProp(name = "videoDurationTextColor") + public void setVideoDurationTextColor(PullToRefreshLayout root, String color) { + mMessageList.setVideoDurationTextColor(Color.parseColor(color)); + } + + @ReactProp(name = "videoDurationTextSize") + public void setVideoDurationTextSize(PullToRefreshLayout root, int size) { + mMessageList.setVideoDurationTextSize(dip2sp(size)); + } + + @ReactProp(name = "photoMessageRadius") + public void setPhotoMessageRadius(PullToRefreshLayout root, int radius) { + mMessageList.setPhotoMessageRadius(dip2px(radius)); + } @SuppressWarnings("unchecked") private BroadcastReceiver RCTMsgListReceiver = new BroadcastReceiver() { diff --git a/ReactNative/android/src/main/res/layout/ptr_layout.xml b/ReactNative/android/src/main/res/layout/ptr_layout.xml index 589c4ef9..7ab1b8d8 100644 --- a/ReactNative/android/src/main/res/layout/ptr_layout.xml +++ b/ReactNative/android/src/main/res/layout/ptr_layout.xml @@ -28,6 +28,8 @@ app:sendBubblePaddingRight="16dp" app:sendTextColor="#7587A8" app:sendTextSize="16sp" + app:photoMessageRadius="5dp" + app:videoMessageRadius="5dp" app:showReceiverDisplayName="false" app:showSenderDisplayName="false"> diff --git a/ReactNative/messagelist.android.js b/ReactNative/messagelist.android.js index 89c6fa69..30e1dbf2 100644 --- a/ReactNative/messagelist.android.js +++ b/ReactNative/messagelist.android.js @@ -130,6 +130,10 @@ MessageList.propTypes = { isAllowPullToRefresh: PropTypes.bool, maxBubbleWidth: PropTypes.number, messageTextLineHeight: PropTypes.number, + videoMessageRadius: PropTypes.number, + videoDurationTextColor: PropTypes.string, + videoDurationTextSize: PropTypes.string, + photoMessageRadius: PropTypes.number, ...ViewPropTypes }; diff --git a/ReactNative/sample/App.js b/ReactNative/sample/App.js index 1bd23ca4..dc0e5ceb 100644 --- a/ReactNative/sample/App.js +++ b/ReactNative/sample/App.js @@ -44,11 +44,9 @@ function constructNormalMessage() { displayName: "replace your nickname", avatarPath: "images" } - if (Platform.OS === "ios") { user.avatarPath = RNFS.MainBundlePath + '/default_header.png' - } - + } message.fromUser = user return message @@ -239,7 +237,7 @@ export default class TestRNIMUI extends Component { if (Platform.OS === 'android') { this.refs["MessageList"].refreshComplete() } - + } onSendText = (text) => { @@ -286,6 +284,7 @@ export default class TestRNIMUI extends Component { onFinishRecordVideo = (video) => { var message = constructNormalMessage() + message.msgType = "video" message.mediaPath = video.mediaPath message.duration = video.duration @@ -419,6 +418,7 @@ export default class TestRNIMUI extends Component { sendBubblePadding={{ left: 10, top: 10, right: 15, bottom: 10 }} datePadding={{ left: 5, top: 5, right: 5, bottom: 5 }} dateBackgroundColor={"#39ef23"} + photoMessageRadius={5} /> Date: Thu, 8 Mar 2018 14:50:51 +0800 Subject: [PATCH 19/23] update ReadMe, prepare release messagelist 0.6.4, chatinput 0.6.5 --- Android/chatinput/README.md | 6 +++--- Android/chatinput/README_EN.md | 6 +++--- docs/Android/message_list_usage.md | 13 ++++++++----- docs/Android/message_list_usage_zh.md | 10 +++++----- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/Android/chatinput/README.md b/Android/chatinput/README.md index 79efab81..c4010927 100644 --- a/Android/chatinput/README.md +++ b/Android/chatinput/README.md @@ -12,7 +12,7 @@ - Gradle ```groovy -compile 'cn.jiguang.imui:chatinput:0.6.3' +compile 'cn.jiguang.imui:chatinput:0.6.5' ``` - Maven @@ -20,7 +20,7 @@ compile 'cn.jiguang.imui:chatinput:0.6.3' cn.jiguang.imui chatinput - 0.6.3 + 0.6.5 pom ``` @@ -42,7 +42,7 @@ compile 'cn.jiguang.imui:chatinput:0.6.3' ```groovy dependencies { - compile 'com.github.jpush:imui:0.6.9' + compile 'com.github.jpush:imui:0.7.3' } ``` diff --git a/Android/chatinput/README_EN.md b/Android/chatinput/README_EN.md index 252dfea1..98c9f10e 100644 --- a/Android/chatinput/README_EN.md +++ b/Android/chatinput/README_EN.md @@ -11,7 +11,7 @@ Provides several ways to add dependency, you can choose one of them: - Via Gradle ```groovy -compile 'cn.jiguang.imui:chatinput:0.6.3' +compile 'cn.jiguang.imui:chatinput:0.6.5' ``` - Via Maven @@ -20,7 +20,7 @@ compile 'cn.jiguang.imui:chatinput:0.6.3' cn.jiguang.imui chatinput - 0.6.3 + 0.6.5 pom ``` @@ -41,7 +41,7 @@ allprojects { ```groovy dependencies { - compile 'com.github.jpush:imui:0.6.9' + compile 'com.github.jpush:imui:0.7.3' } ``` diff --git a/docs/Android/message_list_usage.md b/docs/Android/message_list_usage.md index 923748a0..5c33d312 100644 --- a/docs/Android/message_list_usage.md +++ b/docs/Android/message_list_usage.md @@ -10,7 +10,7 @@ We have support several ways to add dependency. You can choose one of them. - Gradle: ```groovy -compile 'cn.jiguang.imui:messagelist:0.6.3' +compile 'cn.jiguang.imui:messagelist:0.6.4' ``` - Maven: @@ -18,7 +18,7 @@ compile 'cn.jiguang.imui:messagelist:0.6.3' cn.jiguang.imui messagelist - 0.6.3 + 0.6.4 pom ``` @@ -35,7 +35,7 @@ allprojects { // Add in module's build.gradle dependencies { - compile 'com.github.jpush:imui:0.7.2' + compile 'com.github.jpush:imui:0.7.3' } ``` @@ -352,11 +352,14 @@ mAdapter.setOnAvatarClickListener(new MsgListAdapter.OnAvatarClickListener() { + /** + *@param view The view been long clicked. + */ @Override - public void onMessageLongClick(MyMessage message) { + public void onMessageLongClick(View view, MyMessage message){ // do something } }); diff --git a/docs/Android/message_list_usage_zh.md b/docs/Android/message_list_usage_zh.md index b78b9d15..d34797b2 100644 --- a/docs/Android/message_list_usage_zh.md +++ b/docs/Android/message_list_usage_zh.md @@ -9,7 +9,7 @@ - Gradle ```groovy -compile 'cn.jiguang.imui:messagelist:0.6.3' +compile 'cn.jiguang.imui:messagelist:0.6.4' ``` - Maven @@ -17,7 +17,7 @@ compile 'cn.jiguang.imui:messagelist:0.6.3' cn.jiguang.imui messagelist - 0.6.3 + 0.6.4 pom ``` @@ -34,7 +34,7 @@ allprojects { // module/build.gradle dependencies { - compile 'com.github.jpush:imui:0.7.2' + compile 'com.github.jpush:imui:0.7.3' } ``` @@ -351,11 +351,11 @@ mAdapter.setOnAvatarClickListener(new MsgListAdapter.OnAvatarClickListener() { @Override - public void onMessageLongClick(MyMessage message) { + public void onMessageLongClick(View view,MyMessage message) { // do something } }); From cdf6f10a0b569ec9971032cad611a61b5ab487a1 Mon Sep 17 00:00:00 2001 From: huangminlinux <380108184@qq.com> Date: Thu, 8 Mar 2018 14:52:52 +0800 Subject: [PATCH 20/23] adjust text message line height --- .../ios/RCTAuroraIMUI/MyMessageModel.swift | 22 +++++++++++++++-- .../Views/IMUITextMessageContentView.swift | 24 +++++++++++++++---- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/ReactNative/ios/RCTAuroraIMUI/MyMessageModel.swift b/ReactNative/ios/RCTAuroraIMUI/MyMessageModel.swift index 99a8e87a..0dc23776 100644 --- a/ReactNative/ios/RCTAuroraIMUI/MyMessageModel.swift +++ b/ReactNative/ios/RCTAuroraIMUI/MyMessageModel.swift @@ -229,10 +229,28 @@ open class RCTMessageModel: IMUIMessageModel { } @objc static func calculateTextContentSize(text: String, isOutGoing: Bool) -> CGSize { + let attributedString = NSMutableAttributedString(string: text) + let mutableParagraphStyle = NSMutableParagraphStyle() + if isOutGoing { - return text.sizeWithConstrainedWidth(with: IMUIMessageCellLayout.bubbleMaxWidth, font: IMUITextMessageContentView.outGoingTextFont) + mutableParagraphStyle.lineSpacing = IMUITextMessageContentView.outGoingTextLineHeight + attributedString.addAttributes([ + NSAttributedStringKey.font: IMUITextMessageContentView.outGoingTextFont, + NSAttributedStringKey.paragraphStyle: mutableParagraphStyle, + NSAttributedStringKey.foregroundColor: IMUITextMessageContentView.outGoingTextColor + ], range: NSMakeRange(0, text.count)) + + return attributedString.boundingRect(with: CGSize(width: IMUIMessageCellLayout.bubbleMaxWidth, height: 10000), options: .usesLineFragmentOrigin, context: nil).size + } else { - return text.sizeWithConstrainedWidth(with: IMUIMessageCellLayout.bubbleMaxWidth, font: IMUITextMessageContentView.inComingTextFont) + mutableParagraphStyle.lineSpacing = IMUITextMessageContentView.inComingTextLineHeight + attributedString.addAttributes([ + NSAttributedStringKey.font: IMUITextMessageContentView.inComingTextColor, + NSAttributedStringKey.paragraphStyle: mutableParagraphStyle, + NSAttributedStringKey.foregroundColor: IMUITextMessageContentView.inComingTextColor + ], range: NSMakeRange(0, text.count)) + return attributedString.boundingRect(with: CGSize(width: IMUIMessageCellLayout.bubbleMaxWidth, height: 10000), options: .usesLineFragmentOrigin, context: nil).size + } } diff --git a/iOS/IMUIMessageCollectionView/Views/IMUITextMessageContentView.swift b/iOS/IMUIMessageCollectionView/Views/IMUITextMessageContentView.swift index fccacea8..76d2ace2 100644 --- a/iOS/IMUIMessageCollectionView/Views/IMUITextMessageContentView.swift +++ b/iOS/IMUIMessageCollectionView/Views/IMUITextMessageContentView.swift @@ -14,6 +14,8 @@ import UIKit @objc open static var outGoingTextFont = UIFont.systemFont(ofSize: 18) @objc open static var inComingTextFont = UIFont.systemFont(ofSize: 18) + @objc open static var outGoingTextLineHeight: CGFloat = 2.0 + @objc open static var inComingTextLineHeight: CGFloat = 2.0 var textMessageLable = IMUITextView() @@ -35,13 +37,25 @@ import UIKit } func layoutToText(with text: String, isOutGoing: Bool) { - textMessageLable.text = text + let attributedString = NSMutableAttributedString(string: text) + let mutableParagraphStyle = NSMutableParagraphStyle() + + if isOutGoing { - textMessageLable.textColor = IMUITextMessageContentView.outGoingTextColor - textMessageLable.font = IMUITextMessageContentView.outGoingTextFont + mutableParagraphStyle.lineSpacing = IMUITextMessageContentView.outGoingTextLineHeight + attributedString.addAttributes([ + NSAttributedStringKey.font: IMUITextMessageContentView.outGoingTextFont, + NSAttributedStringKey.paragraphStyle: mutableParagraphStyle, + NSAttributedStringKey.foregroundColor: IMUITextMessageContentView.outGoingTextColor + ], range: NSMakeRange(0, text.count)) } else { - textMessageLable.textColor = IMUITextMessageContentView.inComingTextColor - textMessageLable.font = IMUITextMessageContentView.inComingTextFont + mutableParagraphStyle.lineSpacing = IMUITextMessageContentView.inComingTextLineHeight + attributedString.addAttributes([ + NSAttributedStringKey.font: IMUITextMessageContentView.inComingTextColor, + NSAttributedStringKey.paragraphStyle: mutableParagraphStyle, + NSAttributedStringKey.foregroundColor: IMUITextMessageContentView.inComingTextColor + ], range: NSMakeRange(0, text.count)) } + textMessageLable.attributedText = attributedString } } From 0bfa9aaeb5849f9f5e406b6872f0b42563fea4e6 Mon Sep 17 00:00:00 2001 From: huangminlinux <380108184@qq.com> Date: Thu, 8 Mar 2018 14:57:03 +0800 Subject: [PATCH 21/23] update to 0.9.7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 355e6bb2..469399c4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aurora-imui-react-native", - "version": "0.9.6", + "version": "0.9.7", "description": "aurora imui plugin for react native application", "main": "index.js", From e59528b32ecde08a20467619e47d2a72a168dab4 Mon Sep 17 00:00:00 2001 From: KenChoi Date: Thu, 8 Mar 2018 15:03:58 +0800 Subject: [PATCH 22/23] prepare release rn 0.9.6 --- ReactNative/android/build.gradle | 4 ++-- .../java/cn/jiguang/imui/messagelist/CustomViewHolder.java | 2 +- .../java/cn/jiguang/imui/messagelist/ReactMsgListManager.java | 4 ++-- package.json | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ReactNative/android/build.gradle b/ReactNative/android/build.gradle index 148452ca..67dfc0f1 100644 --- a/ReactNative/android/build.gradle +++ b/ReactNative/android/build.gradle @@ -27,8 +27,8 @@ dependencies { androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) - compile 'cn.jiguang.imui:messagelist:0.6.3' - compile 'cn.jiguang.imui:chatinput:0.6.4' + compile 'cn.jiguang.imui:messagelist:0.6.4' + compile 'cn.jiguang.imui:chatinput:0.6.5' compile 'org.greenrobot:eventbus:3.0.0' implementation 'com.facebook.react:react-native:+' compile 'com.google.code.gson:gson:2.8.0' diff --git a/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/CustomViewHolder.java b/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/CustomViewHolder.java index 60249f37..2f21593e 100644 --- a/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/CustomViewHolder.java +++ b/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/CustomViewHolder.java @@ -140,7 +140,7 @@ public void onClick(View view) { @Override public boolean onLongClick(View view) { if (mMsgLongClickListener != null) { - mMsgLongClickListener.onMessageLongClick(message); + mMsgLongClickListener.onMessageLongClick(view, message); } else { if (BuildConfig.DEBUG) { Log.w("MsgListAdapter", "Didn't set long click listener! Drop event."); diff --git a/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactMsgListManager.java b/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactMsgListManager.java index 1b9c3dc8..7a3e9020 100644 --- a/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactMsgListManager.java +++ b/ReactNative/android/src/main/java/cn/jiguang/imui/messagelist/ReactMsgListManager.java @@ -164,7 +164,7 @@ public void loadImage(ImageView imageView, String string) { // You can use other image load libraries. Glide.with(reactContext) .load(string) - .apply(new RequestOptions().fitCenter().placeholder(IdHelper.getDrawable(reactContext, "aurora_picture_not_found")).override(400, Target.SIZE_ORIGINAL)) + .apply(new RequestOptions().fitCenter().placeholder(IdHelper.getDrawable(reactContext, "aurora_picture_not_found"))) .into(imageView); } }; @@ -185,7 +185,7 @@ public void onMessageClick(RCTMessage message) { mAdapter.setMsgLongClickListener(new MsgListAdapter.OnMsgLongClickListener() { @Override - public void onMessageLongClick(RCTMessage message) { + public void onMessageLongClick(View view, RCTMessage message) { WritableMap event = Arguments.createMap(); event.putString("message", message.toString()); reactContext.getJSModule(RCTEventEmitter.class).receiveEvent(rootView.getId(), ON_MSG_LONG_CLICK_EVENT, event); diff --git a/package.json b/package.json index 355e6bb2..469399c4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aurora-imui-react-native", - "version": "0.9.6", + "version": "0.9.7", "description": "aurora imui plugin for react native application", "main": "index.js", From d78d3f5576e0320c85425f8377ebc0a16175f0a7 Mon Sep 17 00:00:00 2001 From: KenChoi Date: Thu, 8 Mar 2018 15:08:14 +0800 Subject: [PATCH 23/23] release rn 0.9.8 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 469399c4..07e7c42c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aurora-imui-react-native", - "version": "0.9.7", + "version": "0.9.8", "description": "aurora imui plugin for react native application", "main": "index.js",