Skip to content
This repository was archived by the owner on Jan 24, 2020. It is now read-only.

Commit 4421f51

Browse files
committed
promisify native modules
1 parent 60705ba commit 4421f51

File tree

2 files changed

+47
-26
lines changed

2 files changed

+47
-26
lines changed

RNCookieManagerIOS/RNCookieManagerIOS.m

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ @implementation RNCookieManagerIOS
99

1010
RCT_EXPORT_MODULE()
1111

12-
RCT_EXPORT_METHOD(set:(NSDictionary *)props callback:(RCTResponseSenderBlock)callback) {
12+
RCT_EXPORT_METHOD(set,
13+
props:(NSDictionary *)props,
14+
resolver:(RCTPromiseResolveBlock)resolve,
15+
rejecter:(RCTPromiseRejectBlock)reject) {
1316
NSString *name = [RCTConvert NSString:props[@"name"]];
1417
NSString *value = [RCTConvert NSString:props[@"value"]];
1518
NSString *domain = [RCTConvert NSString:props[@"domain"]];
@@ -33,16 +36,23 @@ @implementation RNCookieManagerIOS
3336
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieProperties];
3437
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
3538

36-
callback(@[[NSNull null]]);
39+
resolve();
3740
}
3841

39-
RCT_EXPORT_METHOD(setFromResponse:(NSURL *)url value:(NSDictionary *)value callback:(RCTResponseSenderBlock)callback) {
40-
NSArray *cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:value forURL:url];
41-
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookies:cookies forURL:url mainDocumentURL:NULL];
42-
callback(@[[NSNull null]]);
42+
RCT_EXPORT_METHOD(setFromResponse,
43+
url:(NSURL *)url,
44+
value:(NSDictionary *)value,
45+
resolver:(RCTPromiseResolveBlock)resolve,
46+
rejecter:(RCTPromiseRejectBlock)reject) {
47+
NSArray *cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:value forURL:url];
48+
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookies:cookies forURL:url mainDocumentURL:NULL];
49+
resolve();
4350
}
4451

45-
RCT_EXPORT_METHOD(getFromResponse:(NSURL *)url callback:(RCTResponseSenderBlock)callback) {
52+
RCT_EXPORT_METHOD(getFromResponse,
53+
url:(NSURL *)url,
54+
resolver:(RCTPromiseResolveBlock)resolve,
55+
rejecter:(RCTPromiseRejectBlock)reject) {
4656
NSURLRequest *request = [NSURLRequest requestWithURL:url];
4757
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init]
4858
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
@@ -57,38 +67,48 @@ @implementation RNCookieManagerIOS
5767
NSLog(@"cookie: name=%@, value=%@", cookie.name, cookie.value);
5868
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
5969
}
60-
callback(@[[NSNull null], dics]);
70+
resolve(dics);
6171
}];
6272
}
6373

64-
RCT_EXPORT_METHOD(get:(NSURL *)url callback:(RCTResponseSenderBlock)callback) {
74+
RCT_EXPORT_METHOD(get,
75+
url:(NSURL *) url,
76+
resolver:(RCTPromiseResolveBlock)resolve,
77+
rejecter:(RCTPromiseRejectBlock)reject) {
6578
NSMutableDictionary *cookies = [NSMutableDictionary dictionary];
6679
for (NSHTTPCookie *c in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:url]) {
6780
[cookies setObject:c.value forKey:c.name];
6881
}
69-
callback(@[[NSNull null], cookies]);
82+
resolve(cookies);
7083
}
7184

