Skip to content

Instantly share code, notes, and snippets.

@rhyskentish
Created November 14, 2022 08:52
Show Gist options
  • Save rhyskentish/a57b4293f980d4184e987fc9c803cb32 to your computer and use it in GitHub Desktop.
Save rhyskentish/a57b4293f980d4184e987fc9c803cb32 to your computer and use it in GitHub Desktop.
extension InAppMessagingManager: InAppMessagingDisplay {
func displayMessage(_ messageForDisplay: InAppMessagingDisplayMessage, displayDelegate: InAppMessagingDisplayDelegate) {
switch messageForDisplay.type {
case .banner:
guard let message = messageForDisplay as? InAppMessagingBannerDisplay else {
displayDelegate.displayError?(for: messageForDisplay, error: InAppMessagingErrors.decodeInAppMessageError)
return
}
DispatchQueue.main.async {
self.showBanner(message: message, displayDelegate: displayDelegate)
}
return
case .modal:
guard let message = messageForDisplay as? InAppMessagingModalDisplay else {
displayDelegate.displayError?(for: messageForDisplay, error: InAppMessagingErrors.decodeInAppMessageError)
return
}
DispatchQueue.main.async {
self.showModal(message: message, displayDelegate: displayDelegate)
}
return
case .imageOnly:
guard let message = messageForDisplay as? InAppMessagingImageOnlyDisplay else {
displayDelegate.displayError?(for: messageForDisplay, error: InAppMessagingErrors.decodeInAppMessageError)
return
}
DispatchQueue.main.async {
self.showImage(message: message, displayDelegate: displayDelegate)
}
return
case .card:
guard let message = messageForDisplay as? InAppMessagingCardDisplay else {
displayDelegate.displayError?(for: messageForDisplay, error: InAppMessagingErrors.decodeInAppMessageError)
return
}
DispatchQueue.main.async {
self.showCard(message: message, displayDelegate: displayDelegate)
}
return
@unknown default:
// TODO
displayDelegate.messageDismissed?(messageForDisplay, dismissType: .typeAuto)
return
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment