@@ -92,12 +92,17 @@ public class BaseDb {
92
92
self . subscriberDb = SubscriberDb ( self . db!, baseDb: self )
93
93
self . messageDb = MessageDb ( self . db!, baseDb: self )
94
94
95
+ var account : StoredAccount ? = nil
96
+ var deviceToken : String ? = nil
95
97
if self . db!. schemaVersion != BaseDb . kSchemaVersion {
96
- BaseDb . log. info ( " BaseDb - schema has changed from %d to %d " ,
97
- ( self . db? . schemaVersion ?? - 1 ) , BaseDb . kSchemaVersion)
98
- // Delete database if schema has changed.
99
- self . dropDb ( )
98
+ BaseDb . log. info ( " BaseDb - schema has changed from %d to %d " , ( self . db? . schemaVersion ?? - 1 ) , BaseDb . kSchemaVersion)
99
+
100
+ // Retain active account accross DB upgrades to keep user logged in.
101
+ account = self . accountDb!. getActiveAccount ( )
102
+ deviceToken = self . accountDb!. getDeviceToken ( )
100
103
104
+ // Schema has changed, delete database.
105
+ self . dropDb ( )
101
106
self . db!. schemaVersion = BaseDb . kSchemaVersion
102
107
}
103
108
@@ -109,8 +114,13 @@ public class BaseDb {
109
114
// Enable foreign key enforcement.
110
115
try ! self . db!. run ( " PRAGMA foreign_keys = ON " )
111
116
117
+ if let account = account {
118
+ _ = self . accountDb!. addOrActivateAccount ( for: account. uid, withCredMethods: account. credMethods)
119
+ self . accountDb!. saveDeviceToken ( token: deviceToken)
120
+ }
112
121
self . account = self . accountDb!. getActiveAccount ( )
113
122
}
123
+
114
124
private func dropDb( ) {
115
125
self . messageDb? . destroyTable ( )
116
126
self . subscriberDb? . destroyTable ( )
0 commit comments