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