-
Notifications
You must be signed in to change notification settings - Fork 557
Expand file tree
/
Copy pathSafePromise.java
More file actions
59 lines (48 loc) · 1.71 KB
/
SafePromise.java
File metadata and controls
59 lines (48 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package com.bleplx.utils;
import com.facebook.react.bridge.Promise;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.annotation.Nullable;
public class SafePromise {
private Promise promise;
private AtomicBoolean isFinished = new AtomicBoolean();
public SafePromise(Promise promise) {
this.promise = promise;
}
public void resolve(@Nullable Object value) {
if (isFinished.compareAndSet(false, true)) {
promise.resolve(value);
}
}
public void reject(@Nullable String code, @Nullable String message) {
if (isFinished.compareAndSet(false, true)) {
String safeCode = code == null ? ErrorDefaults.CODE : code;
String safeMessage = message == null ? ErrorDefaults.MESSAGE : message;
promise.reject(safeCode, safeMessage);
}
}
public void reject(@Nullable String code, Throwable e) {
if (isFinished.compareAndSet(false, true)) {
String safeCode = code == null ? ErrorDefaults.CODE : code;
promise.reject(safeCode, e);
}
}
public void reject(@Nullable String code, @Nullable String message, Throwable e) {
if (isFinished.compareAndSet(false, true)) {
String safeCode = code == null ? ErrorDefaults.CODE : code;
String safeMessage = message == null ? ErrorDefaults.MESSAGE : message;
promise.reject(safeCode, safeMessage, e);
}
}
@Deprecated
public void reject(@Nullable String message) {
if (isFinished.compareAndSet(false, true)) {
String safeMessage = message == null ? ErrorDefaults.MESSAGE : message;
promise.reject(ErrorDefaults.CODE, safeMessage);
}
}
public void reject(Throwable reason) {
if (isFinished.compareAndSet(false, true)) {
promise.reject(reason);
}
}
}