main
hrxiang 4 years ago
parent 0a7613005e
commit 78278ec8fe
  1. 1
      .idea/flutter_openim_sdk.iml
  2. 196
      .idea/libraries/Dart_Packages.xml
  3. 4
      .idea/libraries/Flutter_Plugins.xml
  4. 6
      CHANGELOG.md
  5. 1740
      README.zh-cn.md
  6. 18
      lib/src/manager/im_conversation_manager.dart
  7. 10
      lib/src/manager/im_friendship_manager.dart
  8. 25
      lib/src/manager/im_group_manager.dart
  9. 24
      lib/src/manager/im_message_manager.dart
  10. 6
      test/flutter_openim_sdk_test.dart

@ -20,6 +20,5 @@
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Dart SDK" level="project" /> <orderEntry type="library" name="Dart SDK" level="project" />
<orderEntry type="library" name="Flutter Plugins" level="project" /> <orderEntry type="library" name="Flutter Plugins" level="project" />
<orderEntry type="library" name="Dart Packages" level="project" />
</component> </component>
</module> </module>

@ -1,196 +0,0 @@
<component name="libraryTable">
<library name="Dart Packages" type="DartPackagesLibraryType">
<properties>
<option name="packageNameToDirsMap">
<entry key="async">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/async-2.6.1/lib" />
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/async-2.8.1/lib" />
</list>
</value>
</entry>
<entry key="boolean_selector">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/boolean_selector-2.1.0/lib" />
</list>
</value>
</entry>
<entry key="characters">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/characters-1.1.0/lib" />
</list>
</value>
</entry>
<entry key="charcode">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/charcode-1.2.0/lib" />
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/charcode-1.3.1/lib" />
</list>
</value>
</entry>
<entry key="clock">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/clock-1.1.0/lib" />
</list>
</value>
</entry>
<entry key="collection">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/collection-1.15.0/lib" />
</list>
</value>
</entry>
<entry key="cupertino_icons">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/cupertino_icons-1.0.3/lib" />
</list>
</value>
</entry>
<entry key="fake_async">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/fake_async-1.2.0/lib" />
</list>
</value>
</entry>
<entry key="flutter">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/packages/flutter/lib" />
</list>
</value>
</entry>
<entry key="flutter_test">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/packages/flutter_test/lib" />
</list>
</value>
</entry>
<entry key="matcher">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/matcher-0.12.10/lib" />
</list>
</value>
</entry>
<entry key="meta">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/meta-1.3.0/lib" />
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/meta-1.7.0/lib" />
</list>
</value>
</entry>
<entry key="path">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/path-1.8.0/lib" />
</list>
</value>
</entry>
<entry key="sky_engine">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/bin/cache/pkg/sky_engine/lib" />
</list>
</value>
</entry>
<entry key="source_span">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/source_span-1.8.1/lib" />
</list>
</value>
</entry>
<entry key="stack_trace">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/stack_trace-1.10.0/lib" />
</list>
</value>
</entry>
<entry key="stream_channel">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/stream_channel-2.1.0/lib" />
</list>
</value>
</entry>
<entry key="string_scanner">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/string_scanner-1.1.0/lib" />
</list>
</value>
</entry>
<entry key="term_glyph">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/term_glyph-1.2.0/lib" />
</list>
</value>
</entry>
<entry key="test_api">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/test_api-0.3.0/lib" />
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/test_api-0.4.2/lib" />
</list>
</value>
</entry>
<entry key="typed_data">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/typed_data-1.3.0/lib" />
</list>
</value>
</entry>
<entry key="vector_math">
<value>
<list>
<option value="$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/vector_math-2.1.0/lib" />
</list>
</value>
</entry>
</option>
</properties>
<CLASSES>
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/async-2.6.1/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/async-2.8.1/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/boolean_selector-2.1.0/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/characters-1.1.0/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/charcode-1.2.0/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/charcode-1.3.1/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/clock-1.1.0/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/collection-1.15.0/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/cupertino_icons-1.0.3/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/fake_async-1.2.0/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/matcher-0.12.10/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/meta-1.3.0/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/meta-1.7.0/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/path-1.8.0/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/source_span-1.8.1/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/stack_trace-1.10.0/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/stream_channel-2.1.0/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/string_scanner-1.1.0/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/term_glyph-1.2.0/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/test_api-0.3.0/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/test_api-0.4.2/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/typed_data-1.3.0/lib" />
<root url="file://$USER_HOME$/Development/flutter/.pub-cache/hosted/pub.flutter-io.cn/vector_math-2.1.0/lib" />
<root url="file://$USER_HOME$/Development/flutter/bin/cache/pkg/sky_engine/lib" />
<root url="file://$USER_HOME$/Development/flutter/packages/flutter/lib" />
<root url="file://$USER_HOME$/Development/flutter/packages/flutter_test/lib" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

@ -1,6 +1,8 @@
<component name="libraryTable"> <component name="libraryTable">
<library name="Flutter Plugins" type="FlutterPluginsLibraryType"> <library name="Flutter Plugins" type="FlutterPluginsLibraryType">
<CLASSES /> <CLASSES>
<root url="file://$PROJECT_DIR$" />
</CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES /> <SOURCES />
</library> </library>

@ -1,3 +1,9 @@
## 0.0.1 ## 0.0.1
* TODO: Describe initial release. * TODO: Describe initial release.
### 0.0.2
1,将 markSingleMessageHasRead、markGroupMessageHasRead和getTotalUnreadMsgCount方法从类MessageManager移动到类ConversationManager。
2,修改setFriendInfo方法的参数。
3,修改createGroup和setGroupInfo方法的参数。

File diff suppressed because it is too large Load Diff

