|
15 | 15 | * limitations under the License.
|
16 | 16 | */
|
17 | 17 |
|
18 |
| -import { deleteDB, openDB } from '@firebase/util'; |
| 18 | +import { deleteDB, openDB } from 'idb'; |
19 | 19 |
|
20 | 20 | import { TokenDetails } from '../interfaces/token-details';
|
21 | 21 | import { arrayToBase64 } from './array-base64-translator';
|
@@ -91,75 +91,77 @@ export async function migrateOldDatabase(
|
91 | 91 | const db = await openDB(
|
92 | 92 | OLD_DB_NAME,
|
93 | 93 | OLD_DB_VERSION,
|
94 |
| - async (db, oldVersion, newVersion, upgradeTransaction) => { |
95 |
| - if (oldVersion < 2) { |
96 |
| - // Database too old, skip migration. |
97 |
| - return; |
98 |
| - } |
99 |
| - |
100 |
| - if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) { |
101 |
| - // Database did not exist. Nothing to do. |
102 |
| - return; |
103 |
| - } |
104 |
| - |
105 |
| - const objectStore = upgradeTransaction.objectStore(OLD_OBJECT_STORE_NAME); |
106 |
| - const value = await objectStore.index('fcmSenderId').get(senderId); |
107 |
| - await objectStore.clear(); |
| 94 | + { |
| 95 | + upgrade: async (db, oldVersion, newVersion, upgradeTransaction) => { |
| 96 | + if (oldVersion < 2) { |
| 97 | + // Database too old, skip migration. |
| 98 | + return; |
| 99 | + } |
108 | 100 |
|
109 |
| - if (!value) { |
110 |
| - // No entry in the database, nothing to migrate. |
111 |
| - return; |
112 |
| - } |
| 101 | + if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) { |
| 102 | + // Database did not exist. Nothing to do. |
| 103 | + return; |
| 104 | + } |
113 | 105 |
|
114 |
| - if (oldVersion === 2) { |
115 |
| - const oldDetails = value as V2TokenDetails; |
| 106 | + const objectStore = upgradeTransaction.objectStore(OLD_OBJECT_STORE_NAME); |
| 107 | + const value = await objectStore.index('fcmSenderId').get(senderId); |
| 108 | + await objectStore.clear(); |
116 | 109 |
|
117 |
| - if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) { |
| 110 | + if (!value) { |
| 111 | + // No entry in the database, nothing to migrate. |
118 | 112 | return;
|
119 | 113 | }
|
120 | 114 |
|
121 |
| - tokenDetails = { |
122 |
| - token: oldDetails.fcmToken, |
123 |
| - createTime: oldDetails.createTime ?? Date.now(), |
124 |
| - subscriptionOptions: { |
125 |
| - auth: oldDetails.auth, |
126 |
| - p256dh: oldDetails.p256dh, |
127 |
| - endpoint: oldDetails.endpoint, |
128 |
| - swScope: oldDetails.swScope, |
129 |
| - vapidKey: |
130 |
| - typeof oldDetails.vapidKey === 'string' |
131 |
| - ? oldDetails.vapidKey |
132 |
| - : arrayToBase64(oldDetails.vapidKey) |
133 |
| - } |
134 |
| - }; |
135 |
| - } else if (oldVersion === 3) { |
136 |
| - const oldDetails = value as V3TokenDetails; |
137 |
| - |
138 |
| - tokenDetails = { |
139 |
| - token: oldDetails.fcmToken, |
140 |
| - createTime: oldDetails.createTime, |
141 |
| - subscriptionOptions: { |
142 |
| - auth: arrayToBase64(oldDetails.auth), |
143 |
| - p256dh: arrayToBase64(oldDetails.p256dh), |
144 |
| - endpoint: oldDetails.endpoint, |
145 |
| - swScope: oldDetails.swScope, |
146 |
| - vapidKey: arrayToBase64(oldDetails.vapidKey) |
147 |
| - } |
148 |
| - }; |
149 |
| - } else if (oldVersion === 4) { |
150 |
| - const oldDetails = value as V4TokenDetails; |
151 |
| - |
152 |
| - tokenDetails = { |
153 |
| - token: oldDetails.fcmToken, |
154 |
| - createTime: oldDetails.createTime, |
155 |
| - subscriptionOptions: { |
156 |
| - auth: arrayToBase64(oldDetails.auth), |
157 |
| - p256dh: arrayToBase64(oldDetails.p256dh), |
158 |
| - endpoint: oldDetails.endpoint, |
159 |
| - swScope: oldDetails.swScope, |
160 |
| - vapidKey: arrayToBase64(oldDetails.vapidKey) |
| 115 | + if (oldVersion === 2) { |
| 116 | + const oldDetails = value as V2TokenDetails; |
| 117 | + |
| 118 | + if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) { |
| 119 | + return; |
161 | 120 | }
|
162 |
| - }; |
| 121 | + |
| 122 | + tokenDetails = { |
| 123 | + token: oldDetails.fcmToken, |
| 124 | + createTime: oldDetails.createTime ?? Date.now(), |
| 125 | + subscriptionOptions: { |
| 126 | + auth: oldDetails.auth, |
| 127 | + p256dh: oldDetails.p256dh, |
| 128 | + endpoint: oldDetails.endpoint, |
| 129 | + swScope: oldDetails.swScope, |
| 130 | + vapidKey: |
| 131 | + typeof oldDetails.vapidKey === 'string' |
| 132 | + ? oldDetails.vapidKey |
| 133 | + : arrayToBase64(oldDetails.vapidKey) |
| 134 | + } |
| 135 | + }; |
| 136 | + } else if (oldVersion === 3) { |
| 137 | + const oldDetails = value as V3TokenDetails; |
| 138 | + |
| 139 | + tokenDetails = { |
| 140 | + token: oldDetails.fcmToken, |
| 141 | + createTime: oldDetails.createTime, |
| 142 | + subscriptionOptions: { |
| 143 | + auth: arrayToBase64(oldDetails.auth), |
| 144 | + p256dh: arrayToBase64(oldDetails.p256dh), |
| 145 | + endpoint: oldDetails.endpoint, |
| 146 | + swScope: oldDetails.swScope, |
| 147 | + vapidKey: arrayToBase64(oldDetails.vapidKey) |
| 148 | + } |
| 149 | + }; |
| 150 | + } else if (oldVersion === 4) { |
| 151 | + const oldDetails = value as V4TokenDetails; |
| 152 | + |
| 153 | + tokenDetails = { |
| 154 | + token: oldDetails.fcmToken, |
| 155 | + createTime: oldDetails.createTime, |
| 156 | + subscriptionOptions: { |
| 157 | + auth: arrayToBase64(oldDetails.auth), |
| 158 | + p256dh: arrayToBase64(oldDetails.p256dh), |
| 159 | + endpoint: oldDetails.endpoint, |
| 160 | + swScope: oldDetails.swScope, |
| 161 | + vapidKey: arrayToBase64(oldDetails.vapidKey) |
| 162 | + } |
| 163 | + }; |
| 164 | + } |
163 | 165 | }
|
164 | 166 | }
|
165 | 167 | );
|
|
0 commit comments