Skip to content
2 changes: 1 addition & 1 deletion android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ android {
repositories {
google()
mavenCentral()
maven { url 'http://devrepo.kakao.com:8088/nexus/content/groups/public/' }
maven { url 'https://devrepo.kakao.com:8088/nexus/content/groups/public/' }
}

dependencies {
Expand Down
2 changes: 1 addition & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export const addFriend = id => {
};

export const chat = id => {
return ARNKakaoChannel.chat(id);
return ARNKakaoChannel.chatNoPromise(id);
};

export default {
Expand Down
24 changes: 17 additions & 7 deletions ios/ARNKakaoChannel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,24 @@ import SafariServices
@objc(ARNKakaoChannel)
public class ARNKakaoChannel: NSObject {
private var safariViewController: SFSafariViewController?

public override init() {
let appKey: String? = Bundle.main.object(forInfoDictionaryKey: "KAKAO_APP_KEY") as? String
KakaoSDKCommon.initSDK(appKey: appKey!)
KakaoSDK.initSDK(appKey: appKey!)
}

@objc
static func requiresMainQueueSetup() -> Bool {
return true;
}

func presentSafari(url: URL,
completion: @escaping (Bool) -> Void) -> Void {
let queue = DispatchQueue(label: "KakaoChannel")
self.safariViewController = SFSafariViewController(url: url)
self.safariViewController?.modalTransitionStyle = .crossDissolve
self.safariViewController?.modalPresentationStyle = .overCurrentContext

queue.async {
UIApplication.shared.open(url,
options: [:],
Expand All @@ -35,7 +40,7 @@ public class ARNKakaoChannel: NSObject {
})
}
}

@objc(addFriend:resolve:reject:)
func addFriend(_ friendId: NSString,
resolver resolve: @escaping RCTPromiseResolveBlock,
Expand All @@ -45,15 +50,20 @@ public class ARNKakaoChannel: NSObject {
resolve(success);
})
}

@objc(chat:resolve:reject:)
func chat(_ friendId: NSString,

@objc func chat(_ friendId: NSString,
resolver resolve: @escaping RCTPromiseResolveBlock,
rejector reject: @escaping RCTPromiseRejectBlock) -> Void {
let url: URL? = TalkApi.shared.makeUrlForChannelChat(channelPublicId: friendId as String)
self.presentSafari(url: url!, completion: { success in
resolve(success);
})
}

@objc func chatNoPromise(_ friendId: NSString) -> Void {
let url: URL? = TalkApi.shared.makeUrlForChannelChat(channelPublicId: friendId as String)
self.presentSafari(url: url!, completion: { success in
})
}
}

2 changes: 1 addition & 1 deletion ios/ARNKakaoChannelBridge.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

#import <Foundation/Foundation.h>

@interface ARNKakaoLoginBridge: NSObject
@interface ARNKakaoChannelBridge: NSObject
@end

#endif /* ARNKakaoChannelBridge_h */
6 changes: 4 additions & 2 deletions ios/ARNKakaoChannelBridge.m
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,14 @@

@interface RCT_EXTERN_MODULE(ARNKakaoChannel, NSObject)

RCT_EXTERN_METHOD(chatNoPromise: (NSString *) friendId);

RCT_EXTERN_METHOD(addFriend: (NSString *) friendId
resolver: (RCTPromiseResolveBlock *)resolve
rejecter: (RCTPromiseRejectBlock *)reject);

RCT_EXTERN_METHOD(chat: (NSString *) friendId
resolver: (RCTPromiseResolveBlock *)resolve
rejecter: (RCTPromiseRejectBlock *)reject);
resolver: (RCTPromiseResolveBlock)resolve
rejecter: (RCTPromiseRejectBlock)reject);

@end