Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 3 additions & 11 deletions Sources/SuperwallKit/DevServer/DevServerLocator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -186,16 +186,8 @@ actor DevServerLocator {
}
}

private static func loadWithURLSession(_ request: URLRequest) async throws -> (Data, URLResponse?) {
return try await withCheckedThrowingContinuation { continuation in
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let data = data {
continuation.resume(returning: (data, response))
} else {
continuation.resume(throwing: error ?? URLError(.badServerResponse))
}
}
task.resume()
}
static func loadWithURLSession(_ request: URLRequest) async throws -> (Data, URLResponse?) {
let (data, response) = try await URLSession.shared.data(for: request)
return (data, response)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ extension UIApplication {
// First, try to find a key window in the foreground active scene
if let windowScene = sharedApplication.connectedScenes
.first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene {
return windowScene.windows.first { $0.isKeyWindow } ?? windowScene.windows.first
return windowScene.keyWindow ?? windowScene.windows.first
}

// Then try to find a key window in the foreground inactive scene
if let windowScene = sharedApplication.connectedScenes
.first(where: { $0.activationState == .foregroundInactive }) as? UIWindowScene {
return windowScene.windows.first { $0.isKeyWindow } ?? windowScene.windows.first
return windowScene.keyWindow ?? windowScene.windows.first
}

// Fallback: search across all scenes for a key window
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,6 @@ import UIKit

extension UIWindow {
static var isLandscape: Bool {
guard let sharedApplication = UIApplication.sharedApplication else {
return false
}
return sharedApplication.windows
.first?
.windowScene?
.interfaceOrientation
.isLandscape ?? false
return UIApplication.sharedApplication?.activeWindowScene?.interfaceOrientation.isLandscape ?? false
}
}
172 changes: 2 additions & 170 deletions Sources/SuperwallKit/Network/Device Helper/SwiftVersion.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,108 +4,14 @@
//
// Created by Yusuf Tör on 05/08/2025.
//
// swiftlint:disable function_body_length

extension DeviceHelper {
func currentSwiftVersion() -> String {
#if swift(>=6.2)
return "6.2"
#elseif swift(>=6.1)
return "6.1"
#elseif swift(>=6.0)
return "6.0"
#elseif swift(>=5.10)
return "5.10"
#elseif swift(>=5.9.2)
return "5.9.2"
#elseif swift(>=5.9.1)
return "5.9.1"
#elseif swift(>=5.9)
return "5.9"
#elseif swift(>=5.8.1)
return "5.8.1"
#elseif swift(>=5.8)
return "5.8"
#elseif swift(>=5.7.3)
return "5.7.3"
#elseif swift(>=5.7.2)
return "5.7.2"
#elseif swift(>=5.7.1)
return "5.7.1"
#elseif swift(>=5.7)
return "5.7"
#elseif swift(>=5.6.1)
return "5.6.1"
#elseif swift(>=5.6)
return "5.6"
#elseif swift(>=5.5.2)
return "5.5.2"
#elseif swift(>=5.5.1)
return "5.5.1"
#elseif swift(>=5.5)
return "5.5"
#elseif swift(>=5.4.2)
return "5.4.2"
#elseif swift(>=5.4)
return "5.4"
#elseif swift(>=5.3.2)
return "5.3.2"
#elseif swift(>=5.3.1)
return "5.3.1"
#elseif swift(>=5.3)
return "5.3"
#elseif swift(>=5.2.4)
return "5.2.4"
#elseif swift(>=5.2.2)
return "5.2.2"
#elseif swift(>=5.2)
return "5.2"
#elseif swift(>=5.1.3)
return "5.1.3"
#elseif swift(>=5.1.2)
return "5.1.2"
#elseif swift(>=5.1)
return "5.1"
#elseif swift(>=5.0.1)
return "5.0.1"
#elseif swift(>=5.0)
return "5.0"
#elseif swift(>=4.2.1)
return "4.2.1"
#elseif swift(>=4.2)
return "4.2"
#elseif swift(>=4.1.2)
return "4.1.2"
#elseif swift(>=4.1)
return "4.1"
#elseif swift(>=4.0.3)
return "4.0.3"
#elseif swift(>=4.0.2)
return "4.0.2"
#elseif swift(>=4.0)
return "4.0"
#elseif swift(>=3.1)
return "3.1"
#elseif swift(>=3.0.2)
return "3.0.2"
#elseif swift(>=3.0.1)
return "3.0.1"
#elseif swift(>=3.0)
return "3.0"
#elseif swift(>=2.2)
return "2.2"
#elseif swift(>=2.1)
return "2.1"
#elseif swift(>=2.0)
return "2.0"
#elseif swift(>=1.2)
return "1.2"
#elseif swift(>=1.1)
return "1.1"
#elseif swift(>=1.0)
return "1.0"
#else
return "Unknown"
// A Swift 6 compiler reports this in the Swift 5 language mode.
return "5.10"
#endif
}

Expand All @@ -124,80 +30,6 @@ extension DeviceHelper {
return "6.2.3"
#elseif compiler(>=6.2)
return "6.2"
#elseif compiler(>=6.1)
return "6.1"
#elseif compiler(>=6.0)
return "6.0"
#elseif compiler(>=5.10)
return "5.10"
#elseif compiler(>=5.9.2)
return "5.9.2"
#elseif compiler(>=5.9.1)
return "5.9.1"
#elseif compiler(>=5.9)
return "5.9"
#elseif compiler(>=5.8.1)
return "5.8.1"
#elseif compiler(>=5.8)
return "5.8"
#elseif compiler(>=5.7.3)
return "5.7.3"
#elseif compiler(>=5.7.2)
return "5.7.2"
#elseif compiler(>=5.7.1)
return "5.7.1"
#elseif compiler(>=5.7)
return "5.7"
#elseif compiler(>=5.6.1)
return "5.6.1"
#elseif compiler(>=5.6)
return "5.6"
#elseif compiler(>=5.5.2)
return "5.5.2"
#elseif compiler(>=5.5.1)
return "5.5.1"
#elseif compiler(>=5.5)
return "5.5"
#elseif compiler(>=5.4.2)
return "5.4.2"
#elseif compiler(>=5.4)
return "5.4"
#elseif compiler(>=5.3.2)
return "5.3.2"
#elseif compiler(>=5.3.1)
return "5.3.1"
#elseif compiler(>=5.3)
return "5.3"
#elseif compiler(>=5.2.4)
return "5.2.4"
#elseif compiler(>=5.2.2)
return "5.2.2"
#elseif compiler(>=5.2)
return "5.2"
#elseif compiler(>=5.1.3)
return "5.1.3"
#elseif compiler(>=5.1.2)
return "5.1.2"
#elseif compiler(>=5.1)
return "5.1"
#elseif compiler(>=5.0.1)
return "5.0.1"
#elseif compiler(>=5.0)
return "5.0"
#elseif compiler(>=4.2.1)
return "4.2.1"
#elseif compiler(>=4.2)
return "4.2"
#elseif compiler(>=4.1.2)
return "4.1.2"
#elseif compiler(>=4.1)
return "4.1"
#elseif compiler(>=4.0.3)
return "4.0.3"
#elseif compiler(>=4.0.2)
return "4.0.2"
#elseif compiler(>=4.0)
return "4.0"
#else
return "Unknown"
#endif
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
// swiftlint:disable function_body_length

import Foundation
import Superscript
internal import Superscript

protocol ExpressionEvaluating {
func evaluateExpression(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
// swiftlint:disable function_body_length

import Foundation
import Superscript
internal import Superscript

final class EvaluationContext: HostContext {
let storage: Storage
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
// Created by Yusuf Tör on 12/10/2022.
//

import Combine
import SwiftUI

struct HiddenListenerViewModifier: ViewModifier {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
// Created by Yusuf Tör on 01/02/2023.
//

import Combine
import SwiftUI

struct PaddingListenerViewModifier: ViewModifier {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1439,21 +1439,17 @@ extension PaywallViewController: PaywallMessageHandlerDelegate {
func requestReview(type: ReviewType) {
switch type {
case .inApp:
#if os(visionOS)
if let scene = view.window?.windowScene {
if let scene = view.window?.windowScene ?? UIApplication.sharedApplication?.activeWindowScene {
#if os(visionOS)
AppStore.requestReview(in: scene)
}
#else
if let scene = view.window?.windowScene {
#else
if #available(iOS 16.0, *) {
AppStore.requestReview(in: scene)
} else {
SKStoreReviewController.requestReview(in: scene)
}
} else {
SKStoreReviewController.requestReview()
}
#endif
#endif
}
trackReviewRequest(type: .inApp)
case .external:
let appId: String
Expand Down
54 changes: 15 additions & 39 deletions Sources/SuperwallKit/Storage/Core Data/CoreDataManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -174,26 +174,18 @@ class CoreDataManager {
lastEventDate = placement.name == request.placementName ? placement.createdAt : nil
}

return await withCheckedContinuation { continuation in
coreDataStack.getLastSavedPlacement(
name: request.placementName,
before: lastEventDate
) { placement in
guard let placement = placement else {
return continuation.resume(returning: nil)
}
let createdAt = placement.createdAt
let calendar = Calendar.current
let currentDate = Date()
let components = calendar.dateComponents(
[request.type.calendarComponent],
from: createdAt,
to: currentDate
)

continuation.resume(returning: request.type.dateComponent(from: components))
}
guard let createdAt = await coreDataStack.getLastSavedPlacementDate(
name: request.placementName,
before: lastEventDate
) else {
return nil
}
let components = Calendar.current.dateComponents(
[request.type.calendarComponent],
from: createdAt,
to: Date()
)
return request.type.dateComponent(from: components)
}

func countAudienceOccurrences(
Expand Down Expand Up @@ -223,18 +215,10 @@ class CoreDataManager {
audienceOccurrence.key
)

return await withCheckedContinuation { continuation in
coreDataStack.count(for: fetchRequest) { count in
continuation.resume(returning: count)
}
}
return await coreDataStack.count(for: fetchRequest)
case .infinity:
fetchRequest.predicate = NSPredicate(format: "occurrenceKey == %@", audienceOccurrence.key)
return await withCheckedContinuation { continuation in
coreDataStack.count(for: fetchRequest) { count in
continuation.resume(returning: count)
}
}
return await coreDataStack.count(for: fetchRequest)
}
}

Expand Down Expand Up @@ -265,18 +249,10 @@ class CoreDataManager {
placementName
)

return await withCheckedContinuation { continuation in
coreDataStack.count(for: fetchRequest) { count in
continuation.resume(returning: count)
}
}
return await coreDataStack.count(for: fetchRequest)
case .infinity:
fetchRequest.predicate = NSPredicate(format: "name == %@", placementName)
return await withCheckedContinuation { continuation in
coreDataStack.count(for: fetchRequest) { count in
continuation.resume(returning: count)
}
}
return await coreDataStack.count(for: fetchRequest)
}
}
}
Loading
Loading