From 9d2f2460e1a3d666bc10be0a9d98bf109a421825 Mon Sep 17 00:00:00 2001
From: sadan4 <117494111+sadan4@users.noreply.github.com>
Date: Fri, 4 Apr 2025 18:33:59 -0400
Subject: [PATCH] BetterFolders: Fix for visual refresh (#3314)
---
src/plugins/betterFolders/FolderSideBar.tsx | 3 ++-
src/plugins/betterFolders/index.tsx | 26 +++++++++++++++++----
src/plugins/betterFolders/sidebarFix.css | 9 +++++++
3 files changed, 32 insertions(+), 6 deletions(-)
create mode 100644 src/plugins/betterFolders/sidebarFix.css
diff --git a/src/plugins/betterFolders/FolderSideBar.tsx b/src/plugins/betterFolders/FolderSideBar.tsx
index 5203b14d..d2ffe6bb 100644
--- a/src/plugins/betterFolders/FolderSideBar.tsx
+++ b/src/plugins/betterFolders/FolderSideBar.tsx
@@ -45,7 +45,8 @@ export default ErrorBoundary.wrap(guildsBarProps => {
// Also display flex otherwise to fix scrolling
const barStyle = {
display: isFullscreen ? "none" : "flex",
- } as CSSProperties;
+ gridArea: "betterFoldersSidebar"
+ } satisfies CSSProperties;
if (!guilds || !settings.store.sidebarAnim) {
return visible
diff --git a/src/plugins/betterFolders/index.tsx b/src/plugins/betterFolders/index.tsx
index ded8b611..06c398b1 100644
--- a/src/plugins/betterFolders/index.tsx
+++ b/src/plugins/betterFolders/index.tsx
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+import "./sidebarFix.css";
+
import { definePluginSettings } from "@api/Settings";
import { Devs } from "@utils/constants";
import { getIntlMessage } from "@utils/discord";
@@ -199,11 +201,23 @@ export default definePlugin({
{
find: "APPLICATION_LIBRARY,render:",
predicate: () => settings.store.sidebar,
- replacement: {
- // Render the Better Folders sidebar
- match: /(container.{0,50}({className:\i\.guilds,themeOverride:\i})\))/,
- replace: "$1,$self.FolderSideBar({...$2})"
- }
+ group: true,
+ replacement: [
+ {
+ // Render the Better Folders sidebar
+ // Discord has two different places where they render the sidebar.
+ // One is for visual refresh, one is not,
+ // and each has a bunch of conditions &&ed in front of it.
+ // Add the betterFolders sidebar to both, keeping the conditions Discord uses.
+ match: /(?<=[[,])((?:!?\i&&)+)\(.{0,50}({className:\i\.guilds,themeOverride:\i})\)/g,
+ replace: (m, conditions, props) => `${m},${conditions}$self.FolderSideBar(${props})`
+ },
+ {
+ // Add grid styles to fix aligment with other visual refresh elements
+ match: /(?<=className:)(\i\.base)(?=,)/,
+ replace: "`${$self.gridStyle} ${$1}`"
+ }
+ ]
},
{
find: "#{intl::DISCODO_DISABLED}",
@@ -257,6 +271,8 @@ export default definePlugin({
}
},
+ gridStyle: "vc-betterFolders-sidebar-grid",
+
getGuildTree(isBetterFolders: boolean, originalTree: any, expandedFolderIds?: Set) {
return useMemo(() => {
if (!isBetterFolders || expandedFolderIds == null) return originalTree;
diff --git a/src/plugins/betterFolders/sidebarFix.css b/src/plugins/betterFolders/sidebarFix.css
new file mode 100644
index 00000000..7a048eb7
--- /dev/null
+++ b/src/plugins/betterFolders/sidebarFix.css
@@ -0,0 +1,9 @@
+/* These area names need to be hardcoded. Only betterFoldersSidebar is added by the plugin. */
+
+.visual-refresh .vc-betterFolders-sidebar-grid {
+ grid-template-columns: [start] min-content [guildsEnd] min-content [sidebarEnd] min-content [channelsEnd] 1fr [end]; /* stylelint-disable-line value-keyword-case */
+ grid-template-areas:
+ "titleBar titleBar titleBar titleBar"
+ "guildsList betterFoldersSidebar notice notice"
+ "guildsList betterFoldersSidebar channelsList page";
+}