|
|
@@ -97,6 +97,7 @@ class ViewController: NSViewController {
|
|
|
}
|
|
|
|
|
|
func presentScanner(showScanPreview: Bool = false, onComplete: @escaping (Result<NSImage, Error>) -> Void) {
|
|
|
+ guard guardPremiumFeature() else { return }
|
|
|
photoPreviewOverlay?.dismiss(animated: false)
|
|
|
filePreviewOverlay?.dismiss(animated: false)
|
|
|
printTextOverlay?.dismiss(animated: false)
|
|
|
@@ -157,6 +158,7 @@ class ViewController: NSViewController {
|
|
|
}
|
|
|
|
|
|
func presentPrintText() {
|
|
|
+ guard guardPremiumFeature() else { return }
|
|
|
photoPreviewOverlay?.dismiss(animated: false)
|
|
|
filePreviewOverlay?.dismiss(animated: false)
|
|
|
printContactsOverlay?.dismiss(animated: false)
|
|
|
@@ -174,6 +176,7 @@ class ViewController: NSViewController {
|
|
|
}
|
|
|
|
|
|
func presentPrintContacts() {
|
|
|
+ guard guardPremiumFeature() else { return }
|
|
|
photoPreviewOverlay?.dismiss(animated: false)
|
|
|
filePreviewOverlay?.dismiss(animated: false)
|
|
|
printTextOverlay?.dismiss(animated: false)
|
|
|
@@ -199,6 +202,7 @@ class ViewController: NSViewController {
|
|
|
}
|
|
|
|
|
|
func presentOCRFile(imageURL: URL) {
|
|
|
+ guard guardPremiumFeature() else { return }
|
|
|
photoPreviewOverlay?.dismiss(animated: false)
|
|
|
filePreviewOverlay?.dismiss(animated: false)
|
|
|
printTextOverlay?.dismiss(animated: false)
|
|
|
@@ -216,6 +220,7 @@ class ViewController: NSViewController {
|
|
|
}
|
|
|
|
|
|
func presentScanFile(pages: [ScanPage]) {
|
|
|
+ guard guardPremiumFeature() else { return }
|
|
|
photoPreviewOverlay?.dismiss(animated: false)
|
|
|
filePreviewOverlay?.dismiss(animated: false)
|
|
|
printTextOverlay?.dismiss(animated: false)
|
|
|
@@ -242,6 +247,7 @@ class ViewController: NSViewController {
|
|
|
}
|
|
|
|
|
|
func presentDrawPrint() {
|
|
|
+ guard guardPremiumFeature() else { return }
|
|
|
photoPreviewOverlay?.dismiss(animated: false)
|
|
|
filePreviewOverlay?.dismiss(animated: false)
|
|
|
printTextOverlay?.dismiss(animated: false)
|
|
|
@@ -259,6 +265,7 @@ class ViewController: NSViewController {
|
|
|
}
|
|
|
|
|
|
func presentPhotoPreview(urls: [URL]) {
|
|
|
+ guard guardPremiumFeature() else { return }
|
|
|
photoPreviewOverlay?.dismiss(animated: false)
|
|
|
filePreviewOverlay?.dismiss(animated: false)
|
|
|
ocrFileOverlay?.dismiss(animated: false)
|
|
|
@@ -277,6 +284,7 @@ class ViewController: NSViewController {
|
|
|
}
|
|
|
|
|
|
func presentFilePreview(urls: [URL]) {
|
|
|
+ guard guardPremiumFeature() else { return }
|
|
|
photoPreviewOverlay?.dismiss(animated: false)
|
|
|
filePreviewOverlay?.dismiss(animated: false)
|
|
|
ocrFileOverlay?.dismiss(animated: false)
|
|
|
@@ -411,6 +419,11 @@ class ViewController: NSViewController {
|
|
|
}
|
|
|
|
|
|
private func showDestination(_ destination: SidebarDestination) {
|
|
|
+ if destination == .scan || destination == .print, !StoreManager.shared.isPremium {
|
|
|
+ presentPaywall(returnToHomeOnDismiss: true)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
dismissFeatureOverlays()
|
|
|
contentContainer.isHidden = false
|
|
|
|
|
|
@@ -426,13 +439,17 @@ class ViewController: NSViewController {
|
|
|
contentTopBelowWindow.isActive = isSettings
|
|
|
|
|
|
if destination == .scanAndHome {
|
|
|
- presentPaywall()
|
|
|
+ if StoreManager.shared.isPremium {
|
|
|
+ dismissPaywall()
|
|
|
+ } else {
|
|
|
+ presentPaywall(returnToHomeOnDismiss: true)
|
|
|
+ }
|
|
|
} else {
|
|
|
dismissPaywall()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private func presentPaywall() {
|
|
|
+ func presentPaywall(returnToHomeOnDismiss: Bool = true) {
|
|
|
if let paywallOverlay {
|
|
|
Task { @MainActor in
|
|
|
await StoreManager.shared.refreshPremiumStatus()
|
|
|
@@ -443,15 +460,26 @@ class ViewController: NSViewController {
|
|
|
setTrafficLightsHidden(true)
|
|
|
let overlay = PaywallOverlayView()
|
|
|
overlay.onDismiss = { [weak self] in
|
|
|
- self?.setTrafficLightsHidden(false)
|
|
|
- self?.paywallOverlay = nil
|
|
|
- self?.sidebar.select(.home)
|
|
|
- self?.showDestination(.home)
|
|
|
+ guard let self else { return }
|
|
|
+ self.setTrafficLightsHidden(false)
|
|
|
+ self.paywallOverlay = nil
|
|
|
+ if returnToHomeOnDismiss {
|
|
|
+ self.sidebar.select(.home)
|
|
|
+ self.showDestination(.home)
|
|
|
+ }
|
|
|
}
|
|
|
overlay.present(in: view)
|
|
|
paywallOverlay = overlay
|
|
|
}
|
|
|
|
|
|
+ private func guardPremiumFeature() -> Bool {
|
|
|
+ guard StoreManager.shared.isPremium else {
|
|
|
+ presentPaywall(returnToHomeOnDismiss: false)
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ }
|
|
|
+
|
|
|
private func dismissPaywall() {
|
|
|
paywallOverlay?.removeFromSuperview()
|
|
|
paywallOverlay = nil
|