@infilectorg/infiviz-shots-react-sdk 1.1.6 → 1.1.7
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/ios/InfivizShotSDK.xcframework/Info.plist +5 -5
- package/ios/InfivizShotSDK.xcframework/ios-arm64/InfivizShotSDK.framework/InfivizShotSDK +0 -0
- package/ios/InfivizShotSDK.xcframework/ios-arm64/InfivizShotSDK.framework/Modules/InfivizShotSDK.swiftmodule/arm64-apple-ios.abi.json +54 -61
- package/ios/InfivizShotSDK.xcframework/ios-arm64/InfivizShotSDK.framework/Modules/InfivizShotSDK.swiftmodule/arm64-apple-ios.swiftmodule +0 -0
- package/ios/InfivizShotSDK.xcframework/ios-arm64/InfivizShotSDK.framework/shotsSDK.storyboardc/xUL-ol-gRQ-view-6A8-mO-Rhi.nib +0 -0
- package/ios/InfivizShotSDK.xcframework/ios-arm64_x86_64-simulator/InfivizShotSDK.framework/InfivizShotSDK +0 -0
- package/ios/InfivizShotSDK.xcframework/ios-arm64_x86_64-simulator/InfivizShotSDK.framework/Modules/InfivizShotSDK.swiftmodule/arm64-apple-ios-simulator.abi.json +54 -61
- package/ios/InfivizShotSDK.xcframework/ios-arm64_x86_64-simulator/InfivizShotSDK.framework/Modules/InfivizShotSDK.swiftmodule/arm64-apple-ios-simulator.swiftmodule +0 -0
- package/ios/InfivizShotSDK.xcframework/ios-arm64_x86_64-simulator/InfivizShotSDK.framework/Modules/InfivizShotSDK.swiftmodule/x86_64-apple-ios-simulator.abi.json +54 -61
- package/ios/InfivizShotSDK.xcframework/ios-arm64_x86_64-simulator/InfivizShotSDK.framework/Modules/InfivizShotSDK.swiftmodule/x86_64-apple-ios-simulator.swiftmodule +0 -0
- package/ios/InfivizShotSDK.xcframework/ios-arm64_x86_64-simulator/InfivizShotSDK.framework/shotsSDK.storyboardc/xUL-ol-gRQ-view-6A8-mO-Rhi.nib +0 -0
- package/ios/InfivizShotsReactSdk.m +5 -5
- package/ios/InfivizShotsReactSdk.swift +77 -68
- package/lib/module/NativeInfivizShotsReactSdk.js.map +1 -1
- package/lib/module/index.js +1 -2
- package/lib/module/index.js.map +1 -1
- package/package.json +1 -1
- package/src/NativeInfivizShotsReactSdk.tsx +2 -1
- package/src/index.tsx +1 -2
|
@@ -98,7 +98,7 @@ class InfivizShotsReactSdk: RCTEventEmitter {
|
|
|
98
98
|
let payload: [String: Any] = [
|
|
99
99
|
"status": "400",
|
|
100
100
|
"message": error.localizedDescription,
|
|
101
|
-
"
|
|
101
|
+
"temporarySessionID": sessionId as String
|
|
102
102
|
]
|
|
103
103
|
self.sendEvent(withName: "SyncEvent", body: payload)
|
|
104
104
|
}
|
|
@@ -193,15 +193,9 @@ class InfivizShotsReactSdk: RCTEventEmitter {
|
|
|
193
193
|
switch result {
|
|
194
194
|
case .success(let value):
|
|
195
195
|
// Convert any value to a clean dictionary that handles Optionals properly
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
let jsonString = String(data: jsonData, encoding: .utf8) ?? ""
|
|
200
|
-
resolve(jsonString)
|
|
201
|
-
} catch {
|
|
202
|
-
print("InfivizShotsReactSdk: JSON serialization error: \(error)")
|
|
203
|
-
reject("SERIALIZATION_FAILED", "Failed to serialize data: \(error)", nil)
|
|
204
|
-
}
|
|
196
|
+
let cleanDict = self.convertToCleanDictionary(value)
|
|
197
|
+
// Return the dictionary directly instead of JSON string
|
|
198
|
+
resolve(cleanDict)
|
|
205
199
|
case .failure(let error):
|
|
206
200
|
reject("RESULT_FAILED", "Failed to get result: \(error)", nil)
|
|
207
201
|
}
|
|
@@ -241,8 +235,9 @@ class InfivizShotsReactSdk: RCTEventEmitter {
|
|
|
241
235
|
private func unwrapOptional(_ value: Any) -> Any {
|
|
242
236
|
let mirror = Mirror(reflecting: value)
|
|
243
237
|
|
|
244
|
-
// Check if it's an Optional
|
|
245
|
-
|
|
238
|
+
// Check if it's an Optional by checking the type name
|
|
239
|
+
let typeName = String(describing: type(of: value))
|
|
240
|
+
if typeName.hasPrefix("Optional<") {
|
|
246
241
|
if let unwrapped = mirror.children.first?.value {
|
|
247
242
|
return unwrapOptional(unwrapped)
|
|
248
243
|
} else {
|
|
@@ -267,6 +262,19 @@ class InfivizShotsReactSdk: RCTEventEmitter {
|
|
|
267
262
|
return formatter.string(from: date)
|
|
268
263
|
}
|
|
269
264
|
|
|
265
|
+
// Handle custom objects (like ImageMetaData) using Mirror reflection
|
|
266
|
+
// This ensures that objects with optional properties are properly serialized
|
|
267
|
+
let objectMirror = Mirror(reflecting: value)
|
|
268
|
+
if !objectMirror.children.isEmpty {
|
|
269
|
+
var result: [String: Any] = [:]
|
|
270
|
+
for child in objectMirror.children {
|
|
271
|
+
if let label = child.label {
|
|
272
|
+
result[label] = unwrapOptional(child.value)
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return result
|
|
276
|
+
}
|
|
277
|
+
|
|
270
278
|
// Return the value as-is if it's a basic type
|
|
271
279
|
return value
|
|
272
280
|
}
|
|
@@ -365,28 +373,28 @@ class InfivizShotsReactSdk: RCTEventEmitter {
|
|
|
365
373
|
apiToken: NSString,
|
|
366
374
|
env: NSString,
|
|
367
375
|
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
376
|
+
rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
377
|
+
|
|
378
|
+
let model = InfivizUserLoginContext(
|
|
379
|
+
appID: appID as String,
|
|
380
|
+
authSecret: authSecret as String,
|
|
381
|
+
accountKey: accountKey as String,
|
|
382
|
+
userID: userID as String,
|
|
383
|
+
clientID: clientID as String,
|
|
384
|
+
apiToken: apiToken as String
|
|
385
|
+
)
|
|
386
|
+
|
|
387
|
+
let environment = APIEnvironment(rawValue: env as String) ?? .production
|
|
388
|
+
InfivizShotsSDK.shared.initializeEnvironent(environment)
|
|
389
|
+
activity = InfivizShotsActivity(model: model)
|
|
390
|
+
activity?.initialize { result in
|
|
391
|
+
switch result {
|
|
392
|
+
case .success(let success):
|
|
393
|
+
resolve(success)
|
|
394
|
+
case .failure(let error):
|
|
395
|
+
reject("LOGIN_FAILED", error.localizedDescription, nil)
|
|
396
|
+
}
|
|
388
397
|
}
|
|
389
|
-
}
|
|
390
398
|
}
|
|
391
399
|
|
|
392
400
|
@objc
|
|
@@ -470,7 +478,7 @@ class InfivizShotsReactSdk: RCTEventEmitter {
|
|
|
470
478
|
@objc(resumeCamera:metaData:resolver:rejecter:)
|
|
471
479
|
func resumeCamera(
|
|
472
480
|
_ temporarySessionID: NSString,
|
|
473
|
-
metaData: NSDictionary
|
|
481
|
+
metaData: NSDictionary?,
|
|
474
482
|
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
475
483
|
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
476
484
|
) {
|
|
@@ -547,44 +555,46 @@ class InfivizShotsReactSdk: RCTEventEmitter {
|
|
|
547
555
|
|
|
548
556
|
@objc(retakeImage:imageURL:metaData:resolver:rejecter:)
|
|
549
557
|
func retakeImage(
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
558
|
+
_ temporarySessionId: NSString,
|
|
559
|
+
imageURL: String,
|
|
560
|
+
metaData: NSDictionary?,
|
|
561
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
562
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
555
563
|
) {
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
564
|
+
let context = CameraContext(
|
|
565
|
+
taskName: "",
|
|
566
|
+
storeTitle: "",
|
|
567
|
+
storeId: "",
|
|
568
|
+
photoType: "",
|
|
569
|
+
category: "",
|
|
570
|
+
maxPhoto: 0,
|
|
571
|
+
maxPhotoOneGo: 0,
|
|
572
|
+
navigationController: nil,
|
|
573
|
+
metaData: metaData as? [String: Any]
|
|
574
|
+
)
|
|
575
|
+
|
|
576
|
+
let imageURL = imageURL.components(separatedBy: "/").last ?? ""
|
|
577
|
+
|
|
578
|
+
let controller = InfilectSDKCameraActivityForResult(cameraContext: context)
|
|
579
|
+
controller.retakeImage(
|
|
580
|
+
imageURL: imageURL,
|
|
581
|
+
sessionID: temporarySessionId as String,
|
|
582
|
+
metaData: metaData as? [String: Any]
|
|
583
|
+
) { result in
|
|
584
|
+
switch result {
|
|
585
|
+
case .success(let newImageId):
|
|
586
|
+
resolve(newImageId)
|
|
587
|
+
case .failure(let sdkError):
|
|
588
|
+
reject(
|
|
589
|
+
"RetakeImageError",
|
|
590
|
+
"Failed to retake image: \((sdkError as NSError).localizedDescription)",
|
|
591
|
+
sdkError as NSError
|
|
592
|
+
)
|
|
593
|
+
}
|
|
582
594
|
}
|
|
583
|
-
}
|
|
584
595
|
}
|
|
585
596
|
|
|
586
597
|
// MARK: – React Native Promise Exposures for OutputAPI
|
|
587
|
-
|
|
588
598
|
/// Expose `getIRResult(sessionID:completion:)` to JavaScript as:
|
|
589
599
|
/// InfiBridge.getIRResult("session-123").then(...).catch(...)
|
|
590
600
|
@objc
|
|
@@ -650,4 +660,3 @@ class InfivizShotsReactSdk: RCTEventEmitter {
|
|
|
650
660
|
sendEvent(withName: "SessionRealTimeResultEvent", body: payload)
|
|
651
661
|
}
|
|
652
662
|
}
|
|
653
|
-
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","NativeModules","NativeEventEmitter","LINKING_ERROR","select","ios","default","InfivizShotsReactSdk","Proxy","get","Error","InfivizShotsReactSdkEmitter"],"sourceRoot":"../../src","sources":["NativeInfivizShotsReactSdk.tsx"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,aAAa,EAAEC,kBAAkB,QAAQ,cAAc;
|
|
1
|
+
{"version":3,"names":["Platform","NativeModules","NativeEventEmitter","LINKING_ERROR","select","ios","default","InfivizShotsReactSdk","Proxy","get","Error","InfivizShotsReactSdkEmitter"],"sourceRoot":"../../src","sources":["NativeInfivizShotsReactSdk.tsx"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,aAAa,EAAEC,kBAAkB,QAAQ,cAAc;AAG1E,MAAMC,aAAa,GACjB,qEAAqE,GACrEH,QAAQ,CAACI,MAAM,CAAC;EACdC,GAAG,EAAE,gCAAgC;EACrCC,OAAO,EAAE;AACX,CAAC,CAAC,GACF,sDAAsD,GACtD,sEAAsE;AAExE,MAAMC,oBAAoB,GAAGN,aAAa,CAACM,oBAAoB,GAC3DN,aAAa,CAACM,oBAAoB,GAClC,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AA4EL,OAAO,MAAMQ,2BAA2B,GAAG,IAAIT,kBAAkB,CAACK,oBAAoB,CAAC;AAEvF,eAAeA,oBAAoB","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -13,8 +13,7 @@ export async function startCamera(taskName, storeTitle, storeId, photoType, cate
|
|
|
13
13
|
return InfivizShotsReactSdk.startCamera(taskName, storeTitle, storeId, photoType, category, maxPhoto, maxPhotoOneGo, metaData);
|
|
14
14
|
}
|
|
15
15
|
export async function fetchSessionDetails(temporarySessionID) {
|
|
16
|
-
const
|
|
17
|
-
const session = JSON.parse(jsonString);
|
|
16
|
+
const session = await InfivizShotsReactSdk.fetchSessionDetails(temporarySessionID);
|
|
18
17
|
return session;
|
|
19
18
|
}
|
|
20
19
|
export async function deletePhoto(imageURI, temporarySessionId) {
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["InfivizShotsReactSdk","InfivizShotsReactSdkEmitter","InfivizShotsReactSdkEvents","addListener","eventName","callback","removeAllListeners","initialize","appID","authSecret","accountKey","userID","clientID","apiToken","env","syncSession","sessionId","startCamera","taskName","storeTitle","storeId","photoType","category","maxPhoto","maxPhotoOneGo","metaData","fetchSessionDetails","temporarySessionID","
|
|
1
|
+
{"version":3,"names":["InfivizShotsReactSdk","InfivizShotsReactSdkEmitter","InfivizShotsReactSdkEvents","addListener","eventName","callback","removeAllListeners","initialize","appID","authSecret","accountKey","userID","clientID","apiToken","env","syncSession","sessionId","startCamera","taskName","storeTitle","storeId","photoType","category","maxPhoto","maxPhotoOneGo","metaData","fetchSessionDetails","temporarySessionID","session","deletePhoto","imageURI","temporarySessionId","retakeImage","fetchUniversalSessionId","resumeCamera","logout","getIrResult","getActionsResult","getSessionStatus","sessionStatusJson","sessionStatus","JSON","parse","viewIrResult","viewIRResults","startActionsWorkflow","latitude","longitude","dateInMMDDYYYY","startActionsWorkFlow","uploadSessions","uploadSession","Environment"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Platform, NativeModules, NativeEventEmitter } from 'react-native';
|
|
2
|
+
import { InfiSession } from './types/InfiSession';
|
|
2
3
|
|
|
3
4
|
const LINKING_ERROR =
|
|
4
5
|
`The package 'InfiBridge' doesn't seem to be linked. Make sure: \n\n` +
|
|
@@ -66,7 +67,7 @@ interface InfivizShotsReactSdkType {
|
|
|
66
67
|
|
|
67
68
|
fetchSessionDetails(
|
|
68
69
|
temporarySessionID: string
|
|
69
|
-
): Promise<
|
|
70
|
+
): Promise<InfiSession>;
|
|
70
71
|
|
|
71
72
|
getSessionStatus(
|
|
72
73
|
temporarySessionID: string
|
package/src/index.tsx
CHANGED
|
@@ -42,8 +42,7 @@ export async function startCamera(
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
export async function fetchSessionDetails(temporarySessionID: string): Promise<InfiSession> {
|
|
45
|
-
const
|
|
46
|
-
const session: InfiSession = JSON.parse(jsonString);
|
|
45
|
+
const session: InfiSession = await InfivizShotsReactSdk.fetchSessionDetails(temporarySessionID);
|
|
47
46
|
return session;
|
|
48
47
|
}
|
|
49
48
|
|