From 276d4e9b0a86872844d979ef5e624dab245ab7d0 Mon Sep 17 00:00:00 2001 From: dujiepeng <347302029@qq.com> Date: Fri, 5 May 2023 14:37:57 +0800 Subject: [PATCH 1/2] add common_replace file. --- agora_build.sh | 10 -------- common_replace.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 10 deletions(-) delete mode 100644 agora_build.sh create mode 100644 common_replace.py diff --git a/agora_build.sh b/agora_build.sh deleted file mode 100644 index 18cc9173..00000000 --- a/agora_build.sh +++ /dev/null @@ -1,10 +0,0 @@ - -#!/bin/bash - -flutter clean - -FILE_NAME=agora_chat_sdk - -rm -rf example/ios/.symlinks -rm -rf ../${FILE_NAME} -python update_to_agora.py -s ./ -t ../${FILE_NAME} diff --git a/common_replace.py b/common_replace.py new file mode 100644 index 00000000..e7a07a42 --- /dev/null +++ b/common_replace.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import os +import shutil +import re +import argparse + +def parse_args(): + """ + 解析命令行参数 + """ + parser = argparse.ArgumentParser(description='过滤Dart文件中的中文或英文注释', + add_help=True) + parser.add_argument('language', choices=['chinese', 'english'], help='要过滤的注释语言') + parser.add_argument('src_folder', help='要过滤的源文件夹') + parser.add_argument('dst_folder', help='要输出过滤后文件的目标文件夹') + parser.add_argument('--file-type', '-t', default='.dart', help='要过滤的文件类型(默认为.dart)') + return parser.parse_args() + +def filter_folder(src_folder, dst_folder, file_type, language): + """ + 过滤指定文件夹中的文件,并输出到目标文件夹 + """ + for root, dirs, files in os.walk(src_folder): + for file in files: + if file.endswith(file_type): + src_path = os.path.join(root, file) + dst_path = os.path.join(dst_folder, os.path.relpath(src_path, start=src_folder)) + os.makedirs(os.path.dirname(dst_path), exist_ok=True) + if not os.path.basename(src_path) == ".DS_Store": + shutil.copy2(src_path, dst_path) + filter_comments(dst_path, language) + else: + src_path = os.path.join(root, file) + dst_path = os.path.join(dst_folder, os.path.relpath(src_path, start=src_folder)) + os.makedirs(os.path.dirname(dst_path), exist_ok=True) + if not os.path.basename(src_path) == ".DS_Store": + shutil.copy2(src_path, dst_path) + +def filter_comments(file_path, language): + """ + 过滤文件中的中文或英文注释 + """ + with open(file_path, 'r', encoding='utf-8') as f: + content = f.read() + if language == 'chinese': + pattern = r'~chinese[\s\S]*?~end' + elif language == 'english': + pattern = r'~english[\s\S]*?~end' + else: + return + filtered_content = re.sub(pattern, '', content) + filtered_content = filtered_content.replace('~chinese', '').replace('~english', '').replace('~end', '') + + with open(file_path, 'w', encoding='utf-8') as f: + f.write(filtered_content) + +if __name__ == '__main__': + args = parse_args() + filter_folder(args.src_folder, args.dst_folder, args.file_type, args.language) From 3063d122217309325cae243b8d554fb25ad60ae4 Mon Sep 17 00:00:00 2001 From: dujiepeng <347302029@qq.com> Date: Mon, 15 May 2023 16:44:16 +0800 Subject: [PATCH 2/2] fix download callback not run. --- CHANGELOG.md | 5 +++++ .../easemob/im_flutter_sdk/EMChatManagerWrapper.java | 12 ++++++------ example/android/build.gradle | 2 +- example/ios/Runner.xcodeproj/project.pbxproj | 1 + example/lib/main.dart | 11 ++++++----- ios/Classes/EMChatManagerWrapper.m | 12 ++++++------ 6 files changed, 25 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b379e2af..7940cb9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ ## NEXT +## 4.0.0+5 + +#### 修复 +- 修复下载附件回调不执行。 + ## 4.0.0+4 #### 修复 diff --git a/android/src/main/java/com/easemob/im_flutter_sdk/EMChatManagerWrapper.java b/android/src/main/java/com/easemob/im_flutter_sdk/EMChatManagerWrapper.java index 237a2d55..8457ee67 100644 --- a/android/src/main/java/com/easemob/im_flutter_sdk/EMChatManagerWrapper.java +++ b/android/src/main/java/com/easemob/im_flutter_sdk/EMChatManagerWrapper.java @@ -444,7 +444,7 @@ public void onSuccess() { post(() -> { Map map = new HashMap<>(); map.put("message", EMMessageHelper.toJson(msg)); - map.put("localTime", msg.localTime()); + map.put("localId", msg.getMsgId()); messageChannel.invokeMethod(EMSDKMethod.onMessageSuccess, map); }); } @@ -454,7 +454,7 @@ public void onProgress(int progress, String status) { post(() -> { Map map = new HashMap<>(); map.put("progress", progress); - map.put("localTime", msg.localTime()); + map.put("localId", msg.getMsgId()); messageChannel.invokeMethod(EMSDKMethod.onMessageProgressUpdate, map); }); } @@ -467,7 +467,7 @@ public void onError(int code, String desc) { post(() -> { Map map = new HashMap<>(); map.put("message", EMMessageHelper.toJson(msg)); - map.put("localTime", msg.localTime()); + map.put("localId", msg.getMsgId()); map.put("error", data); messageChannel.invokeMethod(EMSDKMethod.onMessageError, map); }); @@ -488,7 +488,7 @@ public void onSuccess() { post(() -> { Map map = new HashMap<>(); map.put("message", EMMessageHelper.toJson(msg)); - map.put("localTime", msg.localTime()); + map.put("localId", msg.getMsgId()); messageChannel.invokeMethod(EMSDKMethod.onMessageSuccess, map); }); } @@ -498,7 +498,7 @@ public void onProgress(int progress, String status) { post(() -> { Map map = new HashMap<>(); map.put("progress", progress); - map.put("localTime", msg.localTime()); + map.put("localId", msg.getMsgId()); messageChannel.invokeMethod(EMSDKMethod.onMessageProgressUpdate, map); }); } @@ -511,7 +511,7 @@ public void onError(int code, String desc) { post(() -> { Map map = new HashMap<>(); map.put("message", EMMessageHelper.toJson(msg)); - map.put("localTime", msg.localTime()); + map.put("localId", msg.getMsgId()); map.put("error", data); messageChannel.invokeMethod(EMSDKMethod.onMessageError, map); }); diff --git a/example/android/build.gradle b/example/android/build.gradle index 49c115da..6dce8083 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -26,6 +26,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index a24e3bb1..a85a4e1d 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -205,6 +205,7 @@ files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( diff --git a/example/lib/main.dart b/example/lib/main.dart index c312b78d..76486616 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:im_flutter_sdk/im_flutter_sdk.dart'; -var appKey = "<#Your AppKey#>"; +var appKey = "easemob-demo#flutter"; void main() { runApp(const MyApp()); @@ -167,14 +167,14 @@ class _MyHomePageState extends State { "UNIQUE_HANDLER_ID", ChatMessageEvent( onSuccess: (msgId, msg) { - _addLogToConsole("send message succeed"); + _addLogToConsole("on message succeed"); }, onProgress: (msgId, progress) { - _addLogToConsole("send message succeed"); + _addLogToConsole("on message progress"); }, onError: (msgId, msg, error) { _addLogToConsole( - "send message failed, code: ${error.code}, desc: ${error.description}", + "on message failed, code: ${error.code}, desc: ${error.description}", ); }, )); @@ -223,8 +223,9 @@ class _MyHomePageState extends State { break; case MessageType.FILE: { + EMClient.getInstance.chatManager.downloadAttachment(msg); _addLogToConsole( - "receive image message, from: ${msg.from}", + "receive file message, from: ${msg.from}", ); } break; diff --git a/ios/Classes/EMChatManagerWrapper.m b/ios/Classes/EMChatManagerWrapper.m index 7cba5e78..ca73d533 100644 --- a/ios/Classes/EMChatManagerWrapper.m +++ b/ios/Classes/EMChatManagerWrapper.m @@ -472,7 +472,7 @@ - (void)downloadAttachment:(NSDictionary *)param [weakSelf.messageChannel invokeMethod:ChatOnMessageProgressUpdate arguments:@{ @"progress":@(progress), - @"localTime":@(msg.localTime) + @"localId":msg.messageId }]; } completion:^(EMChatMessage *message, EMError *error) { @@ -480,14 +480,14 @@ - (void)downloadAttachment:(NSDictionary *)param [weakSelf.messageChannel invokeMethod:ChatOnMessageError arguments:@{ @"error":[error toJson], - @"localTime":@(msg.localTime), + @"localId":msg.messageId, @"message":[message toJson] }]; }else { [weakSelf.messageChannel invokeMethod:ChatOnMessageSuccess arguments:@{ @"message":[message toJson], - @"localTime":@(msg.localTime) + @"localId":msg.messageId }]; } }]; @@ -510,7 +510,7 @@ - (void)downloadThumbnail:(NSDictionary *)param [weakSelf.messageChannel invokeMethod:ChatOnMessageProgressUpdate arguments:@{ @"progress":@(progress), - @"localTime":@(msg.localTime) + @"localId":msg.messageId }]; } completion:^(EMChatMessage *message, EMError *error) { @@ -518,14 +518,14 @@ - (void)downloadThumbnail:(NSDictionary *)param [weakSelf.messageChannel invokeMethod:ChatOnMessageError arguments:@{ @"error":[error toJson], - @"localTime":@(msg.localTime), + @"localId":msg.messageId, @"message":[message toJson] }]; }else { [weakSelf.messageChannel invokeMethod:ChatOnMessageSuccess arguments:@{ @"message":[message toJson], - @"localTime":@(msg.localTime) + @"localId":msg.messageId }]; } }];