-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Expand file tree
/
Copy pathSharedElements.kt
More file actions
38 lines (31 loc) · 1.22 KB
/
SharedElements.kt
File metadata and controls
38 lines (31 loc) · 1.22 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
package com.reactnativenavigation.options
import org.json.JSONObject
import java.util.*
class SharedElements {
private var transitions: MutableList<SharedElementTransitionOptions> = ArrayList()
fun get(): List<SharedElementTransitionOptions> {
return transitions
}
fun hasValue() = transitions.isNotEmpty()
fun mergeWith(other: SharedElements) {
if (other.hasValue()) transitions = other.transitions
}
fun mergeWithDefault(defaultOptions: SharedElements) {
if (!hasValue()) transitions = defaultOptions.transitions
}
private fun add(transition: SharedElementTransitionOptions) {
transitions.add(transition)
}
companion object {
@JvmStatic
fun parse(json: JSONObject): SharedElements {
val result = SharedElements()
val sharedElementsJSONArray = json.optJSONArray("sharedElementTransitions")
if (sharedElementsJSONArray == null || sharedElementsJSONArray.length() == 0) return result
for (i in 0 until sharedElementsJSONArray.length()) {
result.add(SharedElementTransitionOptions.parse(sharedElementsJSONArray.getJSONObject(i)))
}
return result
}
}
}