Skip to content

Commit fe6c0e2

Browse files
committed
Apply v8 - iOS
1 parent d6396ab commit fe6c0e2

File tree

4 files changed

+482
-127
lines changed

4 files changed

+482
-127
lines changed

ios/RCTConvert+ChannelIO.h

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,50 @@
1414
NS_ASSUME_NONNULL_BEGIN
1515

1616
@interface RCTConvert (ChannelIO)
17-
+ (ChannelPluginSettings *)settings:(id)json;
17+
+ (BootConfig *)bootConfig:(id)json;
1818
+ (Profile *)profile:(id)json;
19-
+ (LauncherConfig *)launcherConfig:(id)json;
19+
+ (ChannelButtonOption *)channelButtonOption:(id)json;
2020
@end
2121

22+
// LanguageOption
23+
static NSString * const LANGUAGE_OPTION_KO = @"ko";
24+
static NSString * const LANGUAGE_OPTION_EN = @"en";
25+
static NSString * const LANGUAGE_OPTION_JA = @"ja";
26+
static NSString * const LANGUAGE_OPTION_DEVICE = @"device";
27+
28+
// BootStatus
29+
static NSString * const BOOT_STATUS_SUCCESS = @"SUCCESS";
30+
static NSString * const BOOT_STATUS_NOT_INITIALIZED = @"NOT_INITIALIZED";
31+
static NSString * const BOOT_STATUS_NETWORK_TIMEOUT = @"NETWORK_TIMEOUT";
32+
static NSString * const BOOT_STATUS_NOT_AVAILABLE_VERSION = @"NOT_AVAILABLE_VERSION";
33+
static NSString * const BOOT_STATUS_SERVICE_UNDER_CONSTRUCTION = @"SERVICE_UNDER_CONSTRUCTION";
34+
static NSString * const BOOT_STATUS_REQUIRE_PAYMENT = @"REQUIRE_PAYMENT";
35+
static NSString * const BOOT_STATUS_ACCESS_DENIED = @"ACCESS_DENIED";
36+
static NSString * const BOOT_STATUS_UNKNOWN_ERROR = @"UNKNOWN_ERROR";
37+
38+
// ChannelButtonOption
39+
static NSString * const CHANNEL_BUTTON_OPTION_POSITION = @"position";
40+
static NSString * const CHANNEL_BUTTON_OPTION_POSITION_RIGHT = @"right";
41+
static NSString * const CHANNEL_BUTTON_OPTION_POSITION_LEFT = @"left";
42+
static NSString * const CHANNEL_BUTTON_OPTION_X_MARGIN = @"xMargin";
43+
static NSString * const CHANNEL_BUTTON_OPTION_Y_MARGIN = @"yMargin";
44+
45+
static NSString * const KEY_PLUGIN_KEY = @"pluginKey";
46+
static NSString * const KEY_MEMBER_HASH = @"memberHash";
47+
static NSString * const KEY_HIDE_POPUP = @"hidePopup";
48+
static NSString * const KEY_TRACK_DEFAULT_EVENT = @"trackDefaultEvent";
49+
static NSString * const KEY_CHANNEL_BUTTON_OPTION = @"channelButtonOption";
50+
51+
static NSString * const KEY_MEMBER_ID = @"memberId";
52+
static NSString * const KEY_LANGUAGE = @"language";
53+
static NSString * const KEY_PROFILE = @"profile";
54+
55+
// deprecated
56+
static NSString * const KEY_HIDE_DEFAULT_IN_APP_PUSH = @"hideDefaultInAppPush";
57+
static NSString * const KEY_ENABLED_TRACK_DEFAULT_EVENT = @"enabledTrackDefaultEvent";
58+
static NSString * const KEY_LAUNCHER_CONFIG = @"launcherConfig";
59+
60+
static NSString * const KEY_USER_ID = @"userId";
61+
static NSString * const KEY_LOCALE = @"locale";
62+
2263
NS_ASSUME_NONNULL_END

ios/RCTConvert+ChannelIO.m

Lines changed: 71 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -11,78 +11,94 @@
1111
@implementation RCTConvert (ChannelIOEnums)
1212