@ -96,6 +96,24 @@ class ConversationManager {
})) }))
.then((value) => _printValue(value)); .then((value) => _printValue(value));
///
/// @params userID: receiver's userID
Future<dynamic> markSingleMessageHasRead({required String userID}) {
return _channel.invokeMethod(
'markSingleMessageHasRead', _buildParam({'userID': userID}));
}
///
Future<dynamic> markGroupMessageHasRead({required String groupID}) {
return _channel.invokeMethod(
'markGroupMessageHasRead', _buildParam({'groupID': groupID}));
}
///
Future<dynamic> getTotalUnreadMsgCount() {
return _channel.invokeMethod('getTotalUnreadMsgCount', _buildParam({}));
}
static Map _buildParam(Map param) { static Map _buildParam(Map param) {
param["ManagerName"] = "conversationManager"; param["ManagerName"] = "conversationManager";
return param; return param;

@ -55,8 +55,14 @@ class FriendshipManager {
/// modify friend information, only [comment] can be modified /// modify friend information, only [comment] can be modified
/// ///
Future<dynamic> setFriendInfo({required UserInfo info}) { Future<dynamic> setFriendInfo(
return _channel.invokeMethod('setFriendInfo', _buildParam(info.toJson())); {required String uid, required String comment}) {
return _channel.invokeMethod(
'setFriendInfo',
_buildParam({
'uid': uid,
'comment': comment,
}));
} }
/// add to blacklist /// add to blacklist

@ -130,16 +130,23 @@ class GroupManager {
} }
/// create a group /// create a group
/// @params groupInfo: Group information
/// @params list[List<GroupMemberRole>]: Group members you invited /// @params list[List<GroupMemberRole>]: Group members you invited
Future<dynamic> createGroup({ Future<dynamic> createGroup({
GroupInfo? groupInfo, String? groupName,
String? notification,
String? introduction,
String? faceUrl,
required List<GroupMemberRole> list, required List<GroupMemberRole> list,
}) { }) {
return _channel.invokeMethod( return _channel.invokeMethod(
'createGroup', 'createGroup',
_buildParam({ _buildParam({
'gInfo': groupInfo?.toJson(), 'gInfo': {
"groupName": groupName,
"notification": notification,
"introduction": introduction,
"faceUrl": faceUrl,
},
'memberList': list.map((e) => e.toJson()).toList() 'memberList': list.map((e) => e.toJson()).toList()
})); }));
/*.then((value) => _formatJson(value)['groupID'])*/ /*.then((value) => _formatJson(value)['groupID'])*/
@ -147,12 +154,20 @@ class GroupManager {
/// Edit group information /// Edit group information
Future<dynamic> setGroupInfo({ Future<dynamic> setGroupInfo({
required GroupInfo groupInfo, String? groupName,
String? notification,
String? introduction,
String? faceUrl,
}) { }) {
return _channel.invokeMethod( return _channel.invokeMethod(
'setGroupInfo', 'setGroupInfo',
_buildParam({ _buildParam({
'gInfo': groupInfo.toJson(), 'gInfo': {
"groupName": groupName,
"notification": notification,
"introduction": introduction,
"faceUrl": faceUrl,
},
})); }));
} }

@ -98,14 +98,14 @@ class MessageManager {
/// @params userID: receiver's user ID /// @params userID: receiver's user ID
/// @params sender: current user ID /// @params sender: current user ID
Future insertSingleMessageToLocalStorage({ Future insertSingleMessageToLocalStorage({
String? userID, String? receiver,
Message? message,
String? sender, String? sender,
Message? message,
}) { }) {
return _channel.invokeMethod( return _channel.invokeMethod(
'insertSingleMessageToLocalStorage', 'insertSingleMessageToLocalStorage',
_buildParam({ _buildParam({
"userID": userID, "userID": receiver,
"message": message?.toJson(), "message": message?.toJson(),
"sender": sender, "sender": sender,
})); }));
@ -120,19 +120,6 @@ class MessageManager {
})); }));
} }
///
/// @params userID: receiver's userID
Future<dynamic> markSingleMessageHasRead({required String userID}) {
return _channel.invokeMethod(
'markSingleMessageHasRead', _buildParam({'userID': userID}));
}
///
Future<dynamic> markGroupMessageHasRead({required String groupID}) {
return _channel.invokeMethod(
'markGroupMessageHasRead', _buildParam({'groupID': groupID}));
}
/// ///
/// @params userID: receiver's user ID /// @params userID: receiver's user ID
Future markC2CMessageAsRead({ Future markC2CMessageAsRead({
@ -373,11 +360,6 @@ class MessageManager {
.then((value) => _toObj(value)); .then((value) => _toObj(value));
} }
///
Future<dynamic> getTotalUnreadMsgCount() {
return _channel.invokeMethod('getTotalUnreadMsgCount', _buildParam({}));
}
/// ///
void forceSyncMsg() { void forceSyncMsg() {
_channel.invokeMethod('forceSyncMsg', _buildParam({})); _channel.invokeMethod('forceSyncMsg', _buildParam({}));

@ -1,6 +1,7 @@
import 'dart:convert';
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart'; import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
import 'package:flutter_openim_sdk/src/openim.dart';
void main() { void main() {
/* const MethodChannel channel = MethodChannel('flutter_openim_sdk'); /* const MethodChannel channel = MethodChannel('flutter_openim_sdk');
@ -41,4 +42,7 @@ void main() {
// print('${now.millisecond}'); // print('${now.millisecond}');
// print('${now.microsecondsSinceEpoch}'); // print('${now.microsecondsSinceEpoch}');
// print('${now.millisecondsSinceEpoch}'); // print('${now.millisecondsSinceEpoch}');
} }

Loading…
Cancel
Save