capacitor-record360sdk 7.0.1 → 7.19.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CapacitorRecord360sdk.podspec +1 -1
- package/README.md +5 -5
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/record360/plugins/CapacitorRecord360SDKPlugin.kt +2 -4
- package/dist/docs.json +2 -2
- package/dist/esm/definitions.d.ts +1 -0
- package/dist/esm/definitions.js.map +1 -1
- package/ios/Sources/CapacitorRecord360SDKPlugin/CapacitorRecord360SDKPlugin.swift +117 -54
- package/package.json +4 -4
|
@@ -13,6 +13,6 @@ Pod::Spec.new do |s|
|
|
|
13
13
|
s.source_files = 'ios/Sources/**/*.{swift,h,m,c,cc,mm,cpp}'
|
|
14
14
|
s.ios.deployment_target = '14.0'
|
|
15
15
|
s.dependency 'Capacitor'
|
|
16
|
-
s.dependency 'Record360SDK', '4.
|
|
16
|
+
s.dependency 'Record360SDK', '4.19.8'
|
|
17
17
|
s.swift_version = '5.1'
|
|
18
18
|
end
|
package/README.md
CHANGED
|
@@ -53,13 +53,13 @@ launchReferenceCapture(options: { referenceNumber: string; workOrderId?: number;
|
|
|
53
53
|
### addListener('Record360Event', ...)
|
|
54
54
|
|
|
55
55
|
```typescript
|
|
56
|
-
addListener(eventName: 'Record360Event', listenerFunc: (data: { type: 'onFailedToAuthenticate' | 'onInspectionCancelled' | 'onInspectionComplete' | 'onInspectionUploadFailed' | 'onInspectionUploadProgress' | 'onInspectionUploaded' | 'onInspectionStarted' | 'onUserAuthenticated'; referenceNumber?: string; bytesComplete?: number; bytesTotal?: number; error?: string; userId?: string; username?: string; }) => void) => Promise<PluginListenerHandle>
|
|
56
|
+
addListener(eventName: 'Record360Event', listenerFunc: (data: { type: 'onFailedToAuthenticate' | 'onInspectionCancelled' | 'onInspectionComplete' | 'onInspectionUploadFailed' | 'onInspectionUploadProgress' | 'onInspectionUploaded' | 'onInspectionStarted' | 'onUserAuthenticated'; referenceNumber?: string; bytesComplete?: number; bytesTotal?: number; error?: string; userId?: string; username?: string; inspectionJSON?: string; }) => void) => Promise<PluginListenerHandle>
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
| Param | Type
|
|
60
|
-
| ------------------ |
|
|
61
|
-
| **`eventName`** | <code>'Record360Event'</code>
|
|
62
|
-
| **`listenerFunc`** | <code>(data: { type: 'onFailedToAuthenticate' \| 'onInspectionCancelled' \| 'onInspectionComplete' \| 'onInspectionUploadFailed' \| 'onInspectionUploadProgress' \| 'onInspectionUploaded' \| 'onInspectionStarted' \| 'onUserAuthenticated'; referenceNumber?: string; bytesComplete?: number; bytesTotal?: number; error?: string; userId?: string; username?: string; }) => void</code> |
|
|
59
|
+
| Param | Type |
|
|
60
|
+
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
61
|
+
| **`eventName`** | <code>'Record360Event'</code> |
|
|
62
|
+
| **`listenerFunc`** | <code>(data: { type: 'onFailedToAuthenticate' \| 'onInspectionCancelled' \| 'onInspectionComplete' \| 'onInspectionUploadFailed' \| 'onInspectionUploadProgress' \| 'onInspectionUploaded' \| 'onInspectionStarted' \| 'onUserAuthenticated'; referenceNumber?: string; bytesComplete?: number; bytesTotal?: number; error?: string; userId?: string; username?: string; inspectionJSON?: string; }) => void</code> |
|
|
63
63
|
|
|
64
64
|
**Returns:** <code>Promise<<a href="#pluginlistenerhandle">PluginListenerHandle</a>></code>
|
|
65
65
|
|
package/android/build.gradle
CHANGED
|
@@ -101,6 +101,6 @@ dependencies {
|
|
|
101
101
|
testImplementation "junit:junit:$junitVersion"
|
|
102
102
|
androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion"
|
|
103
103
|
androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion"
|
|
104
|
-
implementation 'com.record360.sdk:android-sdk:4.19.
|
|
104
|
+
implementation 'com.record360.sdk:android-sdk:4.19.4'
|
|
105
105
|
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
|
|
106
106
|
}
|
|
@@ -159,11 +159,12 @@ open class CapacitorRecord360SDKPlugin : Plugin(), IRecord360Interface {
|
|
|
159
159
|
notifyListeners(EVENT_NAME, data)
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
-
override fun onInspectionUploaded(referenceNumber: String?) {
|
|
162
|
+
override fun onInspectionUploaded(referenceNumber: String?, inspectionJson: String?) {
|
|
163
163
|
Log.i(TAG, "onInspectionUploaded")
|
|
164
164
|
val data = JSObject().apply {
|
|
165
165
|
put("type", "onInspectionUploaded")
|
|
166
166
|
put("referenceNumber", referenceNumber)
|
|
167
|
+
put("inspectionJSON", inspectionJson)
|
|
167
168
|
}
|
|
168
169
|
notifyListeners(EVENT_NAME, data)
|
|
169
170
|
}
|
|
@@ -197,11 +198,8 @@ open class CapacitorRecord360SDKPlugin : Plugin(), IRecord360Interface {
|
|
|
197
198
|
var defaultSettings = arrayOf(
|
|
198
199
|
Record360Setting(Record360SDK.SETTING_UPLOAD_MODE, Record360SDK.UPLOAD_MODE_ONLINE, true),
|
|
199
200
|
Record360Setting(Record360SDK.SETTING_RESOLUTION, Record360SDK.RESOLUTION_MEDIUM, true),
|
|
200
|
-
Record360Setting(Record360SDK.SETTING_COMPRESS_MEDIA, true.toString(), true),
|
|
201
201
|
Record360Setting(Record360SDK.SETTING_NOTATIONS_ON_IMAGES, false.toString(), true),
|
|
202
|
-
Record360Setting(Record360SDK.SETTING_ENABLE_MULTIPLE_CAMERA, false.toString(), true),
|
|
203
202
|
Record360Setting(Record360SDK.SETTING_LEGACY_CAMERA, false.toString(), true),
|
|
204
|
-
Record360Setting(Record360SDK.SETTING_VIN_SCAN, false.toString(), true),
|
|
205
203
|
Record360Setting(Record360SDK.SETTING_RECORD_AUDIO, true.toString(), true),
|
|
206
204
|
Record360Setting(Record360SDK.SETTING_TIMESTAMP_MODE, true.toString(), true),
|
|
207
205
|
Record360Setting(Record360SDK.SETTING_NATIVE_RESOLUTION, false.toString(), true),
|
package/dist/docs.json
CHANGED
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
"name": "addListener",
|
|
46
|
-
"signature": "(eventName: 'Record360Event', listenerFunc: (data: { type: 'onFailedToAuthenticate' | 'onInspectionCancelled' | 'onInspectionComplete' | 'onInspectionUploadFailed' | 'onInspectionUploadProgress' | 'onInspectionUploaded' | 'onInspectionStarted' | 'onUserAuthenticated'; referenceNumber?: string; bytesComplete?: number; bytesTotal?: number; error?: string; userId?: string; username?: string; }) => void) => Promise<PluginListenerHandle>",
|
|
46
|
+
"signature": "(eventName: 'Record360Event', listenerFunc: (data: { type: 'onFailedToAuthenticate' | 'onInspectionCancelled' | 'onInspectionComplete' | 'onInspectionUploadFailed' | 'onInspectionUploadProgress' | 'onInspectionUploaded' | 'onInspectionStarted' | 'onUserAuthenticated'; referenceNumber?: string; bytesComplete?: number; bytesTotal?: number; error?: string; userId?: string; username?: string; inspectionJSON?: string; }) => void) => Promise<PluginListenerHandle>",
|
|
47
47
|
"parameters": [
|
|
48
48
|
{
|
|
49
49
|
"name": "eventName",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
{
|
|
54
54
|
"name": "listenerFunc",
|
|
55
55
|
"docs": "",
|
|
56
|
-
"type": "(data: { type: 'onFailedToAuthenticate' | 'onInspectionCancelled' | 'onInspectionComplete' | 'onInspectionUploadFailed' | 'onInspectionUploadProgress' | 'onInspectionUploaded' | 'onInspectionStarted' | 'onUserAuthenticated'; referenceNumber?: string | undefined; bytesComplete?: number | undefined; bytesTotal?: number | undefined; error?: string | undefined; userId?: string | undefined; username?: string | undefined; }) => void"
|
|
56
|
+
"type": "(data: { type: 'onFailedToAuthenticate' | 'onInspectionCancelled' | 'onInspectionComplete' | 'onInspectionUploadFailed' | 'onInspectionUploadProgress' | 'onInspectionUploaded' | 'onInspectionStarted' | 'onUserAuthenticated'; referenceNumber?: string | undefined; bytesComplete?: number | undefined; bytesTotal?: number | undefined; error?: string | undefined; userId?: string | undefined; username?: string | undefined; inspectionJSON?: string | undefined; }) => void"
|
|
57
57
|
}
|
|
58
58
|
],
|
|
59
59
|
"returns": "Promise<PluginListenerHandle>",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["import type { PluginListenerHandle } from \"@capacitor/core\"\nexport type Record360Identity = R360PasswordIdentity | R360UserTokenIdentity\n\nexport interface R360PasswordIdentity {\n username: string,\n password: string\n}\n\nexport interface R360UserTokenIdentity {\n userId: string,\n userToken: string\n}\n\nexport interface CapacitorRecord360SDKPlugin {\n launchRecord360(identity?: Record360Identity): Promise<void>\n\n launchReferenceCapture(options: {\n referenceNumber: string,\n workOrderId?: number,\n workOrderLabel?: string,\n identity?: Record360Identity\n }): Promise<void>\n\n addListener(\n eventName: 'Record360Event',\n listenerFunc: (\n data: { \n type: 'onFailedToAuthenticate' | 'onInspectionCancelled' | 'onInspectionComplete' | 'onInspectionUploadFailed' | 'onInspectionUploadProgress' | 'onInspectionUploaded' | 'onInspectionStarted' | 'onUserAuthenticated',\n referenceNumber?: string,\n bytesComplete?: number,\n bytesTotal?: number,\n error?: string,\n userId?: string,\n username?: string\n }\n ) => void,\n ): Promise<PluginListenerHandle>;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["import type { PluginListenerHandle } from \"@capacitor/core\"\nexport type Record360Identity = R360PasswordIdentity | R360UserTokenIdentity\n\nexport interface R360PasswordIdentity {\n username: string,\n password: string\n}\n\nexport interface R360UserTokenIdentity {\n userId: string,\n userToken: string\n}\n\nexport interface CapacitorRecord360SDKPlugin {\n launchRecord360(identity?: Record360Identity): Promise<void>\n\n launchReferenceCapture(options: {\n referenceNumber: string,\n workOrderId?: number,\n workOrderLabel?: string,\n identity?: Record360Identity\n }): Promise<void>\n\n addListener(\n eventName: 'Record360Event',\n listenerFunc: (\n data: { \n type: 'onFailedToAuthenticate' | 'onInspectionCancelled' | 'onInspectionComplete' | 'onInspectionUploadFailed' | 'onInspectionUploadProgress' | 'onInspectionUploaded' | 'onInspectionStarted' | 'onUserAuthenticated',\n referenceNumber?: string,\n bytesComplete?: number,\n bytesTotal?: number,\n error?: string,\n userId?: string,\n username?: string,\n inspectionJSON?: string\n }\n ) => void,\n ): Promise<PluginListenerHandle>;\n}\n"]}
|
|
@@ -3,7 +3,7 @@ import Capacitor
|
|
|
3
3
|
import Record360SDK
|
|
4
4
|
|
|
5
5
|
@objc(CapacitorRecord360SDKPlugin)
|
|
6
|
-
public class CapacitorRecord360SDKPlugin: CAPPlugin, CAPBridgedPlugin, Record360Delegate
|
|
6
|
+
public class CapacitorRecord360SDKPlugin: CAPPlugin, CAPBridgedPlugin, Record360Delegate {
|
|
7
7
|
public let identifier = "CapacitorRecord360SDKPlugin"
|
|
8
8
|
public let jsName = "CapacitorRecord360SDK"
|
|
9
9
|
public let pluginMethods: [CAPPluginMethod] = [
|
|
@@ -13,15 +13,15 @@ public class CapacitorRecord360SDKPlugin: CAPPlugin, CAPBridgedPlugin, Record360
|
|
|
13
13
|
|
|
14
14
|
public var record360: Record360?
|
|
15
15
|
public var record360ViewController: Record360ViewController?
|
|
16
|
+
public var hostingSDKViewController = false
|
|
16
17
|
|
|
17
18
|
public override init() {
|
|
18
19
|
super.init()
|
|
19
|
-
self.record360 = Record360(delegate: self);
|
|
20
|
-
|
|
20
|
+
self.record360 = Record360(delegate: self, allowUserToExitRecord360: true);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
private func applySettings() {
|
|
24
|
-
self.
|
|
24
|
+
self.record360?.applyDefaultSettings([
|
|
25
25
|
Record360Setting(switchSetting: SETTING_NOTATIONS_ON_IMAGES, canDisplay: true, value: false),
|
|
26
26
|
Record360Setting(switchSetting: SETTING_ADD_TIMESTAMP_TO_MEDIA, canDisplay: true, value: true),
|
|
27
27
|
Record360Setting(switchSetting: SETTING_NATIVE_PHOTO_MODE, canDisplay: true, value: false),
|
|
@@ -47,9 +47,11 @@ public class CapacitorRecord360SDKPlugin: CAPPlugin, CAPBridgedPlugin, Record360
|
|
|
47
47
|
let userToken = call.getString("userToken")
|
|
48
48
|
|
|
49
49
|
if (username != nil && password != nil) {
|
|
50
|
-
|
|
50
|
+
let identity = Record360Identity(userName: username!, password: password!)
|
|
51
|
+
loadR360SDK(identity: identity, presentingVC: presentingVC)
|
|
51
52
|
} else if (userId != nil && userToken != nil) {
|
|
52
|
-
|
|
53
|
+
let identity = Record360Identity(userID: userId!, userToken: userToken!)
|
|
54
|
+
loadR360SDK(identity: identity, presentingVC: presentingVC)
|
|
53
55
|
} else {
|
|
54
56
|
loadR360SDKLogin(referenceNumber: nil, workOrderId: nil, workOrderLabel: nil, presentingVC: presentingVC)
|
|
55
57
|
}
|
|
@@ -76,70 +78,45 @@ public class CapacitorRecord360SDKPlugin: CAPPlugin, CAPBridgedPlugin, Record360
|
|
|
76
78
|
let userToken = identityObj?["userToken"] as? String
|
|
77
79
|
|
|
78
80
|
if (username != nil && password != nil) {
|
|
79
|
-
|
|
81
|
+
let identity = Record360Identity(userName: username!, password: password!)
|
|
82
|
+
loadR360SDKForInspection(identity: identity, referenceNumber: referenceNumber!, workOrderId: workOrderId, workOrderLabel: workOrderLabel, presentingVC: presentingVC)
|
|
80
83
|
} else if (userId != nil && userToken != nil) {
|
|
81
|
-
|
|
84
|
+
let identity = Record360Identity(userID: userId!, userToken: userToken!)
|
|
85
|
+
loadR360SDKForInspection(identity: identity, referenceNumber: referenceNumber!, workOrderId: workOrderId, workOrderLabel: workOrderLabel, presentingVC: presentingVC)
|
|
82
86
|
} else {
|
|
83
87
|
loadR360SDKLogin(referenceNumber: referenceNumber, workOrderId: workOrderId, workOrderLabel: workOrderLabel, presentingVC: presentingVC)
|
|
84
88
|
}
|
|
85
89
|
}
|
|
86
90
|
|
|
87
91
|
private func loadR360SDKLogin(referenceNumber: String?, workOrderId: NSNumber?, workOrderLabel: String?, presentingVC: UIViewController) {
|
|
88
|
-
self.record360ViewController?.dismiss()
|
|
89
92
|
DispatchQueue.main.async {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
93
|
+
self.hostSDKViewController {
|
|
94
|
+
let identity = Record360Identity(userName: "", password: nil)
|
|
95
|
+
if (referenceNumber != nil) {
|
|
96
|
+
self.record360?.launchReferenceCapture(referenceNumber, workOrderID: workOrderId, workOrderLabel: workOrderLabel, identity: identity)
|
|
97
|
+
} else {
|
|
98
|
+
self.record360?.launch(identity)
|
|
99
|
+
}
|
|
100
|
+
self.applySettings()
|
|
94
101
|
}
|
|
95
|
-
self.record360ViewController?.delegate = self
|
|
96
|
-
self.applySettings()
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
private func loadR360SDK(username: String, password: String, presentingVC: UIViewController) {
|
|
101
|
-
self.record360ViewController?.dismiss()
|
|
102
|
-
DispatchQueue.main.async {
|
|
103
|
-
self.record360ViewController = Record360ViewController.load(withUserName: username, andPassword: password, sendTo: self.record360!, displayOn: presentingVC)
|
|
104
|
-
self.record360ViewController?.delegate = self
|
|
105
|
-
self.applySettings()
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
private func loadR360SDK(userID: String, userToken: String, presentingVC: UIViewController) {
|
|
110
|
-
self.record360ViewController?.dismiss()
|
|
111
|
-
DispatchQueue.main.async {
|
|
112
|
-
self.record360ViewController = Record360ViewController.load(withUserToken: userToken, andUserId: userID, sendTo: self.record360!, displayOn: presentingVC)
|
|
113
|
-
self.record360ViewController?.delegate = self
|
|
114
|
-
self.applySettings()
|
|
115
102
|
}
|
|
116
103
|
}
|
|
117
104
|
|
|
118
|
-
private func
|
|
119
|
-
self.record360ViewController?.dismiss()
|
|
105
|
+
private func loadR360SDK(identity: Record360Identity, presentingVC: UIViewController) {
|
|
120
106
|
DispatchQueue.main.async {
|
|
121
|
-
self.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
workOrderLabel: nil,
|
|
126
|
-
andIsOneTimeLink: false,
|
|
127
|
-
sendTo: self.record360!,
|
|
128
|
-
displayOn: presentingVC)
|
|
129
|
-
self.record360ViewController?.delegate = self
|
|
107
|
+
self.hostSDKViewController {
|
|
108
|
+
self.record360?.launch(identity)
|
|
109
|
+
self.applySettings()
|
|
110
|
+
}
|
|
130
111
|
}
|
|
131
112
|
}
|
|
132
113
|
|
|
133
|
-
private func loadR360SDKForInspection(
|
|
134
|
-
self.record360ViewController?.dismiss()
|
|
114
|
+
private func loadR360SDKForInspection(identity: Record360Identity, referenceNumber: String, workOrderId: NSNumber?, workOrderLabel: String?, presentingVC: UIViewController) {
|
|
135
115
|
DispatchQueue.main.async {
|
|
136
|
-
self.
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
workOrderLabel: workOrderLabel,
|
|
141
|
-
sendTo: self.record360!, displayOn: presentingVC)
|
|
142
|
-
self.record360ViewController?.delegate = self
|
|
116
|
+
self.hostSDKViewController {
|
|
117
|
+
self.record360?.launchReferenceCapture(referenceNumber, workOrderID: workOrderId, workOrderLabel: workOrderLabel, identity: identity)
|
|
118
|
+
self.applySettings()
|
|
119
|
+
}
|
|
143
120
|
}
|
|
144
121
|
}
|
|
145
122
|
|
|
@@ -161,20 +138,29 @@ public class CapacitorRecord360SDKPlugin: CAPPlugin, CAPBridgedPlugin, Record360
|
|
|
161
138
|
var data = JSObject()
|
|
162
139
|
data["type"] = "onInspectionComplete"
|
|
163
140
|
notifyListeners("Record360Event", data: data)
|
|
141
|
+
self.dismissSDKViewController(animated: true, completion: {})
|
|
164
142
|
}
|
|
165
143
|
|
|
166
144
|
public func onInspectionCanceled() {
|
|
167
145
|
var data = JSObject()
|
|
168
146
|
data["type"] = "onInspectionCancelled"
|
|
169
147
|
notifyListeners("Record360Event", data: data)
|
|
148
|
+
self.dismissSDKViewController(animated: true, completion: {})
|
|
170
149
|
}
|
|
171
150
|
|
|
172
151
|
public func onInspectionUploadDeleted(forReferenceNumber referenceNumber: String) {
|
|
173
152
|
|
|
174
153
|
}
|
|
175
154
|
|
|
176
|
-
public func
|
|
155
|
+
public func userHasRequestedToExitRecord360() {
|
|
156
|
+
self.dismissSDKViewController(animated: true, completion: {})
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
public func onInspectionUploaded(forReferenceNumber referenceNumber: String, inspectionJSON: [AnyHashable : Any]) {
|
|
177
160
|
var data = JSObject()
|
|
161
|
+
if let inspection = inspectionJSON["transaction"] as? [AnyHashable : Any] {
|
|
162
|
+
data["inspectionJSON"] = self.dictionaryToJSONString(inspection)!
|
|
163
|
+
}
|
|
178
164
|
data["type"] = "onInspectionUploaded"
|
|
179
165
|
data["referenceNumber"] = referenceNumber
|
|
180
166
|
notifyListeners("Record360Event", data: data)
|
|
@@ -186,4 +172,81 @@ public class CapacitorRecord360SDKPlugin: CAPPlugin, CAPBridgedPlugin, Record360
|
|
|
186
172
|
data["referenceNumber"] = referenceNumber
|
|
187
173
|
notifyListeners("Record360Event", data: data)
|
|
188
174
|
}
|
|
175
|
+
|
|
176
|
+
func dictionaryToJSONString(_ dict: [AnyHashable: Any]) -> String? {
|
|
177
|
+
do {
|
|
178
|
+
// Check if the dictionary is valid for JSON serialization
|
|
179
|
+
guard JSONSerialization.isValidJSONObject(dict) else {
|
|
180
|
+
print("Dictionary is not valid for JSON serialization")
|
|
181
|
+
return nil
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Convert to JSON Data
|
|
185
|
+
let jsonData = try JSONSerialization.data(withJSONObject: dict, options: [])
|
|
186
|
+
|
|
187
|
+
// Convert Data to String
|
|
188
|
+
let jsonString = String(data: jsonData, encoding: .utf8)
|
|
189
|
+
return jsonString
|
|
190
|
+
|
|
191
|
+
} catch {
|
|
192
|
+
print("Error converting dictionary to JSON: \(error)")
|
|
193
|
+
return nil
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
private func hostSDKViewController(completion: @escaping () -> Void) {
|
|
198
|
+
// ok, the sdk ui needs to be totally torn down before being reconstructed via
|
|
199
|
+
// one of the "launch" methods. Future revisions to the SDK should address this,
|
|
200
|
+
// but until then, this means that we must ensure the SDK VC is dismissed before
|
|
201
|
+
// we can safely host it in preparation for one of the launch methods. Basically,
|
|
202
|
+
// This effectively makes hostSDKViewController safely re-entrant
|
|
203
|
+
|
|
204
|
+
self.dismissSDKViewController(animated: true) {
|
|
205
|
+
self.record360?.sdkViewController.view.removeFromSuperview()
|
|
206
|
+
self.record360?.sdkViewController.removeFromParent()
|
|
207
|
+
|
|
208
|
+
guard let presentingVC: UIViewController = self.bridge?.viewController else {
|
|
209
|
+
return
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
guard let sdkVC = self.record360?.sdkViewController else {
|
|
213
|
+
return
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
presentingVC.addChild(sdkVC)
|
|
217
|
+
sdkVC.didMove(toParent: presentingVC)
|
|
218
|
+
presentingVC.view.addSubview(sdkVC.view)
|
|
219
|
+
sdkVC.view.topAnchor.constraint(equalTo: presentingVC.view.topAnchor).isActive = true
|
|
220
|
+
sdkVC.view.bottomAnchor.constraint(equalTo: presentingVC.view.bottomAnchor).isActive = true
|
|
221
|
+
sdkVC.view.leadingAnchor.constraint(equalTo: presentingVC.view.leadingAnchor).isActive = true
|
|
222
|
+
sdkVC.view.trailingAnchor.constraint(equalTo: presentingVC.view.trailingAnchor).isActive = true
|
|
223
|
+
self.hostingSDKViewController = true
|
|
224
|
+
|
|
225
|
+
completion()
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
private func dismissSDKViewController(animated: Bool, completion: @escaping () -> Void) {
|
|
230
|
+
if !hostingSDKViewController {
|
|
231
|
+
completion()
|
|
232
|
+
return
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// dismiss it via its nav controller, then take it out of the view hierarchy
|
|
236
|
+
|
|
237
|
+
let viewController = self.record360?.sdkViewController.navigationController ?? self.record360?.sdkViewController
|
|
238
|
+
|
|
239
|
+
guard let presentingVC = bridge?.viewController else {
|
|
240
|
+
return
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
viewController?.dismiss(animated: animated) {
|
|
244
|
+
self.record360?.sdkViewController.willMove(toParent: nil)
|
|
245
|
+
self.record360?.sdkViewController.view.removeFromSuperview()
|
|
246
|
+
self.record360?.sdkViewController.view.removeConstraints(presentingVC.view.constraints)
|
|
247
|
+
self.record360?.sdkViewController.removeFromParent()
|
|
248
|
+
self.hostingSDKViewController = false
|
|
249
|
+
completion()
|
|
250
|
+
}
|
|
251
|
+
}
|
|
189
252
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "capacitor-record360sdk",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.19.8",
|
|
4
4
|
"description": "Capacitor wrapper for Record360SDK",
|
|
5
5
|
"main": "dist/plugin.cjs.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -47,8 +47,8 @@
|
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@capacitor/android": "^7.0.0",
|
|
50
|
-
"@capacitor/cli": "^7.
|
|
51
|
-
"@capacitor/core": "^7.
|
|
50
|
+
"@capacitor/cli": "^7.4.4",
|
|
51
|
+
"@capacitor/core": "^7.4.4",
|
|
52
52
|
"@capacitor/docgen": "^0.2.2",
|
|
53
53
|
"@capacitor/ios": "^7.0.0",
|
|
54
54
|
"@ionic/eslint-config": "^0.4.0",
|
|
@@ -78,4 +78,4 @@
|
|
|
78
78
|
"src": "android"
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
-
}
|
|
81
|
+
}
|