juggleim-rnsdk 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +521 -0
- package/android/.gradle/8.9/checksums/checksums.lock +0 -0
- package/android/.gradle/8.9/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/8.9/checksums/sha1-checksums.bin +0 -0
- package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
- package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/8.9/gc.properties +0 -0
- package/android/.gradle/9.0-milestone-1/checksums/checksums.lock +0 -0
- package/android/.gradle/9.0-milestone-1/fileChanges/last-build.bin +0 -0
- package/android/.gradle/9.0-milestone-1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/9.0-milestone-1/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
- package/android/.gradle/config.properties +2 -0
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/.idea/AndroidProjectSystem.xml +6 -0
- package/android/.idea/caches/deviceStreaming.xml +981 -0
- package/android/.idea/gradle.xml +12 -0
- package/android/.idea/migrations.xml +10 -0
- package/android/.idea/misc.xml +10 -0
- package/android/.idea/runConfigurations.xml +17 -0
- package/android/.idea/vcs.xml +6 -0
- package/android/.settings/org.eclipse.buildship.core.prefs +2 -0
- package/android/build/.transforms/32937366d2d155289e73cba3894468b5/results.bin +1 -0
- package/android/build/.transforms/32937366d2d155289e73cba3894468b5/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/3836873630d52928fb1c95f4a42a08c2/results.bin +1 -0
- package/android/build/.transforms/3836873630d52928fb1c95f4a42a08c2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/BuildConfig.dex +0 -0
- package/android/build/.transforms/3836873630d52928fb1c95f4a42a08c2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager.dex +0 -0
- package/android/build/.transforms/3836873630d52928fb1c95f4a42a08c2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMPackage.dex +0 -0
- package/android/build/.transforms/3836873630d52928fb1c95f4a42a08c2/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
- package/android/build/.transforms/4ae221a259570a6033b0069041b5796d/results.bin +1 -0
- package/android/build/.transforms/4ae221a259570a6033b0069041b5796d/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/85a2c003bf85108f4351f2cf87e94301/results.bin +1 -0
- package/android/build/.transforms/85a2c003bf85108f4351f2cf87e94301/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/BuildConfig.dex +0 -0
- package/android/build/.transforms/85a2c003bf85108f4351f2cf87e94301/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$1.dex +0 -0
- package/android/build/.transforms/85a2c003bf85108f4351f2cf87e94301/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$2.dex +0 -0
- package/android/build/.transforms/85a2c003bf85108f4351f2cf87e94301/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager.dex +0 -0
- package/android/build/.transforms/85a2c003bf85108f4351f2cf87e94301/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMPackage.dex +0 -0
- package/android/build/.transforms/85a2c003bf85108f4351f2cf87e94301/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/results.bin +1 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/BuildConfig.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/FileUtils.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$1.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$10.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$11.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$12.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$13.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$14.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$15.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$16.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$17.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$18.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$2.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$3.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$4.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$5.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$6.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$7.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$8.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$9.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMPackage.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/RNTypeConverter$1.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/RNTypeConverter.dex +0 -0
- package/android/build/.transforms/9a2afda83c396e5ec45393e60e403432/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
- package/android/build/.transforms/c196b8eedd9d5b3ab65791cf668fe454/results.bin +1 -0
- package/android/build/.transforms/c196b8eedd9d5b3ab65791cf668fe454/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/generated/source/buildConfig/debug/com/juggleim/BuildConfig.java +10 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +9 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output-metadata.json +18 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +7 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +18 -0
- package/android/build/intermediates/aar_metadata/debug/aar-metadata.properties +4 -0
- package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +6 -0
- package/android/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +1 -0
- package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +1 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
- package/android/build/intermediates/compile_r_class_jar/debug/R.jar +0 -0
- package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
- package/android/build/intermediates/compile_symbol_list/debug/R.txt +1958 -0
- package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugAssets/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
- package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/BuildConfig.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/FileUtils.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager$1.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager$10.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager$11.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager$12.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager$13.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager$14.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager$15.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager$16.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager$17.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager$18.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager$2.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager$3.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager$4.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager$5.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager$6.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager$7.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager$8.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager$9.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMManager.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/JuggleIMPackage.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/RNTypeConverter$1.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/juggleim/RNTypeConverter.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/BuildConfig.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/FileUtils.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$1.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$10.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$11.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$12.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$13.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$14.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$15.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$16.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$17.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$18.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$2.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$3.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$4.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$5.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$6.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$7.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$8.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$9.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMPackage.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/RNTypeConverter$1.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/RNTypeConverter.class +0 -0
- package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +2 -0
- package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +2 -0
- package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +11 -0
- package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +7 -0
- package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +9 -0
- package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +7 -0
- package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +1 -0
- package/android/build/intermediates/navigation_json/debug/navigation.json +1 -0
- package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
- package/android/build/intermediates/packaged_manifests/debug/output-metadata.json +18 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/BuildConfig.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/FileUtils.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$10.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$11.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$12.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$13.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$14.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$15.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$16.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$17.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$18.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$2.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$3.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$4.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$5.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$6.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$7.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$8.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$9.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMPackage.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/RNTypeConverter$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/RNTypeConverter.class +0 -0
- package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar +0 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +1 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +1450 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +17 -0
- package/android/build/reports/problems/problems-report.html +663 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$1.class.uniqueId3 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$2.class.uniqueId0 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager.class.uniqueId1 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMPackage.class.uniqueId2 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build.gradle +48 -0
- package/android/local.properties +8 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/java/com/juggleim/FileUtils.java +104 -0
- package/android/src/main/java/com/juggleim/JuggleIMManager.java +1220 -0
- package/android/src/main/java/com/juggleim/JuggleIMPackage.java +27 -0
- package/android/src/main/java/com/juggleim/RNTypeConverter.java +163 -0
- package/im-rn-sdk.podspec +20 -0
- package/ios/JuggleIMManager.h +9 -0
- package/ios/JuggleIMManager.m +1186 -0
- package/package.json +45 -0
- package/src/index.d.ts +691 -0
- package/src/index.js +854 -0
|
@@ -0,0 +1,1220 @@
|
|
|
1
|
+
package com.juggleim;
|
|
2
|
+
|
|
3
|
+
import android.util.Log;
|
|
4
|
+
|
|
5
|
+
import com.facebook.react.bridge.Promise;
|
|
6
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
7
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
8
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
9
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
10
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
11
|
+
import com.facebook.react.bridge.ReadableMapKeySetIterator;
|
|
12
|
+
import com.facebook.react.bridge.WritableMap;
|
|
13
|
+
import com.facebook.react.bridge.WritableNativeMap;
|
|
14
|
+
import com.facebook.react.bridge.WritableArray;
|
|
15
|
+
import com.facebook.react.bridge.WritableNativeArray;
|
|
16
|
+
import com.facebook.react.modules.core.DeviceEventManagerModule;
|
|
17
|
+
import com.juggle.im.JIMConst;
|
|
18
|
+
import com.juggle.im.interfaces.IConnectionManager;
|
|
19
|
+
import com.juggle.im.interfaces.IMessageManager;
|
|
20
|
+
import com.juggle.im.interfaces.IConversationManager;
|
|
21
|
+
import com.juggle.im.model.ConversationMentionInfo;
|
|
22
|
+
import com.juggle.im.model.GetMessageOptions;
|
|
23
|
+
import com.juggle.im.model.Message;
|
|
24
|
+
import com.juggle.im.model.Conversation;
|
|
25
|
+
import com.juggle.im.model.ConversationInfo;
|
|
26
|
+
import com.juggle.im.model.MessageMentionInfo;
|
|
27
|
+
import com.juggle.im.model.MessageReaction;
|
|
28
|
+
import com.juggle.im.model.MessageReactionItem;
|
|
29
|
+
import com.juggle.im.model.UserInfo;
|
|
30
|
+
import com.juggle.im.model.GroupMessageReadInfo;
|
|
31
|
+
import com.juggle.im.model.MessageContent;
|
|
32
|
+
import com.juggle.im.model.messages.*;
|
|
33
|
+
import com.juggle.im.JIM;
|
|
34
|
+
import com.juggle.im.internal.logger.JLogConfig;
|
|
35
|
+
import com.juggle.im.internal.logger.JLogLevel;
|
|
36
|
+
|
|
37
|
+
import java.util.ArrayList;
|
|
38
|
+
import java.util.HashMap;
|
|
39
|
+
import java.util.List;
|
|
40
|
+
import java.util.Map;
|
|
41
|
+
|
|
42
|
+
import javax.annotation.Nonnull;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Juggle IM React Native Android 模块
|
|
46
|
+
*/
|
|
47
|
+
public class JuggleIMManager extends ReactContextBaseJavaModule {
|
|
48
|
+
private static final String MODULE_NAME = "JuggleIM";
|
|
49
|
+
private Map<String, IConnectionManager.IConnectionStatusListener> connectionListeners = new HashMap<>();
|
|
50
|
+
private Map<String, IMessageManager.IMessageListener> messageListeners = new HashMap<>();
|
|
51
|
+
private Map<String, IMessageManager.IMessageReadReceiptListener> readReceiptListeners = new HashMap<>();
|
|
52
|
+
private Map<String, IConversationManager.IConversationListener> conversationListeners = new HashMap<>();
|
|
53
|
+
|
|
54
|
+
public JuggleIMManager(@Nonnull ReactApplicationContext reactContext) {
|
|
55
|
+
super(reactContext);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@Nonnull
|
|
59
|
+
@Override
|
|
60
|
+
public String getName() {
|
|
61
|
+
return MODULE_NAME;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// 添加这两个方法以解决React Native的警告
|
|
65
|
+
@ReactMethod
|
|
66
|
+
public void addListener(String eventName) {
|
|
67
|
+
// Keep: Required for RN built in Event Emitter Calls.
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@ReactMethod
|
|
71
|
+
public void removeListeners(Integer count) {
|
|
72
|
+
// Keep: Required for RN built in Event Emitter Calls.
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* 设置服务器地址列表
|
|
77
|
+
*
|
|
78
|
+
* @param urls 服务器地址列表
|
|
79
|
+
*/
|
|
80
|
+
@ReactMethod
|
|
81
|
+
public void setServerUrls(ReadableArray urls) {
|
|
82
|
+
List<String> serverList = new ArrayList<>();
|
|
83
|
+
for (int i = 0; i < urls.size(); i++) {
|
|
84
|
+
serverList.add(urls.getString(i));
|
|
85
|
+
}
|
|
86
|
+
com.juggle.im.JIM.getInstance().setServerUrls(serverList);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* 初始化SDK
|
|
91
|
+
*
|
|
92
|
+
* @param appKey 应用唯一标识
|
|
93
|
+
*/
|
|
94
|
+
@ReactMethod
|
|
95
|
+
public void init(String appKey) {
|
|
96
|
+
JIM.InitConfig.Builder builder = new JIM.InitConfig.Builder();
|
|
97
|
+
JLogConfig.Builder logBuilder = new JLogConfig.Builder(getReactApplicationContext());
|
|
98
|
+
logBuilder.setLogConsoleLevel(JLogLevel.JLogLevelVerbose);
|
|
99
|
+
builder.setJLogConfig(new JLogConfig(logBuilder));
|
|
100
|
+
JIM.getInstance().init(getCurrentActivity(), appKey, builder.build());
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* 连接到服务器
|
|
105
|
+
*
|
|
106
|
+
* @param token 用户token
|
|
107
|
+
*/
|
|
108
|
+
@ReactMethod
|
|
109
|
+
public void connect(String token) {
|
|
110
|
+
com.juggle.im.JIM.getInstance().getConnectionManager().connect(token);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* 添加连接状态监听器
|
|
115
|
+
*
|
|
116
|
+
* @param key 监听器标识
|
|
117
|
+
*/
|
|
118
|
+
@ReactMethod
|
|
119
|
+
public void addConnectionStatusListener(String key) {
|
|
120
|
+
IConnectionManager.IConnectionStatusListener listener = new IConnectionManager.IConnectionStatusListener() {
|
|
121
|
+
@Override
|
|
122
|
+
public void onStatusChange(JIMConst.ConnectionStatus status, int code, String extra) {
|
|
123
|
+
WritableMap params = new WritableNativeMap();
|
|
124
|
+
params.putString("key", key);
|
|
125
|
+
params.putString("status", getStatusString(status));
|
|
126
|
+
params.putInt("code", code);
|
|
127
|
+
params.putString("extra", extra != null ? extra : "");
|
|
128
|
+
|
|
129
|
+
sendEvent("ConnectionStatusChanged", params);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
@Override
|
|
133
|
+
public void onDbOpen() {
|
|
134
|
+
WritableMap params = new WritableNativeMap();
|
|
135
|
+
params.putString("key", key);
|
|
136
|
+
sendEvent("DbDidOpen", params);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
@Override
|
|
140
|
+
public void onDbClose() {
|
|
141
|
+
WritableMap params = new WritableNativeMap();
|
|
142
|
+
params.putString("key", key);
|
|
143
|
+
sendEvent("DbDidClose", params);
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
com.juggle.im.JIM.getInstance().getConnectionManager().addConnectionStatusListener(key, listener);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* 发送事件到React Native
|
|
152
|
+
*/
|
|
153
|
+
private void sendEvent(String eventName, WritableMap params) {
|
|
154
|
+
getReactApplicationContext()
|
|
155
|
+
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
|
|
156
|
+
.emit(eventName, params);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* 将连接状态转换为字符串
|
|
161
|
+
*/
|
|
162
|
+
private String getStatusString(JIMConst.ConnectionStatus status) {
|
|
163
|
+
switch (status) {
|
|
164
|
+
case CONNECTED:
|
|
165
|
+
return "connected";
|
|
166
|
+
case CONNECTING:
|
|
167
|
+
return "connecting";
|
|
168
|
+
case DISCONNECTED:
|
|
169
|
+
return "disconnected";
|
|
170
|
+
case FAILURE:
|
|
171
|
+
return "failure";
|
|
172
|
+
default:
|
|
173
|
+
return "unknown";
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* 添加消息监听器
|
|
179
|
+
*
|
|
180
|
+
* @param key 监听器标识
|
|
181
|
+
*/
|
|
182
|
+
@ReactMethod
|
|
183
|
+
public void addMessageListener(String key) {
|
|
184
|
+
IMessageManager.IMessageListener listener = new IMessageManager.IMessageListener() {
|
|
185
|
+
@Override
|
|
186
|
+
public void onMessageReceive(Message message) {
|
|
187
|
+
WritableMap params = new WritableNativeMap();
|
|
188
|
+
params.putString("key", key);
|
|
189
|
+
params.putMap("message", convertMessageToMap(message));
|
|
190
|
+
sendEvent("MessageReceived", params);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
@Override
|
|
194
|
+
public void onMessageRecall(Message message) {
|
|
195
|
+
WritableMap params = new WritableNativeMap();
|
|
196
|
+
params.putString("key", key);
|
|
197
|
+
params.putMap("message", convertMessageToMap(message));
|
|
198
|
+
sendEvent("MessageRecalled", params);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
@Override
|
|
202
|
+
public void onMessageUpdate(Message message) {
|
|
203
|
+
WritableMap params = new WritableNativeMap();
|
|
204
|
+
params.putString("key", key);
|
|
205
|
+
params.putMap("message", convertMessageToMap(message));
|
|
206
|
+
sendEvent("MessageUpdated", params);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
@Override
|
|
210
|
+
public void onMessageDelete(Conversation conversation, List<Long> clientMsgNos) {
|
|
211
|
+
WritableMap params = new WritableNativeMap();
|
|
212
|
+
params.putString("key", key);
|
|
213
|
+
params.putMap("conversation", convertConversationToMap(conversation));
|
|
214
|
+
WritableArray msgNos = new WritableNativeArray();
|
|
215
|
+
for (Long msgNo : clientMsgNos) {
|
|
216
|
+
msgNos.pushDouble(msgNo.doubleValue());
|
|
217
|
+
}
|
|
218
|
+
params.putArray("clientMsgNos", msgNos);
|
|
219
|
+
sendEvent("MessageDeleted", params);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
@Override
|
|
223
|
+
public void onMessageClear(Conversation conversation, long timestamp, String senderId) {
|
|
224
|
+
WritableMap params = new WritableNativeMap();
|
|
225
|
+
params.putString("key", key);
|
|
226
|
+
params.putMap("conversation", convertConversationToMap(conversation));
|
|
227
|
+
params.putDouble("timestamp", timestamp);
|
|
228
|
+
params.putString("senderId", senderId != null ? senderId : "");
|
|
229
|
+
sendEvent("MessageCleared", params);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
@Override
|
|
233
|
+
public void onMessageReactionAdd(Conversation conversation, MessageReaction reaction) {
|
|
234
|
+
WritableMap params = new WritableNativeMap();
|
|
235
|
+
params.putString("key", key);
|
|
236
|
+
params.putMap("conversation", convertConversationToMap(conversation));
|
|
237
|
+
params.putMap("reaction", convertReactionToMap(reaction));
|
|
238
|
+
sendEvent("MessageReactionAdded", params);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
@Override
|
|
242
|
+
public void onMessageReactionRemove(Conversation conversation, MessageReaction reaction) {
|
|
243
|
+
WritableMap params = new WritableNativeMap();
|
|
244
|
+
params.putString("key", key);
|
|
245
|
+
params.putMap("conversation", convertConversationToMap(conversation));
|
|
246
|
+
params.putMap("reaction", convertReactionToMap(reaction));
|
|
247
|
+
sendEvent("MessageReactionRemoved", params);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
messageListeners.put(key, listener);
|
|
253
|
+
com.juggle.im.JIM.getInstance().getMessageManager().addListener(key, listener);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* 添加消息阅读状态监听器
|
|
258
|
+
*
|
|
259
|
+
* @param key 监听器标识
|
|
260
|
+
*/
|
|
261
|
+
@ReactMethod
|
|
262
|
+
public void addMessageReadReceiptListener(String key) {
|
|
263
|
+
IMessageManager.IMessageReadReceiptListener listener = new IMessageManager.IMessageReadReceiptListener() {
|
|
264
|
+
@Override
|
|
265
|
+
public void onMessagesRead(Conversation conversation, List<String> messageIds) {
|
|
266
|
+
WritableMap params = new WritableNativeMap();
|
|
267
|
+
params.putString("key", key);
|
|
268
|
+
params.putMap("conversation", convertConversationToMap(conversation));
|
|
269
|
+
WritableArray msgIds = new WritableNativeArray();
|
|
270
|
+
for (String msgId : messageIds) {
|
|
271
|
+
msgIds.pushString(msgId);
|
|
272
|
+
}
|
|
273
|
+
params.putArray("messageIds", msgIds);
|
|
274
|
+
sendEvent("MessagesRead", params);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
@Override
|
|
278
|
+
public void onGroupMessagesRead(Conversation conversation, Map<String, GroupMessageReadInfo> messages) {
|
|
279
|
+
WritableMap params = new WritableNativeMap();
|
|
280
|
+
params.putString("key", key);
|
|
281
|
+
params.putMap("conversation", convertConversationToMap(conversation));
|
|
282
|
+
WritableMap messagesMap = new WritableNativeMap();
|
|
283
|
+
for (Map.Entry<String, GroupMessageReadInfo> entry : messages.entrySet()) {
|
|
284
|
+
messagesMap.putMap(entry.getKey(), convertGroupMessageReadInfoToMap(entry.getValue()));
|
|
285
|
+
}
|
|
286
|
+
params.putMap("messages", messagesMap);
|
|
287
|
+
sendEvent("GroupMessagesRead", params);
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
readReceiptListeners.put(key, listener);
|
|
292
|
+
com.juggle.im.JIM.getInstance().getMessageManager().addReadReceiptListener(key, listener);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* 添加会话监听器
|
|
297
|
+
*
|
|
298
|
+
* @param key 监听器标识
|
|
299
|
+
*/
|
|
300
|
+
@ReactMethod
|
|
301
|
+
public void addConversationListener(String key) {
|
|
302
|
+
IConversationManager.IConversationListener listener = new IConversationManager.IConversationListener() {
|
|
303
|
+
@Override
|
|
304
|
+
public void onConversationInfoAdd(List<ConversationInfo> conversationInfoList) {
|
|
305
|
+
WritableMap params = new WritableNativeMap();
|
|
306
|
+
params.putString("key", key);
|
|
307
|
+
WritableArray conversations = new WritableNativeArray();
|
|
308
|
+
for (ConversationInfo info : conversationInfoList) {
|
|
309
|
+
conversations.pushMap(convertConversationInfoToMap(info));
|
|
310
|
+
}
|
|
311
|
+
params.putArray("conversations", conversations);
|
|
312
|
+
sendEvent("ConversationInfoAdded", params);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
@Override
|
|
316
|
+
public void onConversationInfoUpdate(List<ConversationInfo> conversationInfoList) {
|
|
317
|
+
WritableMap params = new WritableNativeMap();
|
|
318
|
+
params.putString("key", key);
|
|
319
|
+
WritableArray conversations = new WritableNativeArray();
|
|
320
|
+
for (ConversationInfo info : conversationInfoList) {
|
|
321
|
+
conversations.pushMap(convertConversationInfoToMap(info));
|
|
322
|
+
}
|
|
323
|
+
params.putArray("conversations", conversations);
|
|
324
|
+
sendEvent("ConversationInfoUpdated", params);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
@Override
|
|
328
|
+
public void onConversationInfoDelete(List<ConversationInfo> conversationInfoList) {
|
|
329
|
+
WritableMap params = new WritableNativeMap();
|
|
330
|
+
params.putString("key", key);
|
|
331
|
+
WritableArray conversations = new WritableNativeArray();
|
|
332
|
+
for (ConversationInfo info : conversationInfoList) {
|
|
333
|
+
conversations.pushMap(convertConversationInfoToMap(info));
|
|
334
|
+
}
|
|
335
|
+
params.putArray("conversations", conversations);
|
|
336
|
+
sendEvent("ConversationInfoDeleted", params);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
@Override
|
|
340
|
+
public void onTotalUnreadMessageCountUpdate(int count) {
|
|
341
|
+
WritableMap params = new WritableNativeMap();
|
|
342
|
+
params.putString("key", key);
|
|
343
|
+
params.putInt("count", count);
|
|
344
|
+
sendEvent("TotalUnreadMessageCountUpdated", params);
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
conversationListeners.put(key, listener);
|
|
349
|
+
com.juggle.im.JIM.getInstance().getConversationManager().addListener(key, listener);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* 将消息对象转换为Map
|
|
354
|
+
*/
|
|
355
|
+
private WritableMap convertMessageToMap(Message message) {
|
|
356
|
+
WritableMap map = new WritableNativeMap();
|
|
357
|
+
map.putString("messageId", message.getMessageId());
|
|
358
|
+
map.putDouble("clientMsgNo", message.getClientMsgNo());
|
|
359
|
+
map.putDouble("timestamp", message.getTimestamp());
|
|
360
|
+
map.putString("senderUserId", message.getSenderUserId());
|
|
361
|
+
map.putMap("conversation", convertConversationToMap(message.getConversation()));
|
|
362
|
+
map.putMap("content", convertMessageContentToMap(message.getContent()));
|
|
363
|
+
|
|
364
|
+
// 添加消息方向
|
|
365
|
+
if (message.getDirection() != null) {
|
|
366
|
+
map.putInt("direction", message.getDirection().getValue());
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
// 添加消息状态
|
|
370
|
+
if (message.getState() != null) {
|
|
371
|
+
map.putInt("state", message.getState().getValue());
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
// 添加是否已读
|
|
375
|
+
map.putBoolean("hasRead", message.isHasRead());
|
|
376
|
+
|
|
377
|
+
// 添加群消息阅读信息
|
|
378
|
+
if (message.getGroupMessageReadInfo() != null) {
|
|
379
|
+
map.putMap("groupMessageReadInfo", convertGroupMessageReadInfoToMap(message.getGroupMessageReadInfo()));
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
// 添加引用消息
|
|
383
|
+
if (message.getReferredMessage() != null) {
|
|
384
|
+
map.putMap("referredMessage", convertMessageToMap(message.getReferredMessage()));
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
// 添加@消息信息
|
|
388
|
+
if (message.getMentionInfo() != null) {
|
|
389
|
+
map.putMap("mentionInfo", convertMentionInfoToMap(message.getMentionInfo()));
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
// 添加本地属性
|
|
393
|
+
map.putString("localAttribute", message.getLocalAttribute());
|
|
394
|
+
|
|
395
|
+
// 添加是否删除
|
|
396
|
+
map.putBoolean("isDelete", message.isDelete());
|
|
397
|
+
|
|
398
|
+
// 添加是否编辑
|
|
399
|
+
map.putBoolean("isEdit", message.isEdit());
|
|
400
|
+
|
|
401
|
+
return map;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
/**
|
|
405
|
+
* 将会话对象转换为Map
|
|
406
|
+
*/
|
|
407
|
+
private WritableMap convertConversationToMap(Conversation conversation) {
|
|
408
|
+
WritableMap map = new WritableNativeMap();
|
|
409
|
+
map.putInt("conversationType", conversation.getConversationType().getValue());
|
|
410
|
+
map.putString("conversationId", conversation.getConversationId());
|
|
411
|
+
return map;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* 将消息内容转换为Map
|
|
416
|
+
*/
|
|
417
|
+
private WritableMap convertMessageContentToMap(MessageContent content) {
|
|
418
|
+
WritableMap map = new WritableNativeMap();
|
|
419
|
+
map.putString("contentType", content.getContentType());
|
|
420
|
+
if (content.getContentType().equals("jg:text")) {
|
|
421
|
+
map.putString("content", ((TextMessage) content).getContent());
|
|
422
|
+
} else if (content.getContentType().equals("jg:img")) {
|
|
423
|
+
ImageMessage img = (ImageMessage) content;
|
|
424
|
+
map.putString("url", img.getUrl());
|
|
425
|
+
map.putString("localPath", img.getLocalPath());
|
|
426
|
+
map.putString("thumbnailLocalPath", img.getThumbnailLocalPath());
|
|
427
|
+
map.putString("thumbnailUrl", img.getThumbnailUrl());
|
|
428
|
+
map.putInt("width", img.getWidth());
|
|
429
|
+
map.putInt("height", img.getHeight());
|
|
430
|
+
} else if (content.getContentType().equals("jg:file")) {
|
|
431
|
+
FileMessage file = (FileMessage) content;
|
|
432
|
+
map.putString("url", file.getUrl());
|
|
433
|
+
map.putString("type", file.getType());
|
|
434
|
+
map.putString("name", file.getName());
|
|
435
|
+
map.putDouble("size", file.getSize());
|
|
436
|
+
} else if (content.getContentType().equals("jg:voice")) {
|
|
437
|
+
VoiceMessage voice = (VoiceMessage) content;
|
|
438
|
+
map.putString("url", voice.getUrl());
|
|
439
|
+
map.putString("localPath", voice.getLocalPath());
|
|
440
|
+
map.putInt("duration", voice.getDuration());
|
|
441
|
+
} else {
|
|
442
|
+
Log.e("convertMessageContentToMap", "Unknown contentType: " + content.getContentType());
|
|
443
|
+
return RNTypeConverter.toWritableMap(content);
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
return map;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
private MessageContent convertMapToMessageContent(ReadableMap map) {
|
|
450
|
+
String contentType = map.getString("contentType");
|
|
451
|
+
switch (contentType) {
|
|
452
|
+
case "jg:text":
|
|
453
|
+
TextMessage text = new TextMessage(map.getString("content"));
|
|
454
|
+
return text;
|
|
455
|
+
case "jg:img":
|
|
456
|
+
ImageMessage img = new ImageMessage();
|
|
457
|
+
img.setUrl(map.getString("url"));
|
|
458
|
+
img.setLocalPath(map.getString("localPath"));
|
|
459
|
+
img.setThumbnailLocalPath(map.getString("thumbnailLocalPath"));
|
|
460
|
+
img.setThumbnailUrl(map.getString("thumbnailUrl"));
|
|
461
|
+
img.setWidth(map.getInt("width"));
|
|
462
|
+
img.setHeight(map.getInt("height"));
|
|
463
|
+
return img;
|
|
464
|
+
case "jg:file":
|
|
465
|
+
FileMessage file = new FileMessage();
|
|
466
|
+
file.setUrl(map.getString("url"));
|
|
467
|
+
file.setType(map.getString("type"));
|
|
468
|
+
file.setName(map.getString("name"));
|
|
469
|
+
file.setSize(map.getInt("size"));
|
|
470
|
+
return file;
|
|
471
|
+
case "jg:voice":
|
|
472
|
+
VoiceMessage voice = new VoiceMessage();
|
|
473
|
+
voice.setUrl(map.getString("url"));
|
|
474
|
+
voice.setLocalPath(map.getString("localPath"));
|
|
475
|
+
voice.setDuration(map.getInt("duration"));
|
|
476
|
+
return voice;
|
|
477
|
+
default:
|
|
478
|
+
Log.e("convertMapToMessageContent", "contentType: " + contentType);
|
|
479
|
+
return RNTypeConverter.fromReadableMap(map, MessageContent.class);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
/**
|
|
484
|
+
* 将消息回应转换为Map
|
|
485
|
+
*/
|
|
486
|
+
private WritableMap convertReactionToMap(MessageReaction reaction) {
|
|
487
|
+
WritableMap map = new WritableNativeMap();
|
|
488
|
+
map.putString("messageId", reaction.getMessageId());
|
|
489
|
+
WritableArray itemList = new WritableNativeArray();
|
|
490
|
+
for (MessageReactionItem item : reaction.getItemList()) {
|
|
491
|
+
WritableMap mi = new WritableNativeMap();
|
|
492
|
+
mi.putString("reactionId", item.getReactionId());
|
|
493
|
+
WritableArray us = new WritableNativeArray();
|
|
494
|
+
for (UserInfo user : item.getUserInfoList()) {
|
|
495
|
+
us.pushMap(convertUserInfoToMap(user));
|
|
496
|
+
}
|
|
497
|
+
mi.putArray("userInfoList", us);
|
|
498
|
+
itemList.pushMap(mi);
|
|
499
|
+
}
|
|
500
|
+
map.putArray("itemList", itemList);
|
|
501
|
+
return map;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
/**
|
|
505
|
+
* 将用户信息转换为Map
|
|
506
|
+
*/
|
|
507
|
+
private WritableMap convertUserInfoToMap(UserInfo userInfo) {
|
|
508
|
+
WritableMap map = new WritableNativeMap();
|
|
509
|
+
map.putString("userId", userInfo.getUserId());
|
|
510
|
+
map.putString("nickname", userInfo.getUserName());
|
|
511
|
+
map.putString("avatar", userInfo.getPortrait());
|
|
512
|
+
return map;
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
/**
|
|
516
|
+
* 将群消息阅读信息转换为Map
|
|
517
|
+
*/
|
|
518
|
+
private WritableMap convertGroupMessageReadInfoToMap(GroupMessageReadInfo info) {
|
|
519
|
+
WritableMap map = new WritableNativeMap();
|
|
520
|
+
map.putInt("readCount", info.getReadCount());
|
|
521
|
+
map.putInt("memberCount", info.getMemberCount());
|
|
522
|
+
return map;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
private WritableMap convertConversationMentionInfoToMap(ConversationMentionInfo mentionInfo) {
|
|
526
|
+
WritableMap map = new WritableNativeMap();
|
|
527
|
+
if (mentionInfo.getMentionMsgList() != null) {
|
|
528
|
+
WritableArray mentionMsgArray = new WritableNativeArray();
|
|
529
|
+
for (ConversationMentionInfo.MentionMsg mentionMsg : mentionInfo.getMentionMsgList()) {
|
|
530
|
+
WritableMap msgMap = new WritableNativeMap();
|
|
531
|
+
msgMap.putString("senderId", mentionMsg.getSenderId());
|
|
532
|
+
msgMap.putString("msgId", mentionMsg.getMsgId());
|
|
533
|
+
msgMap.putDouble("msgTime", mentionMsg.getMsgTime());
|
|
534
|
+
msgMap.putInt("type", mentionMsg.getType().getValue());
|
|
535
|
+
mentionMsgArray.pushMap(msgMap);
|
|
536
|
+
}
|
|
537
|
+
map.putArray("mentionMsgList", mentionMsgArray);
|
|
538
|
+
}
|
|
539
|
+
return map;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
//conversation
|
|
543
|
+
|
|
544
|
+
/**
|
|
545
|
+
* 获取会话信息列表
|
|
546
|
+
*/
|
|
547
|
+
@ReactMethod
|
|
548
|
+
public void getConversationInfoList(int count, double ts, int pullDirection, Promise promise) {
|
|
549
|
+
try {
|
|
550
|
+
JIMConst.PullDirection direction = pullDirection == 0 ?
|
|
551
|
+
JIMConst.PullDirection.NEWER : JIMConst.PullDirection.OLDER;
|
|
552
|
+
|
|
553
|
+
List<ConversationInfo> conversationInfos = com.juggle.im.JIM.getInstance().getConversationManager().getConversationInfoList(count, (long)ts, direction);
|
|
554
|
+
Log.d("getConversationInfoList", "conversationInfos: " + conversationInfos.size());
|
|
555
|
+
WritableArray result = new WritableNativeArray();
|
|
556
|
+
for (ConversationInfo info : conversationInfos) {
|
|
557
|
+
result.pushMap(convertConversationInfoToMap(info));
|
|
558
|
+
}
|
|
559
|
+
promise.resolve(result);
|
|
560
|
+
} catch (Exception e) {
|
|
561
|
+
e.printStackTrace();
|
|
562
|
+
promise.reject(e);
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
/**
|
|
567
|
+
* 获取单个会话信息
|
|
568
|
+
*/
|
|
569
|
+
@ReactMethod
|
|
570
|
+
public void getConversationInfo(ReadableMap conversationMap, Promise promise) {
|
|
571
|
+
Conversation conversation = convertMapToConversation(conversationMap);
|
|
572
|
+
ConversationInfo conversationInfo = com.juggle.im.JIM.getInstance().getConversationManager()
|
|
573
|
+
.getConversationInfo(conversation);
|
|
574
|
+
promise.resolve(convertConversationInfoToMap(conversationInfo));
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
/**
|
|
578
|
+
* 创建会话信息
|
|
579
|
+
*/
|
|
580
|
+
@ReactMethod
|
|
581
|
+
public void createConversationInfo(ReadableMap conversationInfoMap, Promise promise) {
|
|
582
|
+
Conversation conversationInfo = convertMapToConversation(conversationInfoMap);
|
|
583
|
+
|
|
584
|
+
com.juggle.im.JIM.getInstance().getConversationManager()
|
|
585
|
+
.createConversationInfo(conversationInfo, new IConversationManager.ICreateConversationInfoCallback() {
|
|
586
|
+
@Override
|
|
587
|
+
public void onSuccess(ConversationInfo info) {
|
|
588
|
+
promise.resolve(convertConversationInfoToMap(info));
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
@Override
|
|
592
|
+
public void onError(int errorCode) {
|
|
593
|
+
promise.reject("error", "Error code: " + errorCode);
|
|
594
|
+
}
|
|
595
|
+
});
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
/**
|
|
599
|
+
* 删除会话信息
|
|
600
|
+
*/
|
|
601
|
+
@ReactMethod
|
|
602
|
+
public void deleteConversationInfo(ReadableMap conversationMap, Promise promise) {
|
|
603
|
+
Conversation conversation = convertMapToConversation(conversationMap);
|
|
604
|
+
|
|
605
|
+
com.juggle.im.JIM.getInstance().getConversationManager()
|
|
606
|
+
.deleteConversationInfo(conversation, new IConversationManager.ISimpleCallback() {
|
|
607
|
+
@Override
|
|
608
|
+
public void onSuccess() {
|
|
609
|
+
promise.resolve(true);
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
@Override
|
|
613
|
+
public void onError(int errorCode) {
|
|
614
|
+
promise.reject("error", "Error code: " + errorCode);
|
|
615
|
+
}
|
|
616
|
+
});
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
/**
|
|
620
|
+
* 设置会话免打扰状态
|
|
621
|
+
*/
|
|
622
|
+
@ReactMethod
|
|
623
|
+
public void setMute(ReadableMap conversationMap, boolean isMute, Promise promise) {
|
|
624
|
+
Conversation conversation = convertMapToConversation(conversationMap);
|
|
625
|
+
|
|
626
|
+
com.juggle.im.JIM.getInstance().getConversationManager()
|
|
627
|
+
.setMute(conversation, isMute, new IConversationManager.ISimpleCallback() {
|
|
628
|
+
@Override
|
|
629
|
+
public void onSuccess() {
|
|
630
|
+
promise.resolve(true);
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
@Override
|
|
634
|
+
public void onError(int errorCode) {
|
|
635
|
+
promise.reject("error", "Error code: " + errorCode);
|
|
636
|
+
}
|
|
637
|
+
});
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
/**
|
|
641
|
+
* 清除会话未读数
|
|
642
|
+
*/
|
|
643
|
+
@ReactMethod
|
|
644
|
+
public void clearUnreadCount(ReadableMap conversationMap, Promise promise) {
|
|
645
|
+
Conversation conversation = convertMapToConversation(conversationMap);
|
|
646
|
+
|
|
647
|
+
com.juggle.im.JIM.getInstance().getConversationManager()
|
|
648
|
+
.clearUnreadCount(conversation, new IConversationManager.ISimpleCallback() {
|
|
649
|
+
@Override
|
|
650
|
+
public void onSuccess() {
|
|
651
|
+
promise.resolve(true);
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
@Override
|
|
655
|
+
public void onError(int errorCode) {
|
|
656
|
+
promise.reject("error", "Error code: " + errorCode);
|
|
657
|
+
}
|
|
658
|
+
});
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
/**
|
|
662
|
+
* 设置会话草稿
|
|
663
|
+
*/
|
|
664
|
+
@ReactMethod
|
|
665
|
+
public void setDraft(ReadableMap conversationMap, String draft, Promise promise) {
|
|
666
|
+
Conversation conversation = convertMapToConversation(conversationMap);
|
|
667
|
+
com.juggle.im.JIM.getInstance().getConversationManager()
|
|
668
|
+
.setDraft(conversation, draft);
|
|
669
|
+
promise.resolve(true);
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
/**
|
|
673
|
+
* 获取总未读数
|
|
674
|
+
*/
|
|
675
|
+
@ReactMethod
|
|
676
|
+
public void getTotalUnreadCount(Promise promise) {
|
|
677
|
+
int c = com.juggle.im.JIM.getInstance().getConversationManager()
|
|
678
|
+
.getTotalUnreadCount();
|
|
679
|
+
promise.resolve(c);
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
/**
|
|
683
|
+
* 设置会话置顶状态
|
|
684
|
+
*/
|
|
685
|
+
@ReactMethod
|
|
686
|
+
public void setTop(ReadableMap conversationMap, boolean isTop, Promise promise) {
|
|
687
|
+
Conversation conversation = convertMapToConversation(conversationMap);
|
|
688
|
+
com.juggle.im.JIM.getInstance().getConversationManager()
|
|
689
|
+
.setTop(conversation, isTop, new IConversationManager.ISimpleCallback() {
|
|
690
|
+
@Override
|
|
691
|
+
public void onSuccess() {
|
|
692
|
+
promise.resolve(true);
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
@Override
|
|
696
|
+
public void onError(int errorCode) {
|
|
697
|
+
promise.reject("error", "Error code: " + errorCode);
|
|
698
|
+
}
|
|
699
|
+
});
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
/**
|
|
703
|
+
* 将 ReadableMap 转换为 Conversation 对象
|
|
704
|
+
*/
|
|
705
|
+
private Conversation convertMapToConversation(ReadableMap map) {
|
|
706
|
+
Conversation.ConversationType type = Conversation.ConversationType.values()[map.getInt("conversationType")];
|
|
707
|
+
Conversation conversation = new Conversation(type, map.getString("conversationId"));
|
|
708
|
+
return conversation;
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
/**
|
|
712
|
+
* 将 ReadableMap 转换为 ConversationInfo 对象
|
|
713
|
+
*/
|
|
714
|
+
private ConversationInfo convertMapToConversationInfo(ReadableMap map) {
|
|
715
|
+
ConversationInfo info = new ConversationInfo();
|
|
716
|
+
info.setConversation(convertMapToConversation(map.getMap("conversation")));
|
|
717
|
+
info.setUnreadCount(map.getInt("unreadMessageCount"));
|
|
718
|
+
info.setTop(map.getBoolean("isTop"));
|
|
719
|
+
info.setMute(map.getBoolean("isMute"));
|
|
720
|
+
info.setDraft(map.getString("draft"));
|
|
721
|
+
return info;
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
/**
|
|
725
|
+
* 将 ConversationInfo 转换为 WritableMap
|
|
726
|
+
*/
|
|
727
|
+
private WritableMap convertConversationInfoToMap(ConversationInfo info) {
|
|
728
|
+
WritableMap map = new WritableNativeMap();
|
|
729
|
+
map.putMap("conversation", convertConversationToMap(info.getConversation()));
|
|
730
|
+
map.putInt("unreadCount", info.getUnreadCount());
|
|
731
|
+
map.putBoolean("isTop", info.isTop());
|
|
732
|
+
map.putBoolean("isMute", info.isMute());
|
|
733
|
+
map.putBoolean("hasUnread", info.hasUnread());
|
|
734
|
+
map.putString("draft", info.getDraft() != null ? info.getDraft() : "");
|
|
735
|
+
map.putDouble("topTime", info.getTopTime());
|
|
736
|
+
map.putDouble("sortTime", info.getSortTime());
|
|
737
|
+
|
|
738
|
+
if (info.getLastMessage() != null) {
|
|
739
|
+
map.putMap("lastMessage", convertMessageToMap(info.getLastMessage()));
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
if (info.getMentionInfo() != null) {
|
|
743
|
+
map.putMap("mentionInfo", convertConversationMentionInfoToMap(info.getMentionInfo()));
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
return map;
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
/**
|
|
750
|
+
* 将 MentionInfo 转换为 WritableMap
|
|
751
|
+
*/
|
|
752
|
+
private WritableMap convertMentionInfoToMap(MessageMentionInfo mentionInfo) {
|
|
753
|
+
WritableMap map = new WritableNativeMap();
|
|
754
|
+
WritableArray userMap = new WritableNativeArray();
|
|
755
|
+
map.putInt("type", mentionInfo.getType().getValue());
|
|
756
|
+
for (UserInfo userInfo : mentionInfo.getTargetUsers()) {
|
|
757
|
+
userMap.pushMap(convertUserInfoToMap(userInfo));
|
|
758
|
+
}
|
|
759
|
+
map.putArray("targetUsers", userMap);
|
|
760
|
+
return map;
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
/**
|
|
764
|
+
* 发送消息
|
|
765
|
+
*/
|
|
766
|
+
@ReactMethod
|
|
767
|
+
public void sendMessage(ReadableMap messageMap, String messageId, Promise promise) {
|
|
768
|
+
try {
|
|
769
|
+
Message message = convertMapToMessage(messageMap);
|
|
770
|
+
Log.d("sendMessage", message.toString());
|
|
771
|
+
Message sendMsg = JIM.getInstance().getMessageManager().sendMessage(
|
|
772
|
+
message.getContent(),
|
|
773
|
+
message.getConversation(),
|
|
774
|
+
new IMessageManager.ISendMessageCallback() {
|
|
775
|
+
@Override
|
|
776
|
+
public void onSuccess(Message sentMessage) {
|
|
777
|
+
WritableMap result = convertMessageToMap(sentMessage);
|
|
778
|
+
WritableMap event = new WritableNativeMap();
|
|
779
|
+
event.putString("messageId", messageId);
|
|
780
|
+
event.putMap("message", result);
|
|
781
|
+
sendEvent("onMessageSent", event);
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
@Override
|
|
785
|
+
public void onError(Message message, int errorCode) {
|
|
786
|
+
WritableMap errorResult = convertMessageToMap(message);
|
|
787
|
+
WritableMap event = new WritableNativeMap();
|
|
788
|
+
event.putString("messageId", messageId);
|
|
789
|
+
event.putMap("message", errorResult);
|
|
790
|
+
event.putInt("errorCode", errorCode);
|
|
791
|
+
sendEvent("onMessageSentError", event);
|
|
792
|
+
}
|
|
793
|
+
}
|
|
794
|
+
);
|
|
795
|
+
WritableMap result = convertMessageToMap(sendMsg);
|
|
796
|
+
result.putString("messageId", messageId);
|
|
797
|
+
promise.resolve(result);
|
|
798
|
+
} catch (Exception e) {
|
|
799
|
+
promise.reject("SEND_MESSAGE_ERROR", e.getMessage());
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
/**
|
|
804
|
+
* 获取历史消息
|
|
805
|
+
*/
|
|
806
|
+
@ReactMethod
|
|
807
|
+
public void getMessages(ReadableMap conversationMap, int direction, ReadableMap options, Promise promise) {
|
|
808
|
+
try {
|
|
809
|
+
Conversation conversation = convertMapToConversation(conversationMap);
|
|
810
|
+
GetMessageOptions getOptions = new GetMessageOptions();
|
|
811
|
+
|
|
812
|
+
if (options.hasKey("count")) {
|
|
813
|
+
getOptions.setCount(options.getInt("count"));
|
|
814
|
+
}
|
|
815
|
+
if (options.hasKey("startTime")) {
|
|
816
|
+
getOptions.setStartTime((long) options.getDouble("startTime"));
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
JIMConst.PullDirection pullDirection = direction == 0 ?
|
|
820
|
+
JIMConst.PullDirection.OLDER : JIMConst.PullDirection.NEWER;
|
|
821
|
+
|
|
822
|
+
JIM.getInstance().getMessageManager().getMessages(
|
|
823
|
+
conversation,
|
|
824
|
+
pullDirection,
|
|
825
|
+
getOptions,
|
|
826
|
+
new IMessageManager.IGetMessagesCallbackV3() {
|
|
827
|
+
@Override
|
|
828
|
+
public void onGetMessages(List<Message> messages, long timestamp, boolean hasMore, int code) {
|
|
829
|
+
WritableMap result = new WritableNativeMap();
|
|
830
|
+
WritableArray messageArray = new WritableNativeArray();
|
|
831
|
+
for (Message msg : messages) {
|
|
832
|
+
messageArray.pushMap(convertMessageToMap(msg));
|
|
833
|
+
}
|
|
834
|
+
result.putArray("messages", messageArray);
|
|
835
|
+
result.putDouble("timestamp", timestamp);
|
|
836
|
+
result.putBoolean("hasMore", hasMore);
|
|
837
|
+
result.putInt("code", code);
|
|
838
|
+
promise.resolve(result);
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
);
|
|
842
|
+
} catch (Exception e) {
|
|
843
|
+
promise.reject("GET_MESSAGES_ERROR", e.getMessage());
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
/**
|
|
848
|
+
* 撤回消息
|
|
849
|
+
*/
|
|
850
|
+
@ReactMethod
|
|
851
|
+
public void recallMessage(ReadableMap messageMap, ReadableMap extras, Promise promise) {
|
|
852
|
+
try {
|
|
853
|
+
String messageId = messageMap.getString("messageId");
|
|
854
|
+
Map<String, String> extrasMap = new HashMap<>();
|
|
855
|
+
if (extras != null) {
|
|
856
|
+
ReadableMapKeySetIterator it = extras.keySetIterator();
|
|
857
|
+
extrasMap = new HashMap<>();
|
|
858
|
+
while (it.hasNextKey()) {
|
|
859
|
+
extrasMap.put(it.nextKey(), extras.getString(it.nextKey()));
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
JIM.getInstance().getMessageManager().recallMessage(
|
|
863
|
+
messageId,
|
|
864
|
+
extrasMap,
|
|
865
|
+
new IMessageManager.IRecallMessageCallback() {
|
|
866
|
+
@Override
|
|
867
|
+
public void onSuccess(Message m) {
|
|
868
|
+
promise.resolve(true);
|
|
869
|
+
}
|
|
870
|
+
|
|
871
|
+
@Override
|
|
872
|
+
public void onError(int errorCode) {
|
|
873
|
+
promise.reject("RECALL_MESSAGE_ERROR", errorCode + "");
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
);
|
|
877
|
+
} catch (Exception e) {
|
|
878
|
+
promise.reject("RECALL_MESSAGE_ERROR", e.getMessage());
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
/**
|
|
883
|
+
* 添加消息反应
|
|
884
|
+
*/
|
|
885
|
+
@ReactMethod
|
|
886
|
+
public void addMessageReaction(ReadableMap messageMap, String reactionId, Promise promise) {
|
|
887
|
+
try {
|
|
888
|
+
String messageId = messageMap.getString("messageId");
|
|
889
|
+
Conversation conversation = convertMapToConversation(messageMap);
|
|
890
|
+
|
|
891
|
+
JIM.getInstance().getMessageManager().addMessageReaction(
|
|
892
|
+
messageId,
|
|
893
|
+
conversation,
|
|
894
|
+
reactionId,
|
|
895
|
+
new IMessageManager.ISimpleCallback() {
|
|
896
|
+
@Override
|
|
897
|
+
public void onSuccess() {
|
|
898
|
+
promise.resolve(true);
|
|
899
|
+
}
|
|
900
|
+
|
|
901
|
+
@Override
|
|
902
|
+
public void onError(int errorCode) {
|
|
903
|
+
promise.reject("ADD_REACTION_ERROR", errorCode + "");
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
);
|
|
907
|
+
} catch (Exception e) {
|
|
908
|
+
promise.reject("ADD_REACTION_ERROR", e.getMessage());
|
|
909
|
+
}
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
/**
|
|
913
|
+
* 移除消息反应
|
|
914
|
+
*/
|
|
915
|
+
@ReactMethod
|
|
916
|
+
public void removeMessageReaction(ReadableMap messageMap, String reactionId, Promise promise) {
|
|
917
|
+
try {
|
|
918
|
+
String messageId = messageMap.getString("messageId");
|
|
919
|
+
Conversation conversation = convertMapToConversation(messageMap);
|
|
920
|
+
|
|
921
|
+
JIM.getInstance().getMessageManager().removeMessageReaction(
|
|
922
|
+
messageId,
|
|
923
|
+
conversation,
|
|
924
|
+
reactionId,
|
|
925
|
+
new IMessageManager.ISimpleCallback() {
|
|
926
|
+
@Override
|
|
927
|
+
public void onSuccess() {
|
|
928
|
+
promise.resolve(true);
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
@Override
|
|
932
|
+
public void onError(int errorCode) {
|
|
933
|
+
promise.reject("REMOVE_REACTION_ERROR", errorCode + "");
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
);
|
|
937
|
+
} catch (Exception e) {
|
|
938
|
+
promise.reject("REMOVE_REACTION_ERROR", e.getMessage());
|
|
939
|
+
}
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
/**
|
|
943
|
+
* 发送图片消息
|
|
944
|
+
*/
|
|
945
|
+
@ReactMethod
|
|
946
|
+
public void sendImageMessage(ReadableMap messageMap, String messageId, Promise promise) {
|
|
947
|
+
try {
|
|
948
|
+
Conversation conversation = convertMapToConversation(messageMap);
|
|
949
|
+
ImageMessage imageMessage = new ImageMessage();
|
|
950
|
+
|
|
951
|
+
ReadableMap contentMap = messageMap.getMap("content");
|
|
952
|
+
if (contentMap.hasKey("localPath")) {
|
|
953
|
+
String path = FileUtils.convertContentUriToFile(getReactApplicationContext(), contentMap.getString("localPath"));
|
|
954
|
+
imageMessage.setLocalPath(path);
|
|
955
|
+
}
|
|
956
|
+
if (contentMap.hasKey("thumbnailLocalPath")) {
|
|
957
|
+
String path = FileUtils.convertContentUriToFile(getReactApplicationContext(), contentMap.getString("localPath"));
|
|
958
|
+
imageMessage.setThumbnailLocalPath(path);
|
|
959
|
+
}
|
|
960
|
+
if (contentMap.hasKey("url")) {
|
|
961
|
+
imageMessage.setUrl(contentMap.getString("url"));
|
|
962
|
+
}
|
|
963
|
+
if (contentMap.hasKey("thumbnailUrl")) {
|
|
964
|
+
imageMessage.setThumbnailUrl(contentMap.getString("thumbnailUrl"));
|
|
965
|
+
}
|
|
966
|
+
if (contentMap.hasKey("width")) {
|
|
967
|
+
imageMessage.setWidth(contentMap.getInt("width"));
|
|
968
|
+
}
|
|
969
|
+
if (contentMap.hasKey("height")) {
|
|
970
|
+
imageMessage.setHeight(contentMap.getInt("height"));
|
|
971
|
+
}
|
|
972
|
+
|
|
973
|
+
Message message = JIM.getInstance().getMessageManager().sendMediaMessage(
|
|
974
|
+
imageMessage,
|
|
975
|
+
conversation,
|
|
976
|
+
new IMessageManager.ISendMediaMessageCallback() {
|
|
977
|
+
@Override
|
|
978
|
+
public void onProgress(int progress, Message message) {
|
|
979
|
+
WritableMap params = new WritableNativeMap();
|
|
980
|
+
params.putString("messageId", messageId);
|
|
981
|
+
params.putInt("progress", progress);
|
|
982
|
+
params.putMap("message", convertMessageToMap(message));
|
|
983
|
+
Log.d("JuggleIM", "onMediaMessageProgress: " + progress);
|
|
984
|
+
sendEvent("onMediaMessageProgress", params);
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
@Override
|
|
988
|
+
public void onSuccess(Message message) {
|
|
989
|
+
WritableMap params = new WritableNativeMap();
|
|
990
|
+
params.putString("messageId", messageId);
|
|
991
|
+
params.putMap("message", convertMessageToMap(message));
|
|
992
|
+
sendEvent("onMediaMessageSent", params);
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
@Override
|
|
996
|
+
public void onError(Message message, int errorCode) {
|
|
997
|
+
WritableMap params = new WritableNativeMap();
|
|
998
|
+
params.putString("messageId", messageId);
|
|
999
|
+
params.putMap("message", convertMessageToMap(message));
|
|
1000
|
+
params.putInt("errorCode", errorCode);
|
|
1001
|
+
sendEvent("onMediaMessageSentError", params);
|
|
1002
|
+
}
|
|
1003
|
+
|
|
1004
|
+
@Override
|
|
1005
|
+
public void onCancel(Message message) {
|
|
1006
|
+
WritableMap params = new WritableNativeMap();
|
|
1007
|
+
params.putString("messageId", messageId);
|
|
1008
|
+
params.putMap("message", convertMessageToMap(message));
|
|
1009
|
+
sendEvent("onMediaMessageCancelled", params);
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
1012
|
+
);
|
|
1013
|
+
|
|
1014
|
+
WritableMap result = convertMessageToMap(message);
|
|
1015
|
+
result.putString("messageId", messageId);
|
|
1016
|
+
promise.resolve(result);
|
|
1017
|
+
} catch (Exception e) {
|
|
1018
|
+
promise.reject("SEND_IMAGE_MESSAGE_ERROR", e.getMessage());
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
/**
|
|
1023
|
+
* 发送文件消息
|
|
1024
|
+
*/
|
|
1025
|
+
@ReactMethod
|
|
1026
|
+
public void sendFileMessage(ReadableMap messageMap, String messageId, Promise promise) {
|
|
1027
|
+
try {
|
|
1028
|
+
Conversation conversation = convertMapToConversation(messageMap);
|
|
1029
|
+
FileMessage fileMessage = new FileMessage();
|
|
1030
|
+
|
|
1031
|
+
ReadableMap contentMap = messageMap.getMap("content");
|
|
1032
|
+
if (contentMap.hasKey("localPath")) {
|
|
1033
|
+
String path = FileUtils.convertContentUriToFile(getReactApplicationContext(), contentMap.getString("localPath"));
|
|
1034
|
+
fileMessage.setLocalPath(path);
|
|
1035
|
+
}
|
|
1036
|
+
if (contentMap.hasKey("url")) {
|
|
1037
|
+
fileMessage.setUrl(contentMap.getString("url"));
|
|
1038
|
+
}
|
|
1039
|
+
if (contentMap.hasKey("name")) {
|
|
1040
|
+
fileMessage.setName(contentMap.getString("name"));
|
|
1041
|
+
}
|
|
1042
|
+
if (contentMap.hasKey("size")) {
|
|
1043
|
+
fileMessage.setSize((long) contentMap.getDouble("size"));
|
|
1044
|
+
}
|
|
1045
|
+
if (contentMap.hasKey("type")) {
|
|
1046
|
+
fileMessage.setType(contentMap.getString("type"));
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
Message message = JIM.getInstance().getMessageManager().sendMediaMessage(
|
|
1050
|
+
fileMessage,
|
|
1051
|
+
conversation,
|
|
1052
|
+
new IMessageManager.ISendMediaMessageCallback() {
|
|
1053
|
+
@Override
|
|
1054
|
+
public void onProgress(int progress, Message message) {
|
|
1055
|
+
WritableMap params = new WritableNativeMap();
|
|
1056
|
+
params.putString("messageId", messageId);
|
|
1057
|
+
params.putInt("progress", progress);
|
|
1058
|
+
params.putMap("message", convertMessageToMap(message));
|
|
1059
|
+
sendEvent("onMediaMessageProgress", params);
|
|
1060
|
+
}
|
|
1061
|
+
|
|
1062
|
+
@Override
|
|
1063
|
+
public void onSuccess(Message message) {
|
|
1064
|
+
WritableMap params = new WritableNativeMap();
|
|
1065
|
+
params.putString("messageId", messageId);
|
|
1066
|
+
params.putMap("message", convertMessageToMap(message));
|
|
1067
|
+
sendEvent("onMediaMessageSent", params);
|
|
1068
|
+
}
|
|
1069
|
+
|
|
1070
|
+
@Override
|
|
1071
|
+
public void onError(Message message, int errorCode) {
|
|
1072
|
+
WritableMap params = new WritableNativeMap();
|
|
1073
|
+
params.putString("messageId", messageId);
|
|
1074
|
+
params.putMap("message", convertMessageToMap(message));
|
|
1075
|
+
params.putInt("errorCode", errorCode);
|
|
1076
|
+
sendEvent("onMediaMessageSentError", params);
|
|
1077
|
+
}
|
|
1078
|
+
|
|
1079
|
+
@Override
|
|
1080
|
+
public void onCancel(Message message) {
|
|
1081
|
+
WritableMap params = new WritableNativeMap();
|
|
1082
|
+
params.putString("messageId", messageId);
|
|
1083
|
+
params.putMap("message", convertMessageToMap(message));
|
|
1084
|
+
sendEvent("onMediaMessageCancelled", params);
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
);
|
|
1088
|
+
|
|
1089
|
+
WritableMap result = convertMessageToMap(message);
|
|
1090
|
+
result.putString("messageId", messageId);
|
|
1091
|
+
promise.resolve(result);
|
|
1092
|
+
} catch (Exception e) {
|
|
1093
|
+
promise.reject("SEND_FILE_MESSAGE_ERROR", e.getMessage());
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
/**
|
|
1098
|
+
* 发送语音消息
|
|
1099
|
+
*/
|
|
1100
|
+
@ReactMethod
|
|
1101
|
+
public void sendVoiceMessage(ReadableMap messageMap, Promise promise) {
|
|
1102
|
+
try {
|
|
1103
|
+
Conversation conversation = convertMapToConversation(messageMap);
|
|
1104
|
+
VoiceMessage voiceMessage = new VoiceMessage();
|
|
1105
|
+
|
|
1106
|
+
ReadableMap contentMap = messageMap.getMap("content");
|
|
1107
|
+
if (contentMap.hasKey("localPath")) {
|
|
1108
|
+
String path = FileUtils.convertContentUriToFile(getReactApplicationContext(), contentMap.getString("localPath"));
|
|
1109
|
+
voiceMessage.setLocalPath(path);
|
|
1110
|
+
}
|
|
1111
|
+
if (contentMap.hasKey("url")) {
|
|
1112
|
+
voiceMessage.setUrl(contentMap.getString("url"));
|
|
1113
|
+
}
|
|
1114
|
+
if (contentMap.hasKey("duration")) {
|
|
1115
|
+
voiceMessage.setDuration(contentMap.getInt("duration"));
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1118
|
+
Message message = JIM.getInstance().getMessageManager().sendMediaMessage(
|
|
1119
|
+
voiceMessage,
|
|
1120
|
+
conversation,
|
|
1121
|
+
new IMessageManager.ISendMediaMessageCallback() {
|
|
1122
|
+
@Override
|
|
1123
|
+
public void onProgress(int progress, Message message) {
|
|
1124
|
+
WritableMap params = new WritableNativeMap();
|
|
1125
|
+
params.putInt("progress", progress);
|
|
1126
|
+
params.putMap("message", convertMessageToMap(message));
|
|
1127
|
+
Log.d("JuggleIM", "onMediaMessageProgress: " + progress);
|
|
1128
|
+
sendEvent("onMediaMessageProgress", params);
|
|
1129
|
+
}
|
|
1130
|
+
|
|
1131
|
+
@Override
|
|
1132
|
+
public void onSuccess(Message message) {
|
|
1133
|
+
WritableMap result = convertMessageToMap(message);
|
|
1134
|
+
Log.d("JuggleIM", "onMediaMessageSent");
|
|
1135
|
+
sendEvent("onMediaMessageSent", result);
|
|
1136
|
+
}
|
|
1137
|
+
|
|
1138
|
+
@Override
|
|
1139
|
+
public void onError(Message message, int errorCode) {
|
|
1140
|
+
WritableMap params = new WritableNativeMap();
|
|
1141
|
+
params.putMap("message", convertMessageToMap(message));
|
|
1142
|
+
params.putInt("errorCode", errorCode);
|
|
1143
|
+
sendEvent("onMediaMessageSentError", params);
|
|
1144
|
+
}
|
|
1145
|
+
|
|
1146
|
+
@Override
|
|
1147
|
+
public void onCancel(Message message) {
|
|
1148
|
+
WritableMap result = convertMessageToMap(message);
|
|
1149
|
+
sendEvent("onMediaMessageCancelled", result);
|
|
1150
|
+
}
|
|
1151
|
+
}
|
|
1152
|
+
);
|
|
1153
|
+
|
|
1154
|
+
WritableMap result = convertMessageToMap(message);
|
|
1155
|
+
promise.resolve(result);
|
|
1156
|
+
} catch (Exception e) {
|
|
1157
|
+
promise.reject("SEND_VOICE_MESSAGE_ERROR", e.getMessage());
|
|
1158
|
+
}
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1161
|
+
private Message convertMapToMessage(ReadableMap messageMap) {
|
|
1162
|
+
Message message = new Message();
|
|
1163
|
+
Conversation conversation = convertMapToConversation(messageMap);
|
|
1164
|
+
message.setConversation(conversation);
|
|
1165
|
+
if (messageMap.hasKey("messageId")) {
|
|
1166
|
+
message.setMessageId(messageMap.getString("messageId"));
|
|
1167
|
+
}
|
|
1168
|
+
|
|
1169
|
+
if (messageMap.hasKey("clientMsgNo")) {
|
|
1170
|
+
message.setClientMsgNo((long) messageMap.getDouble("clientMsgNo"));
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
if (messageMap.hasKey("timestamp")) {
|
|
1174
|
+
message.setTimestamp((long) messageMap.getDouble("timestamp"));
|
|
1175
|
+
}
|
|
1176
|
+
|
|
1177
|
+
if (messageMap.hasKey("senderUserId")) {
|
|
1178
|
+
message.setSenderUserId(messageMap.getString("senderUserId"));
|
|
1179
|
+
}
|
|
1180
|
+
// 设置消息内容
|
|
1181
|
+
if (messageMap.hasKey("content")) {
|
|
1182
|
+
ReadableMap contentMap = messageMap.getMap("content");
|
|
1183
|
+
MessageContent content = convertMapToMessageContent(contentMap);
|
|
1184
|
+
message.setContent(content);
|
|
1185
|
+
}
|
|
1186
|
+
|
|
1187
|
+
// 设置消息方向
|
|
1188
|
+
if (messageMap.hasKey("direction")) {
|
|
1189
|
+
Message.MessageDirection direction = Message.MessageDirection.setValue(messageMap.getInt("direction"));
|
|
1190
|
+
message.setDirection(direction);
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
// 设置消息状态
|
|
1194
|
+
if (messageMap.hasKey("state")) {
|
|
1195
|
+
Message.MessageState state = Message.MessageState.setValue(messageMap.getInt("state"));
|
|
1196
|
+
message.setState(state);
|
|
1197
|
+
}
|
|
1198
|
+
|
|
1199
|
+
// 设置是否已读
|
|
1200
|
+
if (messageMap.hasKey("hasRead")) {
|
|
1201
|
+
message.setHasRead(messageMap.getBoolean("hasRead"));
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1204
|
+
// 设置本地属性
|
|
1205
|
+
if (messageMap.hasKey("localAttribute")) {
|
|
1206
|
+
message.setLocalAttribute(messageMap.getString("localAttribute"));
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1209
|
+
// 设置是否删除
|
|
1210
|
+
if (messageMap.hasKey("isDelete")) {
|
|
1211
|
+
message.setDelete(messageMap.getBoolean("isDelete"));
|
|
1212
|
+
}
|
|
1213
|
+
|
|
1214
|
+
// 设置是否编辑
|
|
1215
|
+
if (messageMap.hasKey("isEdit")) {
|
|
1216
|
+
message.setEdit(messageMap.getBoolean("isEdit"));
|
|
1217
|
+
}
|
|
1218
|
+
return message;
|
|
1219
|
+
}
|
|
1220
|
+
}
|