mirror of
https://github.com/FrankerFaceZ/FrankerFaceZ.git
synced 2025-08-07 06:40:54 +00:00
4.20.61
This was a small update until Twitch ripped out half their CSS. * Added: Cross-Origin Storage Bridge for settings, better synchronizing settings on sub-domains with support for binary blobs at the cost of slightly increased start-up time. * Fixed: Rendering issues caused by missing CSS. * Fixed: FFZ Control Center button not appearing on dashboard pages, and appearing in the incorrect place. * Changed: Work towards splitting modules into their own JS files for a faster, more asynchronous startup. * API Added: Methods for serializing and deserializing Blobs for transmission across postMessage.
This commit is contained in:
parent
2c5937c8af
commit
264c375f13
88 changed files with 1685 additions and 500 deletions
|
@ -366,9 +366,13 @@ export default class SettingsManager extends Module {
|
|||
* @returns {SettingsProvider} The provider to store everything.
|
||||
*/
|
||||
async _createProvider() {
|
||||
let wanted = localStorage.ffzProvider;
|
||||
// If we should be using Cross-Origin Storage Bridge, do so.
|
||||
//if ( this.providers.cosb && this.providers.cosb.supported() )
|
||||
// return new this.providers.cosb(this);
|
||||
|
||||
let wanted = localStorage.ffzProviderv2;
|
||||
if ( wanted == null )
|
||||
wanted = localStorage.ffzProvider = await this.sniffProvider();
|
||||
wanted = localStorage.ffzProviderv2 = await this.sniffProvider();
|
||||
|
||||
if ( this.providers[wanted] ) {
|
||||
const provider = new this.providers[wanted](this);
|
||||
|
@ -434,31 +438,34 @@ export default class SettingsManager extends Module {
|
|||
// Are we transfering settings?
|
||||
if ( transfer ) {
|
||||
const new_provider = new this.providers[key](this);
|
||||
await new_provider.awaitReady();
|
||||
|
||||
old_provider.disableEvents();
|
||||
if ( new_provider.allowTransfer && old_provider.allowTransfer ) {
|
||||
old_provider.disableEvents();
|
||||
|
||||
// When transfering, we clear all existing settings.
|
||||
await new_provider.clear();
|
||||
if ( new_provider.supportsBlobs )
|
||||
await new_provider.clearBlobs();
|
||||
// When transfering, we clear all existing settings.
|
||||
await new_provider.clear();
|
||||
if ( new_provider.supportsBlobs )
|
||||
await new_provider.clearBlobs();
|
||||
|
||||
for(const [key,val] of old_provider.entries())
|
||||
new_provider.set(key, val);
|
||||
for(const [key,val] of old_provider.entries())
|
||||
new_provider.set(key, val);
|
||||
|
||||
if ( old_provider.supportsBlobs && new_provider.supportsBlobs ) {
|
||||
for(const key of await old_provider.blobKeys() ) {
|
||||
const blob = await old_provider.getBlob(key); // eslint-disable-line no-await-in-loop
|
||||
if ( blob )
|
||||
await new_provider.setBlob(key, blob); // eslint-disable-line no-await-in-loop
|
||||
if ( old_provider.supportsBlobs && new_provider.supportsBlobs ) {
|
||||
for(const key of await old_provider.blobKeys() ) {
|
||||
const blob = await old_provider.getBlob(key); // eslint-disable-line no-await-in-loop
|
||||
if ( blob )
|
||||
await new_provider.setBlob(key, blob); // eslint-disable-line no-await-in-loop
|
||||
}
|
||||
|
||||
await old_provider.clearBlobs();
|
||||
}
|
||||
|
||||
await old_provider.clearBlobs();
|
||||
old_provider.clear();
|
||||
|
||||
await old_provider.flush();
|
||||
await new_provider.flush();
|
||||
}
|
||||
|
||||
old_provider.clear();
|
||||
|
||||
await old_provider.flush();
|
||||
await new_provider.flush();
|
||||
}
|
||||
|
||||
// Change over.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue