|
|
@@ -6,9 +6,7 @@ import com.reactnativenavigation.modal.RnnModal;
|
|
6
|
6
|
import com.reactnativenavigation.utils.RefUtils;
|
|
7
|
7
|
|
|
8
|
8
|
import java.lang.ref.WeakReference;
|
|
9
|
|
-import java.util.HashMap;
|
|
10
|
|
-import java.util.Iterator;
|
|
11
|
|
-import java.util.Map;
|
|
|
9
|
+import java.util.Stack;
|
|
12
|
10
|
|
|
13
|
11
|
/**
|
|
14
|
12
|
* Created by guyc on 06/05/16.
|
|
|
@@ -16,10 +14,10 @@ import java.util.Map;
|
|
16
|
14
|
public class ModalController {
|
|
17
|
15
|
private static ModalController sInstance;
|
|
18
|
16
|
|
|
19
|
|
- private final Map<String, WeakReference<RnnModal>> mModals;
|
|
|
17
|
+ private final Stack<WeakReference<RnnModal>> mModals;
|
|
20
|
18
|
|
|
21
|
19
|
private ModalController() {
|
|
22
|
|
- mModals = new HashMap<>();
|
|
|
20
|
+ mModals = new Stack<>();
|
|
23
|
21
|
}
|
|
24
|
22
|
|
|
25
|
23
|
public static synchronized ModalController getInstance() {
|
|
|
@@ -30,41 +28,36 @@ public class ModalController {
|
|
30
|
28
|
return sInstance;
|
|
31
|
29
|
}
|
|
32
|
30
|
|
|
33
|
|
- public void add(RnnModal modal, String navigatorId) {
|
|
34
|
|
- mModals.put(navigatorId, new WeakReference<>(modal));
|
|
|
31
|
+ public void add(RnnModal modal) {
|
|
|
32
|
+ mModals.add(new WeakReference<>(modal));
|
|
35
|
33
|
}
|
|
36
|
34
|
|
|
37
|
35
|
public boolean isModalDisplayed() {
|
|
38
|
36
|
return mModals.size() != 0;
|
|
39
|
37
|
}
|
|
40
|
38
|
|
|
41
|
|
- public boolean isModalDisplayed(String navigatorId) {
|
|
42
|
|
- return mModals.size() != 0 && mModals.containsKey(navigatorId);
|
|
|
39
|
+ @Nullable
|
|
|
40
|
+ public RnnModal get() {
|
|
|
41
|
+ return isModalDisplayed() ? RefUtils.get(mModals.peek()) : null;
|
|
43
|
42
|
}
|
|
44
|
43
|
|
|
45
|
|
- @Nullable
|
|
46
|
|
- public RnnModal get(String navigatorId) {
|
|
47
|
|
- if (mModals.containsKey(navigatorId)) {
|
|
48
|
|
- return RefUtils.get(mModals.get(navigatorId));
|
|
|
44
|
+ public void remove() {
|
|
|
45
|
+ if (isModalDisplayed()) {
|
|
|
46
|
+ mModals.pop();
|
|
49
|
47
|
}
|
|
50
|
|
-
|
|
51
|
|
- return null;
|
|
52
|
48
|
}
|
|
53
|
49
|
|
|
54
|
|
- public void remove(String navigatorId) {
|
|
55
|
|
- if (mModals.containsKey(navigatorId)) {
|
|
56
|
|
- mModals.remove(navigatorId);
|
|
|
50
|
+ public void dismissAllModals() {
|
|
|
51
|
+ while (isModalDisplayed()) {
|
|
|
52
|
+ dismissModal();
|
|
57
|
53
|
}
|
|
58
|
54
|
}
|
|
59
|
55
|
|
|
60
|
|
- public void dismissAllModals() {
|
|
61
|
|
- Iterator<String> iterator = mModals.keySet().iterator();
|
|
62
|
|
- while (iterator.hasNext()) {
|
|
63
|
|
- WeakReference<RnnModal> ref = mModals.get(iterator.next());
|
|
64
|
|
- RnnModal modal = RefUtils.get(ref);
|
|
65
|
|
- if (modal != null) {
|
|
66
|
|
- modal.dismiss();
|
|
67
|
|
- }
|
|
|
56
|
+ public void dismissModal() {
|
|
|
57
|
+ WeakReference<RnnModal> ref = mModals.pop();
|
|
|
58
|
+ RnnModal modal = RefUtils.get(ref);
|
|
|
59
|
+ if (modal != null) {
|
|
|
60
|
+ modal.dismiss();
|
|
68
|
61
|
}
|
|
69
|
62
|
}
|
|
70
|
63
|
}
|