no message
This commit is contained in:
parent
43515d8058
commit
67bf71c998
6
.gitignore
vendored
6
.gitignore
vendored
@ -2,3 +2,9 @@
|
|||||||
#/.packages
|
#/.packages
|
||||||
#/.dart_tool
|
#/.dart_tool
|
||||||
#/example/ios/Podfile.lock
|
#/example/ios/Podfile.lock
|
||||||
|
build/
|
||||||
|
.dart_tool/
|
||||||
|
.vscode/
|
||||||
|
.metadata
|
||||||
|
.idea/encodings.xml
|
||||||
|
.idea/other.xml
|
||||||
|
93
.idea/flutter_openim_sdk.iml
generated
93
.idea/flutter_openim_sdk.iml
generated
@ -123,6 +123,99 @@
|
|||||||
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="inheritedJdk" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
Binary file not shown.
@ -6,12 +6,9 @@
|
|||||||
// For more information about Flutter integration tests, please see
|
// For more information about Flutter integration tests, please see
|
||||||
// https://flutter.dev/to/integration-testing
|
// https://flutter.dev/to/integration-testing
|
||||||
|
|
||||||
|
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
|||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
try {
|
try {
|
||||||
runApp(MyApp());
|
runApp(const MyApp());
|
||||||
} catch (e, stackTrace) {
|
} catch (e, stackTrace) {
|
||||||
print('Error during app startup: $e');
|
print('Error during app startup: $e');
|
||||||
print('Stack trace: $stackTrace');
|
print('Stack trace: $stackTrace');
|
||||||
@ -11,6 +11,8 @@ void main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class MyApp extends StatefulWidget {
|
class MyApp extends StatefulWidget {
|
||||||
|
const MyApp({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_MyAppState createState() => _MyAppState();
|
_MyAppState createState() => _MyAppState();
|
||||||
}
|
}
|
||||||
@ -21,7 +23,7 @@ class _MyAppState extends State<MyApp> {
|
|||||||
super.initState();
|
super.initState();
|
||||||
OpenIM.iMManager
|
OpenIM.iMManager
|
||||||
.initSDK(
|
.initSDK(
|
||||||
platformID: 1,
|
platformID: 2,
|
||||||
apiAddr: 'http://192.168.77.135:10002',
|
apiAddr: 'http://192.168.77.135:10002',
|
||||||
wsAddr: 'ws://192.168.77.135:10001',
|
wsAddr: 'ws://192.168.77.135:10001',
|
||||||
dataDir: './',
|
dataDir: './',
|
||||||
@ -50,7 +52,7 @@ class _MyAppState extends State<MyApp> {
|
|||||||
),
|
),
|
||||||
body: Column(
|
body: Column(
|
||||||
children: [
|
children: [
|
||||||
TextButton(onPressed: () {}, child: Text('login')),
|
TextButton(onPressed: () {}, child: const Text('login')),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -5,42 +5,42 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: async
|
name: async
|
||||||
sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63
|
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.12.0"
|
version: "2.11.0"
|
||||||
boolean_selector:
|
boolean_selector:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: boolean_selector
|
name: boolean_selector
|
||||||
sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
|
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.2"
|
version: "2.1.1"
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: characters
|
name: characters
|
||||||
sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
|
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.4.0"
|
version: "1.3.0"
|
||||||
clock:
|
clock:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: clock
|
name: clock
|
||||||
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
|
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.2"
|
version: "1.1.1"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: collection
|
name: collection
|
||||||
sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
|
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.19.1"
|
version: "1.18.0"
|
||||||
cupertino_icons:
|
cupertino_icons:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -53,10 +53,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: fake_async
|
name: fake_async
|
||||||
sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
|
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.2"
|
version: "1.3.1"
|
||||||
flutter:
|
flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
@ -86,18 +86,18 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker
|
name: leak_tracker
|
||||||
sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
|
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.0.8"
|
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: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
|
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.9"
|
version: "3.0.5"
|
||||||
leak_tracker_testing:
|
leak_tracker_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -118,10 +118,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: matcher
|
name: matcher
|
||||||
sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
|
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.12.17"
|
version: "0.12.16+1"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -134,71 +134,71 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
|
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.16.0"
|
version: "1.15.0"
|
||||||
path:
|
path:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path
|
name: path
|
||||||
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
|
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.9.1"
|
version: "1.9.0"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.99"
|
||||||
source_span:
|
source_span:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: source_span
|
name: source_span
|
||||||
sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
|
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.10.1"
|
version: "1.10.0"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: stack_trace
|
name: stack_trace
|
||||||
sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
|
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.12.1"
|
version: "1.11.1"
|
||||||
stream_channel:
|
stream_channel:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: stream_channel
|
name: stream_channel
|
||||||
sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
|
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.2"
|
||||||
string_scanner:
|
string_scanner:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: string_scanner
|
name: string_scanner
|
||||||
sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
|
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.4.1"
|
version: "1.2.0"
|
||||||
term_glyph:
|
term_glyph:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: term_glyph
|
name: term_glyph
|
||||||
sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
|
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.2"
|
version: "1.2.1"
|
||||||
test_api:
|
test_api:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
|
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.4"
|
version: "0.7.2"
|
||||||
vector_math:
|
vector_math:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -211,10 +211,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vm_service
|
name: vm_service
|
||||||
sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
|
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "14.3.1"
|
version: "14.2.5"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.7.0-0 <4.0.0"
|
dart: ">=3.4.4 <4.0.0"
|
||||||
flutter: ">=3.18.0-18.0.pre.54"
|
flutter: ">=3.18.0-18.0.pre.54"
|
||||||
|
@ -13,7 +13,7 @@ import 'package:flutter_openim_sdk_example/main.dart';
|
|||||||
void main() {
|
void main() {
|
||||||
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
||||||
// Build our app and trigger a frame.
|
// Build our app and trigger a frame.
|
||||||
await tester.pumpWidget(MyApp());
|
await tester.pumpWidget(const MyApp());
|
||||||
|
|
||||||
// Verify that our counter starts at 0.
|
// Verify that our counter starts at 0.
|
||||||
expect(find.text('0'), findsOneWidget);
|
expect(find.text('0'), findsOneWidget);
|
||||||
|
@ -2,10 +2,6 @@ import 'dart:developer';
|
|||||||
|
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
||||||
import 'package:flutter_openim_sdk/src/models/set_channel_member_info.dart';
|
|
||||||
|
|
||||||
import '../listener/channel_listener.dart';
|
|
||||||
import '../models/channel_info.dart';
|
|
||||||
|
|
||||||
class ChannelManager {
|
class ChannelManager {
|
||||||
MethodChannel _channel;
|
MethodChannel _channel;
|
||||||
|
@ -4,7 +4,6 @@ import 'dart:developer';
|
|||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
||||||
|
|
||||||
import '../models/update_req.dart';
|
|
||||||
|
|
||||||
class ConversationManager {
|
class ConversationManager {
|
||||||
MethodChannel _channel;
|
MethodChannel _channel;
|
||||||
|
@ -3,7 +3,6 @@ import 'dart:async';
|
|||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
||||||
|
|
||||||
import '../models/update_req.dart';
|
|
||||||
|
|
||||||
class FriendshipManager {
|
class FriendshipManager {
|
||||||
MethodChannel _channel;
|
MethodChannel _channel;
|
||||||
|
@ -2,7 +2,6 @@ import 'dart:developer';
|
|||||||
|
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
||||||
import 'package:flutter_openim_sdk/src/models/set_group_member_info.dart';
|
|
||||||
|
|
||||||
class GroupManager {
|
class GroupManager {
|
||||||
MethodChannel _channel;
|
MethodChannel _channel;
|
||||||
|
@ -6,8 +6,6 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
||||||
import 'package:flutter_openim_sdk/src/logger.dart';
|
import 'package:flutter_openim_sdk/src/logger.dart';
|
||||||
|
|
||||||
import '../models/channel_info.dart';
|
|
||||||
import 'im_channel_manager.dart';
|
|
||||||
|
|
||||||
class IMManager {
|
class IMManager {
|
||||||
MethodChannel _channel;
|
MethodChannel _channel;
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import '../../flutter_openim_sdk.dart';
|
import '../../flutter_openim_sdk.dart';
|
||||||
import 'channel_info.dart';
|
|
||||||
|
|
||||||
/// OA notification
|
/// OA notification
|
||||||
class OANotification {
|
class OANotification {
|
||||||
@ -456,8 +455,6 @@ class GroupMemberInfoChangedNotification {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
///todo 所有的聊天的操作者都没有,暂时没有处理
|
///todo 所有的聊天的操作者都没有,暂时没有处理
|
||||||
/// 聊天室事件通知
|
/// 聊天室事件通知
|
||||||
class ChannelNotification {
|
class ChannelNotification {
|
||||||
@ -481,7 +478,8 @@ class ChannelNotification {
|
|||||||
});
|
});
|
||||||
|
|
||||||
ChannelNotification.fromJson(Map<String, dynamic> json) {
|
ChannelNotification.fromJson(Map<String, dynamic> json) {
|
||||||
Channel = json['channel'] != null ? ChannelInfo.fromJson(json['channel']) : null;
|
Channel =
|
||||||
|
json['channel'] != null ? ChannelInfo.fromJson(json['channel']) : null;
|
||||||
opUser = json['opUser'] != null
|
opUser = json['opUser'] != null
|
||||||
? ChannelMembersInfo.fromJson(json['opUser'])
|
? ChannelMembersInfo.fromJson(json['opUser'])
|
||||||
: null;
|
: null;
|
||||||
@ -514,7 +512,6 @@ class ChannelNotification {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// 组踢出成员通知
|
/// 组踢出成员通知
|
||||||
class KickedChannelMemeberNotification {
|
class KickedChannelMemeberNotification {
|
||||||
/// 聊天室信息
|
/// 聊天室信息
|
||||||
@ -530,7 +527,8 @@ class KickedChannelMemeberNotification {
|
|||||||
{this.Channel, this.opUser, this.kickedUserList});
|
{this.Channel, this.opUser, this.kickedUserList});
|
||||||
|
|
||||||
KickedChannelMemeberNotification.fromJson(Map<String, dynamic> json) {
|
KickedChannelMemeberNotification.fromJson(Map<String, dynamic> json) {
|
||||||
Channel = json['channel'] != null ? ChannelInfo.fromJson(json['channel']) : null;
|
Channel =
|
||||||
|
json['channel'] != null ? ChannelInfo.fromJson(json['channel']) : null;
|
||||||
opUser = json['opUser'] != null
|
opUser = json['opUser'] != null
|
||||||
? ChannelMembersInfo.fromJson(json['opUser'])
|
? ChannelMembersInfo.fromJson(json['opUser'])
|
||||||
: null;
|
: null;
|
||||||
@ -569,7 +567,8 @@ class QuitChannelNotification {
|
|||||||
QuitChannelNotification({this.Channel, this.quitUser});
|
QuitChannelNotification({this.Channel, this.quitUser});
|
||||||
|
|
||||||
QuitChannelNotification.fromJson(Map<String, dynamic> json) {
|
QuitChannelNotification.fromJson(Map<String, dynamic> json) {
|
||||||
Channel = json['channel'] != null ? ChannelInfo.fromJson(json['channel']) : null;
|
Channel =
|
||||||
|
json['channel'] != null ? ChannelInfo.fromJson(json['channel']) : null;
|
||||||
quitUser = json['quitUser'] != null
|
quitUser = json['quitUser'] != null
|
||||||
? ChannelMembersInfo.fromJson(json['quitUser'])
|
? ChannelMembersInfo.fromJson(json['quitUser'])
|
||||||
: null;
|
: null;
|
||||||
@ -598,7 +597,8 @@ class EnterChannelNotification {
|
|||||||
EnterChannelNotification({this.Channel, this.entrantUser});
|
EnterChannelNotification({this.Channel, this.entrantUser});
|
||||||
|
|
||||||
EnterChannelNotification.fromJson(Map<String, dynamic> json) {
|
EnterChannelNotification.fromJson(Map<String, dynamic> json) {
|
||||||
Channel = json['channel'] != null ? ChannelInfo.fromJson(json['channel']) : null;
|
Channel =
|
||||||
|
json['channel'] != null ? ChannelInfo.fromJson(json['channel']) : null;
|
||||||
entrantUser = json['entrantUser'] != null
|
entrantUser = json['entrantUser'] != null
|
||||||
? ChannelMembersInfo.fromJson(json['entrantUser'])
|
? ChannelMembersInfo.fromJson(json['entrantUser'])
|
||||||
: null;
|
: null;
|
||||||
@ -616,7 +616,6 @@ class EnterChannelNotification {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// 禁言成员通知
|
/// 禁言成员通知
|
||||||
class MuteChannelMemberNotification {
|
class MuteChannelMemberNotification {
|
||||||
/// 聊天室信息
|
/// 聊天室信息
|
||||||
@ -639,7 +638,8 @@ class MuteChannelMemberNotification {
|
|||||||
});
|
});
|
||||||
|
|
||||||
MuteChannelMemberNotification.fromJson(Map<String, dynamic> json) {
|
MuteChannelMemberNotification.fromJson(Map<String, dynamic> json) {
|
||||||
Channel = json['channel'] != null ? ChannelInfo.fromJson(json['channel']) : null;
|
Channel =
|
||||||
|
json['channel'] != null ? ChannelInfo.fromJson(json['channel']) : null;
|
||||||
opUser = json['opUser'] != null
|
opUser = json['opUser'] != null
|
||||||
? ChannelMembersInfo.fromJson(json['opUser'])
|
? ChannelMembersInfo.fromJson(json['opUser'])
|
||||||
: null;
|
: null;
|
||||||
@ -683,7 +683,8 @@ class ChannelMemberInfoChangedNotification {
|
|||||||
});
|
});
|
||||||
|
|
||||||
ChannelMemberInfoChangedNotification.fromJson(Map<String, dynamic> json) {
|
ChannelMemberInfoChangedNotification.fromJson(Map<String, dynamic> json) {
|
||||||
Channel = json['channel'] != null ? ChannelInfo.fromJson(json['channel']) : null;
|
Channel =
|
||||||
|
json['channel'] != null ? ChannelInfo.fromJson(json['channel']) : null;
|
||||||
opUser = json['opUser'] != null
|
opUser = json['opUser'] != null
|
||||||
? ChannelMembersInfo.fromJson(json['opUser'])
|
? ChannelMembersInfo.fromJson(json['opUser'])
|
||||||
: null;
|
: null;
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include "src/MethodCallHandlerImpl.h"
|
#include "src/MethodCallHandlerImpl.h"
|
||||||
#include "src/common/stable.h"
|
#include "src/common/stable.h"
|
||||||
|
#include "src/common/ThreadUtil.h"
|
||||||
|
|
||||||
|
|
||||||
class FlutterOpenimSdkPlugin : public flutter::Plugin {
|
class FlutterOpenimSdkPlugin : public flutter::Plugin {
|
||||||
@ -68,6 +69,11 @@ void FlutterOpenimSdkPlugin::RegisterWithRegistrar(
|
|||||||
|
|
||||||
NimCore::getInstance()->setLogDir(filePath);
|
NimCore::getInstance()->setLogDir(filePath);
|
||||||
|
|
||||||
|
// Initialize ThreadUtil to capture the platform thread ID
|
||||||
|
// This is called on the platform thread already, so it will initialize correctly
|
||||||
|
ThreadUtil::InitializePlatformThreadId();
|
||||||
|
YXLOG_API(Info) << "ThreadUtil initialized on platform thread" << YXLOGEnd;
|
||||||
|
|
||||||
auto plugin = std::make_unique<FlutterOpenimSdkPlugin>();
|
auto plugin = std::make_unique<FlutterOpenimSdkPlugin>();
|
||||||
auto channel = plugin->m_channel->startListening(registrar);
|
auto channel = plugin->m_channel->startListening(registrar);
|
||||||
channel->SetMethodCallHandler(
|
channel->SetMethodCallHandler(
|
||||||
|
@ -10,8 +10,15 @@
|
|||||||
#include <flutter/standard_method_codec.h>
|
#include <flutter/standard_method_codec.h>
|
||||||
|
|
||||||
#include "FLTConvert.h"
|
#include "FLTConvert.h"
|
||||||
|
#include "common/ThreadUtil.h"
|
||||||
#include "common/services/IMManager.h"
|
#include "common/services/IMManager.h"
|
||||||
|
#include "common/services/UserManager.h"
|
||||||
|
#include "common/services/FriendManager.h"
|
||||||
|
#include "common/services/MessageManager.h"
|
||||||
|
#include "common/services/GroupManager.h"
|
||||||
|
#include "common/services/ChannelManager.h"
|
||||||
|
#include "common/services/ConversationManager.h"
|
||||||
|
#include "common/stable.h"
|
||||||
|
|
||||||
|
|
||||||
const std::string kFLTNimCoreService = "serviceName";
|
const std::string kFLTNimCoreService = "serviceName";
|
||||||
@ -22,7 +29,12 @@ NimCore::~NimCore() {}
|
|||||||
|
|
||||||
void NimCore::regService() {
|
void NimCore::regService() {
|
||||||
addService(new IMManagerService());
|
addService(new IMManagerService());
|
||||||
|
addService(new UserManagerService());
|
||||||
|
addService(new FriendshipManagerService());
|
||||||
|
addService(new MessageManagerService());
|
||||||
|
addService(new GroupManagerService());
|
||||||
|
addService(new ChannelManagerService());
|
||||||
|
addService(new ConversationManagerService());
|
||||||
}
|
}
|
||||||
|
|
||||||
void NimCore::cleanService() {
|
void NimCore::cleanService() {
|
||||||
@ -85,8 +97,9 @@ void NimCore::onMethodCall(
|
|||||||
void NimCore::invokeMethod(const std::string& method,
|
void NimCore::invokeMethod(const std::string& method,
|
||||||
const flutter::EncodableMap& arguments) {
|
const flutter::EncodableMap& arguments) {
|
||||||
if (m_channel) {
|
if (m_channel) {
|
||||||
m_channel->InvokeMethod(
|
// Use ThreadUtil to ensure we're on the platform thread
|
||||||
method, std::make_unique<flutter::EncodableValue>(arguments));
|
ThreadUtil::InvokeMethodOnPlatformThread(
|
||||||
|
m_channel, method, std::make_unique<flutter::EncodableValue>(arguments));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,9 +128,16 @@ void NimCore::invokeMethod(const std::string& eventName,
|
|||||||
const InvokeMehtodCallback& callback) {
|
const InvokeMehtodCallback& callback) {
|
||||||
invokeCallback = callback;
|
invokeCallback = callback;
|
||||||
if (m_channel) {
|
if (m_channel) {
|
||||||
|
// Create shared pointers for the data to ensure copy constructibility
|
||||||
|
auto eventNameCopy = std::make_shared<std::string>(eventName);
|
||||||
|
auto argsCopy = std::make_shared<flutter::EncodableMap>(arguments);
|
||||||
|
|
||||||
|
// Use ThreadUtil to ensure we're on the platform thread
|
||||||
|
ThreadUtil::RunOnPlatformThread([this, eventNameCopy, argsCopy]() {
|
||||||
m_channel->InvokeMethod(
|
m_channel->InvokeMethod(
|
||||||
eventName, std::make_unique<flutter::EncodableValue>(arguments),
|
*eventNameCopy, std::make_unique<flutter::EncodableValue>(*argsCopy),
|
||||||
std::make_unique<InterResult<flutter::EncodableValue>>());
|
std::make_unique<InterResult<flutter::EncodableValue>>());
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include "FLTService.h"
|
#include "FLTService.h"
|
||||||
|
|
||||||
#include "../FLTConvert.h"
|
#include "../FLTConvert.h"
|
||||||
|
#include "ThreadUtil.h"
|
||||||
|
|
||||||
std::string FLTService::getServiceName() const { return m_serviceName; }
|
std::string FLTService::getServiceName() const { return m_serviceName; }
|
||||||
|
|
||||||
@ -22,8 +23,16 @@ void notifyEvent(const std::string& eventName,
|
|||||||
for (auto& it : logList) {
|
for (auto& it : logList) {
|
||||||
YXLOG_API(Info) << it << YXLOGEnd;
|
YXLOG_API(Info) << it << YXLOGEnd;
|
||||||
}
|
}
|
||||||
NimCore::getInstance()->invokeMethod(eventName, arguments);
|
|
||||||
|
// Create shared pointers for the data to ensure copy constructibility
|
||||||
|
auto eventNameCopy = std::make_shared<std::string>(eventName);
|
||||||
|
auto argsCopy = std::make_shared<flutter::EncodableMap>(arguments);
|
||||||
|
|
||||||
|
// Ensure we're on the platform thread
|
||||||
|
ThreadUtil::RunOnPlatformThread([eventNameCopy, argsCopy]() {
|
||||||
|
NimCore::getInstance()->invokeMethod(*eventNameCopy, *argsCopy);
|
||||||
YXLOG_API(Info) << "notifyEvent invoke completation." << YXLOGEnd;
|
YXLOG_API(Info) << "notifyEvent invoke completation." << YXLOGEnd;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
//void FLTService::notifyEvent(const std::string& eventName,
|
//void FLTService::notifyEvent(const std::string& eventName,
|
||||||
@ -60,6 +69,14 @@ void FLTService::notifyEventEx(const std::string& serviceName,
|
|||||||
for (auto& it : logList) {
|
for (auto& it : logList) {
|
||||||
YXLOG_API(Info) << it << YXLOGEnd;
|
YXLOG_API(Info) << it << YXLOGEnd;
|
||||||
}
|
}
|
||||||
NimCore::getInstance()->invokeMethod(eventName, arguments);
|
|
||||||
|
// Create shared pointers for the data to ensure copy constructibility
|
||||||
|
auto eventNameCopy = std::make_shared<std::string>(eventName);
|
||||||
|
auto argsCopy = std::make_shared<flutter::EncodableMap>(arguments);
|
||||||
|
|
||||||
|
// Ensure we're on the platform thread
|
||||||
|
ThreadUtil::RunOnPlatformThread([eventNameCopy, argsCopy]() {
|
||||||
|
NimCore::getInstance()->invokeMethod(*eventNameCopy, *argsCopy);
|
||||||
YXLOG_API(Info) << "notifyEventEx invoke completation." << YXLOGEnd;
|
YXLOG_API(Info) << "notifyEventEx invoke completation." << YXLOGEnd;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
89
windows/src/common/ThreadUtil.cpp
Normal file
89
windows/src/common/ThreadUtil.cpp
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
#include "ThreadUtil.h"
|
||||||
|
#include <windows.h>
|
||||||
|
#include <process.h>
|
||||||
|
#include <queue>
|
||||||
|
#include <mutex>
|
||||||
|
#include <condition_variable>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
namespace ThreadUtil {
|
||||||
|
// Global variables for thread management
|
||||||
|
static DWORD g_platformThreadId = 0;
|
||||||
|
static std::queue<std::function<void()>> g_taskQueue;
|
||||||
|
static std::mutex g_queueMutex;
|
||||||
|
static std::condition_variable g_queueCondition;
|
||||||
|
static bool g_initialized = false;
|
||||||
|
static HANDLE g_workerThread = NULL;
|
||||||
|
|
||||||
|
// Function to initialize the platform thread ID
|
||||||
|
void InitializePlatformThreadId() {
|
||||||
|
g_platformThreadId = GetCurrentThreadId();
|
||||||
|
g_initialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Worker thread function
|
||||||
|
unsigned __stdcall WorkerThreadProc(void* param) {
|
||||||
|
while (true) {
|
||||||
|
std::function<void()> task;
|
||||||
|
|
||||||
|
{
|
||||||
|
std::unique_lock<std::mutex> lock(g_queueMutex);
|
||||||
|
g_queueCondition.wait(lock, [] { return !g_taskQueue.empty(); });
|
||||||
|
task = g_taskQueue.front();
|
||||||
|
g_taskQueue.pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Execute the task
|
||||||
|
task();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to ensure code runs on the platform thread
|
||||||
|
void RunOnPlatformThread(std::function<void()> callback) {
|
||||||
|
// Initialize on first call
|
||||||
|
if (!g_initialized) {
|
||||||
|
InitializePlatformThreadId();
|
||||||
|
|
||||||
|
// Create worker thread
|
||||||
|
g_workerThread = (HANDLE)_beginthreadex(NULL, 0, WorkerThreadProc, NULL, 0, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we're already on the platform thread, execute directly
|
||||||
|
if (GetCurrentThreadId() == g_platformThreadId) {
|
||||||
|
callback();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a shared_ptr to the callback to ensure it's copy constructible
|
||||||
|
auto callbackPtr = std::make_shared<std::function<void()>>(std::move(callback));
|
||||||
|
|
||||||
|
// Otherwise, queue the task for execution on the platform thread
|
||||||
|
{
|
||||||
|
std::lock_guard<std::mutex> lock(g_queueMutex);
|
||||||
|
g_taskQueue.push([callbackPtr]() { (*callbackPtr)(); });
|
||||||
|
}
|
||||||
|
g_queueCondition.notify_one();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper function to invoke method on platform thread
|
||||||
|
void InvokeMethodOnPlatformThread(
|
||||||
|
flutter::MethodChannel<flutter::EncodableValue>* channel,
|
||||||
|
const std::string& method,
|
||||||
|
std::unique_ptr<flutter::EncodableValue> arguments) {
|
||||||
|
|
||||||
|
if (!channel) return;
|
||||||
|
|
||||||
|
// Create shared pointers for the data to ensure copy constructibility
|
||||||
|
auto methodCopy = std::make_shared<std::string>(method);
|
||||||
|
auto argsCopy = std::shared_ptr<flutter::EncodableValue>(arguments.release());
|
||||||
|
|
||||||
|
RunOnPlatformThread([channel, methodCopy, argsCopy]() {
|
||||||
|
channel->InvokeMethod(
|
||||||
|
*methodCopy,
|
||||||
|
std::make_unique<flutter::EncodableValue>(*argsCopy)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
20
windows/src/common/ThreadUtil.h
Normal file
20
windows/src/common/ThreadUtil.h
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
|
#include <windows.h>
|
||||||
|
#include <flutter/method_channel.h>
|
||||||
|
#include <flutter/encodable_value.h>
|
||||||
|
|
||||||
|
namespace ThreadUtil {
|
||||||
|
// Function to initialize the platform thread ID
|
||||||
|
void InitializePlatformThreadId();
|
||||||
|
|
||||||
|
// Function to ensure code runs on the platform thread
|
||||||
|
void RunOnPlatformThread(std::function<void()> callback);
|
||||||
|
|
||||||
|
// Helper function to invoke method on platform thread
|
||||||
|
void InvokeMethodOnPlatformThread(
|
||||||
|
flutter::MethodChannel<flutter::EncodableValue>* channel,
|
||||||
|
const std::string& method,
|
||||||
|
std::unique_ptr<flutter::EncodableValue> arguments);
|
||||||
|
}
|
201
windows/src/common/services/ChannelManager.cpp
Normal file
201
windows/src/common/services/ChannelManager.cpp
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
#include "ChannelManager.h"
|
||||||
|
#include <libopenimsdk.h>
|
||||||
|
#include "../NimResult.h"
|
||||||
|
#include "../ZegoDataUtils.h"
|
||||||
|
#include "ConstDefine.h"
|
||||||
|
#include "Listen.h"
|
||||||
|
|
||||||
|
ChannelManagerService::ChannelManagerService() {
|
||||||
|
m_serviceName = "channelManager";
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChannelManagerService::onMethodCalled(
|
||||||
|
const std::string& method,
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (method == "setChannelListener") {
|
||||||
|
setChannelListener(arguments, result);
|
||||||
|
} else if (method == "getChannelMembersInfo") {
|
||||||
|
getChannelMembersInfo(arguments, result);
|
||||||
|
} else if (method == "getChannelMemberList") {
|
||||||
|
getChannelMemberList(arguments, result);
|
||||||
|
} else if (method == "getChannelsInfo") {
|
||||||
|
getChannelsInfo(arguments, result);
|
||||||
|
} else if (method == "joinChannel") {
|
||||||
|
joinChannel(arguments, result);
|
||||||
|
} else if (method == "quitChannel") {
|
||||||
|
quitChannel(arguments, result);
|
||||||
|
} else if (method == "changeChannelMute") {
|
||||||
|
changeChannelMute(arguments, result);
|
||||||
|
} else if (method == "changeChannelMemberMute") {
|
||||||
|
changeChannelMemberMute(arguments, result);
|
||||||
|
} else if (method == "isJoinChannel") {
|
||||||
|
isJoinChannel(arguments, result);
|
||||||
|
} else if (method == "getUsersInChannel") {
|
||||||
|
getUsersInChannel(arguments, result);
|
||||||
|
} else {
|
||||||
|
result->NotImplemented();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChannelManagerService::setChannelListener(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
set_channel_listener(NewChannelListenCallBack());
|
||||||
|
result->Success(flutter::EncodableValue());
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChannelManagerService::getChannelMembersInfo(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
|
||||||
|
auto userIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDList")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* channelID_cs = const_cast<char*>(channelID.c_str());
|
||||||
|
char* userIDList_cs = const_cast<char*>(userIDList.c_str());
|
||||||
|
|
||||||
|
get_specified_channel_members_info(NewBaseCallBack(result), operationID_cs, channelID_cs, userIDList_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChannelManagerService::getChannelMemberList(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
|
||||||
|
auto filter = zego_value_get_int(arguments->at(flutter::EncodableValue("filter")));
|
||||||
|
auto offset = zego_value_get_int(arguments->at(flutter::EncodableValue("offset")));
|
||||||
|
auto count = zego_value_get_int(arguments->at(flutter::EncodableValue("count")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* channelID_cs = const_cast<char*>(channelID.c_str());
|
||||||
|
|
||||||
|
get_channel_member_list(NewBaseCallBack(result), operationID_cs, channelID_cs, filter, offset, count);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChannelManagerService::getChannelsInfo(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto channelIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("channelIDList")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* channelIDList_cs = const_cast<char*>(channelIDList.c_str());
|
||||||
|
|
||||||
|
get_specified_channels_info(NewBaseCallBack(result), operationID_cs, channelIDList_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChannelManagerService::joinChannel(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
|
||||||
|
auto reason = zego_value_get_string(arguments->at(flutter::EncodableValue("reason")));
|
||||||
|
auto joinSource = zego_value_get_int(arguments->at(flutter::EncodableValue("joinSource")));
|
||||||
|
auto ex = zego_value_get_string(arguments->at(flutter::EncodableValue("ex")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* channelID_cs = const_cast<char*>(channelID.c_str());
|
||||||
|
char* reason_cs = const_cast<char*>(reason.c_str());
|
||||||
|
char* ex_cs = const_cast<char*>(ex.c_str());
|
||||||
|
|
||||||
|
join_channel(NewBaseCallBack(result), operationID_cs, channelID_cs, reason_cs, joinSource, ex_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChannelManagerService::quitChannel(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* channelID_cs = const_cast<char*>(channelID.c_str());
|
||||||
|
|
||||||
|
quit_channel(NewBaseCallBack(result), operationID_cs, channelID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChannelManagerService::changeChannelMute(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
// if (arguments) {
|
||||||
|
// auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
// auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
|
||||||
|
// auto mute = zego_value_get_bool(arguments->at(flutter::EncodableValue("mute")));
|
||||||
|
// char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
// char* channelID_cs = const_cast<char*>(channelID.c_str());
|
||||||
|
|
||||||
|
// change_channel_mute(NewBaseCallBack(result), operationID_cs, channelID_cs, mute);
|
||||||
|
// } else {
|
||||||
|
// result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChannelManagerService::changeChannelMemberMute(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
// if (arguments) {
|
||||||
|
// auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
// auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
|
||||||
|
// auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
|
||||||
|
// auto seconds = zego_value_get_int(arguments->at(flutter::EncodableValue("seconds")));
|
||||||
|
// char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
// char* channelID_cs = const_cast<char*>(channelID.c_str());
|
||||||
|
// char* userID_cs = const_cast<char*>(userID.c_str());
|
||||||
|
|
||||||
|
// change_channel_member_mute(NewBaseCallBack(result), operationID_cs, channelID_cs, userID_cs, seconds);
|
||||||
|
// } else {
|
||||||
|
// result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChannelManagerService::isJoinChannel(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* channelID_cs = const_cast<char*>(channelID.c_str());
|
||||||
|
|
||||||
|
is_join_channel(NewBaseCallBack(result), operationID_cs, channelID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChannelManagerService::getUsersInChannel(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
|
||||||
|
auto userIDs = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDs")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* channelID_cs = const_cast<char*>(channelID.c_str());
|
||||||
|
char* userIDs_cs = const_cast<char*>(userIDs.c_str());
|
||||||
|
|
||||||
|
get_users_in_channel(NewBaseCallBack(result), operationID_cs, channelID_cs, userIDs_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
56
windows/src/common/services/ChannelManager.h
Normal file
56
windows/src/common/services/ChannelManager.h
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
#ifndef CHANNEL_MANAGER_SERVICE_H
|
||||||
|
#define CHANNEL_MANAGER_SERVICE_H
|
||||||
|
#include "../FLTService.h"
|
||||||
|
#include "Listen.h"
|
||||||
|
#include <flutter/standard_method_codec.h>
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class ChannelManagerService : public FLTService
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
ChannelManagerService();
|
||||||
|
|
||||||
|
void onMethodCalled(
|
||||||
|
const std::string &method,
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
|
||||||
|
// Method handlers
|
||||||
|
void setChannelListener(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getChannelMembersInfo(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getChannelMemberList(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getChannelsInfo(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void joinChannel(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void quitChannel(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void changeChannelMute(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void changeChannelMemberMute(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void isJoinChannel(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getUsersInChannel(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string m_serviceName;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CHANNEL_MANAGER_SERVICE_H
|
@ -45,10 +45,14 @@ enum class ConstDefine {
|
|||||||
MSG_DELETED,
|
MSG_DELETED,
|
||||||
RECV_NEW_MESSAGES,
|
RECV_NEW_MESSAGES,
|
||||||
RECV_OFFLINE_NEW_MESSAGES,
|
RECV_OFFLINE_NEW_MESSAGES,
|
||||||
|
|
||||||
SELF_INFO_UPDATED,
|
SELF_INFO_UPDATED,
|
||||||
USER_STATUS_CHANGED,
|
USER_STATUS_CHANGED,
|
||||||
|
|
||||||
RECV_CUSTOM_BUSINESS_MESSAGE,
|
RECV_CUSTOM_BUSINESS_MESSAGE,
|
||||||
|
|
||||||
MESSAGE_KV_INFO_CHANGED,
|
MESSAGE_KV_INFO_CHANGED,
|
||||||
|
|
||||||
OPEN,
|
OPEN,
|
||||||
PART_SIZE,
|
PART_SIZE,
|
||||||
HASH_PART_PROGRESS,
|
HASH_PART_PROGRESS,
|
||||||
@ -59,9 +63,22 @@ enum class ConstDefine {
|
|||||||
COMPLETE,
|
COMPLETE,
|
||||||
CONVERSATION_USER_INPUT_STATUS_CHANGED,
|
CONVERSATION_USER_INPUT_STATUS_CHANGED,
|
||||||
RECV_ONLINE_ONLY_MESSAGE,
|
RECV_ONLINE_ONLY_MESSAGE,
|
||||||
RECV_MESSAGE_EDIT,
|
NEW_RECV_MESSAGE_EDIT,
|
||||||
|
|
||||||
USER_TOKEN_INVALID,
|
USER_TOKEN_INVALID,
|
||||||
ON_PROGRESS
|
|
||||||
|
ON_PROGRESS,
|
||||||
|
JOINED_CHANNEL_ADDED,
|
||||||
|
JOINED_CHANNEL_DELETED,
|
||||||
|
CHANNEL_MEMBER_ADDED,
|
||||||
|
CHANNEL_MEMBER_DELETED,
|
||||||
|
CHANNEL_APPLICATION_ADDED,
|
||||||
|
CHANNEL_APPLICATION_DELETED,
|
||||||
|
CHANNEL_INFO_CHANGED,
|
||||||
|
CHANNEL_DISMISSED,
|
||||||
|
CHANNEL_MEMBER_INFO_CHANGED,
|
||||||
|
CHANNEL_APPLICATION_ACCEPTED,
|
||||||
|
CHANNEL_APPLICATION_REJECTED,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
341
windows/src/common/services/ConversationManager.cpp
Normal file
341
windows/src/common/services/ConversationManager.cpp
Normal file
@ -0,0 +1,341 @@
|
|||||||
|
#include "ConversationManager.h"
|
||||||
|
#include <libopenimsdk.h>
|
||||||
|
#include "../NimResult.h"
|
||||||
|
#include "../ZegoDataUtils.h"
|
||||||
|
#include "ConstDefine.h"
|
||||||
|
#include "Listen.h"
|
||||||
|
|
||||||
|
ConversationManagerService::ConversationManagerService() {
|
||||||
|
m_serviceName = "conversationManager";
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::onMethodCalled(
|
||||||
|
const std::string& method,
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (method == "setConversationListener") {
|
||||||
|
setConversationListener(arguments, result);
|
||||||
|
} else if (method == "getAllConversationList") {
|
||||||
|
getAllConversationList(arguments, result);
|
||||||
|
} else if (method == "getConversationListSplit") {
|
||||||
|
getConversationListSplit(arguments, result);
|
||||||
|
} else if (method == "getOneConversation") {
|
||||||
|
getOneConversation(arguments, result);
|
||||||
|
} else if (method == "getMultipleConversation") {
|
||||||
|
getMultipleConversation(arguments, result);
|
||||||
|
} else if (method == "setConversationDraft") {
|
||||||
|
setConversationDraft(arguments, result);
|
||||||
|
} else if (method == "hideConversation") {
|
||||||
|
hideConversation(arguments, result);
|
||||||
|
} else if (method == "markConversationMessageAsRead") {
|
||||||
|
markConversationMessageAsRead(arguments, result);
|
||||||
|
} else if (method == "getTotalUnreadMsgCount") {
|
||||||
|
getTotalUnreadMsgCount(arguments, result);
|
||||||
|
} else if (method == "getConversationIDBySessionType") {
|
||||||
|
getConversationIDBySessionType(arguments, result);
|
||||||
|
} else if (method == "clearConversationAndDeleteAllMsg") {
|
||||||
|
clearConversationAndDeleteAllMsg(arguments, result);
|
||||||
|
} else if (method == "deleteConversationAndDeleteAllMsg") {
|
||||||
|
deleteConversationAndDeleteAllMsg(arguments, result);
|
||||||
|
} else if (method == "getAtAllTag") {
|
||||||
|
getAtAllTag(arguments, result);
|
||||||
|
} else if (method == "hideAllConversations") {
|
||||||
|
hideAllConversations(arguments, result);
|
||||||
|
} else if (method == "searchConversation") {
|
||||||
|
searchConversation(arguments, result);
|
||||||
|
} else if (method == "changeInputStates") {
|
||||||
|
changeInputStates(arguments, result);
|
||||||
|
} else if (method == "getInputStates") {
|
||||||
|
getInputStates(arguments, result);
|
||||||
|
} else if (method == "setConversation") {
|
||||||
|
setConversation(arguments, result);
|
||||||
|
} else if (method == "searchConversations") {
|
||||||
|
searchConversations(arguments, result);
|
||||||
|
} else {
|
||||||
|
result->NotImplemented();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::setConversationListener(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
set_conversation_listener(NewConversationListenerCallBack());
|
||||||
|
result->Success(flutter::EncodableValue());
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::getAllConversationList(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
|
||||||
|
get_all_conversation_list(NewBaseCallBack(result), operationID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::getConversationListSplit(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto offset = zego_value_get_int(arguments->at(flutter::EncodableValue("offset")));
|
||||||
|
auto count = zego_value_get_int(arguments->at(flutter::EncodableValue("count")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
|
||||||
|
get_conversation_list_split(NewBaseCallBack(result), operationID_cs, offset, count);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::getOneConversation(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto sessionType = zego_value_get_int(arguments->at(flutter::EncodableValue("sessionType")));
|
||||||
|
auto sourceID = zego_value_get_string(arguments->at(flutter::EncodableValue("sourceID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* sourceID_cs = const_cast<char*>(sourceID.c_str());
|
||||||
|
|
||||||
|
get_one_conversation(NewBaseCallBack(result), operationID_cs, sessionType, sourceID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::getMultipleConversation(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto conversationIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationIDList")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* conversationIDList_cs = const_cast<char*>(conversationIDList.c_str());
|
||||||
|
|
||||||
|
get_multiple_conversation(NewBaseCallBack(result), operationID_cs, conversationIDList_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::setConversationDraft(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
|
||||||
|
auto draftText = zego_value_get_string(arguments->at(flutter::EncodableValue("draftText")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
|
||||||
|
char* draftText_cs = const_cast<char*>(draftText.c_str());
|
||||||
|
|
||||||
|
set_conversation_draft(NewBaseCallBack(result), operationID_cs, conversationID_cs, draftText_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::hideConversation(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
|
||||||
|
|
||||||
|
hide_conversation(NewBaseCallBack(result), operationID_cs, conversationID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::markConversationMessageAsRead(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
|
||||||
|
|
||||||
|
mark_conversation_message_as_read(NewBaseCallBack(result), operationID_cs, conversationID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::getTotalUnreadMsgCount(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
|
||||||
|
get_total_unread_msg_count(NewBaseCallBack(result), operationID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::getConversationIDBySessionType(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto sourceID = zego_value_get_string(arguments->at(flutter::EncodableValue("sourceID")));
|
||||||
|
auto sessionType = zego_value_get_int(arguments->at(flutter::EncodableValue("sessionType")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* sourceID_cs = const_cast<char*>(sourceID.c_str());
|
||||||
|
|
||||||
|
std::string conversationID = get_conversation_id_by_session_type(operationID_cs, sourceID_cs, sessionType);
|
||||||
|
result->Success(flutter::EncodableValue(conversationID));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::clearConversationAndDeleteAllMsg(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
|
||||||
|
|
||||||
|
clear_conversation_and_delete_all_msg(NewBaseCallBack(result), operationID_cs, conversationID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::deleteConversationAndDeleteAllMsg(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
|
||||||
|
|
||||||
|
delete_conversation_and_delete_all_msg(NewBaseCallBack(result), operationID_cs, conversationID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::getAtAllTag(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
|
||||||
|
std::string tag = get_at_all_tag(operationID_cs);
|
||||||
|
result->Success(flutter::EncodableValue(tag));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::hideAllConversations(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
|
||||||
|
hide_all_conversations(NewBaseCallBack(result), operationID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::searchConversation(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto name = zego_value_get_string(arguments->at(flutter::EncodableValue("name")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* name_cs = const_cast<char*>(name.c_str());
|
||||||
|
|
||||||
|
search_conversation(NewBaseCallBack(result), operationID_cs, name_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::changeInputStates(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
|
||||||
|
auto focus = zego_value_get_bool(arguments->at(flutter::EncodableValue("focus")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
|
||||||
|
|
||||||
|
change_input_states(NewBaseCallBack(result), operationID_cs, conversationID_cs, focus);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::getInputStates(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
|
||||||
|
auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
|
||||||
|
char* userID_cs = const_cast<char*>(userID.c_str());
|
||||||
|
|
||||||
|
get_input_states(NewBaseCallBack(result), operationID_cs, conversationID_cs, userID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::setConversation(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
|
||||||
|
auto req = zego_value_get_string(arguments->at(flutter::EncodableValue("req")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
|
||||||
|
char* req_cs = const_cast<char*>(req.c_str());
|
||||||
|
|
||||||
|
set_conversation(NewBaseCallBack(result), operationID_cs, conversationID_cs, req_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConversationManagerService::searchConversations(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto name = zego_value_get_string(arguments->at(flutter::EncodableValue("name")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* name_cs = const_cast<char*>(name.c_str());
|
||||||
|
|
||||||
|
search_conversations(NewBaseCallBack(result), operationID_cs, name_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
82
windows/src/common/services/ConversationManager.h
Normal file
82
windows/src/common/services/ConversationManager.h
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
#ifndef CONVERSATION_MANAGER_SERVICE_H
|
||||||
|
#define CONVERSATION_MANAGER_SERVICE_H
|
||||||
|
#include "../FLTService.h"
|
||||||
|
#include "Listen.h"
|
||||||
|
#include <flutter/standard_method_codec.h>
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class ConversationManagerService: public FLTService {
|
||||||
|
public:
|
||||||
|
ConversationManagerService();
|
||||||
|
|
||||||
|
|
||||||
|
void onMethodCalled(
|
||||||
|
const std::string& method,
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
|
||||||
|
// Method handlers
|
||||||
|
void setConversationListener(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getAllConversationList(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getConversationListSplit(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getOneConversation(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getMultipleConversation(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void setConversationDraft(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void hideConversation(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void markConversationMessageAsRead(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getTotalUnreadMsgCount(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getConversationIDBySessionType(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void clearConversationAndDeleteAllMsg(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void deleteConversationAndDeleteAllMsg(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getAtAllTag(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void hideAllConversations(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void searchConversation(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void changeInputStates(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getInputStates(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void setConversation(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void searchConversations(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string m_serviceName;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CONVERSATION_MANAGER_SERVICE_H
|
383
windows/src/common/services/FriendManager.cpp
Normal file
383
windows/src/common/services/FriendManager.cpp
Normal file
@ -0,0 +1,383 @@
|
|||||||
|
#include "FriendManager.h"
|
||||||
|
#include <libopenimsdk.h>
|
||||||
|
#include "../NimResult.h"
|
||||||
|
#include "../ZegoDataUtils.h"
|
||||||
|
#include "ConstDefine.h"
|
||||||
|
#include "Listen.h"
|
||||||
|
|
||||||
|
FriendshipManagerService::FriendshipManagerService()
|
||||||
|
{
|
||||||
|
m_serviceName = "friendshipManager";
|
||||||
|
}
|
||||||
|
|
||||||
|
void FriendshipManagerService::onMethodCalled(
|
||||||
|
const std::string &method,
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
|
||||||
|
{
|
||||||
|
if (method == "setFriendListener")
|
||||||
|
{
|
||||||
|
setFriendListener(arguments, result);
|
||||||
|
}
|
||||||
|
else if (method == "getFriendsInfo")
|
||||||
|
{
|
||||||
|
getFriendsInfo(arguments, result);
|
||||||
|
}
|
||||||
|
else if (method == "addFriend")
|
||||||
|
{
|
||||||
|
addFriend(arguments, result);
|
||||||
|
}
|
||||||
|
else if (method == "getFriendApplicationListAsRecipient")
|
||||||
|
{
|
||||||
|
getFriendApplicationListAsRecipient(arguments, result);
|
||||||
|
}
|
||||||
|
else if (method == "getFriendApplicationListAsApplicant")
|
||||||
|
{
|
||||||
|
getFriendApplicationListAsApplicant(arguments, result);
|
||||||
|
}
|
||||||
|
else if (method == "getFriendList")
|
||||||
|
{
|
||||||
|
getFriendList(arguments, result);
|
||||||
|
}
|
||||||
|
else if (method == "getFriendListPage")
|
||||||
|
{
|
||||||
|
getFriendListPage(arguments, result);
|
||||||
|
}
|
||||||
|
else if (method == "addBlacklist")
|
||||||
|
{
|
||||||
|
addBlacklist(arguments, result);
|
||||||
|
}
|
||||||
|
else if (method == "getBlacklist")
|
||||||
|
{
|
||||||
|
getBlacklist(arguments, result);
|
||||||
|
}
|
||||||
|
else if (method == "removeBlacklist")
|
||||||
|
{
|
||||||
|
removeBlacklist(arguments, result);
|
||||||
|
}
|
||||||
|
else if (method == "checkFriend")
|
||||||
|
{
|
||||||
|
checkFriend(arguments, result);
|
||||||
|
}
|
||||||
|
else if (method == "deleteFriend")
|
||||||
|
{
|
||||||
|
deleteFriend(arguments, result);
|
||||||
|
}
|
||||||
|
else if (method == "acceptFriendApplication")
|
||||||
|
{
|
||||||
|
acceptFriendApplication(arguments, result);
|
||||||
|
}
|
||||||
|
else if (method == "refuseFriendApplication")
|
||||||
|
{
|
||||||
|
refuseFriendApplication(arguments, result);
|
||||||
|
}
|
||||||
|
else if (method == "searchFriends")
|
||||||
|
{
|
||||||
|
searchFriends(arguments, result);
|
||||||
|
}
|
||||||
|
else if (method == "updateFriends")
|
||||||
|
{
|
||||||
|
updateFriends(arguments, result);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result->NotImplemented();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FriendshipManagerService::setFriendListener(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
|
||||||
|
{
|
||||||
|
if (arguments)
|
||||||
|
{
|
||||||
|
set_friend_listener(NewFriendshipListenCallBack());
|
||||||
|
result->Success(flutter::EncodableValue());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FriendshipManagerService::getFriendsInfo(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
|
||||||
|
{
|
||||||
|
if (arguments)
|
||||||
|
{
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto userIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDList")));
|
||||||
|
auto filterBlack = zego_value_get_bool(arguments->at(flutter::EncodableValue("filterBlack")));
|
||||||
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
|
char *userIDList_cs = const_cast<char *>(userIDList.c_str());
|
||||||
|
|
||||||
|
get_specified_friends_info(NewBaseCallBack(result), operationID_cs, userIDList_cs, filterBlack);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FriendshipManagerService::addFriend(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
|
||||||
|
{
|
||||||
|
if (arguments)
|
||||||
|
{
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto friendInfo = map_2_json(*arguments);
|
||||||
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
|
char *friendInfo_cs = const_cast<char *>(friendInfo.c_str());
|
||||||
|
|
||||||
|
add_friend(NewBaseCallBack(result), operationID_cs, friendInfo_cs);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FriendshipManagerService::getFriendApplicationListAsRecipient(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
|
||||||
|
{
|
||||||
|
if (arguments)
|
||||||
|
{
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
|
|
||||||
|
get_friend_application_list_as_recipient(NewBaseCallBack(result), operationID_cs);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FriendshipManagerService::getFriendApplicationListAsApplicant(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
|
||||||
|
{
|
||||||
|
if (arguments)
|
||||||
|
{
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
|
|
||||||
|
get_friend_application_list_as_applicant(NewBaseCallBack(result), operationID_cs);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FriendshipManagerService::getFriendList(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
|
||||||
|
{
|
||||||
|
if (arguments)
|
||||||
|
{
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto filterBlack = zego_value_get_bool(arguments->at(flutter::EncodableValue("filterBlack")));
|
||||||
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
|
|
||||||
|
get_friend_list(NewBaseCallBack(result), operationID_cs, filterBlack);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FriendshipManagerService::getFriendListPage(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
|
||||||
|
{
|
||||||
|
if (arguments)
|
||||||
|
{
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto offset = zego_value_get_int(arguments->at(flutter::EncodableValue("offset")));
|
||||||
|
auto count = zego_value_get_int(arguments->at(flutter::EncodableValue("count")));
|
||||||
|
auto filterBlack = zego_value_get_bool(arguments->at(flutter::EncodableValue("filterBlack")));
|
||||||
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
|
|
||||||
|
get_friend_list_page(NewBaseCallBack(result), operationID_cs, offset, count, filterBlack);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FriendshipManagerService::addBlacklist(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
|
||||||
|
{
|
||||||
|
if (arguments)
|
||||||
|
{
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
|
||||||
|
auto ex = zego_value_get_string(arguments->at(flutter::EncodableValue("ex")));
|
||||||
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
|
char *userID_cs = const_cast<char *>(userID.c_str());
|
||||||
|
char *ex_cs = const_cast<char *>(ex.c_str());
|
||||||
|
|
||||||
|
add_black(NewBaseCallBack(result), operationID_cs, userID_cs, ex_cs);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FriendshipManagerService::getBlacklist(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
|
||||||
|
{
|
||||||
|
if (arguments)
|
||||||
|
{
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
|
|
||||||
|
get_black_list(NewBaseCallBack(result), operationID_cs);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FriendshipManagerService::removeBlacklist(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
|
||||||
|
{
|
||||||
|
if (arguments)
|
||||||
|
{
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
|
||||||
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
|
char *userID_cs = const_cast<char *>(userID.c_str());
|
||||||
|
|
||||||
|
remove_black(NewBaseCallBack(result), operationID_cs, userID_cs);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FriendshipManagerService::checkFriend(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
|
||||||
|
{
|
||||||
|
if (arguments)
|
||||||
|
{
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto userIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDList")));
|
||||||
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
|
char *userIDList_cs = const_cast<char *>(userIDList.c_str());
|
||||||
|
|
||||||
|
check_friend(NewBaseCallBack(result), operationID_cs, userIDList_cs);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FriendshipManagerService::deleteFriend(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
|
||||||
|
{
|
||||||
|
if (arguments)
|
||||||
|
{
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
|
||||||
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
|
char *userID_cs = const_cast<char *>(userID.c_str());
|
||||||
|
|
||||||
|
delete_friend(NewBaseCallBack(result), operationID_cs, userID_cs);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FriendshipManagerService::acceptFriendApplication(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
|
||||||
|
{
|
||||||
|
if (arguments)
|
||||||
|
{
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto applicationInfo = map_2_json(*arguments);
|
||||||
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
|
char *applicationInfo_cs = const_cast<char *>(applicationInfo.c_str());
|
||||||
|
|
||||||
|
accept_friend_application(NewBaseCallBack(result), operationID_cs, applicationInfo_cs);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FriendshipManagerService::refuseFriendApplication(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
|
||||||
|
{
|
||||||
|
if (arguments)
|
||||||
|
{
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto applicationInfo = map_2_json(*arguments);
|
||||||
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
|
char *applicationInfo_cs = const_cast<char *>(applicationInfo.c_str());
|
||||||
|
|
||||||
|
refuse_friend_application(NewBaseCallBack(result), operationID_cs, applicationInfo_cs);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FriendshipManagerService::searchFriends(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
|
||||||
|
{
|
||||||
|
if (arguments)
|
||||||
|
{
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto searchParam = zego_value_get_string(arguments->at(flutter::EncodableValue("searchParam")));
|
||||||
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
|
char *searchParam_cs = const_cast<char *>(searchParam.c_str());
|
||||||
|
|
||||||
|
search_friends(NewBaseCallBack(result), operationID_cs, searchParam_cs);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FriendshipManagerService::updateFriends(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
|
||||||
|
{
|
||||||
|
if (arguments)
|
||||||
|
{
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto req = zego_value_get_string(arguments->at(flutter::EncodableValue("req")));
|
||||||
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
|
char *req_cs = const_cast<char *>(req.c_str());
|
||||||
|
|
||||||
|
update_friends(NewBaseCallBack(result), operationID_cs, req_cs);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
74
windows/src/common/services/FriendManager.h
Normal file
74
windows/src/common/services/FriendManager.h
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
#ifndef FRIENDSHIP_MANAGER_SERVICE_H
|
||||||
|
#define FRIENDSHIP_MANAGER_SERVICE_H
|
||||||
|
|
||||||
|
#include "../FLTService.h"
|
||||||
|
#include "Listen.h"
|
||||||
|
#include <flutter/standard_method_codec.h>
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class FriendshipManagerService : public FLTService
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FriendshipManagerService();
|
||||||
|
|
||||||
|
void onMethodCalled(
|
||||||
|
const std::string &method,
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
|
||||||
|
// Method handlers
|
||||||
|
void setFriendListener(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getFriendsInfo(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void addFriend(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getFriendApplicationListAsRecipient(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getFriendApplicationListAsApplicant(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getFriendList(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getFriendListPage(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void addBlacklist(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getBlacklist(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void removeBlacklist(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void checkFriend(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void deleteFriend(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void acceptFriendApplication(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void refuseFriendApplication(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void searchFriends(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void updateFriends(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string m_serviceName;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // FRIENDSHIP_MANAGER_SERVICE_H
|
508
windows/src/common/services/GroupManager.cpp
Normal file
508
windows/src/common/services/GroupManager.cpp
Normal file
@ -0,0 +1,508 @@
|
|||||||
|
#include "GroupManager.h"
|
||||||
|
#include <libopenimsdk.h>
|
||||||
|
#include "../NimResult.h"
|
||||||
|
#include "../ZegoDataUtils.h"
|
||||||
|
#include "ConstDefine.h"
|
||||||
|
#include "Listen.h"
|
||||||
|
|
||||||
|
GroupManagerService::GroupManagerService() {
|
||||||
|
m_serviceName = "groupManager";
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::onMethodCalled(
|
||||||
|
const std::string& method,
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (method == "setGroupListener") {
|
||||||
|
setGroupListener(arguments, result);
|
||||||
|
} else if (method == "inviteUserToGroup") {
|
||||||
|
inviteUserToGroup(arguments, result);
|
||||||
|
} else if (method == "kickGroupMember") {
|
||||||
|
kickGroupMember(arguments, result);
|
||||||
|
} else if (method == "getGroupMembersInfo") {
|
||||||
|
getGroupMembersInfo(arguments, result);
|
||||||
|
} else if (method == "getGroupMemberList") {
|
||||||
|
getGroupMemberList(arguments, result);
|
||||||
|
} else if (method == "getJoinedGroupList") {
|
||||||
|
getJoinedGroupList(arguments, result);
|
||||||
|
} else if (method == "getJoinedGroupListPage") {
|
||||||
|
getJoinedGroupListPage(arguments, result);
|
||||||
|
} else if (method == "createGroup") {
|
||||||
|
createGroup(arguments, result);
|
||||||
|
} else if (method == "setGroupInfo") {
|
||||||
|
setGroupInfo(arguments, result);
|
||||||
|
} else if (method == "getGroupsInfo") {
|
||||||
|
getGroupsInfo(arguments, result);
|
||||||
|
} else if (method == "joinGroup") {
|
||||||
|
joinGroup(arguments, result);
|
||||||
|
} else if (method == "quitGroup") {
|
||||||
|
quitGroup(arguments, result);
|
||||||
|
} else if (method == "transferGroupOwner") {
|
||||||
|
transferGroupOwner(arguments, result);
|
||||||
|
} else if (method == "getGroupApplicationListAsRecipient") {
|
||||||
|
getGroupApplicationListAsRecipient(arguments, result);
|
||||||
|
} else if (method == "getGroupApplicationListAsApplicant") {
|
||||||
|
getGroupApplicationListAsApplicant(arguments, result);
|
||||||
|
} else if (method == "acceptGroupApplication") {
|
||||||
|
acceptGroupApplication(arguments, result);
|
||||||
|
} else if (method == "refuseGroupApplication") {
|
||||||
|
refuseGroupApplication(arguments, result);
|
||||||
|
} else if (method == "dismissGroup") {
|
||||||
|
dismissGroup(arguments, result);
|
||||||
|
} else if (method == "changeGroupMute") {
|
||||||
|
changeGroupMute(arguments, result);
|
||||||
|
} else if (method == "changeGroupMemberMute") {
|
||||||
|
changeGroupMemberMute(arguments, result);
|
||||||
|
} else if (method == "searchGroups") {
|
||||||
|
searchGroups(arguments, result);
|
||||||
|
} else if (method == "getGroupMemberListByJoinTimeFilter") {
|
||||||
|
getGroupMemberListByJoinTimeFilter(arguments, result);
|
||||||
|
} else if (method == "getGroupMemberOwnerAndAdmin") {
|
||||||
|
getGroupMemberOwnerAndAdmin(arguments, result);
|
||||||
|
} else if (method == "searchGroupMembers") {
|
||||||
|
searchGroupMembers(arguments, result);
|
||||||
|
} else if (method == "setGroupMemberInfo") {
|
||||||
|
setGroupMemberInfo(arguments, result);
|
||||||
|
} else if (method == "isJoinGroup") {
|
||||||
|
isJoinGroup(arguments, result);
|
||||||
|
} else if (method == "getUsersInGroup") {
|
||||||
|
getUsersInGroup(arguments, result);
|
||||||
|
} else {
|
||||||
|
result->NotImplemented();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::setGroupListener(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
set_group_listener(NewGroupListenerCallBack());
|
||||||
|
result->Success(flutter::EncodableValue());
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::inviteUserToGroup(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
auto reason = zego_value_get_string(arguments->at(flutter::EncodableValue("reason")));
|
||||||
|
auto userIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDList")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
char* reason_cs = const_cast<char*>(reason.c_str());
|
||||||
|
char* userIDList_cs = const_cast<char*>(userIDList.c_str());
|
||||||
|
|
||||||
|
invite_user_to_group(NewBaseCallBack(result), operationID_cs, groupID_cs, reason_cs, userIDList_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::kickGroupMember(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
auto reason = zego_value_get_string(arguments->at(flutter::EncodableValue("reason")));
|
||||||
|
auto userIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDList")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
char* reason_cs = const_cast<char*>(reason.c_str());
|
||||||
|
char* userIDList_cs = const_cast<char*>(userIDList.c_str());
|
||||||
|
|
||||||
|
kick_group_member(NewBaseCallBack(result), operationID_cs, groupID_cs, reason_cs, userIDList_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::getGroupMembersInfo(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
auto userIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDList")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
char* userIDList_cs = const_cast<char*>(userIDList.c_str());
|
||||||
|
|
||||||
|
get_specified_group_members_info(NewBaseCallBack(result), operationID_cs, groupID_cs, userIDList_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::getGroupMemberList(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
auto filter = zego_value_get_int(arguments->at(flutter::EncodableValue("filter")));
|
||||||
|
auto offset = zego_value_get_int(arguments->at(flutter::EncodableValue("offset")));
|
||||||
|
auto count = zego_value_get_int(arguments->at(flutter::EncodableValue("count")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
|
||||||
|
get_group_member_list(NewBaseCallBack(result), operationID_cs, groupID_cs, filter, offset, count);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::getJoinedGroupList(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
|
||||||
|
get_joined_group_list(NewBaseCallBack(result), operationID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::getJoinedGroupListPage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto offset = zego_value_get_int(arguments->at(flutter::EncodableValue("offset")));
|
||||||
|
auto count = zego_value_get_int(arguments->at(flutter::EncodableValue("count")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
|
||||||
|
get_joined_group_list_page(NewBaseCallBack(result), operationID_cs, offset, count);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::createGroup(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupInfo = map_2_json(*arguments);
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupInfo_cs = const_cast<char*>(groupInfo.c_str());
|
||||||
|
|
||||||
|
create_group(NewBaseCallBack(result), operationID_cs, groupInfo_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::setGroupInfo(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupInfo = zego_value_get_string(arguments->at(flutter::EncodableValue("groupInfo")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupInfo_cs = const_cast<char*>(groupInfo.c_str());
|
||||||
|
|
||||||
|
set_group_info(NewBaseCallBack(result), operationID_cs, groupInfo_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::getGroupsInfo(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("groupIDList")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupIDList_cs = const_cast<char*>(groupIDList.c_str());
|
||||||
|
|
||||||
|
get_specified_groups_info(NewBaseCallBack(result), operationID_cs, groupIDList_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::joinGroup(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
auto reason = zego_value_get_string(arguments->at(flutter::EncodableValue("reason")));
|
||||||
|
auto joinSource = zego_value_get_int(arguments->at(flutter::EncodableValue("joinSource")));
|
||||||
|
auto ex = zego_value_get_string(arguments->at(flutter::EncodableValue("ex")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
char* reason_cs = const_cast<char*>(reason.c_str());
|
||||||
|
char* ex_cs = const_cast<char*>(ex.c_str());
|
||||||
|
|
||||||
|
join_group(NewBaseCallBack(result), operationID_cs, groupID_cs, reason_cs, joinSource, ex_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::quitGroup(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
|
||||||
|
quit_group(NewBaseCallBack(result), operationID_cs, groupID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::transferGroupOwner(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
char* userID_cs = const_cast<char*>(userID.c_str());
|
||||||
|
|
||||||
|
transfer_group_owner(NewBaseCallBack(result), operationID_cs, groupID_cs, userID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::getGroupApplicationListAsRecipient(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
|
||||||
|
get_group_application_list_as_recipient(NewBaseCallBack(result), operationID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::getGroupApplicationListAsApplicant(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
|
||||||
|
get_group_application_list_as_applicant(NewBaseCallBack(result), operationID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::acceptGroupApplication(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
|
||||||
|
auto handleMsg = zego_value_get_string(arguments->at(flutter::EncodableValue("handleMsg")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
char* userID_cs = const_cast<char*>(userID.c_str());
|
||||||
|
char* handleMsg_cs = const_cast<char*>(handleMsg.c_str());
|
||||||
|
|
||||||
|
accept_group_application(NewBaseCallBack(result), operationID_cs, groupID_cs, userID_cs, handleMsg_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::refuseGroupApplication(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
|
||||||
|
auto handleMsg = zego_value_get_string(arguments->at(flutter::EncodableValue("handleMsg")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
char* userID_cs = const_cast<char*>(userID.c_str());
|
||||||
|
char* handleMsg_cs = const_cast<char*>(handleMsg.c_str());
|
||||||
|
|
||||||
|
refuse_group_application(NewBaseCallBack(result), operationID_cs, groupID_cs, userID_cs, handleMsg_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::dismissGroup(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
|
||||||
|
dismiss_group(NewBaseCallBack(result), operationID_cs, groupID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::changeGroupMute(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
auto mute = zego_value_get_bool(arguments->at(flutter::EncodableValue("mute")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
|
||||||
|
change_group_mute(NewBaseCallBack(result), operationID_cs, groupID_cs, mute);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::changeGroupMemberMute(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
|
||||||
|
auto seconds = zego_value_get_int(arguments->at(flutter::EncodableValue("seconds")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
char* userID_cs = const_cast<char*>(userID.c_str());
|
||||||
|
|
||||||
|
change_group_member_mute(NewBaseCallBack(result), operationID_cs, groupID_cs, userID_cs, seconds);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::searchGroups(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto searchParam = zego_value_get_string(arguments->at(flutter::EncodableValue("searchParam")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* searchParam_cs = const_cast<char*>(searchParam.c_str());
|
||||||
|
|
||||||
|
search_groups(NewBaseCallBack(result), operationID_cs, searchParam_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::getGroupMemberListByJoinTimeFilter(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
auto offset = zego_value_get_int(arguments->at(flutter::EncodableValue("offset")));
|
||||||
|
auto count = zego_value_get_int(arguments->at(flutter::EncodableValue("count")));
|
||||||
|
auto joinTimeBegin = zego_value_get_int(arguments->at(flutter::EncodableValue("joinTimeBegin")));
|
||||||
|
auto joinTimeEnd = zego_value_get_int(arguments->at(flutter::EncodableValue("joinTimeEnd")));
|
||||||
|
auto excludeUserIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("excludeUserIDList")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
char* excludeUserIDList_cs = const_cast<char*>(excludeUserIDList.c_str());
|
||||||
|
|
||||||
|
get_group_member_list_by_join_time_filter(NewBaseCallBack(result), operationID_cs, groupID_cs, offset, count, joinTimeBegin, joinTimeEnd, excludeUserIDList_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::getGroupMemberOwnerAndAdmin(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
|
||||||
|
get_group_member_owner_and_admin(NewBaseCallBack(result), operationID_cs, groupID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::searchGroupMembers(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto searchParam = zego_value_get_string(arguments->at(flutter::EncodableValue("searchParam")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* searchParam_cs = const_cast<char*>(searchParam.c_str());
|
||||||
|
|
||||||
|
search_group_members(NewBaseCallBack(result), operationID_cs, searchParam_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::setGroupMemberInfo(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto info = zego_value_get_string(arguments->at(flutter::EncodableValue("info")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* info_cs = const_cast<char*>(info.c_str());
|
||||||
|
|
||||||
|
set_group_member_info(NewBaseCallBack(result), operationID_cs, info_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::isJoinGroup(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
|
||||||
|
is_join_group(NewBaseCallBack(result), operationID_cs, groupID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupManagerService::getUsersInGroup(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
auto userIDs = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDs")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
char* userIDs_cs = const_cast<char*>(userIDs.c_str());
|
||||||
|
|
||||||
|
get_users_in_group(NewBaseCallBack(result), operationID_cs, groupID_cs, userIDs_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
107
windows/src/common/services/GroupManager.h
Normal file
107
windows/src/common/services/GroupManager.h
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
#ifndef GROUP_MANAGER_SERVICE_H
|
||||||
|
#define GROUP_MANAGER_SERVICE_H
|
||||||
|
|
||||||
|
#include "../FLTService.h"
|
||||||
|
#include "Listen.h"
|
||||||
|
#include <flutter/standard_method_codec.h>
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class GroupManagerService : public FLTService
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
GroupManagerService();
|
||||||
|
|
||||||
|
void onMethodCalled(
|
||||||
|
const std::string &method,
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
|
||||||
|
// Method handlers
|
||||||
|
void setGroupListener(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void inviteUserToGroup(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void kickGroupMember(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getGroupMembersInfo(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getGroupMemberList(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getJoinedGroupList(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getJoinedGroupListPage(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createGroup(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void setGroupInfo(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getGroupsInfo(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void joinGroup(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void quitGroup(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void transferGroupOwner(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getGroupApplicationListAsRecipient(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getGroupApplicationListAsApplicant(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void acceptGroupApplication(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void refuseGroupApplication(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void dismissGroup(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void changeGroupMute(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void changeGroupMemberMute(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void searchGroups(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getGroupMemberListByJoinTimeFilter(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getGroupMemberOwnerAndAdmin(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void searchGroupMembers(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void setGroupMemberInfo(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void isJoinGroup(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getUsersInGroup(
|
||||||
|
const flutter::EncodableMap *arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string m_serviceName;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // GROUP_MANAGER_SERVICE_H
|
@ -12,89 +12,13 @@
|
|||||||
#include <libopenimsdk.h>
|
#include <libopenimsdk.h>
|
||||||
#include "../ZegoDataUtils.h"
|
#include "../ZegoDataUtils.h"
|
||||||
#include "ConstDefine.h"
|
#include "ConstDefine.h"
|
||||||
|
#include "Listen.h"
|
||||||
|
|
||||||
|
|
||||||
IMManagerService::IMManagerService() {
|
IMManagerService::IMManagerService() {
|
||||||
m_serviceName = "imManager";
|
m_serviceName = "imManager";
|
||||||
|
|
||||||
_im_manager_listener.onInitSdk = [](int state, char *msg) {
|
|
||||||
// friend added, handle friendInfo
|
|
||||||
|
|
||||||
flutter::EncodableMap arguments;
|
|
||||||
switch (ConstDefine(state)) {
|
|
||||||
case ConstDefine::CONNECTING:
|
|
||||||
arguments.insert(std::make_pair("type", "onConnecting"));
|
|
||||||
arguments.insert(std::make_pair("data", *msg));
|
|
||||||
break;
|
|
||||||
case ConstDefine::CONNECT_SUCCESS:
|
|
||||||
arguments.insert(std::make_pair("type", "onConnectSuccess"));
|
|
||||||
arguments.insert(std::make_pair("data", *msg));
|
|
||||||
break;
|
|
||||||
case ConstDefine::CONNECT_FAILED:
|
|
||||||
arguments.insert(std::make_pair("type", "onConnectFailed"));
|
|
||||||
arguments.insert(std::make_pair("data", *msg));
|
|
||||||
break;
|
|
||||||
case ConstDefine::KICKED_OFFLINE:
|
|
||||||
arguments.insert(std::make_pair("type", "onKickedOffline"));
|
|
||||||
arguments.insert(std::make_pair("data", *msg));
|
|
||||||
break;
|
|
||||||
case ConstDefine::USER_TOKEN_EXPIRED:
|
|
||||||
arguments.insert(std::make_pair("type", "onUserTokenExpired"));
|
|
||||||
arguments.insert(std::make_pair("data", *msg));
|
|
||||||
break;
|
|
||||||
case ConstDefine::USER_TOKEN_INVALID:
|
|
||||||
arguments.insert(std::make_pair("type", "onUserTokenExpired"));
|
|
||||||
arguments.insert(std::make_pair("data", *msg));
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
notifyEvent("connectListener", arguments);
|
|
||||||
};
|
|
||||||
|
|
||||||
_im_manager_listener.baseCallBack = [](char *opid, int errCode, char *errMsg, char *msg) {
|
|
||||||
CallBaseCallBack(msg, errCode, errMsg, msg);
|
|
||||||
};
|
|
||||||
|
|
||||||
_im_manager_listener.uploadCallback = [](int state, char *msg) {
|
|
||||||
// upload progress
|
|
||||||
|
|
||||||
flutter::EncodableMap arguments;
|
|
||||||
switch (ConstDefine(state)) {
|
|
||||||
case ConstDefine::OPEN:
|
|
||||||
arguments.insert(std::make_pair("type", "onConnecting"));
|
|
||||||
arguments.insert(std::make_pair("data", *msg));
|
|
||||||
break;
|
|
||||||
case ConstDefine::PART_SIZE:
|
|
||||||
arguments.insert(std::make_pair("type", "onConnectSuccess"));
|
|
||||||
arguments.insert(std::make_pair("data", *msg));
|
|
||||||
break;
|
|
||||||
case ConstDefine::HASH_PART_PROGRESS:
|
|
||||||
arguments.insert(std::make_pair("type", "onConnectFailed"));
|
|
||||||
arguments.insert(std::make_pair("data", *msg));
|
|
||||||
break;
|
|
||||||
case ConstDefine::HASH_PART_COMPLETE:
|
|
||||||
arguments.insert(std::make_pair("type", "onKickedOffline"));
|
|
||||||
arguments.insert(std::make_pair("data", *msg));
|
|
||||||
break;
|
|
||||||
case ConstDefine::UPLOAD_ID:
|
|
||||||
arguments.insert(std::make_pair("type", "onUserTokenExpired"));
|
|
||||||
arguments.insert(std::make_pair("data", *msg));
|
|
||||||
break;
|
|
||||||
case ConstDefine::UPLOAD_PART_COMPLETE:
|
|
||||||
arguments.insert(std::make_pair("type", "onUserTokenExpired"));
|
|
||||||
arguments.insert(std::make_pair("data", *msg));
|
|
||||||
break;
|
|
||||||
case ConstDefine::UPLOAD_COMPLETE:
|
|
||||||
arguments.insert(std::make_pair("type", "onUserTokenExpired"));
|
|
||||||
arguments.insert(std::make_pair("data", *msg));
|
|
||||||
break;
|
|
||||||
case ConstDefine::COMPLETE:
|
|
||||||
arguments.insert(std::make_pair("type", "onUserTokenExpired"));
|
|
||||||
arguments.insert(std::make_pair("data", *msg));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
notifyEvent("uploadFileListener", arguments);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
void IMManagerService::onMethodCalled(
|
void IMManagerService::onMethodCalled(
|
||||||
const std::string &method, const flutter::EncodableMap *arguments,
|
const std::string &method, const flutter::EncodableMap *arguments,
|
||||||
@ -138,7 +62,7 @@ void IMManagerService::initializeSDK(
|
|||||||
char *config_cs = const_cast<char *>(config.c_str());
|
char *config_cs = const_cast<char *>(config.c_str());
|
||||||
|
|
||||||
|
|
||||||
auto error = init_sdk(_im_manager_listener.onInitSdk,
|
auto error = init_sdk(NewInitListenCallBack(),
|
||||||
operationID_cs,
|
operationID_cs,
|
||||||
config_cs);
|
config_cs);
|
||||||
if (error == 0) {
|
if (error == 0) {
|
||||||
@ -181,9 +105,7 @@ void IMManagerService::login(
|
|||||||
char *userID_cs = const_cast<char *>(userID.c_str());
|
char *userID_cs = const_cast<char *>(userID.c_str());
|
||||||
char *token_cs = const_cast<char *>(token.c_str());
|
char *token_cs = const_cast<char *>(token.c_str());
|
||||||
|
|
||||||
NewBaseCallBack(operationID, result);
|
::login(NewBaseCallBack(result), operationID_cs, userID_cs, token_cs);
|
||||||
|
|
||||||
::login(_im_manager_listener.baseCallBack, operationID_cs, userID_cs, token_cs);
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
@ -197,8 +119,8 @@ void IMManagerService::logout(
|
|||||||
auto operationID = zego_value_get_string(
|
auto operationID = zego_value_get_string(
|
||||||
arguments->at(flutter::EncodableValue("operationID")));
|
arguments->at(flutter::EncodableValue("operationID")));
|
||||||
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
NewBaseCallBack(operationID, result);
|
|
||||||
::logout(_im_manager_listener.baseCallBack, operationID_cs);
|
::logout(NewBaseCallBack(result), operationID_cs);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
@ -225,67 +147,61 @@ void IMManagerService::getLoginStatus(
|
|||||||
void IMManagerService::uploadFile(
|
void IMManagerService::uploadFile(
|
||||||
const flutter::EncodableMap *arguments,
|
const flutter::EncodableMap *arguments,
|
||||||
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
// if (arguments) {
|
if (arguments) {
|
||||||
// auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
// auto id = zego_value_get_string(arguments->at(flutter::EncodableValue("id")));
|
auto id = zego_value_get_string(arguments->at(flutter::EncodableValue("id")));
|
||||||
// auto fileInfo = map_2_json(*arguments);
|
auto fileInfo = map_2_json(*arguments);
|
||||||
// char* operationID_cs = const_cast<char*>(operationID.c_str());
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
// char* fileInfo_cs = const_cast<char*>(fileInfo.c_str());
|
char* fileInfo_cs = const_cast<char*>(fileInfo.c_str());
|
||||||
// uploadFileResult = result;
|
|
||||||
// upload_file(_im_manager_listener.onUploadFile, operationID_cs, fileInfo_cs, _im_manager_listener.uploadCallback);
|
upload_file(NewBaseCallBack(result), operationID_cs, fileInfo_cs, NewUploadFileListenCallBack(id));
|
||||||
// }
|
}
|
||||||
// else {
|
else {
|
||||||
// result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void IMManagerService::uploadLogs(
|
void IMManagerService::uploadLogs(
|
||||||
const flutter::EncodableMap *arguments,
|
const flutter::EncodableMap *arguments,
|
||||||
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
// if (arguments) {
|
if (arguments) {
|
||||||
// auto operationID = zego_value_get_string(
|
auto operationID = zego_value_get_string(
|
||||||
// arguments->at(flutter::EncodableValue("operationID")));
|
arguments->at(flutter::EncodableValue("operationID")));
|
||||||
// auto line = zego_value_get_int(arguments->at(flutter::EncodableValue("line")));
|
auto line = zego_value_get_int(arguments->at(flutter::EncodableValue("line")));
|
||||||
// auto ex = zego_value_get_string(arguments->at(flutter::EncodableValue("ex")));
|
auto ex = zego_value_get_string(arguments->at(flutter::EncodableValue("ex")));
|
||||||
// char *operationID_cs = const_cast<char *>(operationID.c_str());
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
// char *ex_cs = const_cast<char *>(ex.c_str());
|
char *ex_cs = const_cast<char *>(ex.c_str());
|
||||||
//
|
|
||||||
// upload_logs(_im_manager_listener.onUploadLogs, operationID_cs, line, ex_cs);
|
::upload_logs(NewBaseCallBack(result), operationID_cs, line, ex_cs, NewUploadLogsListenCallBack());
|
||||||
//
|
|
||||||
// } else {
|
} else {
|
||||||
// result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void IMManagerService::logs(
|
void IMManagerService::logs(
|
||||||
const flutter::EncodableMap *arguments,
|
const flutter::EncodableMap *arguments,
|
||||||
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
// if (arguments) {
|
if (arguments) {
|
||||||
// auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
// auto logLevel = zego_value_get_int(arguments->at(flutter::EncodableValue("logLevel")));
|
auto logLevel = zego_value_get_int(arguments->at(flutter::EncodableValue("logLevel")));
|
||||||
// auto file = zego_value_get_string(arguments->at(flutter::EncodableValue("file")));
|
auto file = zego_value_get_string(arguments->at(flutter::EncodableValue("file")));
|
||||||
// auto line = zego_value_get_int(arguments->at(flutter::EncodableValue("line")));
|
auto line = zego_value_get_int(arguments->at(flutter::EncodableValue("line")));
|
||||||
// auto msgs = zego_value_get_string(arguments->at(flutter::EncodableValue("msgs")));
|
auto msgs = zego_value_get_string(arguments->at(flutter::EncodableValue("msgs")));
|
||||||
// auto err = zego_value_get_string(arguments->at(flutter::EncodableValue("err")));
|
auto err = zego_value_get_string(arguments->at(flutter::EncodableValue("err")));
|
||||||
// auto keyAndValue = zego_value_get_string(arguments->at(flutter::EncodableValue("keyAndValue")));
|
auto keyAndValue = zego_value_get_string(arguments->at(flutter::EncodableValue("keyAndValue")));
|
||||||
// char* operationID_cs = const_cast<char*>(operationID.c_str());
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
// char* file_cs = const_cast<char*>(file.c_str());
|
char* file_cs = const_cast<char*>(file.c_str());
|
||||||
// char* msgs_cs = const_cast<char*>(msgs.c_str());
|
char* msgs_cs = const_cast<char*>(msgs.c_str());
|
||||||
// char* err_cs = const_cast<char*>(err.c_str());
|
char* err_cs = const_cast<char*>(err.c_str());
|
||||||
// char* keyAndValue_cs = const_cast<char*>(keyAndValue.c_str());
|
char* keyAndValue_cs = const_cast<char*>(keyAndValue.c_str());
|
||||||
//
|
|
||||||
// auto error = logs(_im_manager_listener.onLogs, operationID_cs, logLevel, file_cs, line, msgs_cs, err_cs, keyAndValue_cs);
|
::logs(NewBaseCallBack(result), operationID_cs, logLevel, file_cs, line, msgs_cs, err_cs, keyAndValue_cs);
|
||||||
// if (error != 0) {
|
|
||||||
// std::string msg = "Logging failed";
|
}
|
||||||
// result->Error("", "", NimResult::getErrorResult(error, msg));
|
else {
|
||||||
// }
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
// else {
|
}
|
||||||
// result->Success(NimResult::getSuccessResult());
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else {
|
|
||||||
// result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void IMManagerService::updateFcmToken(
|
void IMManagerService::updateFcmToken(
|
||||||
@ -298,8 +214,8 @@ void IMManagerService::updateFcmToken(
|
|||||||
auto expireTime = zego_value_get_int(arguments->at(flutter::EncodableValue("expireTime")));
|
auto expireTime = zego_value_get_int(arguments->at(flutter::EncodableValue("expireTime")));
|
||||||
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
char *fcmToken_cs = const_cast<char *>(fcmToken.c_str());
|
char *fcmToken_cs = const_cast<char *>(fcmToken.c_str());
|
||||||
NewBaseCallBack(operationID, result);
|
|
||||||
update_fcm_token(_im_manager_listener.baseCallBack, operationID_cs, fcmToken_cs,
|
::update_fcm_token(NewBaseCallBack(result), operationID_cs, fcmToken_cs,
|
||||||
expireTime);
|
expireTime);
|
||||||
} else {
|
} else {
|
||||||
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
@ -310,14 +226,15 @@ void IMManagerService::setAppBackgroundStatus(
|
|||||||
const flutter::EncodableMap *arguments,
|
const flutter::EncodableMap *arguments,
|
||||||
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
if (arguments) {
|
if (arguments) {
|
||||||
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
auto operationID = zego_value_get_string(
|
||||||
auto isBackground = zego_value_get_bool(arguments->at(flutter::EncodableValue("isBackground")));
|
arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto isBackground = zego_value_get_bool(
|
||||||
|
arguments->at(flutter::EncodableValue("isBackground")));
|
||||||
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
NewBaseCallBack(operationID, result);
|
|
||||||
set_app_background_status(_im_manager_listener.baseCallBack, operationID_cs, isBackground);
|
|
||||||
|
|
||||||
}
|
set_app_background_status(NewBaseCallBack(result), operationID_cs, isBackground);
|
||||||
else {
|
|
||||||
|
} else {
|
||||||
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -326,13 +243,12 @@ void IMManagerService::networkStatusChanged(
|
|||||||
const flutter::EncodableMap *arguments,
|
const flutter::EncodableMap *arguments,
|
||||||
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
if (arguments) {
|
if (arguments) {
|
||||||
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
auto operationID = zego_value_get_string(
|
||||||
|
arguments->at(flutter::EncodableValue("operationID")));
|
||||||
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
char *operationID_cs = const_cast<char *>(operationID.c_str());
|
||||||
NewBaseCallBack(operationID, result);
|
network_status_changed(NewBaseCallBack(result), operationID_cs);
|
||||||
network_status_changed(_im_manager_listener.baseCallBack, operationID_cs);
|
|
||||||
|
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,11 +8,7 @@
|
|||||||
#include "../FLTService.h"
|
#include "../FLTService.h"
|
||||||
#include "Listen.h"
|
#include "Listen.h"
|
||||||
|
|
||||||
struct IMManagerServiceListener {
|
|
||||||
CB_I_S onInitSdk;
|
|
||||||
CB_S_I_S_S baseCallBack;
|
|
||||||
CB_I_S uploadCallback;
|
|
||||||
};
|
|
||||||
|
|
||||||
class IMManagerService : public FLTService {
|
class IMManagerService : public FLTService {
|
||||||
public:
|
public:
|
||||||
@ -67,7 +63,6 @@ class IMManagerService : public FLTService {
|
|||||||
const flutter::EncodableMap* arguments,
|
const flutter::EncodableMap* arguments,
|
||||||
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
|
||||||
IMManagerServiceListener _im_manager_listener;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,20 +1,621 @@
|
|||||||
#include "Listen.h"
|
#include "Listen.h"
|
||||||
#include <unordered_map>
|
|
||||||
|
|
||||||
std::unordered_map <std::string, std::unique_ptr<BaseCallBack>> g_baseCallBackMap;
|
#include "wrapp_cpp_function.inc"
|
||||||
std::mutex g_baseCallBackMapMutex;
|
#include "ConstDefine.h"
|
||||||
|
#include "../FLTService.h"
|
||||||
|
#include "../ThreadUtil.h"
|
||||||
|
#include "../json.hpp"
|
||||||
|
using json = nlohmann::json;
|
||||||
|
|
||||||
void NewBaseCallBack(std::string opid,
|
CB_S_I_S_S NewBaseCallBack(std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
|
||||||
std::shared_ptr <flutter::MethodResult<flutter::EncodableValue>> result) {
|
{
|
||||||
std::lock_guard <std::mutex> lock(g_baseCallBackMapMutex);
|
|
||||||
g_baseCallBackMap[opid] = std::make_unique<BaseCallBack>(result);
|
auto t = std::make_shared<BaseCallBack>(result);
|
||||||
|
auto f = [t](const std::string &operationID, int errCode, const std::string &errMsg, const std::string &data)
|
||||||
|
{
|
||||||
|
t->HandleCallback(operationID, errCode, errMsg, data);
|
||||||
|
};
|
||||||
|
|
||||||
|
return _wrapper_callonce_cpp_function(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CallBaseCallBack(char *opid, int errCode, char *errMsg, char *msg) {
|
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
std::lock_guard <std::mutex> lock(g_baseCallBackMapMutex);
|
|
||||||
auto it = g_baseCallBackMap.find(std::string(opid));
|
void InitListenCallBack::HandleCallback(int state, const std::string &msg)
|
||||||
if (it != g_baseCallBackMap.end()) {
|
{
|
||||||
auto ctx = std::move(it->second); //unique_ptr
|
flutter::EncodableMap arguments;
|
||||||
ctx->HandleCallback(opid, errCode, errMsg, msg);
|
switch (ConstDefine(state))
|
||||||
|
{
|
||||||
|
case ConstDefine::CONNECTING:
|
||||||
|
arguments.insert(std::make_pair("type", "onConnecting"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::CONNECT_SUCCESS:
|
||||||
|
arguments.insert(std::make_pair("type", "onConnectSuccess"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::CONNECT_FAILED:
|
||||||
|
arguments.insert(std::make_pair("type", "onConnectFailed"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::KICKED_OFFLINE:
|
||||||
|
arguments.insert(std::make_pair("type", "onKickedOffline"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::USER_TOKEN_EXPIRED:
|
||||||
|
arguments.insert(std::make_pair("type", "onUserTokenExpired"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::USER_TOKEN_INVALID:
|
||||||
|
arguments.insert(std::make_pair("type", "onUserTokenExpired"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
notifyEvent("connectListener", arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
CB_I_S NewInitListenCallBack()
|
||||||
|
{
|
||||||
|
auto t = std::make_shared<InitListenCallBack>();
|
||||||
|
auto f = [t](int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
t->HandleCallback(state, msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
return _wrapper_cpp_function(f);
|
||||||
|
}
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void UploadFileListenCallBack::HandleCallback(int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
flutter::EncodableMap arguments;
|
||||||
|
flutter::EncodableMap data;
|
||||||
|
json j;
|
||||||
|
switch (ConstDefine(state))
|
||||||
|
{
|
||||||
|
case ConstDefine::OPEN:
|
||||||
|
data.insert(std::make_pair("id", id));
|
||||||
|
data.insert(std::make_pair("size", std::stoi(msg)));
|
||||||
|
arguments.insert(std::make_pair("type", "open"));
|
||||||
|
arguments.insert(std::make_pair("data", data));
|
||||||
|
break;
|
||||||
|
case ConstDefine::PART_SIZE:
|
||||||
|
// 需要使用json反序列化对象msg,使用临时结构
|
||||||
|
j = json::parse(msg);
|
||||||
|
data.insert(std::make_pair("id", id));
|
||||||
|
data.insert(std::make_pair("partSize", j.at("partSize").get<int>()));
|
||||||
|
data.insert(std::make_pair("num", j.at("num").get<int>()));
|
||||||
|
arguments.insert(std::make_pair("type", "partSize"));
|
||||||
|
arguments.insert(std::make_pair("data", data));
|
||||||
|
break;
|
||||||
|
case ConstDefine::HASH_PART_PROGRESS:
|
||||||
|
j = json::parse(msg);
|
||||||
|
data.insert(std::make_pair("id", id));
|
||||||
|
data.insert(std::make_pair("index", j.at("index").get<int>()));
|
||||||
|
data.insert(std::make_pair("size", j.at("size").get<int>()));
|
||||||
|
data.insert(std::make_pair("partHash", j.at("partHash").get<std::string>()));
|
||||||
|
arguments.insert(std::make_pair("type", "hashPartProgress"));
|
||||||
|
arguments.insert(std::make_pair("data", data));
|
||||||
|
break;
|
||||||
|
case ConstDefine::HASH_PART_COMPLETE:
|
||||||
|
j = json::parse(msg);
|
||||||
|
data.insert(std::make_pair("id", id));
|
||||||
|
data.insert(std::make_pair("partHash", j.at("partHash").get<std::string>()));
|
||||||
|
data.insert(std::make_pair("fileHash", j.at("fileHash").get<std::string>()));
|
||||||
|
arguments.insert(std::make_pair("type", "hashPartComplete"));
|
||||||
|
arguments.insert(std::make_pair("data", data));
|
||||||
|
break;
|
||||||
|
case ConstDefine::UPLOAD_ID:
|
||||||
|
data.insert(std::make_pair("id", id));
|
||||||
|
data.insert(std::make_pair("uploadID", msg));
|
||||||
|
arguments.insert(std::make_pair("type", "uploadID"));
|
||||||
|
arguments.insert(std::make_pair("data", data));
|
||||||
|
break;
|
||||||
|
case ConstDefine::UPLOAD_PART_COMPLETE:
|
||||||
|
j = json::parse(msg);
|
||||||
|
data.insert(std::make_pair("id", id));
|
||||||
|
data.insert(std::make_pair("index", j.at("index").get<int>()));
|
||||||
|
data.insert(std::make_pair("partSize", j.at("partSize").get<int>()));
|
||||||
|
data.insert(std::make_pair("partHash", j.at("partHash").get<std::string>()));
|
||||||
|
arguments.insert(std::make_pair("type", "uploadPartComplete"));
|
||||||
|
arguments.insert(std::make_pair("data", data));
|
||||||
|
break;
|
||||||
|
case ConstDefine::UPLOAD_COMPLETE:
|
||||||
|
j = json::parse(msg);
|
||||||
|
data.insert(std::make_pair("id", id));
|
||||||
|
data.insert(std::make_pair("fileSize", j.at("fileSize").get<int>()));
|
||||||
|
data.insert(std::make_pair("streamSize", j.at("streamSize").get<int>()));
|
||||||
|
data.insert(std::make_pair("storageSize", j.at("storageSize").get<int>()));
|
||||||
|
arguments.insert(std::make_pair("type", "uploadProgress"));
|
||||||
|
arguments.insert(std::make_pair("data", data));
|
||||||
|
break;
|
||||||
|
case ConstDefine::COMPLETE:
|
||||||
|
j = json::parse(msg);
|
||||||
|
data.insert(std::make_pair("id", id));
|
||||||
|
data.insert(std::make_pair("size", j.at("fileSize").get<int>()));
|
||||||
|
data.insert(std::make_pair("url", j.at("url").get<std::string>()));
|
||||||
|
data.insert(std::make_pair("type", j.at("fileSize").get<int>()));
|
||||||
|
arguments.insert(std::make_pair("type", "complete"));
|
||||||
|
arguments.insert(std::make_pair("data", data));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
notifyEvent("uploadFileListener", arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
CB_I_S NewUploadFileListenCallBack(std::string id)
|
||||||
|
{
|
||||||
|
auto t = std::make_shared<UploadFileListenCallBack>(id);
|
||||||
|
auto f = [t](int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
t->HandleCallback(state, msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
return _wrapper_cpp_function(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void UploadLogsListenCallBack::HandleCallback(int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
flutter::EncodableMap arguments;
|
||||||
|
flutter::EncodableMap data;
|
||||||
|
json j;
|
||||||
|
switch (ConstDefine(state))
|
||||||
|
{
|
||||||
|
case ConstDefine::ON_PROGRESS:
|
||||||
|
j = json::parse(msg);
|
||||||
|
data.insert(std::make_pair("current", j.at("current").get<int>()));
|
||||||
|
data.insert(std::make_pair("size", j.at("size").get<int>()));
|
||||||
|
arguments.insert(std::make_pair("type", "onProgress"));
|
||||||
|
arguments.insert(std::make_pair("data", data));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
notifyEvent("uploadLogsListener", arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
CB_I_S NewUploadLogsListenCallBack()
|
||||||
|
{
|
||||||
|
auto t = std::make_shared<UploadLogsListenCallBack>();
|
||||||
|
auto f = [t](int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
t->HandleCallback(state, msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
return _wrapper_cpp_function(f);
|
||||||
|
}
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void UserListenCallBack::HandleCallback(int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
flutter::EncodableMap arguments;
|
||||||
|
flutter::EncodableMap data;
|
||||||
|
json j;
|
||||||
|
switch (ConstDefine(state))
|
||||||
|
{
|
||||||
|
case ConstDefine::SELF_INFO_UPDATED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onSelfInfoUpdated"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::USER_STATUS_CHANGED:
|
||||||
|
arguments.insert(std::make_pair("type", "onUserStatusChanged"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
notifyEvent("userListener", arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
CB_I_S NewUserListenCallBack()
|
||||||
|
{
|
||||||
|
auto t = std::make_shared<UserListenCallBack>();
|
||||||
|
auto f = [t](int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
t->HandleCallback(state, msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
return _wrapper_cpp_function(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void AdvancedMsgListenCallBack::HandleCallback(int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
flutter::EncodableMap arguments;
|
||||||
|
flutter::EncodableMap data;
|
||||||
|
json j;
|
||||||
|
switch (ConstDefine(state))
|
||||||
|
{
|
||||||
|
case ConstDefine::MSG_DELETED:
|
||||||
|
data.insert(std::make_pair("id", id));
|
||||||
|
data.insert(std::make_pair("message", msg));
|
||||||
|
arguments.insert(std::make_pair("type", "onMsgDeleted"));
|
||||||
|
arguments.insert(std::make_pair("data", data));
|
||||||
|
break;
|
||||||
|
case ConstDefine::NEW_RECV_MESSAGE_REVOKED:
|
||||||
|
data.insert(std::make_pair("id", id));
|
||||||
|
data.insert(std::make_pair("messageRevoked", msg));
|
||||||
|
arguments.insert(std::make_pair("type", "onNewRecvMessageRevoked"));
|
||||||
|
arguments.insert(std::make_pair("data", data));
|
||||||
|
break;
|
||||||
|
case ConstDefine::NEW_RECV_MESSAGE_EDIT:
|
||||||
|
data.insert(std::make_pair("id", id));
|
||||||
|
data.insert(std::make_pair("messageEdited", msg));
|
||||||
|
arguments.insert(std::make_pair("type", "onNewRecvMessageEdited"));
|
||||||
|
arguments.insert(std::make_pair("data", data));
|
||||||
|
break;
|
||||||
|
case ConstDefine::RECV_C2C_READ_RECEIPT:
|
||||||
|
data.insert(std::make_pair("id", id));
|
||||||
|
data.insert(std::make_pair("msgReceiptList", msg));
|
||||||
|
arguments.insert(std::make_pair("type", "onRecvC2CReadReceipt"));
|
||||||
|
arguments.insert(std::make_pair("data", data));
|
||||||
|
break;
|
||||||
|
case ConstDefine::RECV_NEW_MESSAGE:
|
||||||
|
data.insert(std::make_pair("id", id));
|
||||||
|
data.insert(std::make_pair("message", msg));
|
||||||
|
arguments.insert(std::make_pair("type", "onRecvNewMessage"));
|
||||||
|
arguments.insert(std::make_pair("data", data));
|
||||||
|
break;
|
||||||
|
case ConstDefine::RECV_OFFLINE_NEW_MESSAGE:
|
||||||
|
data.insert(std::make_pair("id", id));
|
||||||
|
data.insert(std::make_pair("message", msg));
|
||||||
|
arguments.insert(std::make_pair("type", "onRecvOfflineNewMessage"));
|
||||||
|
arguments.insert(std::make_pair("data", data));
|
||||||
|
break;
|
||||||
|
case ConstDefine::RECV_ONLINE_ONLY_MESSAGE:
|
||||||
|
data.insert(std::make_pair("id", id));
|
||||||
|
data.insert(std::make_pair("message", msg));
|
||||||
|
arguments.insert(std::make_pair("type", "onRecvOnlineOnlyMessage"));
|
||||||
|
arguments.insert(std::make_pair("data", data));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
notifyEvent("advancedMsgListener", arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
CB_I_S NewAdvancedMsgListenCallBack(std::string id)
|
||||||
|
{
|
||||||
|
auto t = std::make_shared<AdvancedMsgListenCallBack>(id);
|
||||||
|
auto f = [t](int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
t->HandleCallback(state, msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
return _wrapper_cpp_function(f);
|
||||||
|
}
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void MsgSendListenerCallBack::HandleCallback(const std::string &operationID, int state, const std::string &error, const std::string &msg, long progress)
|
||||||
|
{
|
||||||
|
if (result == nullptr)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state == 0 && progress == 0 && msg.empty())
|
||||||
|
{
|
||||||
|
flutter::EncodableMap arguments;
|
||||||
|
flutter::EncodableMap data;
|
||||||
|
json j;
|
||||||
|
data.insert(std::make_pair("clientMsgID", clientMsgID));
|
||||||
|
data.insert(std::make_pair("progress", progress));
|
||||||
|
arguments.insert(std::make_pair("type", "onProgress"));
|
||||||
|
arguments.insert(std::make_pair("data", data));
|
||||||
|
notifyEvent("msgSendProgressListener", arguments);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Create shared pointers for the data to ensure copy constructibility
|
||||||
|
auto resultCopy = result;
|
||||||
|
auto dataCopy = std::make_shared<std::string>(msg);
|
||||||
|
auto errCodeCopy = state;
|
||||||
|
auto errMsgCopy = std::make_shared<std::string>(error);
|
||||||
|
|
||||||
|
// Ensure callback runs on the platform thread
|
||||||
|
ThreadUtil::RunOnPlatformThread([resultCopy, errCodeCopy, errMsgCopy, dataCopy]()
|
||||||
|
{
|
||||||
|
if (errCodeCopy == 0) {
|
||||||
|
resultCopy->Success(flutter::EncodableValue(*dataCopy));
|
||||||
|
} else {
|
||||||
|
resultCopy->Error(std::to_string(errCodeCopy), *errMsgCopy,
|
||||||
|
flutter::EncodableValue(*dataCopy));
|
||||||
|
} });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CB_S_I_S_S_I NewMsgSendCallBack(std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result, std::string clientMsgID)
|
||||||
|
{
|
||||||
|
auto t = std::make_shared<MsgSendListenerCallBack>(result, clientMsgID);
|
||||||
|
auto f = [t](const std::string &operationID, int state, const std::string &error, const std::string &msg, long progress)
|
||||||
|
{
|
||||||
|
t->HandleCallback(operationID, state, error, msg, progress);
|
||||||
|
};
|
||||||
|
|
||||||
|
return _wrapper_callonce_cpp_function(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
void CustomBusinessListenCallBack::HandleCallback(int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
flutter::EncodableMap arguments;
|
||||||
|
flutter::EncodableMap data;
|
||||||
|
json j;
|
||||||
|
switch (ConstDefine(state))
|
||||||
|
{
|
||||||
|
case ConstDefine::RECV_CUSTOM_BUSINESS_MESSAGE:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onRecvCustomBusinessMessage"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
notifyEvent("customBusinessListener", arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
CB_I_S NewCustomBusinessListenCallBack()
|
||||||
|
{
|
||||||
|
auto t = std::make_shared<CustomBusinessListenCallBack>();
|
||||||
|
auto f = [t](int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
t->HandleCallback(state, msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
return _wrapper_callonce_cpp_function(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void GroupListenerCallBack::HandleCallback(int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
flutter::EncodableMap arguments;
|
||||||
|
flutter::EncodableMap data;
|
||||||
|
|
||||||
|
switch (ConstDefine(state))
|
||||||
|
{
|
||||||
|
case ConstDefine::GROUP_APPLICATION_ACCEPTED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onGroupApplicationAccepted"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::GROUP_APPLICATION_ADDED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onGroupApplicationAdded"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::GROUP_APPLICATION_DELETED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onGroupApplicationDeleted"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::GROUP_APPLICATION_REJECTED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onGroupApplicationRejected"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::GROUP_DISMISSED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onGroupDismissed"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::GROUP_INFO_CHANGED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onGroupInfoChanged"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::GROUP_MEMBER_ADDED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onGroupMemberAdded"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::GROUP_MEMBER_DELETED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onGroupMemberDeleted"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::GROUP_MEMBER_INFO_CHANGED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onGroupMemberInfoChanged"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::JOINED_GROUP_ADDED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onJoinedGroupAdded"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::JOINED_GROUP_DELETED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onJoinedGroupDeleted"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
notifyEvent("groupListener", arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
CB_I_S NewGroupListenerCallBack()
|
||||||
|
{
|
||||||
|
auto t = std::make_shared<GroupListenerCallBack>();
|
||||||
|
auto f = [t](int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
t->HandleCallback(state, msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
return _wrapper_cpp_function(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void ConversationListenerCallBack::HandleCallback(int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
flutter::EncodableMap arguments;
|
||||||
|
flutter::EncodableMap data;
|
||||||
|
json j;
|
||||||
|
switch (ConstDefine(state))
|
||||||
|
{
|
||||||
|
case ConstDefine::CONVERSATION_CHANGED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onConversationChanged"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::CONVERSATION_USER_INPUT_STATUS_CHANGED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onConversationUserInputStatusChanged"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::NEW_CONVERSATION:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onNewConversation"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::SYNC_SERVER_FAILED:
|
||||||
|
j = json::parse(msg);
|
||||||
|
arguments.insert(std::make_pair("type", "onSyncServerFailed"));
|
||||||
|
arguments.insert(std::make_pair("data", j.at("reinstalled").get<bool>()));
|
||||||
|
break;
|
||||||
|
case ConstDefine::SYNC_SERVER_FINISH:
|
||||||
|
j = json::parse(msg);
|
||||||
|
arguments.insert(std::make_pair("type", "onSyncServerFinish"));
|
||||||
|
arguments.insert(std::make_pair("data", j.at("reinstalled").get<bool>()));
|
||||||
|
break;
|
||||||
|
case ConstDefine::SYNC_SERVER_START:
|
||||||
|
j = json::parse(msg);
|
||||||
|
arguments.insert(std::make_pair("type", "onSyncServerStart"));
|
||||||
|
arguments.insert(std::make_pair("data", j.at("reinstalled").get<bool>()));
|
||||||
|
break;
|
||||||
|
case ConstDefine::SYNC_SERVER_PROGRESS:
|
||||||
|
j = json::parse(msg);
|
||||||
|
arguments.insert(std::make_pair("type", "onSyncServerProgress"));
|
||||||
|
arguments.insert(std::make_pair("data", j.at("progress").get<int>()));
|
||||||
|
break;
|
||||||
|
case ConstDefine::TOTAL_UNREAD_MESSAGE_COUNT_CHANGED:
|
||||||
|
j = json::parse(msg);
|
||||||
|
arguments.insert(std::make_pair("type", "onTotalUnreadMessageCountChanged"));
|
||||||
|
arguments.insert(std::make_pair("data", j.at("count").get<int>()));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
notifyEvent("conversationListener", arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
CB_I_S NewConversationListenerCallBack()
|
||||||
|
{
|
||||||
|
auto t = std::make_shared<ConversationListenerCallBack>();
|
||||||
|
auto f = [t](int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
t->HandleCallback(state, msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
return _wrapper_cpp_function(f);
|
||||||
|
}
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void FriendshipListenCallBack::HandleCallback(int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
flutter::EncodableMap arguments;
|
||||||
|
flutter::EncodableMap data;
|
||||||
|
|
||||||
|
switch (ConstDefine(state))
|
||||||
|
{
|
||||||
|
case ConstDefine::BLACK_ADDED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onBlackAdded"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::BLACK_DELETED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onBlackDeleted"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::FRIEND_ADDED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onFriendAdded"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::FRIEND_APPLICATION_ACCEPTED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onFriendApplicationAccepted"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::FRIEND_APPLICATION_ADDED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onFriendApplicationAdded"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::FRIEND_APPLICATION_DELETED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onFriendApplicationDeleted"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::FRIEND_APPLICATION_REJECTED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onFriendApplicationRejected"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::FRIEND_DELETED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onFriendDeleted"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::FRIEND_INFO_CHANGED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onFriendInfoChanged"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
notifyEvent("friendListener", arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
CB_I_S NewFriendshipListenCallBack()
|
||||||
|
{
|
||||||
|
auto t = std::make_shared<FriendshipListenCallBack>();
|
||||||
|
auto f = [t](int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
t->HandleCallback(state, msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
return _wrapper_cpp_function(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void ChannelListenCallBack::HandleCallback(int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
flutter::EncodableMap arguments;
|
||||||
|
flutter::EncodableMap data;
|
||||||
|
|
||||||
|
switch (ConstDefine(state))
|
||||||
|
{
|
||||||
|
case ConstDefine::CHANNEL_DISMISSED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onChannelDismissed"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::CHANNEL_INFO_CHANGED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onChannelInfoChanged"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::CHANNEL_MEMBER_ADDED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onChannelMemberAdded"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::CHANNEL_MEMBER_DELETED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onChannelMemberDeleted"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
case ConstDefine::CHANNEL_MEMBER_INFO_CHANGED:
|
||||||
|
|
||||||
|
arguments.insert(std::make_pair("type", "onChannelMemberInfoChanged"));
|
||||||
|
arguments.insert(std::make_pair("data", msg));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
notifyEvent("channelListener", arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
CB_I_S NewChannelListenCallBack()
|
||||||
|
{
|
||||||
|
auto t = std::make_shared<ChannelListenCallBack>();
|
||||||
|
auto f = [t](int state, const std::string &msg)
|
||||||
|
{
|
||||||
|
t->HandleCallback(state, msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
return _wrapper_cpp_function(f);
|
||||||
|
}
|
||||||
|
@ -1,58 +1,203 @@
|
|||||||
#ifndef LISTEN_H
|
#ifndef LISTEN_H
|
||||||
#define LISTEN_H
|
#define LISTEN_H
|
||||||
|
|
||||||
#include <libopenimsdk.h>
|
|
||||||
#include "flutter/encodable_value.h"
|
#include "flutter/encodable_value.h"
|
||||||
#include "flutter/method_result.h"
|
#include "flutter/method_result.h"
|
||||||
|
#include <libopenimsdk.h>
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
|
#include <string>
|
||||||
|
#include <memory>
|
||||||
|
#include <iostream>
|
||||||
|
#include <bitset>
|
||||||
|
#include <atomic>
|
||||||
|
#include <thread>
|
||||||
|
#include <chrono>
|
||||||
|
#include <mutex>
|
||||||
|
#include "../ThreadUtil.h"
|
||||||
|
|
||||||
|
class BaseCallBack
|
||||||
class BaseCallBack {
|
{
|
||||||
public:
|
public:
|
||||||
BaseCallBack(std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
BaseCallBack(std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result_ptr)
|
||||||
this->result = result;
|
: result(result_ptr)
|
||||||
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result = nullptr;
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result = nullptr;
|
||||||
|
|
||||||
void HandleCallback(char* opid, int errCode, char* errMsg, char* msg) {
|
void HandleCallback(const std::string &operationID, int errCode, const std::string &errMsg,
|
||||||
if (result == nullptr) {
|
const std::string &data)
|
||||||
|
{
|
||||||
|
if (result == nullptr)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (errCode == 0) {
|
// Create shared pointers for the data to ensure copy constructibility
|
||||||
result->Success(flutter::EncodableValue(std::string(msg)));
|
auto resultCopy = result;
|
||||||
}
|
auto dataCopy = std::make_shared<std::string>(data);
|
||||||
else {
|
auto errCodeCopy = errCode;
|
||||||
result->Error(std::to_string(errCode), std::string(errMsg), flutter::EncodableValue(std::string(msg)));
|
auto errMsgCopy = std::make_shared<std::string>(errMsg);
|
||||||
}
|
|
||||||
|
// Ensure callback runs on the platform thread
|
||||||
|
ThreadUtil::RunOnPlatformThread([resultCopy, errCodeCopy, errMsgCopy, dataCopy]()
|
||||||
|
{
|
||||||
|
if (errCodeCopy == 0) {
|
||||||
|
resultCopy->Success(flutter::EncodableValue(*dataCopy));
|
||||||
|
} else {
|
||||||
|
resultCopy->Error(std::to_string(errCodeCopy), *errMsgCopy,
|
||||||
|
flutter::EncodableValue(*dataCopy));
|
||||||
|
} });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 全局映射表
|
CB_S_I_S_S NewBaseCallBack(std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
extern std::unordered_map<std::string, std::unique_ptr<BaseCallBack>> g_baseCallBackMap;
|
|
||||||
extern std::mutex g_baseCallBackMapMutex;
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
void NewBaseCallBack(std::string opid, std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
class InitListenCallBack
|
||||||
void CallBaseCallBack(char* opid, int errCode, char* errMsg, char* msg);
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//todo 没想好怎么实现
|
|
||||||
class uploadFileCallBack {
|
|
||||||
public:
|
public:
|
||||||
uploadFileCallBack(std::string id) {
|
InitListenCallBack()
|
||||||
this->id = id;
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HandleCallback(int state, const std::string &msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
CB_I_S NewInitListenCallBack();
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class UploadFileListenCallBack
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
UploadFileListenCallBack(std::string id) : id(id)
|
||||||
|
{
|
||||||
|
}
|
||||||
std::string id = "";
|
std::string id = "";
|
||||||
|
|
||||||
void HandleCallback(char* opid, int errCode, char* errMsg, char* msg) {
|
void HandleCallback(int state, const std::string &msg);
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
CB_I_S NewUploadFileListenCallBack(std::string id);
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class UploadLogsListenCallBack
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
UploadLogsListenCallBack()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleCallback(int state, const std::string &msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
CB_I_S NewUploadLogsListenCallBack();
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class UserListenCallBack
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
UserListenCallBack()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleCallback(int state, const std::string &msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
CB_I_S NewUserListenCallBack();
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class AdvancedMsgListenCallBack
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
AdvancedMsgListenCallBack(std::string id) : id(id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
std::string id = "";
|
||||||
|
|
||||||
|
void HandleCallback(int state, const std::string &msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
CB_I_S NewAdvancedMsgListenCallBack(std::string id);
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
class MsgSendListenerCallBack
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MsgSendListenerCallBack(std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result_ptr, std::string clientMsgID) : result(result_ptr), clientMsgID(clientMsgID)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
std::string clientMsgID = "";
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result = nullptr;
|
||||||
|
void HandleCallback(const std::string &operationID, int state, const std::string &error, const std::string &msg, long progress);
|
||||||
|
};
|
||||||
|
|
||||||
|
CB_S_I_S_S_I NewMsgSendCallBack(std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result, std::string clientMsgID);
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class CustomBusinessListenCallBack
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CustomBusinessListenCallBack()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleCallback(int state, const std::string &msg);
|
||||||
|
};
|
||||||
|
CB_I_S NewCustomBusinessListenCallBack();
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class GroupListenerCallBack
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
GroupListenerCallBack()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleCallback(int state, const std::string &msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
CB_I_S NewGroupListenerCallBack();
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class ConversationListenerCallBack
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ConversationListenerCallBack()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleCallback(int state, const std::string &msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
CB_I_S NewConversationListenerCallBack();
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class FriendshipListenCallBack
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FriendshipListenCallBack()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleCallback(int state, const std::string &msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
CB_I_S NewFriendshipListenCallBack();
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
class ChannelListenCallBack {
|
||||||
|
public:
|
||||||
|
ChannelListenCallBack() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleCallback(int state, const std::string& msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
CB_I_S NewChannelListenCallBack();
|
||||||
#endif
|
#endif
|
@ -0,0 +1,894 @@
|
|||||||
|
#include "MessageManager.h"
|
||||||
|
#include <libopenimsdk.h>
|
||||||
|
#include "../NimResult.h"
|
||||||
|
#include "../ZegoDataUtils.h"
|
||||||
|
#include "ConstDefine.h"
|
||||||
|
#include "Listen.h"
|
||||||
|
|
||||||
|
MessageManagerService::MessageManagerService() {
|
||||||
|
m_serviceName = "messageManager";
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::onMethodCalled(
|
||||||
|
const std::string& method,
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (method == "setAdvancedMsgListener") {
|
||||||
|
setAdvancedMsgListener(arguments, result);
|
||||||
|
} else if (method == "sendMessage") {
|
||||||
|
sendMessage(arguments, result);
|
||||||
|
} else if (method == "revokeMessage") {
|
||||||
|
revokeMessage(arguments, result);
|
||||||
|
} else if (method == "editMessage") {
|
||||||
|
editMessage(arguments, result);
|
||||||
|
} else if (method == "deleteMessageFromLocalStorage") {
|
||||||
|
deleteMessageFromLocalStorage(arguments, result);
|
||||||
|
} else if (method == "deleteMessageFromLocalAndSvr") {
|
||||||
|
deleteMessageFromLocalAndSvr(arguments, result);
|
||||||
|
} else if (method == "deleteAllMsgFromLocal") {
|
||||||
|
deleteAllMsgFromLocal(arguments, result);
|
||||||
|
} else if (method == "deleteAllMsgFromLocalAndSvr") {
|
||||||
|
deleteAllMsgFromLocalAndSvr(arguments, result);
|
||||||
|
} else if (method == "insertSingleMessageToLocalStorage") {
|
||||||
|
insertSingleMessageToLocalStorage(arguments, result);
|
||||||
|
} else if (method == "insertGroupMessageToLocalStorage") {
|
||||||
|
insertGroupMessageToLocalStorage(arguments, result);
|
||||||
|
} else if (method == "markMessagesAsReadByMsgID") {
|
||||||
|
markMessagesAsReadByMsgID(arguments, result);
|
||||||
|
} else if (method == "typingStatusUpdate") {
|
||||||
|
typingStatusUpdate(arguments, result);
|
||||||
|
} else if (method == "createTextMessage") {
|
||||||
|
createTextMessage(arguments, result);
|
||||||
|
} else if (method == "createTextAtMessage") {
|
||||||
|
createTextAtMessage(arguments, result);
|
||||||
|
} else if (method == "createImageMessage") {
|
||||||
|
createImageMessage(arguments, result);
|
||||||
|
} else if (method == "createImageMessageFromFullPath") {
|
||||||
|
createImageMessageFromFullPath(arguments, result);
|
||||||
|
} else if (method == "createSoundMessage") {
|
||||||
|
createSoundMessage(arguments, result);
|
||||||
|
} else if (method == "createSoundMessageFromFullPath") {
|
||||||
|
createSoundMessageFromFullPath(arguments, result);
|
||||||
|
} else if (method == "createVideoMessage") {
|
||||||
|
createVideoMessage(arguments, result);
|
||||||
|
} else if (method == "createVideoMessageFromFullPath") {
|
||||||
|
createVideoMessageFromFullPath(arguments, result);
|
||||||
|
} else if (method == "createFileMessage") {
|
||||||
|
createFileMessage(arguments, result);
|
||||||
|
} else if (method == "createFileMessageFromFullPath") {
|
||||||
|
createFileMessageFromFullPath(arguments, result);
|
||||||
|
} else if (method == "createMergerMessage") {
|
||||||
|
createMergerMessage(arguments, result);
|
||||||
|
} else if (method == "createForwardMessage") {
|
||||||
|
createForwardMessage(arguments, result);
|
||||||
|
} else if (method == "createLocationMessage") {
|
||||||
|
createLocationMessage(arguments, result);
|
||||||
|
} else if (method == "createCustomMessage") {
|
||||||
|
createCustomMessage(arguments, result);
|
||||||
|
} else if (method == "createQuoteMessage") {
|
||||||
|
createQuoteMessage(arguments, result);
|
||||||
|
} else if (method == "createCardMessage") {
|
||||||
|
createCardMessage(arguments, result);
|
||||||
|
} else if (method == "createFaceMessage") {
|
||||||
|
createFaceMessage(arguments, result);
|
||||||
|
} else if (method == "createAdvancedTextMessage") {
|
||||||
|
createAdvancedTextMessage(arguments, result);
|
||||||
|
} else if (method == "createAdvancedQuoteMessage") {
|
||||||
|
createAdvancedQuoteMessage(arguments, result);
|
||||||
|
} else if (method == "searchLocalMessages") {
|
||||||
|
searchLocalMessages(arguments, result);
|
||||||
|
} else if (method == "clearConversationAndDeleteAllMsg") {
|
||||||
|
clearConversationAndDeleteAllMsg(arguments, result);
|
||||||
|
} else if (method == "getAdvancedHistoryMessageList") {
|
||||||
|
getAdvancedHistoryMessageList(arguments, result);
|
||||||
|
} else if (method == "getAdvancedHistoryMessageListReverse") {
|
||||||
|
getAdvancedHistoryMessageListReverse(arguments, result);
|
||||||
|
} else if (method == "findMessageList") {
|
||||||
|
findMessageList(arguments, result);
|
||||||
|
} else if (method == "setMessageLocalEx") {
|
||||||
|
setMessageLocalEx(arguments, result);
|
||||||
|
} else if (method == "setAppBadge") {
|
||||||
|
setAppBadge(arguments, result);
|
||||||
|
} else if (method == "sendMessageNotOss") {
|
||||||
|
sendMessageNotOss(arguments, result);
|
||||||
|
} else if (method == "createImageMessageByURL") {
|
||||||
|
createImageMessageByURL(arguments, result);
|
||||||
|
} else if (method == "createSoundMessageByURL") {
|
||||||
|
createSoundMessageByURL(arguments, result);
|
||||||
|
} else if (method == "createVideoMessageByURL") {
|
||||||
|
createVideoMessageByURL(arguments, result);
|
||||||
|
} else if (method == "createFileMessageByURL") {
|
||||||
|
createFileMessageByURL(arguments, result);
|
||||||
|
} else if (method == "fetchSurroundingMessages") {
|
||||||
|
fetchSurroundingMessages(arguments, result);
|
||||||
|
} else if (method == "setCustomBusinessListener") {
|
||||||
|
setCustomBusinessListener(arguments, result);
|
||||||
|
} else {
|
||||||
|
result->NotImplemented();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::setAdvancedMsgListener(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto id = zego_value_get_string(arguments->at(flutter::EncodableValue("id")));
|
||||||
|
set_advanced_msg_listener(NewAdvancedMsgListenCallBack(id));
|
||||||
|
result->Success(flutter::EncodableValue());
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::sendMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto message = zego_value_get_string(arguments->at(flutter::EncodableValue("message")));
|
||||||
|
auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
|
||||||
|
auto offlinePushInfo = zego_value_get_string(arguments->at(flutter::EncodableValue("offlinePushInfo")));
|
||||||
|
auto isOnlineOnly = zego_value_get_bool(arguments->at(flutter::EncodableValue("isOnlineOnly")));
|
||||||
|
auto clientMsgID = zego_value_get_string(arguments->at(flutter::EncodableValue("clientMsgID")));
|
||||||
|
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* message_cs = const_cast<char*>(message.c_str());
|
||||||
|
char* userID_cs = const_cast<char*>(userID.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
char* channelID_cs = const_cast<char*>(channelID.c_str());
|
||||||
|
char* offlinePushInfo_cs = const_cast<char*>(offlinePushInfo.c_str());
|
||||||
|
|
||||||
|
send_message(NewMsgSendCallBack(result,clientMsgID), operationID_cs, message_cs, userID_cs, groupID_cs, channelID_cs, offlinePushInfo_cs, isOnlineOnly);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::revokeMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
|
||||||
|
auto clientMsgID = zego_value_get_string(arguments->at(flutter::EncodableValue("clientMsgID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
|
||||||
|
char* clientMsgID_cs = const_cast<char*>(clientMsgID.c_str());
|
||||||
|
|
||||||
|
revoke_message(NewBaseCallBack(result), operationID_cs, conversationID_cs, clientMsgID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::editMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
|
||||||
|
auto clientMsgID = zego_value_get_string(arguments->at(flutter::EncodableValue("clientMsgID")));
|
||||||
|
auto message = zego_value_get_string(arguments->at(flutter::EncodableValue("message")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
|
||||||
|
char* clientMsgID_cs = const_cast<char*>(clientMsgID.c_str());
|
||||||
|
char* message_cs = const_cast<char*>(message.c_str());
|
||||||
|
|
||||||
|
edit_message(NewBaseCallBack(result), operationID_cs, conversationID_cs, clientMsgID_cs, message_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::deleteMessageFromLocalStorage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
|
||||||
|
auto clientMsgID = zego_value_get_string(arguments->at(flutter::EncodableValue("clientMsgID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
|
||||||
|
char* clientMsgID_cs = const_cast<char*>(clientMsgID.c_str());
|
||||||
|
|
||||||
|
delete_message_from_local_storage(NewBaseCallBack(result), operationID_cs, conversationID_cs, clientMsgID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::deleteMessageFromLocalAndSvr(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
|
||||||
|
auto clientMsgID = zego_value_get_string(arguments->at(flutter::EncodableValue("clientMsgID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
|
||||||
|
char* clientMsgID_cs = const_cast<char*>(clientMsgID.c_str());
|
||||||
|
|
||||||
|
delete_message(NewBaseCallBack(result), operationID_cs, conversationID_cs, clientMsgID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::deleteAllMsgFromLocal(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
|
||||||
|
delete_all_msg_from_local(NewBaseCallBack(result), operationID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::deleteAllMsgFromLocalAndSvr(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
|
||||||
|
delete_all_msg_from_local_and_svr(NewBaseCallBack(result), operationID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::insertSingleMessageToLocalStorage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto message = zego_value_get_string(arguments->at(flutter::EncodableValue("message")));
|
||||||
|
auto receiverID = zego_value_get_string(arguments->at(flutter::EncodableValue("receiverID")));
|
||||||
|
auto senderID = zego_value_get_string(arguments->at(flutter::EncodableValue("senderID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* message_cs = const_cast<char*>(message.c_str());
|
||||||
|
char* receiverID_cs = const_cast<char*>(receiverID.c_str());
|
||||||
|
char* senderID_cs = const_cast<char*>(senderID.c_str());
|
||||||
|
|
||||||
|
insert_single_message_to_local_storage(NewBaseCallBack(result), operationID_cs, message_cs, receiverID_cs, senderID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::insertGroupMessageToLocalStorage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto message = zego_value_get_string(arguments->at(flutter::EncodableValue("message")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
|
||||||
|
auto senderID = zego_value_get_string(arguments->at(flutter::EncodableValue("senderID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* message_cs = const_cast<char*>(message.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
char* channelID_cs = const_cast<char*>(channelID.c_str());
|
||||||
|
char* senderID_cs = const_cast<char*>(senderID.c_str());
|
||||||
|
|
||||||
|
insert_group_message_to_local_storage(NewBaseCallBack(result), operationID_cs, message_cs, groupID_cs, channelID_cs, senderID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::markMessagesAsReadByMsgID(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
|
||||||
|
auto messageIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("messageIDList")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
|
||||||
|
char* messageIDList_cs = const_cast<char*>(messageIDList.c_str());
|
||||||
|
|
||||||
|
mark_messages_as_read_by_msg_id(NewBaseCallBack(result), operationID_cs, conversationID_cs, messageIDList_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::typingStatusUpdate(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
|
||||||
|
auto msgTip = zego_value_get_string(arguments->at(flutter::EncodableValue("msgTip")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* userID_cs = const_cast<char*>(userID.c_str());
|
||||||
|
char* msgTip_cs = const_cast<char*>(msgTip.c_str());
|
||||||
|
|
||||||
|
typing_status_update(NewBaseCallBack(result), operationID_cs, userID_cs, msgTip_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createTextMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto text = zego_value_get_string(arguments->at(flutter::EncodableValue("text")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* text_cs = const_cast<char*>(text.c_str());
|
||||||
|
|
||||||
|
std::string message = create_text_message(operationID_cs, text_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createTextAtMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto text = zego_value_get_string(arguments->at(flutter::EncodableValue("text")));
|
||||||
|
auto atUserIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("atUserIDList")));
|
||||||
|
auto atUserInfoList = zego_value_get_string(arguments->at(flutter::EncodableValue("atUserInfoList")));
|
||||||
|
auto quoteMessage = zego_value_get_string(arguments->at(flutter::EncodableValue("quoteMessage")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* text_cs = const_cast<char*>(text.c_str());
|
||||||
|
char* atUserIDList_cs = const_cast<char*>(atUserIDList.c_str());
|
||||||
|
char* atUserInfoList_cs = const_cast<char*>(atUserInfoList.c_str());
|
||||||
|
char* quoteMessage_cs = const_cast<char*>(quoteMessage.c_str());
|
||||||
|
|
||||||
|
std::string message = create_text_at_message(operationID_cs, text_cs, atUserIDList_cs, atUserInfoList_cs, quoteMessage_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createImageMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto imagePath = zego_value_get_string(arguments->at(flutter::EncodableValue("imagePath")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* imagePath_cs = const_cast<char*>(imagePath.c_str());
|
||||||
|
|
||||||
|
std::string message = create_image_message(operationID_cs, imagePath_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createImageMessageFromFullPath(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto imagePath = zego_value_get_string(arguments->at(flutter::EncodableValue("imagePath")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* imagePath_cs = const_cast<char*>(imagePath.c_str());
|
||||||
|
|
||||||
|
std::string message = create_image_message_from_full_path(operationID_cs, imagePath_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createSoundMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto soundPath = zego_value_get_string(arguments->at(flutter::EncodableValue("soundPath")));
|
||||||
|
auto duration = zego_value_get_int(arguments->at(flutter::EncodableValue("duration")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* soundPath_cs = const_cast<char*>(soundPath.c_str());
|
||||||
|
|
||||||
|
std::string message = create_sound_message(operationID_cs, soundPath_cs, duration);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createSoundMessageFromFullPath(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto soundPath = zego_value_get_string(arguments->at(flutter::EncodableValue("soundPath")));
|
||||||
|
auto duration = zego_value_get_int(arguments->at(flutter::EncodableValue("duration")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* soundPath_cs = const_cast<char*>(soundPath.c_str());
|
||||||
|
|
||||||
|
std::string message = create_sound_message_from_full_path(operationID_cs, soundPath_cs, duration);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createVideoMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto videoPath = zego_value_get_string(arguments->at(flutter::EncodableValue("videoPath")));
|
||||||
|
auto videoType = zego_value_get_string(arguments->at(flutter::EncodableValue("videoType")));
|
||||||
|
auto duration = zego_value_get_int(arguments->at(flutter::EncodableValue("duration")));
|
||||||
|
auto snapshotPath = zego_value_get_string(arguments->at(flutter::EncodableValue("snapshotPath")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* videoPath_cs = const_cast<char*>(videoPath.c_str());
|
||||||
|
char* videoType_cs = const_cast<char*>(videoType.c_str());
|
||||||
|
char* snapshotPath_cs = const_cast<char*>(snapshotPath.c_str());
|
||||||
|
|
||||||
|
std::string message = create_video_message(operationID_cs, videoPath_cs, videoType_cs, duration, snapshotPath_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createVideoMessageFromFullPath(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto videoPath = zego_value_get_string(arguments->at(flutter::EncodableValue("videoPath")));
|
||||||
|
auto videoType = zego_value_get_string(arguments->at(flutter::EncodableValue("videoType")));
|
||||||
|
auto duration = zego_value_get_int(arguments->at(flutter::EncodableValue("duration")));
|
||||||
|
auto snapshotPath = zego_value_get_string(arguments->at(flutter::EncodableValue("snapshotPath")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* videoPath_cs = const_cast<char*>(videoPath.c_str());
|
||||||
|
char* videoType_cs = const_cast<char*>(videoType.c_str());
|
||||||
|
char* snapshotPath_cs = const_cast<char*>(snapshotPath.c_str());
|
||||||
|
|
||||||
|
std::string message = create_video_message_from_full_path(operationID_cs, videoPath_cs, videoType_cs, duration, snapshotPath_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createFileMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto filePath = zego_value_get_string(arguments->at(flutter::EncodableValue("filePath")));
|
||||||
|
auto fileName = zego_value_get_string(arguments->at(flutter::EncodableValue("fileName")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* filePath_cs = const_cast<char*>(filePath.c_str());
|
||||||
|
char* fileName_cs = const_cast<char*>(fileName.c_str());
|
||||||
|
|
||||||
|
std::string message = create_file_message(operationID_cs, filePath_cs, fileName_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createFileMessageFromFullPath(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto filePath = zego_value_get_string(arguments->at(flutter::EncodableValue("filePath")));
|
||||||
|
auto fileName = zego_value_get_string(arguments->at(flutter::EncodableValue("fileName")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* filePath_cs = const_cast<char*>(filePath.c_str());
|
||||||
|
char* fileName_cs = const_cast<char*>(fileName.c_str());
|
||||||
|
|
||||||
|
std::string message = create_file_message_from_full_path(operationID_cs, filePath_cs, fileName_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createMergerMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto messageList = zego_value_get_string(arguments->at(flutter::EncodableValue("messageList")));
|
||||||
|
auto title = zego_value_get_string(arguments->at(flutter::EncodableValue("title")));
|
||||||
|
auto summaryList = zego_value_get_string(arguments->at(flutter::EncodableValue("summaryList")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* messageList_cs = const_cast<char*>(messageList.c_str());
|
||||||
|
char* title_cs = const_cast<char*>(title.c_str());
|
||||||
|
char* summaryList_cs = const_cast<char*>(summaryList.c_str());
|
||||||
|
|
||||||
|
std::string message = create_merger_message(operationID_cs, messageList_cs, title_cs, summaryList_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createForwardMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto message = zego_value_get_string(arguments->at(flutter::EncodableValue("message")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* message_cs = const_cast<char*>(message.c_str());
|
||||||
|
|
||||||
|
std::string resultMessage = create_forward_message(operationID_cs, message_cs);
|
||||||
|
result->Success(flutter::EncodableValue(resultMessage));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createLocationMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto description = zego_value_get_string(arguments->at(flutter::EncodableValue("description")));
|
||||||
|
auto longitude = zego_value_get_double(arguments->at(flutter::EncodableValue("longitude")));
|
||||||
|
auto latitude = zego_value_get_double(arguments->at(flutter::EncodableValue("latitude")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* description_cs = const_cast<char*>(description.c_str());
|
||||||
|
|
||||||
|
|
||||||
|
std::string message = create_location_message(operationID_cs, description_cs, longitude, latitude);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createCustomMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto data = zego_value_get_string(arguments->at(flutter::EncodableValue("data")));
|
||||||
|
auto extension = zego_value_get_string(arguments->at(flutter::EncodableValue("extension")));
|
||||||
|
auto description = zego_value_get_string(arguments->at(flutter::EncodableValue("description")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* data_cs = const_cast<char*>(data.c_str());
|
||||||
|
char* extension_cs = const_cast<char*>(extension.c_str());
|
||||||
|
char* description_cs = const_cast<char*>(description.c_str());
|
||||||
|
|
||||||
|
std::string message = create_custom_message(operationID_cs, data_cs, extension_cs, description_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createQuoteMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto quoteText = zego_value_get_string(arguments->at(flutter::EncodableValue("quoteText")));
|
||||||
|
auto quoteMessage = zego_value_get_string(arguments->at(flutter::EncodableValue("quoteMessage")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* quoteText_cs = const_cast<char*>(quoteText.c_str());
|
||||||
|
char* quoteMessage_cs = const_cast<char*>(quoteMessage.c_str());
|
||||||
|
|
||||||
|
std::string message = create_quote_message(operationID_cs, quoteText_cs, quoteMessage_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createCardMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto cardMessage = zego_value_get_string(arguments->at(flutter::EncodableValue("cardMessage")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* cardMessage_cs = const_cast<char*>(cardMessage.c_str());
|
||||||
|
|
||||||
|
std::string message = create_card_message(operationID_cs, cardMessage_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createFaceMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto index = zego_value_get_int(arguments->at(flutter::EncodableValue("index")));
|
||||||
|
auto data = zego_value_get_string(arguments->at(flutter::EncodableValue("data")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* data_cs = const_cast<char*>(data.c_str());
|
||||||
|
|
||||||
|
std::string message = create_face_message(operationID_cs, index, data_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createAdvancedTextMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto text = zego_value_get_string(arguments->at(flutter::EncodableValue("text")));
|
||||||
|
auto richMessageInfoList = zego_value_get_string(arguments->at(flutter::EncodableValue("richMessageInfoList")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* text_cs = const_cast<char*>(text.c_str());
|
||||||
|
char* richMessageInfoList_cs = const_cast<char*>(richMessageInfoList.c_str());
|
||||||
|
|
||||||
|
std::string message = create_advanced_text_message(operationID_cs, text_cs, richMessageInfoList_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createAdvancedQuoteMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto quoteText = zego_value_get_string(arguments->at(flutter::EncodableValue("quoteText")));
|
||||||
|
auto quoteMessage = zego_value_get_string(arguments->at(flutter::EncodableValue("quoteMessage")));
|
||||||
|
auto richMessageInfoList = zego_value_get_string(arguments->at(flutter::EncodableValue("richMessageInfoList")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* quoteText_cs = const_cast<char*>(quoteText.c_str());
|
||||||
|
char* quoteMessage_cs = const_cast<char*>(quoteMessage.c_str());
|
||||||
|
char* richMessageInfoList_cs = const_cast<char*>(richMessageInfoList.c_str());
|
||||||
|
|
||||||
|
std::string message = create_advanced_quote_message(operationID_cs, quoteText_cs, quoteMessage_cs, richMessageInfoList_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::searchLocalMessages(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto filter = zego_value_get_string(arguments->at(flutter::EncodableValue("filter")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* filter_cs = const_cast<char*>(filter.c_str());
|
||||||
|
|
||||||
|
search_local_messages(NewBaseCallBack(result), operationID_cs, filter_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::clearConversationAndDeleteAllMsg(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
|
||||||
|
|
||||||
|
clear_conversation_and_delete_all_msg(NewBaseCallBack(result), operationID_cs, conversationID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::getAdvancedHistoryMessageList(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto params = map_2_json(*arguments);
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* params_cs = const_cast<char*>(params.c_str());
|
||||||
|
|
||||||
|
get_advanced_history_message_list(NewBaseCallBack(result), operationID_cs, params_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::getAdvancedHistoryMessageListReverse(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto params = map_2_json(*arguments);
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* params_cs = const_cast<char*>(params.c_str());
|
||||||
|
|
||||||
|
get_advanced_history_message_list_reverse(NewBaseCallBack(result), operationID_cs, params_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::findMessageList(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto searchParams = zego_value_get_string(arguments->at(flutter::EncodableValue("searchParams")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* searchParams_cs = const_cast<char*>(searchParams.c_str());
|
||||||
|
|
||||||
|
find_message_list(NewBaseCallBack(result), operationID_cs, searchParams_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::setMessageLocalEx(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
|
||||||
|
auto clientMsgID = zego_value_get_string(arguments->at(flutter::EncodableValue("clientMsgID")));
|
||||||
|
auto localEx = zego_value_get_string(arguments->at(flutter::EncodableValue("localEx")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
|
||||||
|
char* clientMsgID_cs = const_cast<char*>(clientMsgID.c_str());
|
||||||
|
char* localEx_cs = const_cast<char*>(localEx.c_str());
|
||||||
|
|
||||||
|
set_message_local_ex(NewBaseCallBack(result), operationID_cs, conversationID_cs, clientMsgID_cs, localEx_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::setAppBadge(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto count = zego_value_get_int(arguments->at(flutter::EncodableValue("count")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
|
||||||
|
set_app_Badge(NewBaseCallBack(result), operationID_cs, count);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::sendMessageNotOss(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto message = zego_value_get_string(arguments->at(flutter::EncodableValue("message")));
|
||||||
|
auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
|
||||||
|
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
|
||||||
|
auto channelId = zego_value_get_string(arguments->at(flutter::EncodableValue("channelId")));
|
||||||
|
auto offlinePushInfo = zego_value_get_string(arguments->at(flutter::EncodableValue("offlinePushInfo")));
|
||||||
|
auto clientMsgID = zego_value_get_string(arguments->at(flutter::EncodableValue("clientMsgID")));
|
||||||
|
auto isOnlineOnly = zego_value_get_bool(arguments->at(flutter::EncodableValue("isOnlineOnly")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* message_cs = const_cast<char*>(message.c_str());
|
||||||
|
char* userID_cs = const_cast<char*>(userID.c_str());
|
||||||
|
char* groupID_cs = const_cast<char*>(groupID.c_str());
|
||||||
|
char* channelId_cs = const_cast<char*>(channelId.c_str());
|
||||||
|
char* offlinePushInfo_cs = const_cast<char*>(offlinePushInfo.c_str());
|
||||||
|
|
||||||
|
send_message_not_oss(NewMsgSendCallBack(result,clientMsgID), operationID_cs, message_cs, userID_cs, groupID_cs, channelId_cs, offlinePushInfo_cs, isOnlineOnly);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createImageMessageByURL(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto sourcePath = zego_value_get_string(arguments->at(flutter::EncodableValue("sourcePath")));
|
||||||
|
auto sourcePicture = zego_value_get_string(arguments->at(flutter::EncodableValue("sourcePicture")));
|
||||||
|
auto bigPicture = zego_value_get_string(arguments->at(flutter::EncodableValue("bigPicture")));
|
||||||
|
auto snapshotPicture = zego_value_get_string(arguments->at(flutter::EncodableValue("snapshotPicture")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* sourcePath_cs = const_cast<char*>(sourcePath.c_str());
|
||||||
|
char* sourcePicture_cs = const_cast<char*>(sourcePicture.c_str());
|
||||||
|
char* bigPicture_cs = const_cast<char*>(bigPicture.c_str());
|
||||||
|
char* snapshotPicture_cs = const_cast<char*>(snapshotPicture.c_str());
|
||||||
|
|
||||||
|
std::string message = create_image_message_by_url(operationID_cs, sourcePath_cs, sourcePicture_cs, bigPicture_cs, snapshotPicture_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createSoundMessageByURL(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto soundElem = zego_value_get_string(arguments->at(flutter::EncodableValue("soundElem")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* soundElem_cs = const_cast<char*>(soundElem.c_str());
|
||||||
|
|
||||||
|
std::string message = create_sound_message_by_url(operationID_cs, soundElem_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createVideoMessageByURL(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto videoElem = zego_value_get_string(arguments->at(flutter::EncodableValue("videoElem")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* videoElem_cs = const_cast<char*>(videoElem.c_str());
|
||||||
|
|
||||||
|
std::string message = create_video_message_by_url(operationID_cs, videoElem_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::createFileMessageByURL(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto fileElem = zego_value_get_string(arguments->at(flutter::EncodableValue("fileElem")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* fileElem_cs = const_cast<char*>(fileElem.c_str());
|
||||||
|
|
||||||
|
std::string message = create_file_message_by_url(operationID_cs, fileElem_cs);
|
||||||
|
result->Success(flutter::EncodableValue(message));
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::fetchSurroundingMessages(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto message = zego_value_get_string(arguments->at(flutter::EncodableValue("message")));
|
||||||
|
auto before = zego_value_get_int(arguments->at(flutter::EncodableValue("before")));
|
||||||
|
auto after = zego_value_get_int(arguments->at(flutter::EncodableValue("after")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* message_cs = const_cast<char*>(message.c_str());
|
||||||
|
|
||||||
|
fetch_surrounding_messages(NewBaseCallBack(result), operationID_cs, message_cs, before, after);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageManagerService::setCustomBusinessListener(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
set_custom_business_listener(NewCustomBusinessListenCallBack());
|
||||||
|
result->Success(flutter::EncodableValue());
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,159 @@
|
|||||||
|
#ifndef MESSAGE_MANAGER_SERVICE_H
|
||||||
|
#define MESSAGE_MANAGER_SERVICE_H
|
||||||
|
#include "../FLTService.h"
|
||||||
|
#include "Listen.h"
|
||||||
|
#include <flutter/standard_method_codec.h>
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class MessageManagerService : public FLTService {
|
||||||
|
public:
|
||||||
|
MessageManagerService();
|
||||||
|
|
||||||
|
void onMethodCalled(
|
||||||
|
const std::string& method,
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
|
||||||
|
// Method handlers
|
||||||
|
void setAdvancedMsgListener(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void sendMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void revokeMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void editMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void deleteMessageFromLocalStorage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void deleteMessageFromLocalAndSvr(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void deleteAllMsgFromLocal(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void deleteAllMsgFromLocalAndSvr(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void insertSingleMessageToLocalStorage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void insertGroupMessageToLocalStorage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void markMessagesAsReadByMsgID(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void typingStatusUpdate(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createTextMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createTextAtMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createImageMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createImageMessageFromFullPath(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createSoundMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createSoundMessageFromFullPath(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createVideoMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createVideoMessageFromFullPath(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createFileMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createFileMessageFromFullPath(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createMergerMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createForwardMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createLocationMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createCustomMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createQuoteMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createCardMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createFaceMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createAdvancedTextMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createAdvancedQuoteMessage(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void searchLocalMessages(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void clearConversationAndDeleteAllMsg(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getAdvancedHistoryMessageList(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getAdvancedHistoryMessageListReverse(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void findMessageList(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void setMessageLocalEx(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void setAppBadge(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void sendMessageNotOss(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createImageMessageByURL(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createSoundMessageByURL(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createVideoMessageByURL(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void createFileMessageByURL(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void fetchSurroundingMessages(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void setCustomBusinessListener(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string m_serviceName;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MESSAGE_MANAGER_SERVICE_H
|
150
windows/src/common/services/UserManager.cpp
Normal file
150
windows/src/common/services/UserManager.cpp
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
#include "UserManager.h"
|
||||||
|
#include <libopenimsdk.h>
|
||||||
|
#include "../NimResult.h"
|
||||||
|
#include "../ZegoDataUtils.h"
|
||||||
|
#include "ConstDefine.h"
|
||||||
|
#include "Listen.h"
|
||||||
|
|
||||||
|
UserManagerService::UserManagerService() {
|
||||||
|
m_serviceName = "userManager";
|
||||||
|
}
|
||||||
|
|
||||||
|
void UserManagerService::onMethodCalled(
|
||||||
|
const std::string& method,
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (method == "setUserListener") {
|
||||||
|
setUserListener(arguments, result);
|
||||||
|
} else if (method == "getUsersInfo") {
|
||||||
|
getUsersInfo(arguments, result);
|
||||||
|
} else if (method == "setSelfInfo") {
|
||||||
|
setSelfInfo(arguments, result);
|
||||||
|
} else if (method == "getSelfUserInfo") {
|
||||||
|
getSelfUserInfo(arguments, result);
|
||||||
|
} else if (method == "subscribeUsersStatus") {
|
||||||
|
subscribeUsersStatus(arguments, result);
|
||||||
|
} else if (method == "unsubscribeUsersStatus") {
|
||||||
|
unsubscribeUsersStatus(arguments, result);
|
||||||
|
} else if (method == "getSubscribeUsersStatus") {
|
||||||
|
getSubscribeUsersStatus(arguments, result);
|
||||||
|
} else if (method == "getUserStatus") {
|
||||||
|
getUserStatus(arguments, result);
|
||||||
|
} else {
|
||||||
|
result->NotImplemented();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UserManagerService::setUserListener(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
set_user_listener(NewUserListenCallBack());
|
||||||
|
result->Success(flutter::EncodableValue());
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UserManagerService::getUsersInfo(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto userIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDList")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* userIDList_cs = const_cast<char*>(userIDList.c_str());
|
||||||
|
|
||||||
|
get_users_info(NewBaseCallBack(result), operationID_cs, userIDList_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UserManagerService::setSelfInfo(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto userInfo = map_2_json(*arguments);
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* userInfo_cs = const_cast<char*>(userInfo.c_str());
|
||||||
|
|
||||||
|
set_self_info(NewBaseCallBack(result), operationID_cs, userInfo_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UserManagerService::getSelfUserInfo(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
|
||||||
|
get_self_user_info(NewBaseCallBack(result), operationID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UserManagerService::subscribeUsersStatus(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto userIDs = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDs")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* userIDs_cs = const_cast<char*>(userIDs.c_str());
|
||||||
|
|
||||||
|
subscribe_users_status(NewBaseCallBack(result), operationID_cs, userIDs_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UserManagerService::unsubscribeUsersStatus(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto userIDs = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDs")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* userIDs_cs = const_cast<char*>(userIDs.c_str());
|
||||||
|
|
||||||
|
unsubscribe_users_status(NewBaseCallBack(result), operationID_cs, userIDs_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UserManagerService::getSubscribeUsersStatus(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
|
||||||
|
get_subscribe_users_status(NewBaseCallBack(result), operationID_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UserManagerService::getUserStatus(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||||
|
if (arguments) {
|
||||||
|
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
|
||||||
|
auto userIDs = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDs")));
|
||||||
|
char* operationID_cs = const_cast<char*>(operationID.c_str());
|
||||||
|
char* userIDs_cs = const_cast<char*>(userIDs.c_str());
|
||||||
|
|
||||||
|
get_user_status(NewBaseCallBack(result), operationID_cs, userIDs_cs);
|
||||||
|
} else {
|
||||||
|
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
49
windows/src/common/services/UserManager.h
Normal file
49
windows/src/common/services/UserManager.h
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#ifndef USER_MANAGER_SERVICE_H
|
||||||
|
#define USER_MANAGER_SERVICE_H
|
||||||
|
|
||||||
|
#include "../FLTService.h"
|
||||||
|
#include "Listen.h"
|
||||||
|
#include <flutter/standard_method_codec.h>
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class UserManagerService : public FLTService {
|
||||||
|
public:
|
||||||
|
UserManagerService();
|
||||||
|
|
||||||
|
void onMethodCalled(
|
||||||
|
const std::string& method,
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
|
||||||
|
// Method handlers
|
||||||
|
void setUserListener(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getUsersInfo(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void setSelfInfo(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getSelfUserInfo(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void subscribeUsersStatus(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void unsubscribeUsersStatus(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getSubscribeUsersStatus(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
void getUserStatus(
|
||||||
|
const flutter::EncodableMap* arguments,
|
||||||
|
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string m_serviceName;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // USER_MANAGER_SERVICE_H
|
Loading…
x
Reference in New Issue
Block a user