From 847ef94c250a77b775025e54630c2a24d3d9f412 Mon Sep 17 00:00:00 2001 From: Zack Rauen Date: Sat, 6 Mar 2021 15:26:48 -0500 Subject: [PATCH] Fix various bugs and toolchain - Fix an issue where dist might not have the proper package.json - Fix an issue with PublicServers adding button to guild list - Fix the placement of BD in settings - Change default modal button to `primary` - Change restart prompts to have `danger` prop - Change tooltips to use `primary` rather than `black` - Remove VoiceMode - Remove DarkMode - Give a hover effect to the public servers button - Fix expanding icon in emote menu - Fix over-bolded text in setting descriptions --- assets/locales/de.json | 8 ---- assets/locales/en.json | 8 ---- assets/locales/ja.json | 8 ---- assets/locales/sv.json | 8 ---- renderer/src/builtins/appearance/darkmode.js | 15 ------- renderer/src/builtins/appearance/voicemode.js | 19 -------- renderer/src/builtins/builtins.js | 2 - .../src/builtins/developer/reactdevtools.js | 1 + .../src/builtins/general/publicservers.js | 2 +- .../src/builtins/general/voicedisconnect.js | 2 +- renderer/src/builtins/windowprefs.js | 1 + renderer/src/data/settings/config.js | 2 - renderer/src/data/strings.js | 8 ---- renderer/src/modules/componentpatcher.js | 4 +- renderer/src/modules/datastore.js | 2 +- renderer/src/styles/builtins/emotemenu.css | 2 +- .../src/styles/builtins/publicservers.css | 12 +++-- renderer/src/styles/ui/bdsettings.css | 2 +- renderer/src/ui/customcss/editor.jsx | 2 +- renderer/src/ui/emote.js | 2 +- renderer/src/ui/modals.js | 2 +- renderer/src/ui/settings.js | 2 +- renderer/src/ui/settings/addoncard.jsx | 4 +- renderer/src/ui/settings/addonlist.jsx | 2 +- renderer/src/ui/settings/sidebarheader.jsx | 2 +- scripts/inject.js | 21 +++++---- scripts/pack.js | 44 +++---------------- scripts/package.js | 16 +++++++ scripts/validate.js | 18 ++++++++ 29 files changed, 80 insertions(+), 141 deletions(-) delete mode 100644 renderer/src/builtins/appearance/darkmode.js delete mode 100644 renderer/src/builtins/appearance/voicemode.js create mode 100644 scripts/package.js create mode 100644 scripts/validate.js diff --git a/assets/locales/de.json b/assets/locales/de.json index f9110f3c..9149ae32 100644 --- a/assets/locales/de.json +++ b/assets/locales/de.json @@ -32,10 +32,6 @@ }, "appearance": { "name": "Aussehen", - "voiceMode": { - "name": "Sprachmodus", - "note": "Verbirgt alles, was kein Sprachkanal ist." - }, "twentyFourHour": { "name": "24h Zeitstempel", "note": "Zeigt die Zeitstempel in einem 24h format an." @@ -44,10 +40,6 @@ "name": "Minimaler Modus", "note": "Verbirgt Elemente und reduziert die Größe von elementen." }, - "darkMode": { - "name": "Dunkelmodus", - "note": "Aktivert einen noch dunkleren Modus in Discord." - }, "coloredText": { "name": "Farbiger Text", "note": "Macht die Textfarbe gleich mit der Rollenfarbe." diff --git a/assets/locales/en.json b/assets/locales/en.json index b283df7f..683e722c 100644 --- a/assets/locales/en.json +++ b/assets/locales/en.json @@ -32,10 +32,6 @@ }, "appearance": { "name": "Appearance", - "voiceMode": { - "name": "Voice Mode", - "note": "Hides everything that isn't voice chat" - }, "minimalMode": { "name": "Minimal Mode", "note": "Hide elements and reduce the size of elements" @@ -44,10 +40,6 @@ "name": "24-Hour Timestamps", "note": "Converts 12-hour timestamps to 24-hour format" }, - "darkMode": { - "name": "Dark Mode", - "note": "Make certain elements dark by default" - }, "coloredText": { "name": "Colored Text", "note": "Make text colour the same as role color" diff --git a/assets/locales/ja.json b/assets/locales/ja.json index 738b6b2b..fc087387 100644 --- a/assets/locales/ja.json +++ b/assets/locales/ja.json @@ -32,10 +32,6 @@ }, "appearance": { "name": "外観", - "voiceMode": { - "name": "ボイスモード", - "note": "ボイスチャンネル以外を表示しないようにします" - }, "twentyFourHour": { "name": "24時間表記", "note": "時間を24時間表記に変更します。" @@ -44,10 +40,6 @@ "name": "コンパクトモード", "note": "表示をコンパクトにします。" }, - "darkMode": { - "name": "ダークモード", - "note": "ダークモードを有効にします" - }, "coloredText": { "name": "カラーテキスト", "note": "テキストカラーをサーバルールの色と同じにします。" diff --git a/assets/locales/sv.json b/assets/locales/sv.json index ee6b5e24..b7dcefe5 100644 --- a/assets/locales/sv.json +++ b/assets/locales/sv.json @@ -32,10 +32,6 @@ }, "appearance": { "name": "Utseende", - "voiceMode": { - "name": "Röstläge", - "note": "Gömmer allt förutom röstchatt" - }, "twentyFourHour": { "name": "24-Timmars Tidsstämpel", "note": "Visar 24-timmars tidsstämplar istället för AM/PM" @@ -44,10 +40,6 @@ "name": "Minimalt Läge", "note": "Gömmer och förminskar komponenter" }, - "darkMode": { - "name": "Mörkt Läge", - "note": "Gör vissa komponenter mörka" - }, "coloredText": { "name": "Färgad Text", "note": "Gör att text får samma färg som rollfärgen" diff --git a/renderer/src/builtins/appearance/darkmode.js b/renderer/src/builtins/appearance/darkmode.js deleted file mode 100644 index a8940f47..00000000 --- a/renderer/src/builtins/appearance/darkmode.js +++ /dev/null @@ -1,15 +0,0 @@ -import Builtin from "../../structs/builtin"; - -export default new class DarkMode extends Builtin { - get name() {return "DarkMode";} - get category() {return "appearance";} - get id() {return "darkMode";} - - enabled() { - document.getElementById("app-mount").classList.add("bda-dark", "bd-dark"); - } - - disabled() { - document.getElementById("app-mount").classList.remove("bda-dark", "bd-dark"); - } -}; \ No newline at end of file diff --git a/renderer/src/builtins/appearance/voicemode.js b/renderer/src/builtins/appearance/voicemode.js deleted file mode 100644 index d892ae22..00000000 --- a/renderer/src/builtins/appearance/voicemode.js +++ /dev/null @@ -1,19 +0,0 @@ -import Builtin from "../../structs/builtin"; - -export default new class VoiceMode extends Builtin { - get name() {return "VoiceMode";} - get category() {return "appearance";} - get id() {return "voiceMode";} - - enabled() { - document.querySelector(".chat-3bRxxu").style.setProperty("visibility", "hidden"); - document.querySelector(".chat-3bRxxu").style.setProperty("min-width", "0px"); - document.querySelector(".channels-Ie2l6A").style.setProperty("flex-grow", "100000"); - } - - disabled() { - document.querySelector(".chat-3bRxxu").style.setProperty("visibility", ""); - document.querySelector(".chat-3bRxxu").style.setProperty("min-width", ""); - document.querySelector(".channels-Ie2l6A").style.setProperty("flex-grow", ""); - } -}; \ No newline at end of file diff --git a/renderer/src/builtins/builtins.js b/renderer/src/builtins/builtins.js index 4fa253f1..b7b248ab 100644 --- a/renderer/src/builtins/builtins.js +++ b/renderer/src/builtins/builtins.js @@ -9,11 +9,9 @@ export {default as VoiceDisconnect} from "./general/voicedisconnect"; export {default as TwentyFourHour} from "./appearance/24hour"; export {default as ColoredText} from "./appearance/coloredtext"; -export {default as DarkMode} from "./appearance/darkmode"; export {default as HideGIFButton} from "./appearance/hidegifbutton"; export {default as HideGiftButton} from "./appearance/hidegiftbutton"; export {default as MinimalMode} from "./appearance/minimalmode"; -export {default as VoiceMode} from "./appearance/voicemode"; export {default as EmoteModule} from "./emotes/emotes"; export {default as EmoteMenu} from "./emotes/emotemenu"; diff --git a/renderer/src/builtins/developer/reactdevtools.js b/renderer/src/builtins/developer/reactdevtools.js index 183558ac..cabc389d 100644 --- a/renderer/src/builtins/developer/reactdevtools.js +++ b/renderer/src/builtins/developer/reactdevtools.js @@ -23,6 +23,7 @@ export default new class ReactDevTools extends Builtin { Modals.showConfirmationModal(Strings.Modals.additionalInfo, Strings.Modals.restartPrompt, { confirmText: Strings.Modals.restartNow, cancelText: Strings.Modals.restartLater, + danger: true, onConfirm: () => IPC.relaunch() }); } diff --git a/renderer/src/builtins/general/publicservers.js b/renderer/src/builtins/general/publicservers.js index 516477d1..96a6e269 100644 --- a/renderer/src/builtins/general/publicservers.js +++ b/renderer/src/builtins/general/publicservers.js @@ -24,7 +24,7 @@ export default new class PublicServers extends Builtin { _appendButton() { const wrapper = DiscordModules.GuildClasses.wrapper.split(" ")[0]; - const guilds = DOM.query(`.${wrapper} .scroller-2TZvBN >:first-child`); + const guilds = DOM.query(`.${wrapper} .listItem-2P_4kh`); DOM.after(guilds, this.button); } diff --git a/renderer/src/builtins/general/voicedisconnect.js b/renderer/src/builtins/general/voicedisconnect.js index 0337b2d3..bacd3eff 100644 --- a/renderer/src/builtins/general/voicedisconnect.js +++ b/renderer/src/builtins/general/voicedisconnect.js @@ -1,7 +1,7 @@ import Builtin from "../../structs/builtin"; import {DiscordModules} from "modules"; -export default new class DarkMode extends Builtin { +export default new class VoiceDisconnect extends Builtin { get name() {return "VoiceDisconnect";} get category() {return "general";} get id() {return "voiceDisconnect";} diff --git a/renderer/src/builtins/windowprefs.js b/renderer/src/builtins/windowprefs.js index b03122c0..7cdab737 100644 --- a/renderer/src/builtins/windowprefs.js +++ b/renderer/src/builtins/windowprefs.js @@ -20,6 +20,7 @@ export default new class WindowPrefs extends Builtin { Modals.showConfirmationModal(Strings.Modals.additionalInfo, info, { confirmText: Strings.Modals.restartNow, cancelText: Strings.Modals.restartLater, + danger: true, onConfirm: () => IPC.relaunch() }); } diff --git a/renderer/src/data/settings/config.js b/renderer/src/data/settings/config.js index c30fd0ac..5b83d1a0 100644 --- a/renderer/src/data/settings/config.js +++ b/renderer/src/data/settings/config.js @@ -19,9 +19,7 @@ export default [ {type: "switch", id: "twentyFourHour", value: false}, {type: "switch", id: "hideGiftButton", value: false}, {type: "switch", id: "hideGIFButton", value: false}, - {type: "switch", id: "voiceMode", value: false}, {type: "switch", id: "minimalMode", value: false}, - {type: "switch", id: "darkMode", value: false}, {type: "switch", id: "coloredText", value: false} ] }, diff --git a/renderer/src/data/strings.js b/renderer/src/data/strings.js index 24f3319b..5d8a20df 100644 --- a/renderer/src/data/strings.js +++ b/renderer/src/data/strings.js @@ -32,10 +32,6 @@ export default { }, appearance: { name: "Appearance", - voiceMode: { - name: "Voice Mode", - note: "Hides everything that isn't voice chat" - }, minimalMode: { name: "Minimal Mode", note: "Hide elements and reduce the size of elements" @@ -44,10 +40,6 @@ export default { name: "24-Hour Timestamps", note: "Converts 12-hour timestamps to 24-hour format" }, - darkMode: { - name: "Dark Mode", - note: "Make certain elements dark by default" - }, coloredText: { name: "Colored Text", note: "Make text colour the same as role color" diff --git a/renderer/src/modules/componentpatcher.js b/renderer/src/modules/componentpatcher.js index 39c28ce1..087596b9 100644 --- a/renderer/src/modules/componentpatcher.js +++ b/renderer/src/modules/componentpatcher.js @@ -123,7 +123,7 @@ export default new class ComponentPatcher { if (!children || !author || !author.id || author.id !== "249746236008169473") return; if (!Array.isArray(children)) return; children.push( - React.createElement(Tooltip, {color: "black", position: "top", text: "BetterDiscord Developer"}, + React.createElement(Tooltip, {color: "primary", position: "top", text: "BetterDiscord Developer"}, props => React.createElement(Anchor, Object.assign({className: "bd-chat-badge", href: "https://github.com/rauenzi/BetterDiscordApp", title: "BetterDiscord", target: "_blank"}, props), React.createElement(BDLogo, {size: "16px", className: "bd-logo"}) ) @@ -143,7 +143,7 @@ export default new class ComponentPatcher { if (!children || !user || !user.id || user.id !== "249746236008169473") return; if (!Array.isArray(children)) return; children.push( - React.createElement(Tooltip, {color: "black", position: "top", text: "BetterDiscord Developer"}, + React.createElement(Tooltip, {color: "primary", position: "top", text: "BetterDiscord Developer"}, props => React.createElement(Anchor, Object.assign({className: "bd-member-badge", href: "https://github.com/rauenzi/BetterDiscordApp", title: "BetterDiscord", target: "_blank"}, props), React.createElement(BDLogo, {size: "16px", className: "bd-logo"}) ) diff --git a/renderer/src/modules/datastore.js b/renderer/src/modules/datastore.js index ec437555..d242bc76 100644 --- a/renderer/src/modules/datastore.js +++ b/renderer/src/modules/datastore.js @@ -66,7 +66,7 @@ export default new class DataStore { const oldSettings = channelData.settings; const newSettings = { general: {publicServers: oldSettings["bda-gs-1"], voiceDisconnect: oldSettings["bda-dc-0"], classNormalizer: oldSettings["fork-ps-4"], showToasts: oldSettings["fork-ps-2"]}, - appearance: {twentyFourHour: oldSettings["bda-gs-6"], voiceMode: oldSettings["bda-gs-4"], minimalMode: oldSettings["bda-gs-2"], darkMode: oldSettings["bda-gs-5"], coloredText: oldSettings["bda-gs-7"]}, + appearance: {twentyFourHour: oldSettings["bda-gs-6"], minimalMode: oldSettings["bda-gs-2"], coloredText: oldSettings["bda-gs-7"]}, addons: {addonErrors: oldSettings["fork-ps-1"], autoReload: oldSettings["fork-ps-5"]}, developer: {debuggerHotkey: oldSettings["bda-gs-8"], copySelector: oldSettings["fork-dm-1"], reactDevTools: oldSettings.reactDevTools} }; diff --git a/renderer/src/styles/builtins/emotemenu.css b/renderer/src/styles/builtins/emotemenu.css index 923889ad..ce446321 100644 --- a/renderer/src/styles/builtins/emotemenu.css +++ b/renderer/src/styles/builtins/emotemenu.css @@ -58,7 +58,7 @@ transition: transform 0.1s; } -.bd-emote-collapse-icon.expanded svg { +.bd-emote-collapse-icon.collapsed svg { transform: rotate(-90deg); } diff --git a/renderer/src/styles/builtins/publicservers.css b/renderer/src/styles/builtins/publicservers.css index 9f3e2b1c..30133bd1 100644 --- a/renderer/src/styles/builtins/publicservers.css +++ b/renderer/src/styles/builtins/publicservers.css @@ -18,13 +18,19 @@ } #bd-pub-button { - border-radius: 3px; - background-color: var(--background-secondary); - color: var(--interactive-normal); + border-radius: 4px; + background-color: var(--background-primary); + color: var(--text-normal); text-align: center; font-size: 12px; line-height: 24px; height: 24px; + transition: background-color 0.15s ease-out, color 0.15s ease-out; +} + +#bd-pub-button:hover { + color: #fff; + background-color: #3e82e5; } #bd-connection { diff --git a/renderer/src/styles/ui/bdsettings.css b/renderer/src/styles/ui/bdsettings.css index 1a16207f..5f6de8f9 100644 --- a/renderer/src/styles/ui/bdsettings.css +++ b/renderer/src/styles/ui/bdsettings.css @@ -203,7 +203,7 @@ margin-top: 4px; font-size: 14px; line-height: 20px; - font-weight: 500; + font-weight: 400; } .bd-setting-divider { diff --git a/renderer/src/ui/customcss/editor.jsx b/renderer/src/ui/customcss/editor.jsx index 7b66ace4..f25c89cb 100644 --- a/renderer/src/ui/customcss/editor.jsx +++ b/renderer/src/ui/customcss/editor.jsx @@ -77,7 +77,7 @@ export default class CodeEditor extends React.Component { } makeButton(button) { - return + return {props => { return ; }} diff --git a/renderer/src/ui/emote.js b/renderer/src/ui/emote.js index c065fe4f..343a3f70 100644 --- a/renderer/src/ui/emote.js +++ b/renderer/src/ui/emote.js @@ -53,7 +53,7 @@ export default class BDEmote extends React.Component { render() { return React.createElement(TooltipWrapper, { - color: "black", + color: "primary", position: "top", text: this.label, delay: 750 diff --git a/renderer/src/ui/modals.js b/renderer/src/ui/modals.js index 05301b52..92ebb701 100644 --- a/renderer/src/ui/modals.js +++ b/renderer/src/ui/modals.js @@ -85,7 +85,7 @@ export default class Modals { return ModalActions.openModal(props => { return React.createElement(ConfirmationModal, Object.assign({ header: title, - confirmButtonColor: danger ? this.Buttons.ButtonColors.RED : this.Buttons.ButtonColors.PRIMARY, + confirmButtonColor: danger ? this.Buttons.ButtonColors.RED : this.Buttons.ButtonColors.BRAND, confirmText: confirmText, cancelText: cancelText, onConfirm: onConfirm, diff --git a/renderer/src/ui/settings.js b/renderer/src/ui/settings.js index 6ce98b1d..7520a1f7 100644 --- a/renderer/src/ui/settings.js +++ b/renderer/src/ui/settings.js @@ -66,7 +66,7 @@ export default new class SettingsRenderer { thisObject._reactInternalFiber.return.return.return.return.return.return.return.memoizedProps.id = "user-settings"; }); Patcher.after("SettingsManager", UserSettings.prototype, "generateSections", (thisObject, args, returnValue) => { - let location = returnValue.findIndex(s => s.section.toLowerCase() == "linux") + 1; + let location = returnValue.findIndex(s => s.section.toLowerCase() == "changelog") - 1; const insert = (section) => { returnValue.splice(location, 0, section); location++; diff --git a/renderer/src/ui/settings/addoncard.jsx b/renderer/src/ui/settings/addoncard.jsx index 662d4632..2c0f2a32 100644 --- a/renderer/src/ui/settings/addoncard.jsx +++ b/renderer/src/ui/settings/addoncard.jsx @@ -143,7 +143,7 @@ export default class AddonCard extends React.Component { } makeButton(title, children, action) { - return + return {(props) => { return
{children}
; }} @@ -151,7 +151,7 @@ export default class AddonCard extends React.Component { } makeControlButton(title, children, action, {danger = false, disabled = false} = {}) { - return + return {(props) => { return ; }} diff --git a/renderer/src/ui/settings/addonlist.jsx b/renderer/src/ui/settings/addonlist.jsx index c28b0af5..6ad4dbd1 100644 --- a/renderer/src/ui/settings/addonlist.jsx +++ b/renderer/src/ui/settings/addonlist.jsx @@ -115,7 +115,7 @@ export default class AddonList extends React.Component { } makeControlButton(title, children, action, selected = false) { - return + return {(props) => { return ; }} diff --git a/renderer/src/ui/settings/sidebarheader.jsx b/renderer/src/ui/settings/sidebarheader.jsx index 99a60e35..0ddbf835 100644 --- a/renderer/src/ui/settings/sidebarheader.jsx +++ b/renderer/src/ui/settings/sidebarheader.jsx @@ -10,7 +10,7 @@ export default class SettingsTitle extends React.Component { render() { return
BetterDiscord - + {props =>
Modals.showChangelogModal(Changelog)}> diff --git a/scripts/inject.js b/scripts/inject.js index bf6300d6..17bbcfc7 100644 --- a/scripts/inject.js +++ b/scripts/inject.js @@ -2,11 +2,13 @@ const args = process.argv; const fs = require("fs"); const path = require("path"); +const doSanityChecks = require("./validate"); +const buildPackage = require("./package"); + const useBdRelease = args[2] && args[2].toLowerCase() === "release"; const releaseInput = useBdRelease ? args[3] && args[3].toLowerCase() : args[2] && args[2].toLowerCase(); const release = releaseInput === "canary" ? "Discord Canary" : releaseInput === "ptb" ? "Discord PTB" : "Discord"; -console.log(`Injecting into version ${release}`); - +const bdPath = useBdRelease ? path.resolve(__dirname, "..", "dist", "betterdiscord.asar") : path.resolve(__dirname, "..", "dist"); const discordPath = (function() { if (process.platform === "win32") { const basedir = path.join(process.env.LOCALAPPDATA, release.replace(/ /g, "")); @@ -27,8 +29,13 @@ const discordPath = (function() { } })(); +doSanityChecks(bdPath); +buildPackage(bdPath); +console.log(""); + +console.log(`Injecting into ${release}`); if (!fs.existsSync(discordPath)) throw new Error(`Cannot find directory for ${release}`); -console.log(`Found ${release} in ${discordPath}`); +console.log(` ✅ Found ${release} in ${discordPath}`); const appPath = path.join(discordPath, "app"); const packageJson = path.join(appPath, "package.json"); @@ -38,15 +45,13 @@ if (!fs.existsSync(appPath)) fs.mkdirSync(appPath); if (fs.existsSync(packageJson)) fs.unlinkSync(packageJson); if (fs.existsSync(indexJs)) fs.unlinkSync(indexJs); -const bdPath = useBdRelease ? path.resolve(__dirname, "..", "dist", "betterdiscord.asar") : path.resolve(__dirname, "..", "dist"); - -console.log(`Writing package.json`); fs.writeFileSync(packageJson, JSON.stringify({ name: "betterdiscord", main: "index.js", }, null, 4)); +console.log(" ✅ Wrote package.json"); -console.log(`Writing index.js`); fs.writeFileSync(indexJs, `require("${bdPath.replace(/\\/g, "\\\\").replace(/"/g, "\\\"")}");`); - +console.log(" ✅ Wrote index.js"); +console.log(""); console.log(`Injection successful, please restart ${release}.`); diff --git a/scripts/pack.js b/scripts/pack.js index 528ef238..d4de7cd7 100644 --- a/scripts/pack.js +++ b/scripts/pack.js @@ -2,45 +2,22 @@ const fs = require("fs"); const path = require("path"); const asar = require("asar"); +const doSanityChecks = require("./validate"); +const buildPackage = require("./package"); + const dist = path.join(__dirname, "..", "dist"); const bundleFile = path.join(dist, "betterdiscord.asar"); -const doSanityChecks = function() { - console.log("Ensuring build validity"); - const files = [ - path.join(dist, "injector.js"), - path.join(dist, "preload.js"), - path.join(dist, "renderer.js") - ]; - - for (const file of files) { - const exists = fs.existsSync(file); - if (!exists) throw new Error(` ❌ File missing: ${file}`); - console.log(` ✅ Found ${file}`); - } -}; - const cleanOldAsar = function() { + console.log(""); console.log("Ensuring clean build"); if (!fs.existsSync(bundleFile)) return console.log(" ✅ Nothing to clean up"); fs.unlinkSync(bundleFile); console.log(` ✅ Removed old bundle ${bundleFile}`); }; -const buildPackage = function() { - console.log("Ensuring valid package.json"); - - const pkgFile = path.join(dist, "package.json"); - if (fs.existsSync(pkgFile)) { - const currentPkg = require(pkgFile); - if (currentPkg.name && currentPkg.main && currentPkg.main === "injector.js") return console.log(" ✅ Existing package.json is valid"); - console.log(" ⚠️ Existing package.json is invalid"); - } - fs.writeFileSync(pkgFile, JSON.stringify({name: "betterdiscord", main: "injector.js"})); - console.log(" ✅ Created new package.json"); -}; - const makeBundle = function() { + console.log(""); console.log("Generating bundle"); asar.createPackage(dist, bundleFile).then(() => { console.log(` ✅ Successfully created bundle ${bundleFile}`); @@ -49,14 +26,7 @@ const makeBundle = function() { }); }; -console.log(""); -doSanityChecks(); - -console.log(""); +doSanityChecks(dist); +buildPackage(dist); cleanOldAsar(); - -console.log(""); -buildPackage(); - -console.log(""); makeBundle(); \ No newline at end of file diff --git a/scripts/package.js b/scripts/package.js new file mode 100644 index 00000000..9b26676f --- /dev/null +++ b/scripts/package.js @@ -0,0 +1,16 @@ +const fs = require("fs"); +const path = require("path"); + +module.exports = function(dist) { + console.log(""); + console.log("Ensuring valid package.json"); + + const pkgFile = path.join(dist, "package.json"); + if (fs.existsSync(pkgFile)) { + const currentPkg = require(pkgFile); + if (currentPkg.name && currentPkg.main && currentPkg.main === "injector.js") return console.log(" ✅ Existing package.json is valid"); + console.log(" ⚠️ Existing package.json is invalid"); + } + fs.writeFileSync(pkgFile, JSON.stringify({name: "betterdiscord", main: "injector.js"})); + console.log(" ✅ Created new package.json"); +}; \ No newline at end of file diff --git a/scripts/validate.js b/scripts/validate.js new file mode 100644 index 00000000..d7ca0382 --- /dev/null +++ b/scripts/validate.js @@ -0,0 +1,18 @@ +const fs = require("fs"); +const path = require("path"); + +module.exports = function(dist) { + console.log(""); + console.log("Ensuring build validity"); + const files = [ + path.join(dist, "injector.js"), + path.join(dist, "preload.js"), + path.join(dist, "renderer.js") + ]; + + for (const file of files) { + const exists = fs.existsSync(file); + if (!exists) throw new Error(` ❌ File missing: ${file}`); + console.log(` ✅ Found ${file}`); + } +}; \ No newline at end of file