extension PayMitto {
public func startSDK(
configuration: PayMittoConfiguration = .init(),
themeConfiguration: String? = nil,
fetchAccessTokenDetails: @escaping () async throws -> AccessTokenDetails,
verifyFundsAndCreateTransfer: @escaping (TransferRequest) async throws(PayMittoError) -> TransferDetails,
onLaunch: (() -> Void)? = .none,
onDismiss: (() -> Void)? = .none,
onLoad: @escaping (AnyView) -> Void
) {
...
// onLaunch() is called when sdkView appears
onLoad(sdkView)
}
}
private let configuration: PayMittoConfiguration = .init()
private func fetchAccessTokenDetails() async throws -> AccessTokenDetails {
...
}
private func verifyFundsAndCreateTransfer(
transferRequest: TransferRequest
) async throws(PayMittoError) -> TransferDetails {
...
}
private func onLaunch() {
print("PayMitto SDK launched")
}
private func onDismiss() {
print("PayMitto SDK dismissed")
}
private func onLoad() { [weak self] sdkView
// navigate to sdkView
}
PayMitto.shared.startSDK(
configuration: configuration,
fetchAccessTokenDetails: fetchAccessTokenDetails,
verifyFundsAndCreateTransfer: verifyFundsAndCreateTransfer,
onLaunch: onLaunch,
onDismiss: onDismiss,
onLoad: onLoad
)
private let themeConfiguration = """
{
"foundations": {
"colorPrimary": { "light": "#42CB91", "dark": "#42CB91" },
"fontFamily": "inter"
},
"components": {
"button": {
"buttonRadius": 8,
"buttonTextCase": "capitalize"
}
}
}
"""
PayMitto.shared.startSDK(
themeConfiguration: themeConfiguration,
fetchAccessTokenDetails: fetchAccessTokenDetails,
verifyFundsAndCreateTransfer: verifyFundsAndCreateTransfer,
onLoad: { sdkView in
// navigate to sdkView
}
)