1313
RCT_ENUM_CONVERTER(
14-
CHLocale,
15-
(@{@"ko": @(CHLocaleKorean),
16-
@"en": @(CHLocaleEnglish),
17-
@"ja": @(CHLocaleJapanese),
18-
@"device": @(CHLocaleDevice)
14+
LanguageOption,
15+
(@{LANGUAGE_OPTION_KO: @(LanguageOptionKorean),
16+
LANGUAGE_OPTION_EN: @(LanguageOptionEnglish),
17+
LANGUAGE_OPTION_JA: @(LanguageOptionJapanese),
18+
LANGUAGE_OPTION_DEVICE: @(LanguageOptionDevice)
1919
}),
20-
CHLocaleDevice,
20+
LanguageOptionDevice,
2121
integerValue
2222
)
2323

2424
RCT_ENUM_CONVERTER(
25-
ChannelPluginCompletionStatus,
26-
(@{@"SUCCESS": @(ChannelPluginCompletionStatusSuccess),
27-
@"UNKNOWN_ERROR": @(ChannelPluginCompletionStatusUnknown),
28-
@"ACCESS_DENIED": @(ChannelPluginCompletionStatusAccessDenied),
29-
@"NETWORK_TIMEOUT": @(ChannelPluginCompletionStatusNetworkTimeout),
30-
@"REQUIRE_PAYMENT": @(ChannelPluginCompletionStatusRequirePayment),
31-
@"NOT_INITIALIZED": @(ChannelPluginCompletionStatusNotInitialized),
32-
@"SERVICE_UNDER_CONSTRUCTION": @(ChannelPluginCompletionStatusServiceUnderConstruction)
25+
BootStatus,
26+
(@{BOOT_STATUS_SUCCESS: @(BootStatusSuccess),
27+
BOOT_STATUS_NOT_INITIALIZED: @(BootStatusNotInitialized),
28+
BOOT_STATUS_NETWORK_TIMEOUT: @(BootStatusNetworkTimeout),
29+
BOOT_STATUS_NOT_AVAILABLE_VERSION: @(BootStatusNotAvailableVersion),
30+
BOOT_STATUS_SERVICE_UNDER_CONSTRUCTION: @(BootStatusServiceUnderConstruction),
31+
BOOT_STATUS_REQUIRE_PAYMENT: @(BootStatusRequirePayment),
32+
BOOT_STATUS_ACCESS_DENIED: @(BootStatusAccessDenied),
33+
BOOT_STATUS_UNKNOWN_ERROR: @(BootStatusUnknown)
3334
}),
34-
ChannelPluginCompletionStatusNotInitialized,
35+
BootStatusNotInitialized,
3536
integerValue
3637
)
3738

3839
RCT_ENUM_CONVERTER(
39-
LauncherPosition,
40-
(@{@"right": @(LauncherPositionRight),
41-
@"left": @(LauncherPositionLeft)
40+
ChannelButtonPosition,
41+
(@{CHANNEL_BUTTON_OPTION_POSITION_RIGHT: @(ChannelButtonPositionRight),
42+
CHANNEL_BUTTON_OPTION_POSITION_LEFT: @(ChannelButtonPositionLeft)
4243
}),
43-
LauncherPositionRight,
44+
ChannelButtonPositionRight,
4445
integerValue
4546
)
4647

4748
@end
4849

4950
@implementation RCTConvert (ChannelIO)
5051

51-
+ (ChannelPluginSettings *)settings:(id)json {
52-
ChannelPluginSettings *settings = [[ChannelPluginSettings alloc] init];
53-
settings.pluginKey = [RCTConvert NSString:json[@"pluginKey"]];
54-
settings.debugMode = [RCTConvert BOOL:json[@"debugMode"]];
55-
settings.hideDefaultInAppPush = [RCTConvert BOOL:json[@"hideDefaultInAppPush"]];
56-
settings.launcherConfig = [RCTConvert launcherConfig:json[@"launcherConfig"]];
57-
if ([json[@"memberId"] length] == 0 && [json[@"userId"] length] != 0) {
58-
settings.memberId = [RCTConvert NSString:json[@"userId"]];
52+
+ (BootConfig *)bootConfig:(id)json {
53+
BootConfig *settings = [[BootConfig alloc] init];
54+
settings.pluginKey = [RCTConvert NSString:json[KEY_PLUGIN_KEY]];
55+
settings.memberHash = [RCTConvert NSString:json[KEY_MEMBER_HASH]];
56+
settings.hidePopup = json[KEY_HIDE_POPUP] == nil
57+
? [RCTConvert BOOL:json[KEY_HIDE_DEFAULT_IN_APP_PUSH]] : [RCTConvert BOOL:json[KEY_HIDE_POPUP]];
58+
settings.trackDefaultEvent = json[KEY_TRACK_DEFAULT_EVENT] == nil
59+
? [RCTConvert BOOL:json[KEY_ENABLED_TRACK_DEFAULT_EVENT]]
60+
: [RCTConvert BOOL:json[KEY_TRACK_DEFAULT_EVENT]];
61+
62+
if (json[KEY_LAUNCHER_CONFIG] == nil && json[KEY_CHANNEL_BUTTON_OPTION] != nil) {
63+
settings.channelButtonOption = [RCTConvert channelButtonOption:json[KEY_CHANNEL_BUTTON_OPTION]];
64+
} else if (json[KEY_LAUNCHER_CONFIG] != nil && json[KEY_CHANNEL_BUTTON_OPTION] == nil) {
65+
settings.channelButtonOption = [RCTConvert channelButtonOption:json[KEY_LAUNCHER_CONFIG]];
66+
}
67+
68+
if (json[KEY_MEMBER_ID] == nil && json[KEY_USER_ID] != nil) {
69+
settings.memberId = [RCTConvert NSString:json[KEY_USER_ID]];
5970
} else {
60-
settings.memberId = [RCTConvert NSString:json[@"memberId"]];
71+
settings.memberId = [RCTConvert NSString:json[KEY_MEMBER_ID]];
6172
}
6273

63-
NSString *language = [RCTConvert NSString:json[@"language"]];
64-
NSString *locale = [RCTConvert NSString:json[@"locale"]];
65-
if (json[@"locale"] != 0) {
66-
if ([locale isEqualToString:@"ko"]) {
67-
settings.language = CHLocaleKorean;
68-
} else if ([locale isEqualToString:@"ja"]) {
69-
settings.language = CHLocaleJapanese;
70-
} else if ([locale isEqualToString:@"en"]) {
71-
settings.language = CHLocaleEnglish;
74+
NSString *language = [RCTConvert NSString:json[KEY_LANGUAGE]];
75+
NSString *locale = [RCTConvert NSString:json[KEY_LOCALE]];
76+
if (json[KEY_LOCALE] != nil) {
77+
if ([locale isEqualToString:LANGUAGE_OPTION_KO]) {
78+
settings.language = LanguageOptionKorean;
79+
} else if ([locale isEqualToString:LANGUAGE_OPTION_JA]) {
80+
settings.language = LanguageOptionJapanese;
81+
} else if ([locale isEqualToString:LANGUAGE_OPTION_EN]) {
82+
settings.language = LanguageOptionEnglish;
7283
} else {
73-
settings.language = CHLocaleDevice;
84+
settings.language = LanguageOptionDevice;
7485
}
7586
} else {
76-
if ([language isEqualToString:@"ko"]) {
77-
settings.language = CHLocaleKorean;
78-
} else if ([language isEqualToString:@"ja"]) {
79-
settings.language = CHLocaleJapanese;
80-
} else if ([language isEqualToString:@"en"]) {
81-
settings.language = CHLocaleEnglish;
87+
if ([language isEqualToString:LANGUAGE_OPTION_KO]) {
88+
settings.language = LanguageOptionKorean;
89+
} else if ([language isEqualToString:LANGUAGE_OPTION_JA]) {
90+
settings.language = LanguageOptionJapanese;
91+
} else if ([language isEqualToString:LANGUAGE_OPTION_EN]) {
92+
settings.language = LanguageOptionEnglish;
8293
} else {
83-
settings.language = CHLocaleDevice;
94+
settings.language = LanguageOptionDevice;
8495
}
8596
}
97+
98+
if (json[KEY_PROFILE] != nil) {
99+
settings.profile = [RCTConvert profile:json[KEY_PROFILE]];
100+
}
101+
86102
return settings;
87103
}
88104

@@ -92,37 +108,27 @@ + (Profile *)profile:(NSDictionary *)json {
92108
}
93109

94110
Profile *profile = [[Profile alloc] init];
95-
[profile setWithName:[RCTConvert NSString:json[@"name"]]];
96-
[profile setWithEmail:[RCTConvert NSString:json[@"email"]]];
97-
[profile setWithAvatarUrl:[RCTConvert NSString:json[@"avatarUrl"]]];
98-
[profile setWithMobileNumber:[RCTConvert NSString:json[@"mobileNumber"]]];
99-
100-
[json enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
101-
if (![key isEqual:@"name"] &&
102-
![key isEqual:@"email"] &&
103-
![key isEqual:@"avatarUrl"] &&
104-
![key isEqual:@"mobileNumber"]) {
105-
[profile setWithPropertyKey:key value:obj];
106-
}
111+
[json enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id obj, BOOL * _Nonnull stop) {
112+
[profile setWithPropertyKey:key value:obj];
107113
}];
108114

109115
return profile;
110116
}
111117

112-
+ (LauncherConfig *)launcherConfig:(id)json {
118+
+ (ChannelButtonOption *)channelButtonOption:(id)json {
113119
if (json == nil) {
114120
return nil;
115121
}
116122

117-
LauncherConfig *config = [[LauncherConfig alloc] init];
123+
ChannelButtonOption *config = [[ChannelButtonOption alloc] init];
118124

119-
config.xMargin = [RCTConvert float:json[@"xMargin"]];
120-
config.yMargin = [RCTConvert float:json[@"yMargin"]];
121-
NSString *position = [RCTConvert NSString:@"position"];
122-
if ([position isEqualToString:@"left"]) {
123-
config.position = LauncherPositionLeft;
125+
config.xMargin = [RCTConvert float:json[CHANNEL_BUTTON_OPTION_X_MARGIN]];
126+
config.yMargin = [RCTConvert float:json[CHANNEL_BUTTON_OPTION_Y_MARGIN]];
127+
NSString *position = [RCTConvert NSString:json[CHANNEL_BUTTON_OPTION_POSITION]];
128+
if ([position isEqualToString:CHANNEL_BUTTON_OPTION_POSITION_LEFT]) {
129+
config.position = ChannelButtonPositionLeft;
124130
} else {
125-
config.position = LauncherPositionRight;
131+
config.position = ChannelButtonPositionRight;
126132
}
127133
return config;
128134
}

ios/RNChannelIO.h

Lines changed: 77 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,83 @@ NS_ASSUME_NONNULL_BEGIN
1717
@interface RNChannelIO : RCTEventEmitter <RCTBridgeModule, ChannelPluginDelegate>
1818
@end
1919

20-
static NSString * const ON_CHANGE_BADGE = @"ChannelIO:Event:OnChangeBadge";
21-
static NSString * const ON_RECEIVE_PUSH = @"ChannelIO:Event:OnReceivePush";
22-
static NSString * const WILL_SHOW_MESSENGER = @"ChannelIO:Event:WillShowMessenger";
23-
static NSString * const WILL_HIDE_MESSENGER = @"ChannelIO:Event:WillHideMessenger";
24-
static NSString * const ON_CLICK_CHAT_LINK = @"ChannelIO:Event:OnClickChatLink";
25-
static NSString * const ON_CHANGE_PROFILE = @"ChannelIO:Event:OnChangeProfile";
20+
// event key
21+
static NSString * const KEY_EVENT = @"Event";
22+
static NSString * const KEY_EVENT_ON_BADGE_CHANGED = @"ON_BADGE_CHANGED";
23+
static NSString * const KEY_EVENT_ON_PROFILE_CHANGED = @"ON_PROFILE_CHANGED";
24+
static NSString * const KEY_EVENT_ON_POPUP_DATA_RECEIVED = @"ON_POPUP_DATA_RECEIVED";
25+
static NSString * const KEY_EVENT_ON_SHOW_MESSENGER = @"ON_SHOW_MESSENGER";
26+
static NSString * const KEY_EVENT_ON_HIDE_MESSENGER = @"ON_HIDE_MESSENGER";
27+
static NSString * const KEY_EVENT_ON_CHAT_CREATED = @"ON_CHAT_CREATED";
28+
static NSString * const KEY_EVENT_ON_PRE_URL_CLICKED = @"ON_PRE_URL_CLICKED";
29+
static NSString * const KEY_EVENT_ON_URL_CLICKED = @"ON_URL_CLICKED";
30+
static NSString * const KEY_EVENT_ON_PUSH_NOTIFICATION_CLICKED = @"ON_PUSH_NOTIFICATION_CLICKED";
31+
32+
// event
33+
static NSString * const EVENT_ON_BADGE_CHANGED = @"ChannelIO:Event:OnBadgeChanged";
34+
static NSString * const EVENT_ON_PROFILE_CHANGED = @"ChannelIO:Event:OnProfileChanged";
35+
static NSString * const EVENT_ON_POPUP_DATA_RECEIVED = @"ChannelIO:Event:OnPopupDataReceive";
36+
static NSString * const EVENT_ON_SHOW_MESSENGER = @"ChannelIO:Event:OnShowMessenger";
37+
static NSString * const EVENT_ON_HIDE_MESSENGER = @"ChannelIO:Event:OnHideMessenger";
38+
static NSString * const EVENT_ON_CHAT_CREATED = @"ChannelIO:Event:OnChatCreated";
39+
static NSString * const EVENT_ON_PRE_URL_CLICKED = @"ChannelIO:Event:OnPreUrlClicked";
40+
static NSString * const EVENT_ON_URL_CLICKED = @"ChannelIO:Event:OnUrlClicked";
41+
static NSString * const EVENT_ON_PUSH_NOTIFICATION_CLICKED = @"ChannelIO:Event:OnPushNotificationClicked";
42+
43+
// language key
44+
static NSString * const KEY_LANGUAGE_KOREAN = @"korean";
45+
static NSString * const KEY_LANGUAGE_ENGLISH = @"english";
46+
static NSString * const KEY_LANGUAGE_JAPANESE = @"japanese";
47+
static NSString * const KEY_LANGUAGE_DEVICE = @"device";
48+
49+
// BootStatus key
50+
static NSString * const KEY_BOOT_STATUS = @"BootStatus";
51+
static NSString * const KEY_BOOT_STATUS_SUCCESS = @"success";
52+
static NSString * const KEY_BOOT_STATUS_NOT_INITIALIZED = @"notInitialized";
53+
static NSString * const KEY_BOOT_STATUS_NETWORK_TIMEOUT = @"networkTimeout";
54+
static NSString * const KEY_BOOT_STATUS_NOT_AVAILABLE_VERSION = @"notAvailableVersion";
55+
static NSString * const KEY_BOOT_STATUS_SERVICE_UNDER_CONSTRUCTION = @"serviceUnderConstruction";
56+
static NSString * const KEY_BOOT_STATUS_REQUIRE_PAYMENT = @"requirePayment";
57+
static NSString * const KEY_BOOT_STATUS_ACCESS_DENIED = @"accessDenied";
58+
static NSString * const KEY_BOOT_STATUS_UNKNOWN_ERROR = @"unknownError";
59+
60+
// error
61+
static NSString * const ERROR_UNKNOWN = @"UNKNOWN_ERROR";
62+
63+
static NSString * const KEY_CHANNEL_BUTTON_POSITION = @"ChannelButtonPosition";
64+
65+
static NSString * const KEY_STATUS = @"status";
66+
static NSString * const KEY_CHAT_ID = @"chatId";
67+
static NSString * const KEY_COUNT = @"count";
68+
static NSString * const KEY_URL = @"url";
69+
static NSString * const KEY_POPUP = @"popup";
70+
static NSString * const KEY_PROFILE_ONCE = @"profileOnce";
71+
static NSString * const KEY_PROFILE_KEY = @"key";
72+
static NSString * const KEY_PROFILE_VALUE = @"value";
73+
static NSString * const KEY_USER = @"user";
74+
static NSString * const KEY_ERROR = @"error";
75+
static NSString * const KEY_TAGS = @"tags";
76+
77+
// deprecated
78+
79+
// event key
80+
static NSString * const KEY_EVENT_ON_CHANGE_BADGE = @"ON_BADGE_CHANGED";
81+
static NSString * const KEY_EVENT_ON_RECEIVE_PUSH = @"ON_PROFILE_CHANGED";
82+
static NSString * const KEY_EVENT_WILL_SHOW_MESSENGER = @"ON_POPUP_DATA_RECEIVED";
83+
static NSString * const KEY_EVENT_WILL_HIDE_MESSENGER = @"ON_SHOW_MESSENGER";
84+
static NSString * const KEY_EVENT_ON_CLICK_CHAT_LINK = @"ON_HIDE_MESSENGER";
85+
static NSString * const KEY_EVENT_ON_CHANGE_PROFILE = @"ON_CHANGE_PROFILE";
86+
87+
// event
88+
static NSString * const EVENT_ON_CHANGE_BADGE = @"ChannelIO:Event:OnChangeBadge";
89+
static NSString * const EVENT_ON_RECEIVE_PUSH = @"ChannelIO:Event:OnReceivePush";
90+
static NSString * const EVENT_WILL_SHOW_MESSENGER = @"ChannelIO:Event:WillShowMessenger";
91+
static NSString * const EVENT_WILL_HIDE_MESSENGER = @"ChannelIO:Event:WillHideMessenger";
92+
static NSString * const EVENT_ON_CLICK_CHAT_LINK = @"ChannelIO:Event:OnClickChatLink";
93+
static NSString * const EVENT_ON_CHANGE_PROFILE = @"ChannelIO:Event:OnChangeProfile";
94+
95+
static NSString * const KEY_CHANNEL_PLUGIN_COMPLETION_STATUS = @"ChannelPluginCompletionStatus";
96+
static NSString * const KEY_LAUNCHER_POSITION = @"LauncherPosition";
2697

2798
NS_ASSUME_NONNULL_END
2899

0 commit comments

Comments
 (0)