moonbase: Installation fixes (closes #146)
- Now full restarts the client - Auto enable extensions after downloading - Fix warning showing when updates were staged but not committed
@@ -153,6 +153,7 @@ get busy() {return this.submitting || this.installing;}+ // Required for the settings store contractshowNotice() {return this.modified;}@@ -365,6 +366,15 @@ this.submitting = false;this.modified = false;this.config = this.clone(this.origConfig);this.emitChange();+ }++ restartDiscord() {+ if (moonlightNode.isBrowser) {+ window.location.reload();+ } else {+ // @ts-expect-error TODO: DiscordNative+ window.DiscordNative.app.relaunch();+ }}// Required because electron likes to make it immutable sometimes.
@@ -40,11 +40,12 @@ export default function ExtensionCard({ uniqueId }: { uniqueId: number }) {const [tab, setTab] = React.useState(ExtensionPage.Info);const [restartNeeded, setRestartNeeded] = React.useState(false);- const { ext, enabled, busy, update, conflicting } = useStateFromStores([MoonbaseSettingsStore], () => {+ const { ext, enabled, busy, update, conflicting, showingNotice } = useStateFromStores([MoonbaseSettingsStore], () => {return {ext: MoonbaseSettingsStore.getExtension(uniqueId),enabled: MoonbaseSettingsStore.getExtensionEnabled(uniqueId),busy: MoonbaseSettingsStore.busy,+ showingNotice: MoonbaseSettingsStore.showNotice(),update: MoonbaseSettingsStore.getExtensionUpdate(uniqueId),conflicting: MoonbaseSettingsStore.getExtensionConflicting(uniqueId)};@@ -107,6 +108,14 @@ }}/>)}+ {restartNeeded && !showingNotice && (+ <PanelButton+ icon={() => <CircleWarningIcon color={Components.tokens.colors.STATUS_DANGER} />}+ onClick={() => MoonbaseSettingsStore.restartDiscord()}+ tooltipText="You will need to reload/restart your client for this extension to work properly."+ />+ )}+{ext.state === ExtensionState.NotDownloaded ? (<Tooltip text={COMPAT_TEXT_MAP[ext.compat]} shouldShow={ext.compat !== ExtensionCompat.Compatible}>{(props: any) => (@@ -121,6 +130,8 @@ const deps = await MoonbaseSettingsStore.getDependencies(uniqueId);if (deps != null) {await doMissingExtensionPopup(deps);}+ MoonbaseSettingsStore.setExtensionEnabled(uniqueId, true);+ setRestartNeeded(true);}}>Install@@ -135,6 +146,7 @@ icon={TrashIcon}tooltipText="Delete"onClick={() => {MoonbaseSettingsStore.deleteExtension(uniqueId);+ setRestartNeeded(true);}}/>)}@@ -147,14 +159,6 @@ onClick={() => {MoonbaseSettingsStore.installExtension(uniqueId);setRestartNeeded(true);}}- />- )}-- {restartNeeded && (- <PanelButton- icon={() => <CircleWarningIcon color={Components.tokens.colors.STATUS_DANGER} />}- onClick={() => window.location.reload()}- tooltipText="You will need to reload/restart your client for this extension to work properly."/>)}
@@ -51,7 +51,9 @@ <Buttonlook={Button.Looks.OUTLINED}color={Button.Colors.CUSTOM}size={Button.Sizes.TINY}- onClick={() => window.location.reload()}+ onClick={() => {+ MoonbaseSettingsStore.restartDiscord();+ }}>Restart Discord</Button>