72-
RCT_EXPORT_METHOD(clearAll:(RCTResponseSenderBlock)callback) {
85+
RCT_EXPORT_METHOD(clearAll,
86+
resolver:(RCTPromiseResolveBlock)resolve,
87+
rejecter:(RCTPromiseRejectBlock)reject) {
7388
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
7489
for (NSHTTPCookie *c in cookieStorage.cookies) {
7590
[cookieStorage deleteCookie:c];
7691
}
77-
callback(@[[NSNull null]]);
92+
resolve();
7893
}
7994

80-
RCT_EXPORT_METHOD(clearByName:(NSString *)name callback:(RCTResponseSenderBlock)callback) {
95+
RCT_EXPORT_METHOD(clearByName,
96+
name:(NSString *) name,
97+
resolver:(RCTPromiseResolveBlock)resolve,
98+
rejecter:(RCTPromiseRejectBlock)reject) {
8199
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
82100
for (NSHTTPCookie *c in cookieStorage.cookies) {
83101
if ([[c name] isEqualToString:name]) {
84102
[cookieStorage deleteCookie:c];
85103
}
86104
}
87-
callback(@[[NSNull null]]);
105+
resolve();
88106
}
89107

90108
// TODO: return a better formatted list of cookies per domain
91-
RCT_EXPORT_METHOD(getAll:(RCTResponseSenderBlock)callback) {
109+
RCT_EXPORT_METHOD(getAll,
110+
resolver:(RCTPromiseResolveBlock)resolve,
111+
rejecter:(RCTPromiseRejectBlock)reject) {
92112
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
93113
NSMutableDictionary *cookies = [NSMutableDictionary dictionary];
94114
for (NSHTTPCookie *c in cookieStorage.cookies) {
@@ -99,7 +119,7 @@ @implementation RNCookieManagerIOS
99119
[d setObject:c.path forKey:@"path"];
100120
[cookies setObject:d forKey:c.name];
101121
}
102-
callback(@[[NSNull null], cookies]);
122+
resolve(cookies);
103123
}
104124

105125
@end

android/src/main/java/com/psykar/cookiemanager/CookieManagerModule.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.facebook.react.bridge.Callback;
99
import com.facebook.react.bridge.Arguments;
1010
import com.facebook.react.bridge.WritableMap;
11+
import com.facebook.react.bridge.Promise;
1112

1213
import java.io.IOException;
1314
import java.net.URISyntaxException;
@@ -32,32 +33,32 @@ public String getName() {
3233
}
3334

3435
@ReactMethod
35-
public void set(ReadableMap cookie, final Callback callback) throws Exception {
36+
public void set(ReadableMap cookie, final Promise promise) throws Exception {
3637
throw new Exception("Cannot call on android, try setFromResponse");
3738
}
3839

3940
@ReactMethod
40-
public void setFromResponse(String url, String value, final Callback callback) throws URISyntaxException, IOException {
41+
public void setFromResponse(String url, String value, final Promise promise) throws URISyntaxException, IOException {
4142
Map headers = new HashMap<String, List<String>>();
4243
// Pretend this is a header
4344
headers.put("Set-cookie", Collections.singletonList(value));
4445
URI uri = new URI(url);
4546
this.cookieHandler.put(uri, headers);
46-
callback.invoke(null, null);
47+
promise.resolve(null);
4748
}
4849

4950
@ReactMethod
50-
public void getFromResponse(String url, Callback callback) throws URISyntaxException, IOException {
51-
get(url, callback);
51+
public void getFromResponse(String url, Promise promise) throws URISyntaxException, IOException {
52+
promise.resolve(url, promise)
5253
}
5354

5455
@ReactMethod
55-
public void getAll(Callback callback) throws Exception {
56+
public void getAll(Promise promise) throws Exception {
5657
throw new Exception("Cannot get all cookies on android, try getCookieHeader(url)");
5758
}
5859

5960
@ReactMethod
60-
public void get(String url, Callback callback) throws URISyntaxException, IOException {
61+
public void get(String url, Promise promise) throws URISyntaxException, IOException {
6162
URI uri = new URI(url);
6263

6364
Map<String, List<String>> cookieMap = this.cookieHandler.get(uri, new HashMap());
@@ -73,14 +74,14 @@ public void get(String url, Callback callback) throws URISyntaxException, IOExce
7374
}
7475
}
7576
}
76-
callback.invoke(null, map);
77+
promise.resolve(map);
7778
}
7879

7980
@ReactMethod
80-
public void clearAll(final Callback callback) {
81+
public void clearAll(final Promise promise) {
8182
this.cookieHandler.clearCookies(new Callback() {
8283
public void invoke(Object... args) {
83-
callback.invoke(null, null);
84+
promise.resolve(null);
8485
}
8586
});
8687
}

0 commit comments

Comments
 (0)