Compare commits

...

10 Commits

Author SHA1 Message Date
cpdl
e13c4c6658 更新测试 2025-02-27 17:41:33 +08:00
cpdl
58fa80a2f8 update 2024-12-23 15:00:15 +08:00
cpdl
f929c73d09 更新sdk 2024-12-23 11:37:32 +08:00
cpdl
1b70214455 修改版本 2024-12-20 14:30:53 +08:00
cpdl
6573f03e96 Merge remote-tracking branch 'github/main'
# Conflicts:
#	android/build.gradle
#	ios/flutter_openim_sdk.podspec
2024-12-20 14:06:49 +08:00
cpdl
8852275b1e Revert "测试"
This reverts commit 80a8fab891.
2024-12-10 15:54:23 +08:00
cpdl
80a8fab891 测试 2024-12-09 17:18:50 +08:00
Brett
d02be57c1e feat: https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.2 2024-11-27 18:47:37 +08:00
Brett
239e111ee4 fix: Error flutter build apk SDK. (#178) 2024-11-27 18:39:34 +08:00
Brett
5d88b4e5d1 feat: https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.2 2024-11-22 19:24:57 +08:00
13 changed files with 155 additions and 24 deletions

View File

@@ -1,3 +1,7 @@
## 3.8.2
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.2)
## 3.8.1+2 ## 3.8.1+2
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.1) - [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.1)

View File

