fix(safari): provide fallback for 'window.requestIdleCallback'

- also refactor old migration steps

Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
This commit is contained in:
Maksim Sukharev
2025-07-03 09:44:19 +02:00
parent c8600037e0
commit cc4a432a4a

View File

@ -89,17 +89,18 @@ const migrateDirectLocalStorageToNextcloudBrowserStorage = () => {
return return
} }
const storageKeys = Array.from(Array(localStorage.length), (_, i) => localStorage.key(i)).filter((key) => key.startsWith('audioDisabled_') const deprecatedKeys = [
|| key.startsWith('videoDisabled_') 'audioDisabled_',
|| key.startsWith('virtualBackgroundEnabled_') 'videoDisabled_',
|| key.startsWith('virtualBackgroundType_') 'virtualBackgroundEnabled_',
|| key.startsWith('virtualBackgroundBlurStrength_') 'virtualBackgroundType_',
|| key.startsWith('virtualBackgroundUrl_')) 'virtualBackgroundBlurStrength_',
'virtualBackgroundUrl_',
]
if (storageKeys.length) { Object.keys(localStorage).forEach((key) => {
console.debug('Migrating localStorage keys to BrowserStorage', storageKeys) if (deprecatedKeys.some((deprecatedKey) => key.startsWith(deprecatedKey))) {
console.debug('Migrating localStorage key to BrowserStorage: %s', key)
storageKeys.forEach((key) => {
BrowserStorage.setItem(key, localStorage.getItem(key)) BrowserStorage.setItem(key, localStorage.getItem(key))
localStorage.removeItem(key) localStorage.removeItem(key)
@ -115,14 +116,14 @@ const migrateDirectLocalStorageToNextcloudBrowserStorage = () => {
BrowserStorage.setItem(typeKey, VIRTUAL_BACKGROUND.BACKGROUND_TYPE.BLUR) BrowserStorage.setItem(typeKey, VIRTUAL_BACKGROUND.BACKGROUND_TYPE.BLUR)
} }
} }
})
} }
})
BrowserStorage.setItem('localStorageMigrated', 'done') BrowserStorage.setItem('localStorageMigrated', 'done')
} }
/** /**
* * Clean up some deprecated (no longer in use) keys from @nextcloud/browser-storage
*/ */
function cleanOutdatedBrowserStorageKeys() { function cleanOutdatedBrowserStorageKeys() {
const deprecatedKeys = [ const deprecatedKeys = [
@ -137,7 +138,13 @@ function cleanOutdatedBrowserStorageKeys() {
}) })
} }
if (window.requestIdleCallback) {
window.requestIdleCallback(() => { window.requestIdleCallback(() => {
migrateDirectLocalStorageToNextcloudBrowserStorage() migrateDirectLocalStorageToNextcloudBrowserStorage()
cleanOutdatedBrowserStorageKeys() cleanOutdatedBrowserStorageKeys()
}) })
} else {
// Fallback for Safari
migrateDirectLocalStorageToNextcloudBrowserStorage()
cleanOutdatedBrowserStorageKeys()
}