import { useStateFromStores } from "@moonlight-mod/wp/discord/packages/flux"; import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores"; import React from "@moonlight-mod/wp/react"; import { UpdateState } from "../../types"; import HelpMessage from "./HelpMessage"; import { MoonlightBranch } from "@moonlight-mod/types"; import MarkupUtils from "@moonlight-mod/wp/discord/modules/markup/MarkupUtils"; import Flex from "@moonlight-mod/wp/discord/uikit/Flex"; import { ThemeDarkIcon, Button, Text, ModalRoot, ModalSize, ModalContent, ModalHeader, Heading, ModalCloseButton, openModal } from "@moonlight-mod/wp/discord/components/common/index"; import MarkupClasses from "@moonlight-mod/wp/discord/modules/messages/web/Markup.css"; const strings: Record = { [UpdateState.Ready]: "A new version of moonlight is available.", [UpdateState.Working]: "Updating moonlight...", [UpdateState.Installed]: "Updated. Restart Discord to apply changes.", [UpdateState.Failed]: "Failed to update moonlight. Please use the installer instead." }; function MoonlightChangelog({ changelog, version, transitionState, onClose }: { changelog: string; version: string; transitionState: number | null; onClose: () => void; }) { return ( moonlight {version} {MarkupUtils.parse(changelog, true, { allowHeading: true, allowList: true, allowLinks: true })} ); } export default function Update() { const [newVersion, state] = useStateFromStores([MoonbaseSettingsStore], () => [ MoonbaseSettingsStore.newVersion, MoonbaseSettingsStore.updateState ]); if (newVersion == null) return null; return (
{moonlight.branch === MoonlightBranch.STABLE && ( )} {state === UpdateState.Installed && ( )}
); }