@@ -15,6 +15,10 @@ def getCurrentProjectDir() {
buildscript { buildscript {
repositories { repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
google() google()
mavenCentral() mavenCentral()
} }
@@ -38,7 +42,7 @@ rootProject.allprojects {
apply plugin: 'com.android.library' apply plugin: 'com.android.library'
android { android {
compileSdkVersion 30 compileSdkVersion 34
defaultConfig { defaultConfig {
minSdkVersion 21 minSdkVersion 21
@@ -53,5 +57,5 @@ android {
} }
dependencies { dependencies {
implementation 'com.openim:sdkcore:1.0.0' implementation 'com.openim:sdkcore:1.0.6'
} }

View File

@@ -29,6 +29,14 @@ public class OnAdvancedMsgListener implements open_im_sdk_callback.OnAdvancedMsg
CommonUtil.emitEvent("advancedMsgListener", "onNewRecvMessageRevoked", values); CommonUtil.emitEvent("advancedMsgListener", "onNewRecvMessageRevoked", values);
} }
@Override
public void onNewRecvMessageEdited(String s) {
final Map<String, String> values = new ArrayMap<>();
values.put("id", id);
values.put("messageEdited", s);
CommonUtil.emitEvent("advancedMsgListener", "onNewRecvMessageEdited", values);
}
@Override @Override
public void onRecvC2CReadReceipt(String s) { public void onRecvC2CReadReceipt(String s) {
final Map<String, String> values = new ArrayMap<>(); final Map<String, String> values = new ArrayMap<>();

View File

@@ -42,6 +42,16 @@ public class MessageManager extends BaseManager {
); );
} }
public void editMessage(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.editMessage(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "conversationID"),
value(methodCall, "clientMsgID"),
value(methodCall, "content")
);
}
public void deleteMessageFromLocalStorage(MethodCall methodCall, MethodChannel.Result result) { public void deleteMessageFromLocalStorage(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.deleteMessageFromLocalStorage( Open_im_sdk.deleteMessageFromLocalStorage(
new OnBaseListener(result, methodCall), new OnBaseListener(result, methodCall),

View File

@@ -4,7 +4,7 @@
# #
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'flutter_openim_sdk' s.name = 'flutter_openim_sdk'
s.version = '0.0.1' s.version = '0.0.5'
s.summary = 'A new Flutter project.' s.summary = 'A new Flutter project.'
s.description = <<-DESC s.description = <<-DESC
A new Flutter project. A new Flutter project.
@@ -15,11 +15,11 @@ A new Flutter project.
s.source = { :path => '.' } s.source = { :path => '.' }
s.source_files = 'Classes/**/*' s.source_files = 'Classes/**/*'
s.dependency 'Flutter' s.dependency 'Flutter'
s.platform = :ios, '11.0' s.platform = :ios, '13.0'
#s.ios.vendored_frameworks = 'frameworks/*.xcframework' #s.ios.vendored_frameworks = 'frameworks/*.xcframework'
#s.vendored_frameworks = 'frameworks/*.xcframework' #s.vendored_frameworks = 'frameworks/*.xcframework'
s.dependency 'openim_sdk_core_ios','0.2.0' s.dependency 'openim_sdk_core_ios','0.5.0'
s.static_framework = true s.static_framework = true
s.library = 'resolv' s.library = 'resolv'

View File

@@ -168,6 +168,9 @@ class MessageType {
/// Recall Message /// Recall Message
static const revokeMessageNotification = 2101; static const revokeMessageNotification = 2101;
/// Edit Message
static const editMessageNotification = 2108;
/// Single Chat Has Read Receipt /// Single Chat Has Read Receipt
static const signalHasReadReceiptNotification = 2150; static const signalHasReadReceiptNotification = 2150;

View File

@@ -4,6 +4,7 @@ import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
class OnAdvancedMsgListener { class OnAdvancedMsgListener {
Function(Message msg)? onMsgDeleted; Function(Message msg)? onMsgDeleted;
Function(RevokedInfo info)? onNewRecvMessageRevoked; Function(RevokedInfo info)? onNewRecvMessageRevoked;
Function(EditedInfo info)? onNewRecvMessageEdited;
Function(List<ReadReceiptInfo> list)? onRecvC2CReadReceipt; Function(List<ReadReceiptInfo> list)? onRecvC2CReadReceipt;
Function(Message msg)? onRecvNewMessage; Function(Message msg)? onRecvNewMessage;
Function(Message msg)? onRecvOfflineNewMessage; Function(Message msg)? onRecvOfflineNewMessage;
@@ -15,6 +16,7 @@ class OnAdvancedMsgListener {
OnAdvancedMsgListener({ OnAdvancedMsgListener({
this.onMsgDeleted, this.onMsgDeleted,
this.onNewRecvMessageRevoked, this.onNewRecvMessageRevoked,
this.onNewRecvMessageEdited,
this.onRecvC2CReadReceipt, this.onRecvC2CReadReceipt,
this.onRecvNewMessage, this.onRecvNewMessage,
this.onRecvOfflineNewMessage, this.onRecvOfflineNewMessage,
@@ -30,6 +32,12 @@ class OnAdvancedMsgListener {
onNewRecvMessageRevoked?.call(info); onNewRecvMessageRevoked?.call(info);
} }
/// Message has been edited
void newRecvMessageEdited(EditedInfo info) {
onNewRecvMessageEdited?.call(info);
}
/// C2C Message Read Receipt /// C2C Message Read Receipt
void recvC2CReadReceipt(List<ReadReceiptInfo> list) { void recvC2CReadReceipt(List<ReadReceiptInfo> list) {
onRecvC2CReadReceipt?.call(list); onRecvC2CReadReceipt?.call(list);

View File

@@ -179,6 +179,11 @@ class IMManager {
var info = Utils.toObj(value, (map) => RevokedInfo.fromJson(map)); var info = Utils.toObj(value, (map) => RevokedInfo.fromJson(map));
messageManager.msgListener.newRecvMessageRevoked(info); messageManager.msgListener.newRecvMessageRevoked(info);
break; break;
case 'onNewRecvMessageEdited':
var value = call.arguments['data']['messageEdited'];
var info = Utils.toObj(value, (map) => EditedInfo.fromJson(map));
messageManager.msgListener.newRecvMessageEdited(info);
break;
case 'onRecvC2CReadReceipt': case 'onRecvC2CReadReceipt':
var value = call.arguments['data']['msgReceiptList']; var value = call.arguments['data']['msgReceiptList'];
var list = Utils.toList(value, (map) => ReadReceiptInfo.fromJson(map)); var list = Utils.toList(value, (map) => ReadReceiptInfo.fromJson(map));

View File

@@ -151,7 +151,8 @@ class MessageManager {
/// Typing status update /// Typing status update
/// [msgTip] Custom content /// [msgTip] Custom content
@Deprecated('Use [OpenIM.iMManager.conversationManager.changeInputStates(conversationID:focus:)] instead') @Deprecated(
'Use [OpenIM.iMManager.conversationManager.changeInputStates(conversationID:focus:)] instead')
Future typingStatusUpdate({ Future typingStatusUpdate({
required String userID, required String userID,
String? msgTip, String? msgTip,
@@ -531,7 +532,8 @@ class MessageManager {
}, },
'operationID': Utils.checkOperationID(operationID), 'operationID': Utils.checkOperationID(operationID),
})) }))
.then((value) => Utils.toObj(value, (map) => SearchResult.fromJson(map))); .then((value) =>
Utils.toObj(value, (map) => SearchResult.fromJson(map)));
/// Revoke a message /// Revoke a message
/// [message] The message to be revoked /// [message] The message to be revoked
@@ -548,6 +550,23 @@ class MessageManager {
"operationID": Utils.checkOperationID(operationID), "operationID": Utils.checkOperationID(operationID),
})); }));
/// Edit a message
/// [message] The message to be edited
Future editMessage({
required String conversationID,
required String clientMsgID,
String? operationID,
required String? content,
}) =>
_channel.invokeMethod(
'editMessage',
_buildParam({
'conversationID': conversationID,
'clientMsgID': clientMsgID,
"operationID": Utils.checkOperationID(operationID),
'content': content,
}));
/// Mark messages as read /// Mark messages as read
/// [conversationID] Conversation ID /// [conversationID] Conversation ID
/// [messageIDList] List of clientMsgIDs of messages to be marked as read /// [messageIDList] List of clientMsgIDs of messages to be marked as read
@@ -587,7 +606,8 @@ class MessageManager {
'lastMinSeq': lastMinSeq ?? 0, 'lastMinSeq': lastMinSeq ?? 0,
'operationID': Utils.checkOperationID(operationID), 'operationID': Utils.checkOperationID(operationID),
})) }))
.then((value) => Utils.toObj(value, (map) => AdvancedMessage.fromJson(map))); .then((value) =>
Utils.toObj(value, (map) => AdvancedMessage.fromJson(map)));
/// Get chat history (newly received chat history after startMsg). Used for locating a specific message in global search and then fetching messages received after that message. /// Get chat history (newly received chat history after startMsg). Used for locating a specific message in global search and then fetching messages received after that message.
/// [conversationID] Conversation ID, can be used for querying notifications /// [conversationID] Conversation ID, can be used for querying notifications
@@ -610,7 +630,8 @@ class MessageManager {
'lastMinSeq': lastMinSeq ?? 0, 'lastMinSeq': lastMinSeq ?? 0,
'operationID': Utils.checkOperationID(operationID), 'operationID': Utils.checkOperationID(operationID),
})) }))
.then((value) => Utils.toObj(value, (map) => AdvancedMessage.fromJson(map))); .then((value) =>
Utils.toObj(value, (map) => AdvancedMessage.fromJson(map)));
/// Find message details /// Find message details
/// [conversationID] Conversation ID /// [conversationID] Conversation ID
@@ -626,7 +647,8 @@ class MessageManager {
'searchParams': searchParams.map((e) => e.toJson()).toList(), 'searchParams': searchParams.map((e) => e.toJson()).toList(),
'operationID': Utils.checkOperationID(operationID), 'operationID': Utils.checkOperationID(operationID),
})) }))
.then((value) => Utils.toObj(value, (map) => SearchResult.fromJson(map))); .then((value) =>
Utils.toObj(value, (map) => SearchResult.fromJson(map)));
/// Rich text message /// Rich text message
/// [text] Input content /// [text] Input content

View File

@@ -1123,6 +1123,73 @@ class RevokedInfo {
} }
} }
/// Message revocation details
class EditedInfo {
/// Editer's ID
String? editerID;
/// Message ID
String? clientMsgID;
/// Revocation time
int? editTime;
/// Message sending time
int? sourceMessageSendTime;
/// Message sender
String? sourceMessageSendID;
/// Message sender's nickname
String? sourceMessageSenderNickname;
/// Conversation type [ConversationType]
int? sessionType;
/// Message content
String? content;
EditedInfo({
this.editerID,
this.clientMsgID,
this.editTime,
this.sourceMessageSendTime,
this.sourceMessageSendID,
this.sourceMessageSenderNickname,
this.sessionType,
this.content,
});
EditedInfo.fromJson(Map<String, dynamic> json) {
editerID = json['editerID'];
clientMsgID = json['clientMsgID'];
editTime = json['editTime'];
sourceMessageSendTime = json['sourceMessageSendTime'];
sourceMessageSendID = json['sourceMessageSendID'];
sourceMessageSenderNickname = json['sourceMessageSenderNickname'];
sessionType = json['sessionType'];
content = json['content'];
}
Map<String, dynamic> toJson() {
final data = Map<String, dynamic>();
data['editerID'] = this.editerID;
data['clientMsgID'] = this.clientMsgID;
data['editTime'] = this.editTime;
data['sourceMessageSendTime'] = this.sourceMessageSendTime;
data['sourceMessageSendID'] = this.sourceMessageSendID;
data['sourceMessageSenderNickname'] = this.sourceMessageSenderNickname;
data['sessionType'] = this.sessionType;
data['content'] = this.content;
return data;
}
}
class AdvancedMessage { class AdvancedMessage {
List<Message>? messageList; List<Message>? messageList;
bool? isEnd; bool? isEnd;

View File

@@ -2,7 +2,7 @@ import 'package:flutter/services.dart';
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart'; import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
class OpenIM { class OpenIM {
static const version = '3.8.1+2'; static const version = '3.8.2+1';
static const _channel = MethodChannel('flutter_openim_sdk'); static const _channel = MethodChannel('flutter_openim_sdk');

View File

@@ -63,18 +63,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker name: leak_tracker
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.0.4" version: "10.0.5"
leak_tracker_flutter_testing: leak_tracker_flutter_testing:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker_flutter_testing name: leak_tracker_flutter_testing
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.3" version: "3.0.5"
leak_tracker_testing: leak_tracker_testing:
dependency: transitive dependency: transitive
description: description:
@@ -95,18 +95,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: material_color_utilities name: material_color_utilities
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.8.0" version: "0.11.1"
meta: meta:
dependency: transitive dependency: transitive
description: description:
name: meta name: meta
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.12.0" version: "1.15.0"
path: path:
dependency: transitive dependency: transitive
description: description:
@@ -164,10 +164,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.0" version: "0.7.2"
vector_math: vector_math:
dependency: transitive dependency: transitive
description: description:
@@ -180,10 +180,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: vm_service name: vm_service
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "14.2.1" version: "14.2.5"
sdks: sdks:
dart: ">=3.3.0 <4.0.0" dart: ">=3.3.0 <4.0.0"
flutter: ">=3.18.0-18.0.pre.54" flutter: ">=3.18.0-18.0.pre.54"

View File

@@ -1,6 +1,6 @@
name: flutter_openim_sdk name: flutter_openim_sdk
description: An instant messaging plug-in that supports Android and IOS. And the server is also all open source. description: An instant messaging plug-in that supports Android and IOS. And the server is also all open source.
version: 3.8.1+2 version: 3.8.2+1
homepage: https://www.openim.io homepage: https://www.openim.io
repository: https://github.com/openimsdk/open-im-sdk-flutter repository: https://github.com/openimsdk/open-im-sdk-flutter