@@ -10,7 +10,7 @@ import Foundation
1010import UIKit
1111
1212public class QiscusCore : NSObject {
13- public static let qiscusCoreVersionNumber : String = " 1.12.0 "
13+ public static let qiscusCoreVersionNumber : String = " 1.13.6 "
1414 class var bundle : Bundle {
1515 get {
1616 let podBundle = Bundle ( for: QiscusCore . self)
@@ -112,6 +112,7 @@ public class QiscusCore: NSObject {
112112
113113 public static var fromSetupWithCustomServer : Bool = false
114114 public static var reconnectCounter : Int = 0
115+ public static var maxDayPeriodicClearLocalDB : Int = 7 //by default 7 days
115116
116117 @available ( * , deprecated, message: " will soon become unavailable. " )
117118 public static var enableDebugPrint : Bool = false
@@ -163,6 +164,10 @@ public class QiscusCore: NSObject {
163164 config. server = QiscusServer ( url: URL . init ( string: " https://api.qiscus.com " ) !, realtimeURL: self . defaultRealtimeURL, realtimePort: 1885 , brokerLBUrl: self . defaultBrokerUrl)
164165 }
165166
167+ if QiscusCore . hasSetupUser ( ) {
168+ checkLastClearDB ( )
169+ }
170+
166171 self . eventdelegate? . onDebugEvent ( " InitQiscus-setupWithCustomServer " , message: " start check QiscusCore.isLogined \( QiscusLogger . getDateTime ( ) ) " )
167172 self . fromSetupWithCustomServer = true
168173
@@ -201,8 +206,13 @@ public class QiscusCore: NSObject {
201206 config. eventdelegate = self . eventdelegate
202207 reconnectCounter = 0
203208
209+
204210 config. server = QiscusServer ( url: URL . init ( string: " https://api.qiscus.com " ) !, realtimeURL: self . defaultRealtimeURL, realtimePort: 1885 , brokerLBUrl: self . defaultBrokerUrl)
205211
212+ if QiscusCore . hasSetupUser ( ) {
213+ checkLastClearDB ( )
214+ }
215+
206216 self . eventdelegate? . onDebugEvent ( " InitQiscus-setupWithCustomServer " , message: " start check QiscusCore.isLogined \( QiscusLogger . getDateTime ( ) ) " )
207217 self . fromSetupWithCustomServer = true
208218
@@ -254,6 +264,10 @@ public class QiscusCore: NSObject {
254264 //realtime.setup(appName: AppID)
255265 }
256266
267+ if QiscusCore . hasSetupUser ( ) {
268+ checkLastClearDB ( )
269+ }
270+
257271 self . eventdelegate? . onDebugEvent ( " InitQiscus-setupWithCustomServer " , message: " start check QiscusCore.isLogined \( QiscusLogger . getDateTime ( ) ) " )
258272 self . fromSetupWithCustomServer = true
259273
@@ -272,6 +286,40 @@ public class QiscusCore: NSObject {
272286 getAppConfig ( )
273287 }
274288
289+ private class func checkLastClearDB( ) {
290+ if let last = self . config. lastClearDB{
291+ let dateFormatter = DateFormatter ( )
292+ dateFormatter. dateFormat = " yyyy'-'MM'-'dd'T'HH':'mm':'ssZ "
293+ dateFormatter. timeZone = . current
294+
295+ let dateString = last
296+
297+ if let date = dateFormatter. date ( from: dateString) {
298+ let dateNow = Date ( )
299+ let differerence = Calendar . current. dateComponents ( [ . day] , from: date, to: dateNow)
300+ if let dayDiff = differerence. day{
301+ if dayDiff >= maxDayPeriodicClearLocalDB {
302+ QiscusCore . database. clear ( )
303+ //save to sharedPref
304+ self . config. lastClearDB = self . getTimestamp ( )
305+ }
306+ }
307+ }
308+ } else {
309+ QiscusCore . database. clear ( )
310+ //save to sharedPref
311+ self . config. lastClearDB = self . getTimestamp ( )
312+ }
313+ }
314+
315+ private class func getTimestamp( ) -> String {
316+ let formatter = DateFormatter ( )
317+ formatter. dateFormat = " yyyy-MM-dd'T'HH:mm:ssZ "
318+ formatter. timeZone = TimeZone . current
319+ formatter. locale = Locale ( identifier: " en_US_POSIX " )
320+ return formatter. string ( from: Date ( ) )
321+ }
322+
275323 private class func getAppConfig( ) {
276324 network. getAppConfig ( onSuccess: { ( appConfig) in
277325 QiscusCore . enableEventReport = appConfig. enableEventReport
@@ -547,6 +595,7 @@ public class QiscusCore: NSObject {
547595 network. login ( email: userID, password: userKey, username: username, avatarUrl: avatarURL? . absoluteString, extras: extras, onSuccess: { ( user) in
548596 // save user in local
549597 ConfigManager . shared. user = user
598+ ConfigManager . shared. lastClearDB = self . getTimestamp ( )
550599 realtime. connect ( username: user. email, password: user. token)
551600 onSuccess ( user)
552601 } ) { ( error) in
@@ -571,6 +620,7 @@ public class QiscusCore: NSObject {
571620 network. login ( email: userId, password: userKey, username: username, avatarUrl: avatarURL? . absoluteString, extras: extras, onSuccess: { ( user) in
572621 // save user in local
573622 ConfigManager . shared. user = user
623+ ConfigManager . shared. lastClearDB = self . getTimestamp ( )
574624 realtime. connect ( username: user. email, password: user. token)
575625 onSuccess ( user)
576626 } ) { ( error) in
@@ -592,6 +642,7 @@ public class QiscusCore: NSObject {
592642 network. login ( identityToken: token, onSuccess: { ( user) in
593643 // save user in local
594644 ConfigManager . shared. user = user
645+ ConfigManager . shared. lastClearDB = self . getTimestamp ( )
595646 onSuccess ( user)
596647 } ) { ( error) in
597648 onError ( error)
@@ -610,6 +661,7 @@ public class QiscusCore: NSObject {
610661 network. login ( identityToken: token, onSuccess: { ( user) in
611662 // save user in local
612663 ConfigManager . shared. user = user
664+ ConfigManager . shared. lastClearDB = self . getTimestamp ( )
613665 onSuccess ( user)
614666 } ) { ( error) in
615667 onError ( error)
0 commit comments