From c0618458fa67ecffa3c997a4f46bf054aec94c90 Mon Sep 17 00:00:00 2001 From: hrxiang Date: Wed, 12 Jul 2023 18:24:12 +0800 Subject: [PATCH] putFile replace to uploadFile --- android/build.gradle | 2 +- .../listener/OnPutFileListener.java | 86 -------------- .../listener/OnUploadFileListener.java | 110 ++++++++++++++++++ .../flutter_openim_sdk/manager/IMManager.java | 8 +- lib/flutter_openim_sdk.dart | 2 +- lib/src/enum/listener_type.dart | 2 +- lib/src/listener/put_file_listener.dart | 32 ----- lib/src/listener/upload_file_listener.dart | 45 +++++++ lib/src/manager/im_manager.dart | 101 +++++++++------- 9 files changed, 223 insertions(+), 165 deletions(-) delete mode 100644 android/src/main/java/io/openim/flutter_openim_sdk/listener/OnPutFileListener.java create mode 100644 android/src/main/java/io/openim/flutter_openim_sdk/listener/OnUploadFileListener.java delete mode 100644 lib/src/listener/put_file_listener.dart create mode 100644 lib/src/listener/upload_file_listener.dart diff --git a/android/build.gradle b/android/build.gradle index 631b101..2d31ca3 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -53,5 +53,5 @@ dependencies { // 本地依赖,现将aar复制到libs/io/openim/core-sdk/0.0.1/ 下,命名core-sdk-0.0.1.aar // implementation 'io.openim:core-sdk:0.0.1@aar' // api 'io.openim:core-sdk:2.3.5-t44@aar' - implementation 'io.openim:core-sdk:3.0.0-beta09@aar' + implementation 'io.openim:core-sdk:3.0.0-beta11@aar' } \ No newline at end of file diff --git a/android/src/main/java/io/openim/flutter_openim_sdk/listener/OnPutFileListener.java b/android/src/main/java/io/openim/flutter_openim_sdk/listener/OnPutFileListener.java deleted file mode 100644 index 0a4157b..0000000 --- a/android/src/main/java/io/openim/flutter_openim_sdk/listener/OnPutFileListener.java +++ /dev/null @@ -1,86 +0,0 @@ -package io.openim.flutter_openim_sdk.listener; - -import android.util.ArrayMap; - -import java.util.Map; - -import io.flutter.plugin.common.MethodCall; -import io.flutter.plugin.common.MethodChannel; -import io.openim.flutter_openim_sdk.util.CommonUtil; -import open_im_sdk_callback.PutFileCallback; - -public class OnPutFileListener implements PutFileCallback { - final private MethodChannel.Result result; - final private Object putID; - - public OnPutFileListener(MethodChannel.Result result, MethodCall call) { - this.result = result; - this.putID = call.argument("putID"); - } - - @Override - public void hashComplete(String hash, long total) { - if (null != putID) { - final Map values = new ArrayMap<>(); - values.put("putID", putID); - values.put("hash", hash); - values.put("total", total); - CommonUtil.emitEvent("putFileListener", "hashComplete", values); - } - } - - @Override - public void hashProgress(long current, long total) { - if (null != putID) { - final Map values = new ArrayMap<>(); - values.put("putID", putID); - values.put("current", current); - values.put("total", total); - CommonUtil.emitEvent("putFileListener", "hashProgress", values); - } - } - - @Override - public void open(long size) { - if (null != putID) { - final Map values = new ArrayMap<>(); - values.put("putID", putID); - values.put("size", size); - CommonUtil.emitEvent("putFileListener", "open", values); - } - } - - @Override - public void putComplete(long total, long putType) { - if (null != putID) { - final Map values = new ArrayMap<>(); - values.put("putID", putID); - values.put("putType", putType); - values.put("total", total); - CommonUtil.emitEvent("putFileListener", "putComplete", values); - } - } - - @Override - public void putProgress(long save, long current, long total) { - if (null != putID) { - final Map values = new ArrayMap<>(); - values.put("putID", putID); - values.put("save", save); - values.put("current", current); - values.put("total", total); - CommonUtil.emitEvent("putFileListener", "putProgress", values); - } - } - - @Override - public void putStart(long current, long total) { - if (null != putID) { - final Map values = new ArrayMap<>(); - values.put("putID", putID); - values.put("current", current); - values.put("total", total); - CommonUtil.emitEvent("putFileListener", "putStart", values); - } - } -} diff --git a/android/src/main/java/io/openim/flutter_openim_sdk/listener/OnUploadFileListener.java b/android/src/main/java/io/openim/flutter_openim_sdk/listener/OnUploadFileListener.java new file mode 100644 index 0000000..72eb26e --- /dev/null +++ b/android/src/main/java/io/openim/flutter_openim_sdk/listener/OnUploadFileListener.java @@ -0,0 +1,110 @@ +package io.openim.flutter_openim_sdk.listener; + +import android.util.ArrayMap; + +import java.util.Map; + +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; +import io.openim.flutter_openim_sdk.util.CommonUtil; +import open_im_sdk_callback.UploadFileCallback; + +public class OnUploadFileListener implements UploadFileCallback { + final private MethodChannel.Result result; + final private Object id; + + public OnUploadFileListener(MethodChannel.Result result, MethodCall call) { + this.result = result; + this.id = call.argument("id"); + } + + @Override + public void complete(long size, String url, int type) { + if (null != id) { + final Map values = new ArrayMap<>(); + values.put("id", id); + values.put("size", size); + values.put("url", url); + values.put("type", type); + CommonUtil.emitEvent("uploadFileListener", "complete", values); + } + } + + @Override + public void hashPartComplete(String partHash, String fileHash) { + if (null != id) { + final Map values = new ArrayMap<>(); + values.put("id", id); + values.put("partHash", partHash); + values.put("fileHash", fileHash); + CommonUtil.emitEvent("uploadFileListener", "hashPartComplete", values); + } + } + + @Override + public void hashPartProgress(int index, long size, String partHash) { + if (null != id) { + final Map values = new ArrayMap<>(); + values.put("id", id); + values.put("index", index); + values.put("size", size); + values.put("partHash", partHash); + CommonUtil.emitEvent("uploadFileListener", "hashPartProgress", values); + } + } + + @Override + public void open(long size) { + if (null != id) { + final Map values = new ArrayMap<>(); + values.put("id", id); + values.put("size", size); + CommonUtil.emitEvent("uploadFileListener", "open", values); + } + } + + @Override + public void partSize(long partSize, int num) { + if (null != id) { + final Map values = new ArrayMap<>(); + values.put("id", id); + values.put("partSize", partSize); + values.put("num", num); + CommonUtil.emitEvent("uploadFileListener", "partSize", values); + } + } + + @Override + public void uploadComplete(long fileSize, long streamSize, long storageSize) { + if (null != id) { + final Map values = new ArrayMap<>(); + values.put("id", id); + values.put("fileSize", fileSize); + values.put("streamSize", streamSize); + values.put("storageSize", storageSize); + CommonUtil.emitEvent("uploadFileListener", "uploadComplete", values); + } + } + + @Override + public void uploadID(String uploadID) { + if (null != id) { + final Map values = new ArrayMap<>(); + values.put("id", id); + values.put("uploadID", uploadID); + CommonUtil.emitEvent("uploadFileListener", "uploadID", values); + } + } + + @Override + public void uploadPartComplete(int index, long partSize, String partHash) { + if (null != id) { + final Map values = new ArrayMap<>(); + values.put("id", id); + values.put("index", index); + values.put("partSize", partSize); + values.put("partHash", partHash); + CommonUtil.emitEvent("uploadFileListener", "uploadPartComplete", values); + } + } +} diff --git a/android/src/main/java/io/openim/flutter_openim_sdk/manager/IMManager.java b/android/src/main/java/io/openim/flutter_openim_sdk/manager/IMManager.java index 03a676d..78fffcd 100644 --- a/android/src/main/java/io/openim/flutter_openim_sdk/manager/IMManager.java +++ b/android/src/main/java/io/openim/flutter_openim_sdk/manager/IMManager.java @@ -5,7 +5,7 @@ import io.flutter.plugin.common.MethodChannel; import io.openim.flutter_openim_sdk.FlutterOpenimSdkPlugin; import io.openim.flutter_openim_sdk.listener.OnBaseListener; import io.openim.flutter_openim_sdk.listener.OnConnListener; -import io.openim.flutter_openim_sdk.listener.OnPutFileListener; +import io.openim.flutter_openim_sdk.listener.OnUploadFileListener; import io.openim.flutter_openim_sdk.util.CommonUtil; import open_im_sdk.Open_im_sdk; @@ -40,12 +40,12 @@ public class IMManager extends BaseManager { CommonUtil.runMainThreadReturn(result, Open_im_sdk.getLoginStatus(value(methodCall, "operationID"))); } - public void putFile(MethodCall methodCall, MethodChannel.Result result) { - Open_im_sdk.putFile( + public void uploadFile(MethodCall methodCall, MethodChannel.Result result) { + Open_im_sdk.uploadFile( new OnBaseListener(result, methodCall), value(methodCall, "operationID"), jsonValue(methodCall), - new OnPutFileListener(result, methodCall) + new OnUploadFileListener(result, methodCall) ); } diff --git a/lib/flutter_openim_sdk.dart b/lib/flutter_openim_sdk.dart index 23d5929..8e703b6 100644 --- a/lib/flutter_openim_sdk.dart +++ b/lib/flutter_openim_sdk.dart @@ -20,7 +20,7 @@ export 'src/listener/group_listener.dart'; export 'src/listener/listener_for_service.dart'; export 'src/listener/message_kv_info_listener.dart'; export 'src/listener/msg_send_progress_listener.dart'; -export 'src/listener/put_file_listener.dart'; +export 'src/listener/upload_file_listener.dart'; export 'src/listener/user_listener.dart'; export 'src/manager/im_conversation_manager.dart'; export 'src/manager/im_friendship_manager.dart'; diff --git a/lib/src/enum/listener_type.dart b/lib/src/enum/listener_type.dart index 7dac888..86c3c5f 100644 --- a/lib/src/enum/listener_type.dart +++ b/lib/src/enum/listener_type.dart @@ -14,5 +14,5 @@ class ListenerType { static const customBusinessListener = "customBusinessListener"; static const messageKvInfoListener = "messageKvInfoListener"; static const listenerForService = "listenerForService"; - static const putFileListener = "putFileListener"; + static const uploadFileListener = "uploadFileListener"; } diff --git a/lib/src/listener/put_file_listener.dart b/lib/src/listener/put_file_listener.dart deleted file mode 100644 index 63ee26c..0000000 --- a/lib/src/listener/put_file_listener.dart +++ /dev/null @@ -1,32 +0,0 @@ -class OnPutFileListener { - Function(String putID, String hash, int total)? onHashComplete; - Function(String putID, int current, int total)? onHashProgress; - Function(String putID, int size)? onOpen; - Function(String putID, int total, int putType)? onPutComplete; - Function(String putID, int save, int current, int total)? onPutProgress; - Function(String putID, int current, int total)? onPutStart; - - void hashComplete(String putID, String hash, int total) { - onHashComplete?.call(putID, hash, total); - } - - void hashProgress(String putID, int current, int total) { - onHashProgress?.call(putID, current, total); - } - - void open(String putID, int size) { - onOpen?.call(putID, size); - } - - void putComplete(String putID, int total, int putType) { - onPutComplete?.call(putID, total, putType); - } - - void putProgress(String putID, int save, int current, int total) { - onPutProgress?.call(putID, save, current, total); - } - - void putStart(String putID, int current, int total) { - onPutStart?.call(putID, current, total); - } -} diff --git a/lib/src/listener/upload_file_listener.dart b/lib/src/listener/upload_file_listener.dart new file mode 100644 index 0000000..361eb51 --- /dev/null +++ b/lib/src/listener/upload_file_listener.dart @@ -0,0 +1,45 @@ +class OnUploadFileListener { + Function(String id, int size, String url, int type)? onComplete; + Function(String id, String partHash, String fileHash)? onHashPartComplete; + Function(String id, int index, int size, String partHash)? onHashPartProgress; + Function(String id, int size)? onOpen; + Function(String id, int partSize, int num)? onPartSize; + Function(String id, int fileSize, int streamSize, int storageSize)? + onUploadComplete; + Function(String id, String uploadID)? onUploadID; + Function(String id, int index, int partSize, String partHash)? + onUploadPartComplete; + + void complete(String id, int size, String url, int type) { + onComplete?.call(id, size, url, type); + } + + void hashPartComplete(String id, String partHash, String fileHash) { + onHashPartComplete?.call(id, partHash, fileHash); + } + + void hashPartProgress(String id, int index, int size, String partHash) { + onHashPartProgress?.call(id, index, size, partHash); + } + + void open(String id, int size) { + onOpen?.call(id, size); + } + + void partSize(String id, int partSize, int num) { + onPartSize?.call(id, partSize, num); + } + + void uploadComplete( + String id, int fileSize, int streamSize, int storageSize) { + onUploadComplete?.call(id, fileSize, streamSize, storageSize); + } + + void uploadID(String id, String uploadID) { + onUploadID?.call(id, uploadID); + } + + void uploadPartComplete(String id, int index, int partSize, String partHash) { + onUploadPartComplete?.call(id, index, partSize, partHash); + } +} diff --git a/lib/src/manager/im_manager.dart b/lib/src/manager/im_manager.dart index d5b299a..d55d9f9 100644 --- a/lib/src/manager/im_manager.dart +++ b/lib/src/manager/im_manager.dart @@ -3,6 +3,7 @@ import 'dart:io'; import 'package:flutter/services.dart'; import 'package:flutter_openim_sdk/flutter_openim_sdk.dart'; +import 'package:flutter_openim_sdk/src/listener/upload_file_listener.dart'; import 'package:flutter_openim_sdk/src/logger.dart'; class IMManager { @@ -15,7 +16,7 @@ class IMManager { late OnConnectListener _connectListener; OnListenerForService? _listenerForService; - OnPutFileListener? _putFileListener; + OnUploadFileListener? _uploadFileListener; late String userID; late UserInfo userInfo; bool isLogined = false; @@ -316,45 +317,61 @@ class IMManager { _listenerForService?.recvNewMessage(msg); break; } - } else if (call.method == ListenerType.putFileListener) { + } else if (call.method == ListenerType.uploadFileListener) { String type = call.arguments['type']; dynamic data = call.arguments['data']; switch (type) { - case 'hashComplete': - String putID = data['putID']; - String hash = data['hash']; - int total = data['total']; - _putFileListener?.hashComplete(putID, hash, total); - break; - case 'hashProgress': - String putID = data['putID']; - int current = data['current']; - int total = data['total']; - _putFileListener?.hashProgress(putID, current, total); + case 'complete': + String id = data['id']; + int size = data['size']; + String url = data['url']; + int type = data['type']; + _uploadFileListener?.complete(id, size, url, type); + break; + case 'hashPartComplete': + String id = data['id']; + String partHash = data['partHash']; + String fileHash = data['fileHash']; + _uploadFileListener?.hashPartComplete(id, partHash, fileHash); + break; + case 'hashPartProgress': + String id = data['id']; + int index = data['index']; + int size = data['size']; + String partHash = data['partHash']; + _uploadFileListener?.hashPartProgress(id, index, size, partHash); break; case 'open': - String putID = data['putID']; + String id = data['id']; int size = data['size']; - _putFileListener?.open(putID, size); - break; - case 'putComplete': - String putID = data['putID']; - int putType = data['putType']; - int total = data['total']; - _putFileListener?.putComplete(putID, putType, total); - break; - case 'putProgress': - String putID = data['putID']; - int save = data['save']; - int current = data['current']; - int total = data['total']; - _putFileListener?.putProgress(putID, save, current, total); - break; - case 'putStart': - String putID = data['putID']; - int current = data['current']; - int total = data['total']; - _putFileListener?.putStart(putID, current, total); + _uploadFileListener?.open(id, size); + break; + case 'partSize': + String id = data['id']; + int partSize = data['partSize']; + int num = data['num']; + _uploadFileListener?.partSize(id, partSize, num); + break; + case 'uploadComplete': + String id = data['id']; + int fileSize = data['fileSize']; + int streamSize = data['streamSize']; + int storageSize = data['storageSize']; + _uploadFileListener?.uploadComplete( + id, fileSize, streamSize, storageSize); + break; + case 'uploadID': + String id = data['id']; + String uploadID = data['uploadID']; + _uploadFileListener?.uploadID(id, uploadID); + break; + case 'uploadPartComplete': + String id = data['id']; + int index = data['index']; + int partSize = data['partSize']; + String partHash = data['partHash']; + _uploadFileListener?.uploadPartComplete( + id, index, partSize, partHash); break; } } @@ -485,18 +502,22 @@ class IMManager { Future getLoginUserInfo() async => userInfo; /// - Future putFile({ - required String putID, + Future uploadFile({ + required String id, required String filePath, required String fileName, + String? contentType, + String? cause, String? operationID, }) => _channel.invokeMethod( - 'putFile', + 'uploadFile', _buildParam({ - 'putID': putID, + 'id': id, 'filePath': filePath, 'name': fileName, + 'contentType': contentType, + 'cause': cause, 'operationID': Utils.checkOperationID(operationID), })); @@ -535,8 +556,8 @@ class IMManager { // 'operationID': Utils.checkOperationID(operationID), // })); - void setPutFileListener(OnPutFileListener listener) { - _putFileListener = listener; + void setUploadFileListener(OnUploadFileListener listener) { + _uploadFileListener = listener; } ///