Own store for theme and locale

This commit is contained in:
TheGreenPig 2022-08-16 16:15:48 +02:00
parent 5285c950d0
commit e784545e28
3 changed files with 9 additions and 8 deletions

View File

@ -36,7 +36,6 @@ export default Utilities.memoizeObject({
/* Current User Info, State and Settings */
get UserInfoStore() {return WebpackModules.getByProps("getToken");},
get UserSettingsStore() {return WebpackModules.getByProps("getAllSettings", "theme");},
get AccountManager() {return WebpackModules.getByProps("register", "login");},
get UserSettingsUpdater() {return WebpackModules.getByProps("updateRemoteSettings");},
get OnlineWatcher() {return WebpackModules.getByProps("isOnline");},
@ -44,6 +43,8 @@ export default Utilities.memoizeObject({
get RelationshipStore() {return WebpackModules.getByProps("isBlocked", "getFriendIDs");},
get RelationshipManager() {return WebpackModules.getByProps("addRelationship");},
get MentionStore() {return WebpackModules.getByProps("getMentions");},
get LocaleStore() {return WebpackModules.getByProps("locale", "addChangeListener");},
get ThemeStore() {return WebpackModules.getByProps("theme", "addChangeListener");},
/* User Stores and Utils */
get UserStore() {return WebpackModules.getByProps("getCurrentUser");},

View File

@ -3,10 +3,10 @@ import DiscordModules from "./discordmodules";
import Utilities from "./utilities";
import Events from "./emitter";
const {Dispatcher, UserSettingsStore} = DiscordModules;
const {Dispatcher, LocaleStore} = DiscordModules;
export default new class LocaleManager {
get discordLocale() {return UserSettingsStore?.locale ?? this.defaultLocale;}
get discordLocale() {return LocaleStore?.locale ?? this.defaultLocale;}
get defaultLocale() {return "en-US";}
constructor() {

View File

@ -12,7 +12,7 @@ export default class CodeEditor extends React.Component {
constructor(props) {
super(props);
this.props.theme = DiscordModules.UserSettingsStore && DiscordModules.UserSettingsStore.theme === "light" ? "vs" : "vs-dark";
this.props.theme = DiscordModules.ThemeStore && DiscordModules.ThemeStore.theme === "light" ? "vs" : "vs-dark";
this.props.language = this.props.language.toLowerCase().replace(/ /g, "_");
if (!languages.includes(this.props.language)) this.props.language = CodeEditor.defaultProps.language;
@ -36,7 +36,7 @@ export default class CodeEditor extends React.Component {
this.editor = window.monaco.editor.create(document.getElementById(this.props.id), {
value: this.props.value,
language: this.props.language,
theme: DiscordModules.UserSettingsStore.theme == "light" ? "vs" : "vs-dark",
theme: DiscordModules.ThemeStore.theme == "light" ? "vs" : "vs-dark",
fontSize: Settings.get("settings", "editor", "fontSize"),
lineNumbers: Settings.get("settings", "editor", "lineNumbers"),
minimap: {enabled: Settings.get("settings", "editor", "minimap")},
@ -69,19 +69,19 @@ export default class CodeEditor extends React.Component {
document.getElementById(this.props.id).appendChild(textarea);
}
if (DiscordModules.UserSettingsStore) DiscordModules.UserSettingsStore.addChangeListener(this.onThemeChange);
if (DiscordModules.ThemeStore) DiscordModules.ThemeStore.addChangeListener(this.onThemeChange);
window.addEventListener("resize", this.resize);
}
componentWillUnmount() {
window.removeEventListener("resize", this.resize);
if (DiscordModules.UserSettingsStore) DiscordModules.UserSettingsStore.removeChangeListener(this.onThemeChange);
if (DiscordModules.ThemeStore) DiscordModules.ThemeStore.removeChangeListener(this.onThemeChange);
for (const binding of this.bindings) binding.dispose();
this.editor.dispose();
}
onThemeChange() {
const newTheme = DiscordModules.UserSettingsStore.theme === "light" ? "vs" : "vs-dark";
const newTheme = DiscordModules.ThemeStore.theme === "light" ? "vs" : "vs-dark";
if (newTheme === this.props.theme) return;
this.props.theme = newTheme;
if (window.monaco?.editor) window.monaco.editor.setTheme(this.props.theme);