0 ? "File too large to copy" : "Copy File Contents"}>
+ {tooltipProps => (
+ {
+ if (!recentlyCopied && bytesLeft <= 0) {
+ copyWithToast(fileContents);
+ setRecentlyCopied(true);
+ setTimeout(() => setRecentlyCopied(false), 2000);
+ }
+ }}
+ >
+ {recentlyCopied ? : bytesLeft > 0 ? : }
+
+ )}
+
+ );
+ }, { noop: true }),
+});
diff --git a/src/plugins/CopyFileContents/style.css b/src/plugins/CopyFileContents/style.css
new file mode 100644
index 000000000..c643cf0f0
--- /dev/null
+++ b/src/plugins/CopyFileContents/style.css
@@ -0,0 +1,8 @@
+.vc-cfc-button {
+ color: var(--interactive-normal);
+ cursor: pointer;
+}
+
+.vc-cfc-button:hover {
+ color: var(--interactive-hover);
+}
diff --git a/src/plugins/_core/settings.tsx b/src/plugins/_core/settings.tsx
index 3cc020836..be220db1a 100644
--- a/src/plugins/_core/settings.tsx
+++ b/src/plugins/_core/settings.tsx
@@ -64,7 +64,7 @@ export default definePlugin({
replace: (_, sectionTypes, commaOrSemi, elements, element) => `${commaOrSemi} $self.addSettings(${elements}, ${element}, ${sectionTypes}) ${commaOrSemi}`
},
{
- match: /({(?=.+?function (\i).{0,120}(\i)=\i\.useMemo.{0,30}return \i\.useMemo\(\(\)=>\i\(\3).+?function\(\){return )\2(?=})/,
+ match: /({(?=.+?function (\i).{0,120}(\i)=\i\.useMemo.{0,60}return \i\.useMemo\(\(\)=>\i\(\3).+?function\(\){return )\2(?=})/,
replace: (_, rest, settingsHook) => `${rest}$self.wrapSettingsHook(${settingsHook})`
}
]
diff --git a/src/plugins/ignoreActivities/index.tsx b/src/plugins/ignoreActivities/index.tsx
index bab69d89b..9e6c21bdd 100644
--- a/src/plugins/ignoreActivities/index.tsx
+++ b/src/plugins/ignoreActivities/index.tsx
@@ -26,6 +26,11 @@ interface IgnoredActivity {
type: ActivitiesTypes;
}
+const enum FilterMode {
+ Whitelist,
+ Blacklist
+}
+
const RunningGameStore = findStoreLazy("RunningGameStore");
const ShowCurrentGame = getUserSettingLazy("status", "showCurrentGame")!;
@@ -70,14 +75,17 @@ function handleActivityToggle(e: React.MouseEvent