start moving towards collections

This commit is contained in:
Zack Rauen 2019-06-06 00:28:43 -04:00
parent 671ea2a24d
commit c14d21eab4
22 changed files with 228 additions and 130 deletions

View File

@ -81,6 +81,10 @@
order: 3; order: 3;
} }
.bd-settings-title.bd-settings-group-title {
margin-bottom: 10px;
}

View File

@ -105,12 +105,12 @@ __webpack_require__.r(__webpack_exports__);
return "24Hour"; return "24Hour";
} }
get group() { get category() {
return "general"; return "general";
} }
get id() { get id() {
return "bda-gs-6"; return "twentyFourHour";
} }
enabled() { enabled() {
@ -230,10 +230,10 @@ const normalizedPrefix = "da";
const randClass = new RegExp(`^(?!${normalizedPrefix}-)((?:[A-Za-z]|[0-9]|-)+)-(?:[A-Za-z]|[0-9]|-|_){6}$`); const randClass = new RegExp(`^(?!${normalizedPrefix}-)((?:[A-Za-z]|[0-9]|-)+)-(?:[A-Za-z]|[0-9]|-|_){6}$`);
/* harmony default export */ __webpack_exports__["default"] = (new class ClassNormalizer extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__["default"] { /* harmony default export */ __webpack_exports__["default"] = (new class ClassNormalizer extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__["default"] {
get id() { get id() {
return "fork-ps-4"; return "classNormalizer";
} }
get group() { get category() {
return "general"; return "general";
} }
@ -375,7 +375,7 @@ const MessageContent = modules__WEBPACK_IMPORTED_MODULE_1__["WebpackModules"].ge
return "ColoredText"; return "ColoredText";
} }
get group() { get category() {
return "appearance"; return "appearance";
} }
@ -440,12 +440,12 @@ __webpack_require__.r(__webpack_exports__);
return "DarkMode"; return "DarkMode";
} }
get group() { get category() {
return "appearance"; return "appearance";
} }
get id() { get id() {
return "bda-gs-5"; return "darkMode";
} }
enabled() { enabled() {
@ -480,16 +480,16 @@ __webpack_require__.r(__webpack_exports__);
return "DeveloperMode"; return "DeveloperMode";
} }
get group() { get category() {
return "developer"; return "developer";
} }
get id() { get id() {
return "bda-gs-8"; return "developerMode";
} }
get selectorModeID() { get selectorModeID() {
return "fork-dm-1"; return "copySelector";
} }
get selectorMode() { get selectorMode() {
@ -616,16 +616,16 @@ __webpack_require__.r(__webpack_exports__);
return "EmoteAutocapitalize"; return "EmoteAutocapitalize";
} }
get category() { get collection() {
return "emotes"; return "emotes";
} }
get group() { get category() {
return "preferences"; return "general";
} }
get id() { get id() {
return "bda-es-4"; return "autoCaps";
} }
enabled() { enabled() {
@ -721,20 +721,20 @@ const makeEmote = (emote, url, options = {}) => {
return "EmoteMenu"; return "EmoteMenu";
} }
get category() { get collection() {
return "emotes"; return "emotes";
} }
get group() { get category() {
return "preferences"; return "general";
} }
get id() { get id() {
return "bda-es-0"; return "emoteMenu";
} }
get hideEmojisID() { get hideEmojisID() {
return "bda-es-9"; return "hideEmojiMenu";
} }
get hideEmojis() { get hideEmojis() {
@ -947,12 +947,12 @@ const bdEmoteSettingIDs = {
return "Emotes"; return "Emotes";
} }
get category() { get collection() {
return "emotes"; return "emotes";
} }
get group() { get category() {
return "preferences"; return "general";
} }
get id() { get id() {
@ -1239,16 +1239,16 @@ __webpack_require__.r(__webpack_exports__);
return "MinimalMode"; return "MinimalMode";
} }
get group() { get category() {
return "appearance"; return "appearance";
} }
get id() { get id() {
return "bda-gs-2"; return "minimalMode";
} }
get hideChannelsID() { get hideChannelsID() {
return "bda-gs-3"; return "hideChannels";
} }
get hideChannels() { get hideChannels() {
@ -1307,12 +1307,12 @@ __webpack_require__.r(__webpack_exports__);
return "PublicServers"; return "PublicServers";
} }
get group() { get category() {
return "general"; return "general";
} }
get id() { get id() {
return "bda-gs-1"; return "publicServers";
} }
enabled() { enabled() {
@ -1401,12 +1401,12 @@ __webpack_require__.r(__webpack_exports__);
return "VoiceDisconnect"; return "VoiceDisconnect";
} }
get group() { get category() {
return "general"; return "general";
} }
get id() { get id() {
return "bda-dc-0"; return "voiceDisconnect";
} }
constructor() { constructor() {
@ -1446,12 +1446,12 @@ __webpack_require__.r(__webpack_exports__);
return "VoiceMode"; return "VoiceMode";
} }
get group() { get category() {
return "appearance"; return "appearance";
} }
get id() { get id() {
return "bda-gs-4"; return "voiceMode";
} }
enabled() { enabled() {
@ -1572,11 +1572,12 @@ __webpack_require__.r(__webpack_exports__);
/*!**************************!*\ /*!**************************!*\
!*** ./src/data/data.js ***! !*** ./src/data/data.js ***!
\**************************/ \**************************/
/*! exports provided: State, SettingsInfo, SettingsCookie, Config, PluginCookie, ThemeCookie, Themes, Plugins, Emotes, EmoteBlacklist, EmoteInfo, EmoteModifiers, EmoteOverrides */ /*! exports provided: Collections, State, SettingsInfo, SettingsCookie, Config, PluginCookie, ThemeCookie, Themes, Plugins, Emotes, EmoteBlacklist, EmoteInfo, EmoteModifiers, EmoteOverrides */
/***/ (function(module, __webpack_exports__, __webpack_require__) { /***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict"; "use strict";
__webpack_require__.r(__webpack_exports__); __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Collections", function() { return Collections; });
/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./state */ "./src/data/state.js"); /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./state */ "./src/data/state.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "State", function() { return _state__WEBPACK_IMPORTED_MODULE_0__["default"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "State", function() { return _state__WEBPACK_IMPORTED_MODULE_0__["default"]; });
@ -1616,6 +1617,8 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _emotes_overrides__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./emotes/overrides */ "./src/data/emotes/overrides.js"); /* harmony import */ var _emotes_overrides__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./emotes/overrides */ "./src/data/emotes/overrides.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EmoteOverrides", function() { return _emotes_overrides__WEBPACK_IMPORTED_MODULE_12__["default"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EmoteOverrides", function() { return _emotes_overrides__WEBPACK_IMPORTED_MODULE_12__["default"]; });
/* harmony import */ var _settings_config__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./settings/config */ "./src/data/settings/config.js");
/* harmony import */ var _emotes_config__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./emotes/config */ "./src/data/emotes/config.js");
@ -1631,6 +1634,9 @@ __webpack_require__.r(__webpack_exports__);
const Collections = [_settings_config__WEBPACK_IMPORTED_MODULE_13__["default"], _emotes_config__WEBPACK_IMPORTED_MODULE_14__["default"]];
/***/ }), /***/ }),
/***/ "./src/data/emotes/blacklist.js": /***/ "./src/data/emotes/blacklist.js":
@ -1657,8 +1663,8 @@ __webpack_require__.r(__webpack_exports__);
__webpack_require__.r(__webpack_exports__); __webpack_require__.r(__webpack_exports__);
/* harmony default export */ __webpack_exports__["default"] = ([{ /* harmony default export */ __webpack_exports__["default"] = ([{
type: "category", type: "category",
id: "preferences", id: "general",
name: "Preferences", name: "General",
collapsible: true, collapsible: true,
settings: [{ settings: [{
type: "switch", type: "switch",
@ -2136,6 +2142,12 @@ __webpack_require__.r(__webpack_exports__);
name: "General", name: "General",
collapsible: true, collapsible: true,
settings: [{ settings: [{
type: "switch",
id: "emotes",
name: "Emote System",
note: "Enables BD's emote system",
value: true
}, {
type: "switch", type: "switch",
id: "publicServers", id: "publicServers",
name: "Public Servers", name: "Public Servers",
@ -3856,6 +3868,8 @@ __webpack_require__.r(__webpack_exports__);
this.renderer = new ui__WEBPACK_IMPORTED_MODULE_6__["SettingsPanel"]({ this.renderer = new ui__WEBPACK_IMPORTED_MODULE_6__["SettingsPanel"]({
onChange: this.updateSettings.bind(this) onChange: this.updateSettings.bind(this)
}); });
this.updateSettings = this.updateSettings.bind(this);
console.log(data__WEBPACK_IMPORTED_MODULE_0__["Collections"]);
} }
initialize() { initialize() {
@ -3905,11 +3919,11 @@ __webpack_require__.r(__webpack_exports__);
Object.assign(state, config); Object.assign(state, config);
} }
buildSettingsPanel(config, state, onChange) { buildSettingsPanel(title, config, state, onChange) {
config.forEach(section => { config.forEach(section => {
section.settings.forEach(item => item.value = state[section.id][item.id]); section.settings.forEach(item => item.value = state[section.id][item.id]);
}); });
return this.renderer.getSettingsPanel(config, onChange); return this.renderer.getSettingsPanel(title, config, onChange);
} }
async patchSections() { async patchSections() {
@ -3917,26 +3931,35 @@ __webpack_require__.r(__webpack_exports__);
_utilities__WEBPACK_IMPORTED_MODULE_7__["default"].monkeyPatch(UserSettings.prototype, "generateSections", { _utilities__WEBPACK_IMPORTED_MODULE_7__["default"].monkeyPatch(UserSettings.prototype, "generateSections", {
after: data => { after: data => {
// console.log(data); /* eslint-disable-line no-console */ let location = data.returnValue.findIndex(s => s.section.toLowerCase() == "linux") + 1;
data.returnValue.splice(23, 0, {
const insert = section => {
data.returnValue.splice(location, 0, section);
location++;
};
console.log(data);
/* eslint-disable-line no-console */
insert({
section: "DIVIDER" section: "DIVIDER"
}); });
data.returnValue.splice(24, 0, { insert({
section: "HEADER", section: "HEADER",
label: "BandagedBD" label: "BandagedBD"
}); // data.returnValue.splice(25, 0, {section: "BBD Settings", label: "Settings", element: () => this.renderer.core2}); }); // insert({section: "BBD Settings", label: "Settings", element: () => this.renderer.core2});
data.returnValue.splice(25, 0, { insert({
section: "BBD Settings", section: "BBD Settings",
label: "Settings", label: "Settings",
element: () => this.buildSettingsPanel(_data_settings_config__WEBPACK_IMPORTED_MODULE_10__["default"], _data_settings_state__WEBPACK_IMPORTED_MODULE_11__["default"], this.updateSettings) element: () => this.buildSettingsPanel("Settings", _data_settings_config__WEBPACK_IMPORTED_MODULE_10__["default"], _data_settings_state__WEBPACK_IMPORTED_MODULE_11__["default"], this.updateSettings.bind(this, _data_settings_state__WEBPACK_IMPORTED_MODULE_11__["default"]))
}); });
data.returnValue.splice(26, 0, { if (_data_settings_state__WEBPACK_IMPORTED_MODULE_11__["default"].general.emotes) insert({
section: "BBD Emotes", section: "BBD Emotes",
label: "Emotes", label: "Emotes",
element: () => this.buildSettingsPanel(_data_emotes_config__WEBPACK_IMPORTED_MODULE_8__["default"], _data_emotes_state__WEBPACK_IMPORTED_MODULE_9__["default"], this.updateSettings) element: () => this.buildSettingsPanel("Emote Settings", _data_emotes_config__WEBPACK_IMPORTED_MODULE_8__["default"], _data_emotes_state__WEBPACK_IMPORTED_MODULE_9__["default"], this.updateSettings.bind(this, _data_emotes_state__WEBPACK_IMPORTED_MODULE_9__["default"]))
}); });
data.returnValue.splice(27, 0, { insert({
section: "BBD Test", section: "BBD Test",
label: "Test Tab", label: "Test Tab",
onClick: function () { onClick: function () {
@ -3945,12 +3968,16 @@ __webpack_require__.r(__webpack_exports__);
}); });
} }
}); });
data.returnValue.splice(28, 0, { insert({
section: "CUSTOM", section: "CUSTOM",
element: () => this.renderer.attribution element: () => this.renderer.attribution
}); });
} }
}); });
this.forceUpdate();
}
forceUpdate() {
const viewClass = _webpackmodules__WEBPACK_IMPORTED_MODULE_5__["default"].getByProps("standardSidebarView").standardSidebarView.split(" ")[0]; const viewClass = _webpackmodules__WEBPACK_IMPORTED_MODULE_5__["default"].getByProps("standardSidebarView").standardSidebarView.split(" ")[0];
const node = document.querySelector(`.${viewClass}`); const node = document.querySelector(`.${viewClass}`);
_utilities__WEBPACK_IMPORTED_MODULE_7__["default"].getInternalInstance(node).return.return.return.return.return.return.stateNode.forceUpdate(); _utilities__WEBPACK_IMPORTED_MODULE_7__["default"].getInternalInstance(node).return.return.return.return.return.return.stateNode.forceUpdate();
@ -3976,16 +4003,33 @@ __webpack_require__.r(__webpack_exports__);
return _datastore__WEBPACK_IMPORTED_MODULE_1__["default"].getSettingGroup("settings"); return _datastore__WEBPACK_IMPORTED_MODULE_1__["default"].getSettingGroup("settings");
} }
updateSettings(id, enabled) { onSettingChange(collection, category, id, enabled) {
if (arguments.length == 3) { collection[category][id] = enabled;
_data_settings_state__WEBPACK_IMPORTED_MODULE_11__["default"][arguments[0]][arguments[1]] = arguments[2]; _emitter__WEBPACK_IMPORTED_MODULE_4__["default"].dispatch("setting-updated", category, id, enabled); // console.log(collection);
_emitter__WEBPACK_IMPORTED_MODULE_4__["default"].dispatch("setting-updated", arguments[0], arguments[1], arguments[2]);
console.log(_data_settings_state__WEBPACK_IMPORTED_MODULE_11__["default"]);
return;
}
_emitter__WEBPACK_IMPORTED_MODULE_4__["default"].dispatch("setting-updated", "Modules", id, enabled); if (id == "emotes") this.forceUpdate();
data__WEBPACK_IMPORTED_MODULE_0__["SettingsCookie"][id] = enabled; // if (id == "bda-es-4") { }
getSetting(category, id) {
if (arguments.length == 2) return _data_settings_state__WEBPACK_IMPORTED_MODULE_11__["default"][category][id];
const collection = arguments[0] == "emotes" ? _data_emotes_state__WEBPACK_IMPORTED_MODULE_9__["default"] : _data_settings_state__WEBPACK_IMPORTED_MODULE_11__["default"];
return collection && collection[arguments[1]][arguments[2]];
}
get(category, id) {
if (arguments.length == 2) return _data_settings_state__WEBPACK_IMPORTED_MODULE_11__["default"][category][id];
const collection = arguments[0] == "emotes" ? _data_emotes_state__WEBPACK_IMPORTED_MODULE_9__["default"] : _data_settings_state__WEBPACK_IMPORTED_MODULE_11__["default"];
return collection && collection[arguments[1]][arguments[2]];
}
updateSettings(collection, category, id, enabled) {
// console.log("Updating ", collection);
// console.log(category, id, enabled);
collection[category][id] = enabled;
_emitter__WEBPACK_IMPORTED_MODULE_4__["default"].dispatch("setting-updated", category, id, enabled); // console.log(collection);
if (id == "emotes") this.forceUpdate(); // SettingsCookie[id] = enabled;
// if (id == "bda-es-4") {
// if (enabled) EmoteModule.autoCapitalize(); // if (enabled) EmoteModule.autoCapitalize();
// else EmoteModule.disableAutoCapitalize(); // else EmoteModule.disableAutoCapitalize();
// } // }
@ -4003,9 +4047,8 @@ __webpack_require__.r(__webpack_exports__);
if (id == "fork-wp-1") { if (id == "fork-wp-1") {
_pluginapi__WEBPACK_IMPORTED_MODULE_3__["default"].setWindowPreference("transparent", enabled); _pluginapi__WEBPACK_IMPORTED_MODULE_3__["default"].setWindowPreference("transparent", enabled);
if (enabled) _pluginapi__WEBPACK_IMPORTED_MODULE_3__["default"].setWindowPreference("backgroundColor", null);else _pluginapi__WEBPACK_IMPORTED_MODULE_3__["default"].setWindowPreference("backgroundColor", "#2f3136"); if (enabled) _pluginapi__WEBPACK_IMPORTED_MODULE_3__["default"].setWindowPreference("backgroundColor", null);else _pluginapi__WEBPACK_IMPORTED_MODULE_3__["default"].setWindowPreference("backgroundColor", "#2f3136");
} } // this.saveSettings();
this.saveSettings();
} }
initializeSettings() { initializeSettings() {
@ -5189,11 +5232,11 @@ class BuiltinModule {
return "Unnamed Builtin"; return "Unnamed Builtin";
} }
get category() { get collection() {
return "settings"; return "settings";
} }
get group() { get category() {
return "general"; return "general";
} }
@ -5202,10 +5245,10 @@ class BuiltinModule {
} }
async initialize() { async initialize() {
const state = this.category == "settings" ? _data_settings_state__WEBPACK_IMPORTED_MODULE_1__["default"] : _data_emotes_state__WEBPACK_IMPORTED_MODULE_2__["default"]; const state = this.collection == "settings" ? _data_settings_state__WEBPACK_IMPORTED_MODULE_1__["default"] : _data_emotes_state__WEBPACK_IMPORTED_MODULE_2__["default"];
if (state[this.group][this.id]) await this.enable(); if (state[this.category][this.id]) await this.enable();
_modules_emitter__WEBPACK_IMPORTED_MODULE_4__["default"].on("setting-updated", (group, id, enabled) => { _modules_emitter__WEBPACK_IMPORTED_MODULE_4__["default"].on("setting-updated", (category, id, enabled) => {
if (group !== this.group || id !== this.id) return; if (category !== this.category || id !== this.id) return;
if (enabled) this.enable();else this.disable(); if (enabled) this.enable();else this.disable();
}); });
} }
@ -6691,7 +6734,8 @@ class Group extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
text: this.props.name, text: this.props.name,
collapsible: this.props.collapsible, collapsible: this.props.collapsible,
onClick: () => this.toggleCollapse(), onClick: () => this.toggleCollapse(),
button: this.props.button button: this.props.button,
isGroup: true
}), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", { }), modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("div", {
className: "bd-settings-container", className: "bd-settings-container",
ref: this.container ref: this.container
@ -6731,6 +6775,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../ui */ "./src/ui/ui.js"); /* harmony import */ var _ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../ui */ "./src/ui/ui.js");
/* harmony import */ var _data_settings_config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../data/settings/config */ "./src/data/settings/config.js"); /* harmony import */ var _data_settings_config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../data/settings/config */ "./src/data/settings/config.js");
/* harmony import */ var _data_settings_state__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../data/settings/state */ "./src/data/settings/state.js"); /* harmony import */ var _data_settings_state__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../data/settings/state */ "./src/data/settings/state.js");
/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./title */ "./src/ui/settings/title.jsx");
// import Sidebar from "./sidebar"; // import Sidebar from "./sidebar";
// import Scroller from "../scroller"; // import Scroller from "../scroller";
@ -6749,6 +6794,7 @@ __webpack_require__.r(__webpack_exports__);
class V2_SettingsPanel { class V2_SettingsPanel {
constructor({ constructor({
onChange onChange
@ -6785,12 +6831,14 @@ class V2_SettingsPanel {
}, []); }, []);
} }
getSettingsPanel(groups, onChange) { getSettingsPanel(title, groups, onChange) {
return groups.map(section => { return [modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_title__WEBPACK_IMPORTED_MODULE_6__["default"], {
text: title
}), groups.map(section => {
return modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_settings_group__WEBPACK_IMPORTED_MODULE_2__["default"], Object.assign({}, section, { return modules__WEBPACK_IMPORTED_MODULE_1__["React"].createElement(_settings_group__WEBPACK_IMPORTED_MODULE_2__["default"], Object.assign({}, section, {
onChange onChange
})); }));
}); })];
} }
get core3() { get core3() {
@ -7022,6 +7070,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ "./src/modules/modules.js"); /* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ "./src/modules/modules.js");
const className = "bd-settings-title h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi defaultColor-1_ajX0 defaultMarginh2-2LTaUL marginBottom20-32qID7"; const className = "bd-settings-title h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi defaultColor-1_ajX0 defaultMarginh2-2LTaUL marginBottom20-32qID7";
const className2 = "bd-settings-title bd-settings-group-title h5-18_1nd title-3sZWYQ size12-3R0845 height16-2Lv3qA weightSemiBold-NJexzi da-h5 da-title da-size12 da-height16 da-weightSemiBold marginBottom4-2qk4Hy da-marginBottom4 marginTop8-1DLZ1n da-marginTop8";
class SettingsTitle extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component { class SettingsTitle extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Component {
constructor(props) { constructor(props) {
super(props); super(props);
@ -7029,7 +7078,8 @@ class SettingsTitle extends modules__WEBPACK_IMPORTED_MODULE_0__["React"].Compon
render() { render() {
const titleClass = this.props.className ? `${className} ${this.props.className}` : className; const baseClass = this.props.isGroup ? className2 : className;
const titleClass = this.props.className ? `${baseClass} ${this.props.className}` : baseClass;
return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("h2", { return modules__WEBPACK_IMPORTED_MODULE_0__["React"].createElement("h2", {
className: titleClass, className: titleClass,
onClick: () => { onClick: () => {

View File

@ -3,8 +3,8 @@ import {Utilities, DiscordModules} from "modules";
export default new class TwentyFourHour extends Builtin { export default new class TwentyFourHour extends Builtin {
get name() {return "24Hour";} get name() {return "24Hour";}
get group() {return "general";} get category() {return "general";}
get id() {return "bda-gs-6";} get id() {return "twentyFourHour";}
enabled() { enabled() {
this.inject24Hour(); this.inject24Hour();

View File

@ -5,8 +5,8 @@ const normalizedPrefix = "da";
const randClass = new RegExp(`^(?!${normalizedPrefix}-)((?:[A-Za-z]|[0-9]|-)+)-(?:[A-Za-z]|[0-9]|-|_){6}$`); const randClass = new RegExp(`^(?!${normalizedPrefix}-)((?:[A-Za-z]|[0-9]|-)+)-(?:[A-Za-z]|[0-9]|-|_){6}$`);
export default new class ClassNormalizer extends Builtin { export default new class ClassNormalizer extends Builtin {
get id() {return "fork-ps-4";} get id() {return "classNormalizer";}
get group() {return "general";} get category() {return "general";}
get name() {return "ClassNormalizer";} get name() {return "ClassNormalizer";}
enabled() { enabled() {

View File

@ -5,7 +5,7 @@ const MessageContent = WebpackModules.getModule(m => m.defaultProps && m.default
export default new class ColoredText extends Builtin { export default new class ColoredText extends Builtin {
get name() {return "ColoredText";} get name() {return "ColoredText";}
get group() {return "appearance";} get category() {return "appearance";}
get id() {return "coloredText";} get id() {return "coloredText";}
enabled() { enabled() {

View File

@ -2,8 +2,8 @@ import Builtin from "../structs/builtin";
export default new class DarkMode extends Builtin { export default new class DarkMode extends Builtin {
get name() {return "DarkMode";} get name() {return "DarkMode";}
get group() {return "appearance";} get category() {return "appearance";}
get id() {return "bda-gs-5";} get id() {return "darkMode";}
enabled() { enabled() {
$("#app-mount").addClass("bda-dark").addClass("bd-dark"); $("#app-mount").addClass("bda-dark").addClass("bd-dark");

View File

@ -4,9 +4,9 @@ import {DiscordModules} from "modules";
export default new class DeveloperMode extends Builtin { export default new class DeveloperMode extends Builtin {
get name() {return "DeveloperMode";} get name() {return "DeveloperMode";}
get group() {return "developer";} get category() {return "developer";}
get id() {return "bda-gs-8";} get id() {return "developerMode";}
get selectorModeID() {return "fork-dm-1";} get selectorModeID() {return "copySelector";}
get selectorMode() {return SettingsCookie[this.selectorModeID];} get selectorMode() {return SettingsCookie[this.selectorModeID];}
constructor() { constructor() {

View File

@ -5,9 +5,9 @@ import {Utilities} from "modules";
export default new class EmoteAutocaps extends Builtin { export default new class EmoteAutocaps extends Builtin {
get name() {return "EmoteAutocapitalize";} get name() {return "EmoteAutocapitalize";}
get category() {return "emotes";} get collection() {return "emotes";}
get group() {return "preferences";} get category() {return "general";}
get id() {return "bda-es-4";} get id() {return "autoCaps";}
enabled() { enabled() {
$("body").off(".bdac"); $("body").off(".bdac");

View File

@ -40,10 +40,10 @@ const makeEmote = (emote, url, options = {}) => {
export default new class EmoteMenu extends Builtin { export default new class EmoteMenu extends Builtin {
get name() {return "EmoteMenu";} get name() {return "EmoteMenu";}
get category() {return "emotes";} get collection() {return "emotes";}
get group() {return "preferences";} get category() {return "general";}
get id() {return "bda-es-0";} get id() {return "emoteMenu";}
get hideEmojisID() {return "bda-es-9";} get hideEmojisID() {return "hideEmojiMenu";}
get hideEmojis() {return SettingsCookie[this.hideEmojisID];} get hideEmojis() {return SettingsCookie[this.hideEmojisID];}
constructor() { constructor() {

View File

@ -15,8 +15,8 @@ const bdEmoteSettingIDs = {
export default new class EmoteModule extends Builtin { export default new class EmoteModule extends Builtin {
get name() {return "Emotes";} get name() {return "Emotes";}
get category() {return "emotes";} get collection() {return "emotes";}
get group() {return "preferences";} get category() {return "general";}
get id() {return "";} get id() {return "";}
get categories() { return Object.keys(bdEmoteSettingIDs).filter(k => SettingsCookie[bdEmoteSettingIDs[k]]); } get categories() { return Object.keys(bdEmoteSettingIDs).filter(k => SettingsCookie[bdEmoteSettingIDs[k]]); }

View File

@ -3,9 +3,9 @@ import {SettingsCookie} from "data";
export default new class MinimalMode extends Builtin { export default new class MinimalMode extends Builtin {
get name() {return "MinimalMode";} get name() {return "MinimalMode";}
get group() {return "appearance";} get category() {return "appearance";}
get id() {return "bda-gs-2";} get id() {return "minimalMode";}
get hideChannelsID() {return "bda-gs-3";} get hideChannelsID() {return "hideChannels";}
get hideChannels() {return SettingsCookie[this.hideChannelsID];} get hideChannels() {return SettingsCookie[this.hideChannelsID];}
constructor() { constructor() {

View File

@ -5,8 +5,8 @@ import {PublicServers as PSComponents} from "ui";
export default new class PublicServers extends Builtin { export default new class PublicServers extends Builtin {
get name() {return "PublicServers";} get name() {return "PublicServers";}
get group() {return "general";} get category() {return "general";}
get id() {return "bda-gs-1";} get id() {return "publicServers";}
enabled() { enabled() {
const wrapper = BDV2.guildClasses.wrapper.split(" ")[0]; const wrapper = BDV2.guildClasses.wrapper.split(" ")[0];

View File

@ -3,8 +3,8 @@ import {DiscordModules} from "modules";
export default new class DarkMode extends Builtin { export default new class DarkMode extends Builtin {
get name() {return "VoiceDisconnect";} get name() {return "VoiceDisconnect";}
get group() {return "general";} get category() {return "general";}
get id() {return "bda-dc-0";} get id() {return "voiceDisconnect";}
constructor() { constructor() {
super(); super();

View File

@ -2,8 +2,8 @@ import Builtin from "../structs/builtin";
export default new class VoiceMode extends Builtin { export default new class VoiceMode extends Builtin {
get name() {return "VoiceMode";} get name() {return "VoiceMode";}
get group() {return "appearance";} get category() {return "appearance";}
get id() {return "bda-gs-4";} get id() {return "voiceMode";}
enabled() { enabled() {
$(".scroller.guild-channels ul").first().css("display", "none"); $(".scroller.guild-channels ul").first().css("display", "none");

View File

@ -12,4 +12,9 @@ import EmoteInfo from "./emotes/info";
import EmoteModifiers from "./emotes/modifiers"; import EmoteModifiers from "./emotes/modifiers";
import EmoteOverrides from "./emotes/overrides"; import EmoteOverrides from "./emotes/overrides";
import SettingsCollection from "./settings/config";
import EmoteCollection from "./emotes/config";
export const Collections = [SettingsCollection, EmoteCollection];
export {State, SettingsInfo, SettingsCookie, Config, PluginCookie, ThemeCookie, Themes, Plugins, Emotes, EmoteBlacklist, EmoteInfo, EmoteModifiers, EmoteOverrides}; export {State, SettingsInfo, SettingsCookie, Config, PluginCookie, ThemeCookie, Themes, Plugins, Emotes, EmoteBlacklist, EmoteInfo, EmoteModifiers, EmoteOverrides};

View File

@ -1,8 +1,8 @@
export default [ export default [
{ {
type: "category", type: "category",
id: "preferences", id: "general",
name: "Preferences", name: "General",
collapsible: true, collapsible: true,
settings: [ settings: [
{ {

View File

@ -5,6 +5,13 @@ export default [
name: "General", name: "General",
collapsible: true, collapsible: true,
settings: [ settings: [
{
type: "switch",
id: "emotes",
name: "Emote System",
note: "Enables BD's emote system",
value: true
},
{ {
type: "switch", type: "switch",
id: "publicServers", id: "publicServers",

View File

@ -1,4 +1,4 @@
import {SettingsCookie} from "data"; import {SettingsCookie, Collections} from "data";
import DataStore from "./datastore"; import DataStore from "./datastore";
import ContentManager from "./contentmanager"; import ContentManager from "./contentmanager";
import BdApi from "./pluginapi"; import BdApi from "./pluginapi";
@ -21,6 +21,8 @@ export default new class SettingsManager {
constructor() { constructor() {
this.renderer = new SettingsRenderer({onChange: this.updateSettings.bind(this)}); this.renderer = new SettingsRenderer({onChange: this.updateSettings.bind(this)});
this.updateSettings = this.updateSettings.bind(this);
console.log(Collections);
} }
initialize() { initialize() {
@ -63,25 +65,34 @@ export default new class SettingsManager {
Object.assign(state, config); Object.assign(state, config);
} }
buildSettingsPanel(config, state, onChange) { buildSettingsPanel(title, config, state, onChange) {
config.forEach(section => { config.forEach(section => {
section.settings.forEach(item => item.value = state[section.id][item.id]); section.settings.forEach(item => item.value = state[section.id][item.id]);
}); });
return this.renderer.getSettingsPanel(config, onChange); return this.renderer.getSettingsPanel(title, config, onChange);
} }
async patchSections() { async patchSections() {
const UserSettings = await this.getUserSettings(); // data.returnValue.type; const UserSettings = await this.getUserSettings(); // data.returnValue.type;
Utilities.monkeyPatch(UserSettings.prototype, "generateSections", {after: (data) => { Utilities.monkeyPatch(UserSettings.prototype, "generateSections", {after: (data) => {
// console.log(data); /* eslint-disable-line no-console */ let location = data.returnValue.findIndex(s => s.section.toLowerCase() == "linux") + 1;
data.returnValue.splice(23, 0, {section: "DIVIDER"}); const insert = (section) => {
data.returnValue.splice(24, 0, {section: "HEADER", label: "BandagedBD"}); data.returnValue.splice(location, 0, section);
// data.returnValue.splice(25, 0, {section: "BBD Settings", label: "Settings", element: () => this.renderer.core2}); location++;
data.returnValue.splice(25, 0, {section: "BBD Settings", label: "Settings", element: () => this.buildSettingsPanel(TheSettings, SettingsState, this.updateSettings)}); };
data.returnValue.splice(26, 0, {section: "BBD Emotes", label: "Emotes", element: () => this.buildSettingsPanel(EmoteSettings, EmoteState, this.updateSettings)}); console.log(data); /* eslint-disable-line no-console */
data.returnValue.splice(27, 0, {section: "BBD Test", label: "Test Tab", onClick: function() {Toasts.success("This can just be a click listener!", {forceShow: true});}}); insert({section: "DIVIDER"});
data.returnValue.splice(28, 0, {section: "CUSTOM", element: () => this.renderer.attribution}); insert({section: "HEADER", label: "BandagedBD"});
// insert({section: "BBD Settings", label: "Settings", element: () => this.renderer.core2});
insert({section: "BBD Settings", label: "Settings", element: () => this.buildSettingsPanel("Settings", TheSettings, SettingsState, this.updateSettings.bind(this, SettingsState))});
if (SettingsState.general.emotes) insert({section: "BBD Emotes", label: "Emotes", element: () => this.buildSettingsPanel("Emote Settings", EmoteSettings, EmoteState, this.updateSettings.bind(this, EmoteState))});
insert({section: "BBD Test", label: "Test Tab", onClick: function() {Toasts.success("This can just be a click listener!", {forceShow: true});}});
insert({section: "CUSTOM", element: () => this.renderer.attribution});
}}); }});
this.forceUpdate();
}
forceUpdate() {
const viewClass = WebpackModules.getByProps("standardSidebarView").standardSidebarView.split(" ")[0]; const viewClass = WebpackModules.getByProps("standardSidebarView").standardSidebarView.split(" ")[0];
const node = document.querySelector(`.${viewClass}`); const node = document.querySelector(`.${viewClass}`);
Utilities.getInternalInstance(node).return.return.return.return.return.return.stateNode.forceUpdate(); Utilities.getInternalInstance(node).return.return.return.return.return.return.stateNode.forceUpdate();
@ -105,15 +116,33 @@ export default new class SettingsManager {
return DataStore.getSettingGroup("settings"); return DataStore.getSettingGroup("settings");
} }
updateSettings(id, enabled) { onSettingChange(collection, category, id, enabled) {
if (arguments.length == 3) { collection[category][id] = enabled;
SettingsState[arguments[0]][arguments[1]] = arguments[2]; Events.dispatch("setting-updated", category, id, enabled);
Events.dispatch("setting-updated", arguments[0], arguments[1], arguments[2]); // console.log(collection);
console.log(SettingsState); if (id == "emotes") this.forceUpdate();
return; }
}
Events.dispatch("setting-updated", "Modules", id, enabled); getSetting(category, id) {
SettingsCookie[id] = enabled; if (arguments.length == 2) return SettingsState[category][id];
const collection = arguments[0] == "emotes" ? EmoteState : SettingsState;
return collection && collection[arguments[1]][arguments[2]];
}
get(category, id) {
if (arguments.length == 2) return SettingsState[category][id];
const collection = arguments[0] == "emotes" ? EmoteState : SettingsState;
return collection && collection[arguments[1]][arguments[2]];
}
updateSettings(collection, category, id, enabled) {
// console.log("Updating ", collection);
// console.log(category, id, enabled);
collection[category][id] = enabled;
Events.dispatch("setting-updated", category, id, enabled);
// console.log(collection);
if (id == "emotes") this.forceUpdate();
// SettingsCookie[id] = enabled;
// if (id == "bda-es-4") { // if (id == "bda-es-4") {
@ -138,7 +167,7 @@ export default new class SettingsManager {
else BdApi.setWindowPreference("backgroundColor", "#2f3136"); else BdApi.setWindowPreference("backgroundColor", "#2f3136");
} }
this.saveSettings(); // this.saveSettings();
} }
initializeSettings() { initializeSettings() {

View File

@ -17,15 +17,15 @@ export function onSettingChange(category, identifier, onEnable, onDisable) {
export default class BuiltinModule { export default class BuiltinModule {
get name() {return "Unnamed Builtin";} get name() {return "Unnamed Builtin";}
get category() {return "settings";} get collection() {return "settings";}
get group() {return "general";} get category() {return "general";}
get id() {return "None";} get id() {return "None";}
async initialize() { async initialize() {
const state = this.category == "settings" ? SettingState : EmoteState; const state = this.collection == "settings" ? SettingState : EmoteState;
if (state[this.group][this.id]) await this.enable(); if (state[this.category][this.id]) await this.enable();
Events.on("setting-updated", (group, id, enabled) => { Events.on("setting-updated", (category, id, enabled) => {
if (group !== this.group || id !== this.id) return; if (category !== this.category || id !== this.id) return;
if (enabled) this.enable(); if (enabled) this.enable();
else this.disable(); else this.disable();
}); });

View File

@ -47,7 +47,7 @@ export default class Group extends React.Component {
const groupClass = `${baseClassName} ${collapseClass}`; const groupClass = `${baseClassName} ${collapseClass}`;
return <div className={groupClass}> return <div className={groupClass}>
<Title text={this.props.name} collapsible={this.props.collapsible} onClick={() => this.toggleCollapse()} button={this.props.button} /> <Title text={this.props.name} collapsible={this.props.collapsible} onClick={() => this.toggleCollapse()} button={this.props.button} isGroup={true} />
<div className="bd-settings-container" ref={this.container}> <div className="bd-settings-container" ref={this.container}>
{settings.filter(s => !s.hidden).map((setting) => { {settings.filter(s => !s.hidden).map((setting) => {
// console.log(setting); // console.log(setting);

View File

@ -17,6 +17,7 @@ import SettingsGroup2 from "../settings/group";
import {Toasts} from "../ui"; import {Toasts} from "../ui";
import Settings from "../../data/settings/config"; import Settings from "../../data/settings/config";
import State from "../../data/settings/state"; import State from "../../data/settings/state";
import SettingsTitle from "./title";
export default class V2_SettingsPanel { export default class V2_SettingsPanel {
@ -48,10 +49,10 @@ export default class V2_SettingsPanel {
getSettingsPanel(groups, onChange) { getSettingsPanel(title, groups, onChange) {
return groups.map(section => { return [React.createElement(SettingsTitle, {text: title}), groups.map(section => {
return React.createElement(SettingsGroup2, Object.assign({}, section, {onChange})); return React.createElement(SettingsGroup2, Object.assign({}, section, {onChange}));
}); })];
} }
get core3() { get core3() {

View File

@ -1,6 +1,7 @@
import {React} from "modules"; import {React} from "modules";
const className = "bd-settings-title h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi defaultColor-1_ajX0 defaultMarginh2-2LTaUL marginBottom20-32qID7"; const className = "bd-settings-title h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi defaultColor-1_ajX0 defaultMarginh2-2LTaUL marginBottom20-32qID7";
const className2 = "bd-settings-title bd-settings-group-title h5-18_1nd title-3sZWYQ size12-3R0845 height16-2Lv3qA weightSemiBold-NJexzi da-h5 da-title da-size12 da-height16 da-weightSemiBold marginBottom4-2qk4Hy da-marginBottom4 marginTop8-1DLZ1n da-marginTop8";
export default class SettingsTitle extends React.Component { export default class SettingsTitle extends React.Component {
constructor(props) { constructor(props) {
@ -8,7 +9,8 @@ export default class SettingsTitle extends React.Component {
} }
//h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi da-h2 da-title da-size16 da-height20 da-weightSemiBold defaultColor-1_ajX0 da-defaultColor marginTop60-3PGbtK da-marginTop60 marginBottom20-32qID7 da-marginBottom20 //h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi da-h2 da-title da-size16 da-height20 da-weightSemiBold defaultColor-1_ajX0 da-defaultColor marginTop60-3PGbtK da-marginTop60 marginBottom20-32qID7 da-marginBottom20
render() { render() {
const titleClass = this.props.className ? `${className} ${this.props.className}` : className; const baseClass = this.props.isGroup ? className2 : className;
const titleClass = this.props.className ? `${baseClass} ${this.props.className}` : baseClass;
return <h2 className={titleClass} onClick={() => {this.props.onClick && this.props.onClick();}}> return <h2 className={titleClass} onClick={() => {this.props.onClick && this.props.onClick();}}>
{this.props.text} {this.props.text}
{this.props.button && <button className="bd-title-button" onClick={this.props.button.onClick}>{this.props.button.title}</button>} {this.props.button && <button className="bd-title-button" onClick={this.props.button.onClick}>{this.props.button.title}</button>}