1
0
Fork 0
mirror of https://github.com/FrankerFaceZ/FrankerFaceZ.git synced 2025-08-07 06:40:54 +00:00
* Changed: Implemented FFZ rendering of Channel Points redemption notices with no associated messages. (Experiment, 50% roll-out)
* Fixed: Channel not properly detecting the current channel's branding color.
* Fixed: Unable to delete the profile 0 (Default Profile)
* Fixed: Twitch prevented viewer cards from appearing when moved out of the chat area.
* Fixed: `addons` should not block loading while its data loads.
* Fixed: Issue accessing `i18n` before `settings` has fully loaded.
* Fixed: `main_menu` tries to use `i18n` before `i18n` is ready.
* Fixed: Main menu throws error if profiles are changed while main menu is open.
* Fixed: `site` should not block loading waiting for `settings`
* Maintenance: Updated dependencies.

* API Added: Initial support for using IndexedDB to store settings rather than localStorage
* API Added: Messages now have a `highlights` object if they've matched filters, describing which filters they matched.
This commit is contained in:
SirStendec 2020-07-22 21:31:41 -04:00
parent 65a00df2a9
commit 1c2bf202fc
18 changed files with 478 additions and 244 deletions

View file

@ -7,7 +7,7 @@
import Module from 'utilities/module';
import {deep_equals, has, debounce} from 'utilities/object';
import {CloudStorageProvider, LocalStorageProvider} from './providers';
import {IndexedDBProvider, LocalStorageProvider} from './providers';
import SettingsProfile from './profile';
import SettingsContext from './context';
import MigrationManager from './migration';
@ -218,11 +218,15 @@ export default class SettingsManager extends Module {
/**
* Evaluate the environment that FFZ is running in and then decide which
* provider should be used to retrieve and store settings.
*
* @returns {SettingsProvider} The provider to store everything.
*/
_createProvider() {
// If the loader has reported support for cloud settings...
if ( document.body.classList.contains('ffz-cloud-storage') )
return new CloudStorageProvider(this);
// Prefer IndexedDB if it's available because it's more persistent
// and can store more data. Plus, we don't have to faff around with
// JSON conversion all the time.
if ( IndexedDBProvider.supported() && localStorage.ffzIDB )
return this._idb = new IndexedDBProvider(this);
// Fallback
return new LocalStorageProvider(this);
@ -427,15 +431,18 @@ export default class SettingsManager extends Module {
* @param {number|SettingsProfile} id - The profile to delete
*/
deleteProfile(id) {
if ( typeof id === 'object' && id.id )
if ( typeof id === 'object' && id.id != null )
id = id.id;
const profile = this.__profile_ids[id];
if ( ! profile )
return;
if ( profile.id === 0 )
throw new Error('cannot delete default profile');
if ( this.__profiles.length === 1 )
throw new Error('cannot delete only profile');
/*if ( profile.id === 0 )
throw new Error('cannot delete default profile');*/
profile.off('toggled', this._onProfileToggled, this);
profile.clear();