diff --git a/JoyfillSwiftUIExample/JoyfillUITests/ChangeUITests/OnChangeHandlerUITests.swift b/JoyfillSwiftUIExample/JoyfillUITests/ChangeUITests/OnChangeHandlerUITests.swift index fd4d0242..ce483729 100644 --- a/JoyfillSwiftUIExample/JoyfillUITests/ChangeUITests/OnChangeHandlerUITests.swift +++ b/JoyfillSwiftUIExample/JoyfillUITests/ChangeUITests/OnChangeHandlerUITests.swift @@ -2603,6 +2603,30 @@ final class OnChangeHandlerUITests: JoyfillUITestsBaseClass { deleteSelectedImages() } + func testSignatureCoordinatess() throws { + guard UIDevice.current.userInterfaceIdiom == .pad else { + return + } + + let pageSelectionButton = app.buttons.matching(identifier: "PageNavigationIdentifier") + let pageSheetSelectionButton = app.buttons.matching(identifier: "PageSelectionIdentifier") + + pageSelectionButton.element(boundBy: 0).tap() + pageSheetSelectionButton.element(boundBy: 3).tap() + pageSelectionButton.element(boundBy: 1).tap() + pageSheetSelectionButton.element(boundBy: 3).tap() + + let signatureButtons = app.buttons.matching(identifier: "SignatureIdentifier") + let leftSignatureButton = signatureButtons.element(boundBy: 0) + let rightSignatureButton = signatureButtons.element(boundBy: 1) + + leftSignatureButton.tap() + drawSignatureLine() + app.buttons["SaveSignatureIdentifier"].tap() + + XCTAssertEqual(rightSignatureButton.label, "Edit Signature", "Signature added on left should reflect on right side.") + } + func deleteSelectedImages() { app.buttons["ImageDeleteIdentifier"].tap() } diff --git a/Sources/JoyfillUI/View/Fields/SignatureView.swift b/Sources/JoyfillUI/View/Fields/SignatureView.swift index acd8bd45..9a9a176d 100644 --- a/Sources/JoyfillUI/View/Fields/SignatureView.swift +++ b/Sources/JoyfillUI/View/Fields/SignatureView.swift @@ -107,10 +107,24 @@ struct SignatureView: View { } } .onChange(of: signatureURL) { newValue in + if newValue == (signatureDataModel.signatureURL ?? "") { + return + } let newSignatureImageValue = ValueUnion.string(newValue) let fieldEvent = FieldChangeData(fieldIdentifier: signatureDataModel.fieldIdentifier, updateValue: newSignatureImageValue) eventHandler.onChange(event: fieldEvent) } + .onChange(of: signatureDataModel.signatureURL ?? "") { latestURL in + guard latestURL != signatureURL else { + return + } + signatureURL = latestURL + if latestURL.isEmpty { + signatureImage = nil + } else { + loadImageFromURL() + } + } } func loadImageFromURL() {