@@ -2425,6 +2425,150 @@ - (JMSGOptionalContent *)convertDicToJMSGOptionalContent:(NSDictionary *)dic {
24252425 }
24262426}
24272427
2428+ RCT_EXPORT_METHOD (forwardMessage:(NSDictionary *)param
2429+ successCallback:(RCTResponseSenderBlock)successCallback
2430+ failCallBack:(RCTResponseSenderBlock)failCallback) {
2431+
2432+ NSString *appKey = nil ;
2433+ if (param[@" appKey" ]) {
2434+ appKey = param[@" appKey" ];
2435+ } else {
2436+ appKey = [JMessageHelper shareInstance ].JMessageAppKey ;
2437+ }
2438+
2439+ if ([param[@" type" ] isEqual: @" single" ] && param[@" username" ] != nil ) {
2440+ [JMSGConversation createSingleConversationWithUsername: param[@" username" ] appKey: appKey completionHandler: ^(id resultObject, NSError *error) {
2441+ if (error) {
2442+ failCallback (@[[error errorToDictionary ]]);
2443+ return ;
2444+ }
2445+
2446+ JMSGConversation *conversation = resultObject;
2447+ JMSGMessage *message = [conversation messageWithMessageId: param[@" id" ]];
2448+
2449+ if ([message.content isKindOfClass: [JMSGMediaAbstractContent class ]]) {
2450+ JMSGMediaAbstractContent *content = (JMSGMediaAbstractContent *)message.content ;
2451+ content.uploadHandler = ^(float percent, NSString *msgID) {
2452+
2453+ [self .bridge.eventDispatcher sendAppEventWithName: uploadProgressEvent body: @{@" messageId" : msgID,
2454+ @" progress" : @(percent)}];
2455+ };
2456+ }
2457+
2458+ JMSGOptionalContent *messageSendingOptions = nil ;
2459+ if (param[@" messageSendingOptions" ] && [param[@" messageSendingOptions" ] isKindOfClass: [NSDictionary class ]]) {
2460+ messageSendingOptions = [self convertDicToJMSGOptionalContent: param[@" messageSendingOptions" ]];
2461+ }
2462+
2463+ NSDictionary *target = nil ;
2464+ if (param[@" target" ]) {
2465+ target = param[@" " ];
2466+ } else {
2467+ failCallback (@[[self getParamError ]]);
2468+ return ;
2469+ }
2470+
2471+ if ([target[@" type" ] isEqualToString: @" group" ]) {
2472+ [JMSGGroup groupInfoWithGroupId: target[@" id" ] completionHandler: ^(id resultObject, NSError *error) {
2473+ if (error) {
2474+ failCallback (@[[error errorToDictionary ]]);
2475+ return ;
2476+ }
2477+ JMSGGroup *group = resultObject;
2478+ [JMSGMessage forwardMessage: message target: group optionalContent: messageSendingOptions];
2479+ }];
2480+ } else {
2481+ NSString *targetAppkey = nil ;
2482+ if (target[@" appKey" ]) {
2483+ targetAppkey = target[@" appKey" ];
2484+ }
2485+ [JMSGUser userInfoArrayWithUsernameArray: @[target[@" user" ]] appKey: targetAppkey completionHandler: ^(id resultObject, NSError *error) {
2486+ if (error) {
2487+ failCallback (@[[error errorToDictionary ]]);
2488+ return ;
2489+ }
2490+
2491+ NSArray *userArr = resultObject;
2492+ if (userArr.count < 1 ) {
2493+ failCallback (@[[self getErrorWithLog: @" cann't find user by usernaem" ]]);
2494+ } else {
2495+ JMSGUser *user = resultObject[0 ];
2496+ [JMSGMessage forwardMessage: message target: user optionalContent: messageSendingOptions];
2497+ }
2498+ }];
2499+ }
2500+
2501+ }];
2502+ } else {
2503+ [JMSGConversation createGroupConversationWithGroupId: param[@" groupId" ] completionHandler: ^(id resultObject, NSError *error) {
2504+ if (error) {
2505+ failCallback (@[[error errorToDictionary ]]);
2506+ return ;
2507+ }
2508+
2509+ JMSGConversation *conversation = resultObject;
2510+ JMSGMessage *message = [conversation messageWithMessageId: param[@" id" ]];
2511+
2512+ if ([message.content isKindOfClass: [JMSGMediaAbstractContent class ]]) {
2513+ JMSGMediaAbstractContent *content = (JMSGMediaAbstractContent *)message.content ;
2514+ content.uploadHandler = ^(float percent, NSString *msgID) {
2515+ [self .bridge.eventDispatcher sendAppEventWithName: uploadProgressEvent body: @{@" messageId" : msgID,
2516+ @" progress" : @(percent)}];
2517+ };
2518+ }
2519+
2520+ JMSGOptionalContent *messageSendingOptions = nil ;
2521+ if (param[@" messageSendingOptions" ] && [param[@" messageSendingOptions" ] isKindOfClass: [NSDictionary class ]]) {
2522+ messageSendingOptions = [self convertDicToJMSGOptionalContent: param[@" messageSendingOptions" ]];
2523+ }
2524+
2525+ NSDictionary *target = nil ;
2526+ if (param[@" target" ]) {
2527+ target = param[@" " ];
2528+ } else {
2529+ failCallback (@[[self getParamError ]]);
2530+ return ;
2531+ }
2532+
2533+ if ([target[@" type" ] isEqualToString: @" group" ]) {
2534+ [JMSGGroup groupInfoWithGroupId: target[@" id" ] completionHandler: ^(id resultObject, NSError *error) {
2535+ if (error) {
2536+ failCallback (@[[error errorToDictionary ]]);
2537+ return ;
2538+ }
2539+ JMSGGroup *group = resultObject;
2540+ [JMSGMessage forwardMessage: message target: group optionalContent: messageSendingOptions];
2541+ }];
2542+ } else {
2543+ NSString *targetAppkey = nil ;
2544+ if (target[@" appKey" ]) {
2545+ targetAppkey = target[@" appKey" ];
2546+ }
2547+ [JMSGUser userInfoArrayWithUsernameArray: @[target[@" user" ]] appKey: targetAppkey completionHandler: ^(id resultObject, NSError *error) {
2548+ if (error) {
2549+ failCallback (@[[error errorToDictionary ]]);
2550+ return ;
2551+ }
2552+
2553+ NSArray *userArr = resultObject;
2554+ if (userArr.count < 1 ) {
2555+ failCallback (@[[self getErrorWithLog: @" cann't find user by usernaem" ]]);
2556+ } else {
2557+ JMSGUser *user = resultObject[0 ];
2558+ [JMSGMessage forwardMessage: message target: user optionalContent: messageSendingOptions];
2559+ }
2560+ }];
2561+ }
2562+ // if (messageSendingOptions) {
2563+ // [conversation sendMessage:message optionalContent:messageSendingOptions];
2564+ // } else {
2565+ // [conversation sendMessage:message];
2566+ // }
2567+
2568+ }];
2569+ }
2570+ }
2571+
24282572RCT_EXPORT_METHOD (blockGroupMessage:(NSDictionary *)param
24292573 successCallback:(RCTResponseSenderBlock)successCallback
24302574 failCallBack:(RCTResponseSenderBlock)failCallback) {
0 commit comments