Browse Source

Update VersionUpdateHandler.swift

master
Abhishek Banthia 6 months ago
parent
commit
eb3a10eeef
  1. 74
      Clocker/Overall App/VersionUpdateHandler.swift

74
Clocker/Overall App/VersionUpdateHandler.swift

@ -34,7 +34,6 @@ class VersionUpdateHandler: NSObject {
private var checkPeriod: Double = 0.0 private var checkPeriod: Double = 0.0
private var remindPeriod: Double = 1.0 private var remindPeriod: Double = 1.0
private var verboseLogging: Bool = true private var verboseLogging: Bool = true
private var updateURL: URL!
private var checkingForNewVersion: Bool = false private var checkingForNewVersion: Bool = false
private var remoteVersionsDict: [String: Any] = [:] private var remoteVersionsDict: [String: Any] = [:]
private var downloadError: Error? private var downloadError: Error?
@ -45,7 +44,7 @@ class VersionUpdateHandler: NSObject {
private var localRepeater: Repeater? private var localRepeater: Repeater?
private var showOnFirstLaunch: Bool = false private var showOnFirstLaunch: Bool = false
public var previewMode: Bool = true public var previewMode: Bool = false
private var versionDetails: String? private var versionDetails: String?
override init() { override init() {
@ -79,7 +78,6 @@ class VersionUpdateHandler: NSObject {
super.init() super.init()
setAppStoreID(0)
applicationLaunched() applicationLaunched()
} }
@ -112,25 +110,8 @@ class VersionUpdateHandler: NSObject {
} }
private func updatedURL() -> URL { private func updatedURL() -> URL {
if let url = updateURL, url.absoluteString.isEmpty == false {
return updateURL
}
if let appStoreId = appStoreID() {
Logger.info("No App Store ID was found for Clocker")
return URL(string: "macappstore://itunes.apple.com/app/idid\(appStoreId)")!
}
// Last resort // Last resort
return URL(string: "macappstore://itunes.apple.com/app/id\(VersionUpdateHandler.kVersionMacAppStoreAppID)")! return URL(string: "macappstore://itunes.apple.com/us/app/clocker/id1056643111")!
}
private func appStoreID() -> Int? {
return UserDefaults.standard.integer(forKey: VersionUpdateHandler.kMacAppStoreIDKey)
}
@objc func setAppStoreID(_ appStoreID: Int) {
UserDefaults.standard.set(appStoreID, forKey: VersionUpdateHandler.kMacAppStoreIDKey)
} }
@objc private func setLastChecked(_ date: Date) { @objc private func setLastChecked(_ date: Date) {
@ -241,19 +222,12 @@ class VersionUpdateHandler: NSObject {
var versions: [String:String]? = nil var versions: [String:String]? = nil
var itunesServiceURL = "http://itunes.apple.com/\(self.appStoreCountry ?? "us")/lookup" var itunesServiceURL = "http://itunes.apple.com/\(self.appStoreCountry ?? "us")/lookup"
if let appStoreID = appStoreID(), appStoreID != 0 { itunesServiceURL = itunesServiceURL.appendingFormat("?bundleId=%@", self.applicationBundleID)
Logger.info("--- App Store ID is \(appStoreID)")
itunesServiceURL = itunesServiceURL.appendingFormat("?id=%@", appStoreID)
} else {
itunesServiceURL = itunesServiceURL.appendingFormat("?bundleId=%@", self.applicationBundleID)
}
if (verboseLogging) { if (verboseLogging) {
Logger.info("iVersion is checking \(itunesServiceURL) for a new app version...") Logger.info("iVersion is checking \(itunesServiceURL) for a new app version...")
} }
dataTask = NetworkManager.task(with: itunesServiceURL) { [weak self] response, error in dataTask = NetworkManager.task(with: itunesServiceURL) { [weak self] response, error in
guard let self, let data = response else {return } guard let self, let data = response else {return }
@ -283,18 +257,6 @@ class VersionUpdateHandler: NSObject {
versions = [version : (releaseNotes as? String) ?? ""] versions = [version : (releaseNotes as? String) ?? ""]
} }
// Get app ID
let appStoreIdentifier = appStoreID()
if (appStoreIdentifier == nil || appStoreIdentifier == 0) {
let appStoreIDString = firstResult["trackId"]
performSelector(onMainThread: #selector(setAppStoreID(_:)),
with: appStoreIDString,
waitUntilDone: true)
if (verboseLogging) {
Logger.info("iVersion found the app on iTunes. The App Store ID is \(appStoreIDString ?? "")")
}
}
newerVersionAvailable = latestVersion?.compareVersion(self.applicationVersion) == .orderedDescending newerVersionAvailable = latestVersion?.compareVersion(self.applicationVersion) == .orderedDescending
if (verboseLogging) { if (verboseLogging) {
if (newerVersionAvailable) { if (newerVersionAvailable) {
@ -305,7 +267,7 @@ class VersionUpdateHandler: NSObject {
} }
} else { } else {
if (verboseLogging) { if (verboseLogging) {
Logger.info("iVersion found that the application bundle ID \(self.applicationBundleID) does not match the bundle ID of the app found on iTunes \(bundleID) with the specified App Store ID \(self.appStoreID() ?? 0)") Logger.info("iVersion found that the application bundle ID \(self.applicationBundleID) does not match the bundle ID of the app found on iTunes \(bundleID) with the specified App Store ID")
} }
} }
} else { } else {
@ -330,6 +292,7 @@ class VersionUpdateHandler: NSObject {
@objc private func setRemoteVersionsDict(_ dict: [String: Any]?) { @objc private func setRemoteVersionsDict(_ dict: [String: Any]?) {
if let unwrappedDict = dict { if let unwrappedDict = dict {
Logger.info("Setting Remote Versions Dict to \(unwrappedDict)")
remoteVersionsDict = unwrappedDict remoteVersionsDict = unwrappedDict
} }
} }
@ -473,36 +436,13 @@ class VersionUpdateHandler: NSObject {
} }
private func showAppPageInAppStore() { private func showAppPageInAppStore() {
if (updateURL == nil && appStoreID() == nil) {
if (self.verboseLogging) {
Logger.info("iVersion was unable to open App Store because app store ID isn't set")
}
}
if (self.verboseLogging) { if (self.verboseLogging) {
Logger.info("iVersion will open App Store using the following URL \(updatedURL())") Logger.info("iVersion will open App Store using the following URL \(updatedURL())")
} }
NSWorkspace.shared.open(updatedURL()) NSWorkspace.shared.open(updatedURL())
if (updateURL == nil) {
openAppPageWhenAppStoreLaunched()
}
} }
private func openAppPageWhenAppStoreLaunched() {
// Check if App Store is running
for app in NSWorkspace.shared.runningApplications {
if (app.bundleIdentifier == Self.kVersionMacAppStoreBundleID) {
// Open App Page
Logger.info("About to open App Store with our app")
perform(#selector(NSWorkspace.shared.open(_:)), with: self.updateURL, afterDelay: 5.0)
return
}
}
// Try Again
openAppPageWhenAppStoreLaunched()
}
@objc private func downloadVersionsData() { @objc private func downloadVersionsData() {
if onlyPromptIfMainWindowIsAvailable, NSApplication.shared.mainWindow == nil { if onlyPromptIfMainWindowIsAvailable, NSApplication.shared.mainWindow == nil {
@ -528,10 +468,8 @@ class VersionUpdateHandler: NSObject {
} else { } else {
Logger.info("Version Update Check because an unknown error occurred") Logger.info("Version Update Check because an unknown error occurred")
} }
return
} }
Logger.info("Returning early because remoteVersionsDict is empty")
remoteRepeater = nil
return
} }
let details = versionDetails(since: applicationVersion, in: remoteVersionsDict) let details = versionDetails(since: applicationVersion, in: remoteVersionsDict)

Loading…
Cancel
Save