@@ -22,7 +22,7 @@ public class AppVersionManager {
2222 userDefaults. set ( lastOpenedVersion, forKey: " LastOpenedVersion " )
2323 }
2424 }
25- /// Whether or not this is the first activation.
25+ /// Whether or not this is the first activation
2626 public var isTheFirstLaunch : Bool {
2727 get {
2828 return lastOpenedVersion == " "
@@ -35,22 +35,29 @@ public class AppVersionManager {
3535 /// Variable to detect if the major version number has increased.
3636 public var isMajorVersionUpdated : Bool {
3737 get {
38- let lastOpenedComponents = filled ( splitByDot ( lastOpenedVersion) , count: 3 )
39- let currentComponents = filled ( splitByDot ( version) , count: 3 )
40- return lastOpenedComponents [ 0 ] < currentComponents [ 0 ]
38+ if !lastOpenedVersion. isEmpty {
39+ let lastOpenedComponents = parseVersion ( lastOpenedVersion)
40+ let currentComponents = parseVersion ( version)
41+ return lastOpenedComponents. major < currentComponents. major
42+ } else {
43+ return false
44+ }
4145 }
4246
4347 set {
4448 lastOpenedVersion = version
4549 }
4650 }
4751 /// Variable to detect if the minor version number or higher has increased.
48- public var isMajorOrMinorVersionUpdated : Bool {
52+ public var isMinorVersionUpdated : Bool {
4953 get {
50- let lastOpenedComponents = filled ( splitByDot ( lastOpenedVersion) , count: 3 )
51- let currentComponents = filled ( splitByDot ( version) , count: 3 )
52- return ( lastOpenedComponents [ 0 ] < currentComponents [ 0 ] && lastOpenedComponents [ 1 ] <= currentComponents [ 1 ] ) ||
53- ( lastOpenedComponents [ 0 ] <= currentComponents [ 0 ] && lastOpenedComponents [ 1 ] < currentComponents [ 1 ] )
54+ if !lastOpenedVersion. isEmpty {
55+ let lastOpenedComponents = parseVersion ( lastOpenedVersion)
56+ let currentComponents = parseVersion ( version)
57+ return lastOpenedComponents. major == currentComponents. major && lastOpenedComponents. minor < currentComponents. minor
58+ } else {
59+ return false
60+ }
5461 }
5562
5663 set {
@@ -59,8 +66,18 @@ public class AppVersionManager {
5966 }
6067 /// Default initializer
6168 public init ( ) {
62- self . version = Bundle . main. object ( forInfoDictionaryKey: " CFBundleShortVersionString " ) as! String
63- self . lastOpenedVersion = userDefaults. string ( forKey: " LastOpenedVersion " ) ?? " "
69+ self . version = Bundle . main
70+ . object (
71+ forInfoDictionaryKey: " CFBundleShortVersionString "
72+ ) as! String
73+ self . lastOpenedVersion = userDefaults
74+ . string ( forKey: " LastOpenedVersion " ) ?? " "
75+ }
76+
77+ func parseVersion( _ versionString: String ) -> ( major: Int , minor: Int , patch: Int ) {
78+ var components = versionString. split ( separator: " . " ) . compactMap { Int ( $0) }
79+ components = ( 0 ..< 3 ) . map { $0 < components. count ? components [ $0] : 0 }
80+ return ( major: components [ 0 ] , minor: components [ 1 ] , patch: components [ 2 ] )
6481 }
6582}
6683/// AppVersionManager environment values
0 commit comments