From d4d1c2bbabfcec3c62767e614c9d67f516938af2 Mon Sep 17 00:00:00 2001 From: AAGaming Date: Fri, 26 Aug 2022 01:18:28 -0400 Subject: basic patch notes viewer, lazy-load settings and store, build frontend as esmodule, add lazy-loaded react-markdown, backend changes to accomodate ESModule frontend --- .../components/settings/pages/general/Updater.tsx | 177 +++++++++++++++------ 1 file changed, 129 insertions(+), 48 deletions(-) (limited to 'frontend/src/components/settings/pages/general/Updater.tsx') diff --git a/frontend/src/components/settings/pages/general/Updater.tsx b/frontend/src/components/settings/pages/general/Updater.tsx index f7e4a29d..cb58b24c 100644 --- a/frontend/src/components/settings/pages/general/Updater.tsx +++ b/frontend/src/components/settings/pages/general/Updater.tsx @@ -1,9 +1,66 @@ -import { DialogButton, Field, ProgressBarWithInfo, Spinner } from 'decky-frontend-lib'; +import { Carousel, DialogButton, Field, Focusable, ProgressBarWithInfo, Spinner, showModal } from 'decky-frontend-lib'; +import { useCallback } from 'react'; +import { Suspense, lazy } from 'react'; import { useEffect, useState } from 'react'; import { FaArrowDown } from 'react-icons/fa'; import { VerInfo, callUpdaterMethod, finishUpdate } from '../../../../updater'; import { useDeckyState } from '../../../DeckyState'; +import InlinePatchNotes from '../../../patchnotes/InlinePatchNotes'; + +const MarkdownRenderer = lazy(() => import('../../../Markdown')); + +// import ReactMarkdown from 'react-markdown' +// import remarkGfm from 'remark-gfm' + +function PatchNotesModal({ versionInfo, closeModal }: { versionInfo: VerInfo | null; closeModal?: () => {} }) { + return ( + + { + console.log(args, versionInfo); + return ( + {}} + style={{ + marginTop: '40px', + height: 'calc( 100% - 40px )', + overflowY: 'scroll', + display: 'flex', + justifyContent: 'center', + margin: '40px', + }} + > +
+

{versionInfo?.all?.[id]?.name}

+ {versionInfo?.all?.[id]?.body ? ( + }> + {versionInfo.all[id].body} + + ) : ( + 'no patch notes for this version' + )} +
+
+ ); + }} + fnGetId={(id) => { + return id; + }} + nNumItems={versionInfo?.all?.length} + nHeight={window.innerHeight - 150} + nItemHeight={window.innerHeight - 200} + nItemMarginX={0} + initialColumn={0} + autoFocus={true} + fnGetColumnWidth={(...args: any[]) => { + console.log('cw', args); + return window.innerWidth; + }} + /> +
+ ); +} export default function UpdaterSettings() { const { isLoaderUpdating, setIsLoaderUpdating } = useDeckyState(); @@ -34,56 +91,80 @@ export default function UpdaterSettings() { }; }, []); + const showPatchNotes = useCallback(() => { + showModal(); + }, [versionInfo]); + return ( - {`Current version: ${versionInfo.current}\n${ - versionInfo.updatable ? `Latest version: ${versionInfo.remote?.tag_name}` : '' - }`} - ) - } - icon={ - !versionInfo ? ( - + <> + {`Current version: ${versionInfo.current}\n${ + versionInfo.updatable ? `Latest version: ${versionInfo.remote?.tag_name}` : '' + }`} + ) + } + icon={ + !versionInfo ? ( + + ) : ( + + ) + } + > + {updateProgress == -1 && !isLoaderUpdating ? ( + { + setCheckingForUpdates(true); + const res = (await callUpdaterMethod('check_for_updates')) as { result: VerInfo }; + setVersionInfo(res.result); + setCheckingForUpdates(false); + } + : async () => { + setUpdateProgress(0); + callUpdaterMethod('do_update'); + } + } + > + {checkingForUpdates + ? 'Checking' + : !versionInfo?.remote || versionInfo?.remote?.tag_name == versionInfo?.current + ? 'Check For Updates' + : 'Install Update'} + ) : ( - - ) - } - > - {updateProgress == -1 && !isLoaderUpdating ? ( - { - setCheckingForUpdates(true); - const res = (await callUpdaterMethod('check_for_updates')) as { result: VerInfo }; - setVersionInfo(res.result); - setCheckingForUpdates(false); - } - : async () => { - setUpdateProgress(0); - callUpdaterMethod('do_update'); - } - } + + )} + + {versionInfo?.remote && ( + - {checkingForUpdates - ? 'Checking' - : !versionInfo?.remote || versionInfo?.remote?.tag_name == versionInfo?.current - ? 'Check For Updates' - : 'Install Update'} - - ) : ( - + }> + {versionInfo?.remote.body} + + )} - + ); } -- cgit v1.2.3