stuff
This commit is contained in:
parent
ab1a05b144
commit
1618979620
|
@ -7173,6 +7173,7 @@ module.exports = (_ => {
|
|||
onColorChange: color => {
|
||||
this.handleChange(!color ? "" : (this.props.mode == "comp" ? BDFDB.ColorUtils.convert(color, "RGBCOMP").slice(0, 3).join(",") : (this.props.noAlpha ? BDFDB.ColorUtils.convert(color, "RGB") : color)));
|
||||
},
|
||||
ref: this.props.controlsRef,
|
||||
pickerConfig: {gradient: false, alpha: this.props.mode != "comp" && !this.props.noAlpha}
|
||||
})
|
||||
}) : null,
|
||||
|
@ -7180,7 +7181,8 @@ module.exports = (_ => {
|
|||
filter: this.props.filter,
|
||||
mode: this.props.mode,
|
||||
useFilePath: this.props.useFilePath,
|
||||
searchFolders: this.props.searchFolders
|
||||
searchFolders: this.props.searchFolders,
|
||||
ref: this.props.controlsRef
|
||||
}) : null
|
||||
].flat(10).filter(n => n);
|
||||
|
||||
|
@ -7216,7 +7218,10 @@ module.exports = (_ => {
|
|||
}) : null,
|
||||
inputChildren.length == 1 ? inputChildren[0] : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
|
||||
align: InternalComponents.LibraryComponents.Flex.Align.CENTER,
|
||||
children: inputChildren.map((child, i) => i != 0 ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, {shrink: 0, children: child}) : child)
|
||||
children: inputChildren.map((child, i) => i != 0 ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, {
|
||||
shrink: 0,
|
||||
children: child
|
||||
}) : child)
|
||||
}),
|
||||
this.props.errorMessage ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextElement, {
|
||||
className: BDFDB.disCN.carderror,
|
||||
|
|
|
@ -18,8 +18,8 @@ module.exports = (_ => {
|
|||
"description": "Allow the user to configure their own chat-aliases which will automatically be replaced before the message is being sent"
|
||||
},
|
||||
"changeLog": {
|
||||
"fixed": {
|
||||
"New Aliases": "You can add new Aliases again"
|
||||
"improved": {
|
||||
"Canary Changes": "Preparing Plugins for the changes that are already done on Discord Canary"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -267,11 +267,11 @@ module.exports = (_ => {
|
|||
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
|
||||
type: "Button",
|
||||
label: "Pick a Word Value and Replacement Value:",
|
||||
key: "ADDBUTTON",
|
||||
disabled: !Object.keys(values).every(valuename => values[valuename]),
|
||||
disabled: !Object.keys(values).every(valueName => values[valueName]),
|
||||
children: BDFDB.LanguageUtils.LanguageStrings.ADD,
|
||||
ref: instance => {if (instance) values.addButton = instance;},
|
||||
onClick: _ => {
|
||||
this.saveWord(values.wordValue, values.replaceValue, settingsPanel.props._node.querySelector(".input-replacevalue input[type='file']"));
|
||||
this.saveWord(values);
|
||||
BDFDB.PluginUtils.refreshSettingsPanel(this, settingsPanel, collapseStates);
|
||||
}
|
||||
}),
|
||||
|
@ -502,36 +502,30 @@ module.exports = (_ => {
|
|||
}
|
||||
|
||||
openAddModal (wordValue) {
|
||||
let values = {
|
||||
wordValue,
|
||||
replaceValue: ""
|
||||
};
|
||||
let values = {wordValue, replaceValue: ""};
|
||||
let configs = BDFDB.ObjectUtils.map(BDFDB.ObjectUtils.filter(this.defaults.configs, key => key != "file", true), n => n.value);
|
||||
|
||||
BDFDB.ModalUtils.open(this, {
|
||||
size: "MEDIUM",
|
||||
header: BDFDB.LanguageUtils.LibraryStringsFormat("add_to", "ChatAliases"),
|
||||
subHeader: "",
|
||||
children: [
|
||||
this.createInputs(values),
|
||||
BDFDB.ArrayUtils.remove(Object.keys(this.defaults.configs), "file").map(key => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
|
||||
Object.keys(configs).map(key => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
|
||||
type: "Switch",
|
||||
className: "input-config" + key,
|
||||
label: this.defaults.configs[key].description,
|
||||
value: this.defaults.configs[key].value
|
||||
value: configs[key],
|
||||
onChange: value => {configs[key] = value;}
|
||||
}))
|
||||
].flat(10).filter(n => n),
|
||||
buttons: [{
|
||||
key: "ADDBUTTON",
|
||||
disabled: !Object.keys(values).every(valuename => values[valuename]),
|
||||
disabled: !Object.keys(values).every(valueName => values[valueName]),
|
||||
contents: BDFDB.LanguageUtils.LanguageStrings.ADD,
|
||||
color: "BRAND",
|
||||
close: true,
|
||||
onClick: modal => {
|
||||
let configs = {};
|
||||
for (let key in this.defaults.configs) {
|
||||
let configInput = modal.querySelector(`.input-config${key} ${BDFDB.dotCN.switchinner}`);
|
||||
if (configInput) configs[key] = configInput.checked;
|
||||
}
|
||||
this.saveWord(values.wordValue, values.replaceValue, modal.querySelector(".input-replacevalue input[type='file']"), configs);
|
||||
ref: instance => {if (instance) values.addButton = instance;},
|
||||
onClick: _ => {
|
||||
this.saveWord(values, configs);
|
||||
this.forceUpdateAll();
|
||||
}
|
||||
}]
|
||||
|
@ -552,11 +546,8 @@ module.exports = (_ => {
|
|||
if (!values.wordValue) instance.props.errorMessage = "Choose a Word Value";
|
||||
else if (aliases[values.wordValue]) instance.props.errorMessage = "Word Value already used, saving will overwrite old Alias";
|
||||
else delete instance.props.errorMessage;
|
||||
let addButtonIns = BDFDB.ReactUtils.findOwner(BDFDB.ReactUtils.findOwner(instance, {name: ["BDFDB_Modal", "BDFDB_SettingsPanel"], up: true}), {key: "ADDBUTTON"});
|
||||
if (addButtonIns) {
|
||||
addButtonIns.props.disabled = !Object.keys(values).every(valuename => values[valuename]);
|
||||
BDFDB.ReactUtils.forceUpdate(addButtonIns);
|
||||
}
|
||||
values.addButton.props.disabled = !Object.keys(values).every(valueName => values[valueName]);
|
||||
BDFDB.ReactUtils.forceUpdate(values.addButton);
|
||||
}
|
||||
})
|
||||
}),
|
||||
|
@ -564,44 +555,40 @@ module.exports = (_ => {
|
|||
title: "With:",
|
||||
className: BDFDB.disCN.marginbottom8,
|
||||
children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextInput, {
|
||||
className: "input-replacevalue",
|
||||
type: "file",
|
||||
useFilePath: true,
|
||||
value: values.replaceValue,
|
||||
placeholder: values.replaceValue,
|
||||
autoFocus: true,
|
||||
errorMessage: !values.replaceValue && "Choose a Replacement Value",
|
||||
controlsRef: instance => {if (instance) values.fileSelection = instance;},
|
||||
onChange: (value, instance) => {
|
||||
values.replaceValue = value.trim();
|
||||
if (!values.replaceValue) instance.props.errorMessage = "Choose a Replacement Value";
|
||||
else delete instance.props.errorMessage;
|
||||
let addButtonIns = BDFDB.ReactUtils.findOwner(BDFDB.ReactUtils.findOwner(instance, {name: ["BDFDB_Modal", "BDFDB_SettingsPanel"], up: true}), {key: "ADDBUTTON"});
|
||||
if (addButtonIns) {
|
||||
addButtonIns.props.disabled = !Object.keys(values).every(valuename => values[valuename]);
|
||||
BDFDB.ReactUtils.forceUpdate(addButtonIns);
|
||||
}
|
||||
values.addButton.props.disabled = !Object.keys(values).every(valueName => values[valueName]);
|
||||
BDFDB.ReactUtils.forceUpdate(values.addButton);
|
||||
}
|
||||
})
|
||||
})
|
||||
];
|
||||
}
|
||||
|
||||
saveWord (wordValue, replaceValue, fileSelection, aliasConfigs = configs) {
|
||||
console.log(wordValue, replaceValue, fileSelection);
|
||||
if (!wordValue || !replaceValue || !fileSelection) return;
|
||||
saveWord (values, aliasConfigs = configs) {
|
||||
if (!values.wordValue || !values.replaceValue || !values.fileSelection) return;
|
||||
let filedata = null;
|
||||
if (fileSelection.files && fileSelection.files[0] && BDFDB.LibraryRequires.fs.existsSync(replaceValue)) {
|
||||
if (values.fileSelection.files && values.fileSelection.files[0] && BDFDB.LibraryRequires.fs.existsSync(values.replaceValue)) {
|
||||
filedata = JSON.stringify({
|
||||
data: BDFDB.LibraryRequires.fs.readFileSync(replaceValue).toString("base64"),
|
||||
name: fileSelection.files[0].name,
|
||||
type: fileSelection.files[0].type
|
||||
data: BDFDB.LibraryRequires.fs.readFileSync(values.replaceValue).toString("base64"),
|
||||
name: values.fileSelection.files[0].name,
|
||||
type: values.fileSelection.files[0].type
|
||||
});
|
||||
}
|
||||
aliases[wordValue] = {
|
||||
replace: replaceValue,
|
||||
aliases[values.wordValue] = {
|
||||
replace: values.replaceValue,
|
||||
filedata: filedata,
|
||||
case: aliasConfigs.case,
|
||||
exact: wordValue.indexOf(" ") > -1 ? false : aliasConfigs.exact,
|
||||
exact: values.wordValue.indexOf(" ") > -1 ? false : aliasConfigs.exact,
|
||||
autoc: aliasConfigs.regex ? false : aliasConfigs.autoc,
|
||||
regex: aliasConfigs.regex,
|
||||
file: filedata != null
|
||||
|
|
|
@ -14,12 +14,12 @@ module.exports = (_ => {
|
|||
"info": {
|
||||
"name": "ChatFilter",
|
||||
"author": "DevilBro",
|
||||
"version": "3.4.8",
|
||||
"version": "3.4.9",
|
||||
"description": "Allows the user to censor Words or block complete Messages/Statuses"
|
||||
},
|
||||
"changeLog": {
|
||||
"improved": {
|
||||
"Status Option": "Plugin now also checks custom statuses, can be disabled"
|
||||
"Canary Changes": "Preparing Plugins for the changes that are already done on Discord Canary"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -155,9 +155,9 @@ module.exports = (_ => {
|
|||
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
|
||||
type: "Button",
|
||||
label: "Pick a Word Value and Replacement Value:",
|
||||
key: "ADDBUTTON",
|
||||
disabled: !Object.keys(values).every(valuename => values[valuename]),
|
||||
children: BDFDB.LanguageUtils.LanguageStrings.ADD,
|
||||
ref: instance => {if (instance) values.addButton = instance;},
|
||||
onClick: _ => {
|
||||
this.saveWord(values);
|
||||
BDFDB.PluginUtils.refreshSettingsPanel(this, settingsPanel, collapseStates);
|
||||
|
@ -508,32 +508,29 @@ module.exports = (_ => {
|
|||
|
||||
openAddModal (wordValue) {
|
||||
let values = {wordValue, replaceValue: "", choice: "blocked"};
|
||||
let configs = BDFDB.ObjectUtils.map(this.defaults.configs, n => n.value);
|
||||
|
||||
BDFDB.ModalUtils.open(this, {
|
||||
size: "MEDIUM",
|
||||
header: BDFDB.LanguageUtils.LibraryStringsFormat("add_to", "ChatFilter"),
|
||||
subHeader: "",
|
||||
children: [
|
||||
this.createInputs(values),
|
||||
BDFDB.ArrayUtils.remove(Object.keys(this.defaults.configs), "file").map(key => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
|
||||
Object.keys(configs).map(key => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
|
||||
type: "Switch",
|
||||
className: "input-config" + key,
|
||||
label: this.defaults.configs[key].description,
|
||||
value: this.defaults.configs[key].value
|
||||
value: configs[key],
|
||||
onChange: value => {configs[key] = value;}
|
||||
}))
|
||||
].flat(10).filter(n => n),
|
||||
buttons: [{
|
||||
key: "ADDBUTTON",
|
||||
disabled: !values.wordValue,
|
||||
contents: BDFDB.LanguageUtils.LanguageStrings.ADD,
|
||||
color: "BRAND",
|
||||
close: true,
|
||||
onClick: modal => {
|
||||
let newConfigs = {};
|
||||
for (let key in this.defaults.configs) {
|
||||
let configInput = modal.querySelector(`.input-config${key} ${BDFDB.dotCN.switchinner}`);
|
||||
if (configInput) newConfigs[key] = configInput.checked;
|
||||
}
|
||||
this.saveWord(values, newConfigs);
|
||||
ref: instance => {if (instance) values.addButton = instance;},
|
||||
onClick: _ => {
|
||||
this.saveWord(values, configs);
|
||||
this.forceUpdateAll();
|
||||
}
|
||||
}]
|
||||
|
@ -541,25 +538,23 @@ module.exports = (_ => {
|
|||
}
|
||||
|
||||
createInputs (values) {
|
||||
let wordValueInput;
|
||||
return [
|
||||
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, {
|
||||
title: "Block/Censor:",
|
||||
className: BDFDB.disCN.marginbottom8,
|
||||
children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextInput, {
|
||||
key: "WORDVALUE",
|
||||
value: values.wordValue,
|
||||
placeholder: values.wordValue,
|
||||
errorMessage: !values.wordValue && "Choose a Word Value" || words[values.choice][values.wordValue] && `Word Value already used, saving will overwrite old ${values.choice} Word`,
|
||||
ref: instance => {if (instance) wordValueInput = instance;},
|
||||
onChange: (value, instance) => {
|
||||
values.wordValue = value.trim();
|
||||
if (!values.wordValue) instance.props.errorMessage = "Choose a Word Value";
|
||||
else if (words[values.choice][values.wordValue]) instance.props.errorMessage = `Word Value already used, saving will overwrite old ${values.choice} word`;
|
||||
else delete instance.props.errorMessage;
|
||||
let addButtonIns = BDFDB.ReactUtils.findOwner(BDFDB.ReactUtils.findOwner(instance, {name: ["BDFDB_Modal", "BDFDB_SettingsPanel"], up: true}), {key: "ADDBUTTON"});
|
||||
if (addButtonIns) {
|
||||
addButtonIns.props.disabled = !values.wordValue;
|
||||
BDFDB.ReactUtils.forceUpdate(addButtonIns);
|
||||
}
|
||||
values.addButton.props.disabled = !values.wordValue;
|
||||
BDFDB.ReactUtils.forceUpdate(values.addButton);
|
||||
}
|
||||
})
|
||||
}),
|
||||
|
@ -570,24 +565,19 @@ module.exports = (_ => {
|
|||
value: values.replaceValue,
|
||||
placeholder: values.replaceValue,
|
||||
autoFocus: true,
|
||||
onChange: (value, instance) => {
|
||||
values.replaceValue = value.trim();
|
||||
}
|
||||
onChange: value => {values.replaceValue = value;}
|
||||
})
|
||||
}),
|
||||
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.RadioGroup, {
|
||||
className: BDFDB.disCN.marginbottom8,
|
||||
value: values.choice,
|
||||
options: [{value: "blocked", name: "Block"}, {value: "censored", name: "Censor"}],
|
||||
onChange: (value, instance) => {
|
||||
values.choice = value.value;
|
||||
let wordValueInputIns = BDFDB.ReactUtils.findOwner(BDFDB.ReactUtils.findOwner(instance, {name: ["BDFDB_Modal", "BDFDB_SettingsPanel"], up: true}), {key: "WORDVALUE"});
|
||||
if (wordValueInputIns) {
|
||||
if (!values.wordValue) wordValueInputIns.props.errorMessage = "Choose a Word Value";
|
||||
else if (words[values.choice][values.wordValue]) wordValueInputIns.props.errorMessage = `Word Value already used, saving will overwrite old ${values.choice} Word`;
|
||||
else delete wordValueInputIns.props.errorMessage;
|
||||
BDFDB.ReactUtils.forceUpdate(wordValueInputIns);
|
||||
}
|
||||
onChange: valueObj => {
|
||||
values.choice = valueObj.value;
|
||||
if (!values.wordValue) wordValueInput.props.errorMessage = "Choose a Word Value";
|
||||
else if (words[values.choice][values.wordValue]) wordValueInput.props.errorMessage = `Word Value already used, saving will overwrite old ${values.choice} Word`;
|
||||
else delete wordValueInput.props.errorMessage;
|
||||
BDFDB.ReactUtils.forceUpdate(wordValueInput);
|
||||
}
|
||||
})
|
||||
];
|
||||
|
@ -595,8 +585,6 @@ module.exports = (_ => {
|
|||
|
||||
saveWord (values, wordConfigs = configs) {
|
||||
if (!values.wordValue || !values.choice) return;
|
||||
values.wordValue = values.wordValue.trim();
|
||||
values.replaceValue = values.replaceValue.trim();
|
||||
if (!BDFDB.ObjectUtils.is(words[values.choice])) words[values.choice] = {};
|
||||
words[values.choice][values.wordValue] = {
|
||||
replace: values.replaceValue,
|
||||
|
|
|
@ -631,7 +631,7 @@ module.exports = (_ => {
|
|||
contents: BDFDB.LanguageUtils.LanguageStrings.CONNECT,
|
||||
color: "BRAND",
|
||||
close: true,
|
||||
onClick: modal => {
|
||||
onClick: _ => {
|
||||
BDFDB.LibraryModules.UserSettingsUtils.open(BDFDB.DiscordConstants.UserSettingsSections.CONNECTIONS)
|
||||
}
|
||||
}]
|
||||
|
|
|
@ -14,12 +14,12 @@ module.exports = (_ => {
|
|||
"info": {
|
||||
"name": "ThemeSettings",
|
||||
"author": "DevilBro",
|
||||
"version": "1.3.0",
|
||||
"version": "1.3.1",
|
||||
"description": "Allow you to change Theme Variables within BetterDiscord. Adds a Settings button (similar to Plugins) to customizable Themes in your Themes Page"
|
||||
},
|
||||
"changeLog": {
|
||||
"added": {
|
||||
"Imports": "You can now enable/disable imports in the settings"
|
||||
"improved": {
|
||||
"Canary Changes": "Preparing Plugins for the changes that are already done on Discord Canary"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -97,6 +97,7 @@ module.exports = (_ => {
|
|||
let vars = this.getThemeVars(css);
|
||||
if (imports.length || vars.length) {
|
||||
let open = _ => {
|
||||
let refs = {imports: {}, inputs: {}};
|
||||
BDFDB.ModalUtils.open(this, {
|
||||
header: `${addon.name} ${BDFDB.LanguageUtils.LanguageStrings.SETTINGS}`,
|
||||
subHeader: "",
|
||||
|
@ -105,18 +106,20 @@ module.exports = (_ => {
|
|||
contentClassName: BDFDB.disCN._repomodalsettings,
|
||||
footerClassName: BDFDB.disCN._repomodalfooter,
|
||||
size: "MEDIUM",
|
||||
children: this.createThemeInputs(addon, imports, vars),
|
||||
buttons: [{contents: BDFDB.LanguageUtils.LanguageStrings.SAVE, color: "BRAND", onClick: modal => {this.updateTheme(modal, addon);}}]
|
||||
children: this.createThemeInputs(refs, addon, imports, vars),
|
||||
buttons: [{
|
||||
contents: BDFDB.LanguageUtils.LanguageStrings.SAVE,
|
||||
color: "BRAND",
|
||||
onClick: _ => {this.updateTheme(refs, addon);}
|
||||
}]
|
||||
});
|
||||
console.log(refs);
|
||||
};
|
||||
if (isBeta) {
|
||||
let controls = card.querySelector("." + BDFDB.disCN._repofooter.split(" ")[0] + " " + BDFDB.dotCN._repocontrols);
|
||||
let settingsButton = document.createElement("button");
|
||||
settingsButton.className = BDFDB.DOMUtils.formatClassName(BDFDB.disCN._repobutton, BDFDB.disCN._repocontrolsbutton, "theme-settings-button");
|
||||
settingsButton.appendChild(BDFDB.DOMUtils.create(`<svg viewBox="0 0 20 20" style="width: 20px; height: 20px;">
|
||||
<path fill="none" d="M0 0h20v20H0V0z"></path>
|
||||
<path d="M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z"></path>
|
||||
</svg>`));
|
||||
settingsButton.appendChild(BDFDB.DOMUtils.create(`<svg viewBox="0 0 20 20" style="width: 20px; height: 20px;"><path fill="none" d="M0 0h20v20H0V0z"></path><path d="M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z"></path></svg>`));
|
||||
controls.insertBefore(settingsButton, controls.firstElementChild);
|
||||
settingsButton.addEventListener("click", open);
|
||||
settingsButton.addEventListener("mouseenter", _ => {
|
||||
|
@ -143,40 +146,45 @@ module.exports = (_ => {
|
|||
}
|
||||
}
|
||||
|
||||
updateTheme (card, addon) {
|
||||
updateTheme (refs, addon) {
|
||||
let path = BDFDB.LibraryRequires.path.join(dir, addon.filename);
|
||||
let css = BDFDB.LibraryRequires.fs.readFileSync(path).toString();
|
||||
if (css) {
|
||||
let amount = 0;
|
||||
for (let input of card.querySelectorAll(BDFDB.dotCN.switchinner)) {
|
||||
let oldValue = input.getAttribute("oldvalue");
|
||||
let newValue = input.checked;
|
||||
for (let i in refs.imports) {
|
||||
let input = refs.imports[i];
|
||||
let oldValue = input.props.oldValue;
|
||||
let newValue = input.props.value;
|
||||
console.log(oldValue, newValue);
|
||||
if (newValue.toString() != oldValue.toString()) {
|
||||
let importUrl = input.getAttribute("name");
|
||||
let importUrl = input.props.name;
|
||||
if (newValue) css = css.replace(new RegExp(`\\n${BDFDB.StringUtils.regEscape("/* @import url(" + importUrl + "); */")}`, "g"), `\n@import url(${importUrl});`);
|
||||
else css = css.replace(new RegExp(`\\n${BDFDB.StringUtils.regEscape("@import url(" + importUrl + ");")}`, "g"), `\n/* @import url(${importUrl}); */`);
|
||||
input.setAttribute("oldvalue", newValue);
|
||||
input.props.oldValue = newValue;
|
||||
amount++;
|
||||
}
|
||||
}
|
||||
for (let input of card.querySelectorAll(BDFDB.dotCN.input)) {
|
||||
let oldValue = input.getAttribute("oldvalue");
|
||||
let newValue = input.value;
|
||||
for (let i in refs.inputs) {
|
||||
let input = refs.inputs[i];
|
||||
let oldValue = input.props.oldValue;
|
||||
let newValue = input.props.value;
|
||||
console.log(oldValue, newValue);
|
||||
if (newValue && newValue.trim() && newValue != oldValue) {
|
||||
let varName = input.getAttribute("name");
|
||||
let varName = input.props.name;
|
||||
css = css.replace(new RegExp(`--${BDFDB.StringUtils.regEscape(varName)}(\\s*):(\\s*)${BDFDB.StringUtils.regEscape(oldValue)}`,"g"), `--${varName}$1: $2${newValue}`);
|
||||
input.setAttribute("oldvalue", newValue);
|
||||
input.setAttribute("placeholder", newValue);
|
||||
input.props.oldValue = newValue;
|
||||
input.props.placeholder = newValue;
|
||||
amount++;
|
||||
}
|
||||
}
|
||||
if (amount > 0) {
|
||||
BDFDB.ReactUtils.forceUpdate(BDFDB.ObjectUtils.toArray(refs.imports), BDFDB.ObjectUtils.toArray(refs.inputs));
|
||||
BDFDB.LibraryRequires.fs.writeFileSync(path, css);
|
||||
BDFDB.NotificationUtils.toast(`Updated ${amount} variable${amount == 1 ? "" : "s"} in ${addon.filename}`, {type: "success"});
|
||||
BDFDB.NotificationUtils.toast(`Updated ${amount} Variable${amount == 1 ? "" : "s"} in '${addon.filename}'`, {type: "success"});
|
||||
}
|
||||
else BDFDB.NotificationUtils.toast(`There are no changed variables to be updated in ${addon.filename}`, {type: "warning"});
|
||||
else BDFDB.NotificationUtils.toast(`There are no changed Variables to be updated in '${addon.filename}'`, {type: "warning"});
|
||||
}
|
||||
else BDFDB.NotificationUtils.toast(`Could not find themefile: ${addon.filename}`, {type: "danger"});
|
||||
else BDFDB.NotificationUtils.toast(`Could not find Theme File '${addon.filename}'`, {type: "danger"});
|
||||
}
|
||||
|
||||
getThemeImports (css) {
|
||||
|
@ -196,27 +204,30 @@ module.exports = (_ => {
|
|||
return [];
|
||||
}
|
||||
|
||||
createThemeInputs (theme, imports, vars) {
|
||||
createThemeInputs (refs, theme, imports, vars) {
|
||||
let settingsItems = [];
|
||||
if (imports.length) settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelList, {
|
||||
title: "Imports:",
|
||||
dividerBottom: vars.length,
|
||||
children: imports.map(impo => {
|
||||
children: imports.map((impo, i) => {
|
||||
let name = impo[0].split("/").pop().replace(/"/g, "");
|
||||
return BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
|
||||
type: "Switch",
|
||||
margin: 8,
|
||||
childProps: {
|
||||
ref: instance => {if (instance) refs.imports[i] = instance;}
|
||||
},
|
||||
label: name[0].toUpperCase() + name.slice(1),
|
||||
note: impo[0].replace(/"/g, ""),
|
||||
name: impo[0],
|
||||
value: impo[1],
|
||||
oldvalue: impo[1].toString()
|
||||
oldValue: impo[1].toString()
|
||||
});
|
||||
})
|
||||
}));
|
||||
let varInputs = [];
|
||||
for (let varStr of vars) {
|
||||
varStr = varStr.split(":");
|
||||
for (let i in vars) {
|
||||
let varStr = vars[i].split(":");
|
||||
let varName = varStr.shift().trim();
|
||||
varStr = varStr.join(":").split(/;[^A-z0-9]|\/\*/);
|
||||
let varValue = varStr.shift().trim();
|
||||
|
@ -243,14 +254,15 @@ module.exports = (_ => {
|
|||
childProps: {
|
||||
type: childType,
|
||||
mode: childMode,
|
||||
filter: childType == "file" && "image"
|
||||
filter: childType == "file" && "image",
|
||||
ref: instance => {if (instance) refs.inputs[i] = instance;}
|
||||
},
|
||||
label: varName[0].toUpperCase() + varName.slice(1),
|
||||
note: varDescription && varDescription.indexOf("*") == 0 ? varDescription.slice(1) : varDescription,
|
||||
basis: "70%",
|
||||
name: varName,
|
||||
value: varValue,
|
||||
oldvalue: varValue,
|
||||
oldValue: varValue,
|
||||
placeholder: varValue
|
||||
}));
|
||||
}
|
||||
|
|
|
@ -14,8 +14,13 @@ module.exports = (_ => {
|
|||
"info": {
|
||||
"name": "UserNotes",
|
||||
"author": "DevilBro",
|
||||
"version": "1.0.5",
|
||||
"version": "1.0.6",
|
||||
"description": "Allow you to write your own user notes wihtout a character limit"
|
||||
},
|
||||
"changeLog": {
|
||||
"improved": {
|
||||
"Canary Changes": "Preparing Plugins for the changes that are already done on Discord Canary"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -107,6 +112,7 @@ module.exports = (_ => {
|
|||
|
||||
openNotesModal (user) {
|
||||
let note = BDFDB.DataUtils.load(this, "notes", user.id);
|
||||
let textarea;
|
||||
|
||||
BDFDB.ModalUtils.open(this, {
|
||||
size: "LARGE",
|
||||
|
@ -117,15 +123,16 @@ module.exports = (_ => {
|
|||
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextArea, {
|
||||
value: note,
|
||||
placeholder: note,
|
||||
autoFocus: true
|
||||
autoFocus: true,
|
||||
ref: instance => {if (instance) textarea = instance;}
|
||||
})
|
||||
],
|
||||
buttons: [{
|
||||
contents: BDFDB.LanguageUtils.LanguageStrings.SAVE,
|
||||
color: "BRAND",
|
||||
close: true,
|
||||
onClick: modal => {
|
||||
note = modal.querySelector("textarea").value;
|
||||
onClick: _ => {
|
||||
note = textarea.props.value;
|
||||
if (note) BDFDB.DataUtils.save(note, this, "notes", user.id);
|
||||
else BDFDB.DataUtils.remove(this, "notes", user.id);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue