- Replace ServerConnectivity with CheckServerReachabilityUseCase - Add InfoApiClient for /api/info endpoint - Implement ServerInfoRepository with 30s cache TTL and 5s rate limiting - Update ShareBookmarkViewModel to use ShareExtensionServerCheck manager - Add server reachability check in AppViewModel on app start - Update OfflineSyncManager to use new UseCase - Extend SimpleAPI with checkServerReachability for Share Extension
42 lines
1.1 KiB
Swift
42 lines
1.1 KiB
Swift
import Foundation
|
|
|
|
/// Simple server check manager for Share Extension with caching
|
|
class ShareExtensionServerCheck {
|
|
static let shared = ShareExtensionServerCheck()
|
|
|
|
// Cache properties
|
|
private var cachedResult: Bool?
|
|
private var lastCheckTime: Date?
|
|
private let cacheTTL: TimeInterval = 30.0
|
|
|
|
private init() {}
|
|
|
|
func checkServerReachability() async -> Bool {
|
|
// Check cache first
|
|
if let cached = getCachedResult() {
|
|
return cached
|
|
}
|
|
|
|
// Use SimpleAPI for actual check
|
|
let result = await SimpleAPI.checkServerReachability()
|
|
updateCache(result: result)
|
|
return result
|
|
}
|
|
|
|
// MARK: - Cache Management
|
|
|
|
private func getCachedResult() -> Bool? {
|
|
guard let lastCheck = lastCheckTime,
|
|
Date().timeIntervalSince(lastCheck) < cacheTTL,
|
|
let cached = cachedResult else {
|
|
return nil
|
|
}
|
|
return cached
|
|
}
|
|
|
|
private func updateCache(result: Bool) {
|
|
cachedResult = result
|
|
lastCheckTime = Date()
|
|
}
|
|
}
|