From 4d30339c34782a6e3d313804fa393c95ad38c4b2 Mon Sep 17 00:00:00 2001 From: TrainDoctor Date: Sat, 29 Oct 2022 15:03:12 -0700 Subject: Add StoreSelect component --- .../settings/pages/general/BranchSelect.tsx | 2 +- .../settings/pages/general/StoreSelect.tsx | 52 ++++++++++++++++++++++ .../components/settings/pages/general/index.tsx | 3 ++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 frontend/src/components/settings/pages/general/StoreSelect.tsx (limited to 'frontend/src/components/settings/pages/general') diff --git a/frontend/src/components/settings/pages/general/BranchSelect.tsx b/frontend/src/components/settings/pages/general/BranchSelect.tsx index 154bff9c..5e43a13d 100644 --- a/frontend/src/components/settings/pages/general/BranchSelect.tsx +++ b/frontend/src/components/settings/pages/general/BranchSelect.tsx @@ -10,7 +10,7 @@ const logger = new Logger('BranchSelect'); enum UpdateBranch { Stable, Prerelease, - // Nightly, + Testing, } const BranchSelect: FunctionComponent<{}> = () => { diff --git a/frontend/src/components/settings/pages/general/StoreSelect.tsx b/frontend/src/components/settings/pages/general/StoreSelect.tsx new file mode 100644 index 00000000..c24bacb9 --- /dev/null +++ b/frontend/src/components/settings/pages/general/StoreSelect.tsx @@ -0,0 +1,52 @@ +import { Dropdown, Field, TextField } from 'decky-frontend-lib'; +import { FunctionComponent } from 'react'; +import { FaShapes } from 'react-icons/fa'; + +import Logger from '../../../../logger'; +import { Store } from '../../../../store'; +import { useSetting } from '../../../../utils/hooks/useSetting'; + +const logger = new Logger('StoreSelect'); + +const StoreSelect: FunctionComponent<{}> = () => { + const [selectedStore, setSelectedStore] = useSetting('store', Store.Default); + const [selectedStoreURL, setSelectedStoreURL] = useSetting('store-url', null); + + // Returns numerical values from 0 to 2 (with current branch setup as of 8/28/22) + // 0 being Default, 1 being Testing and 2 being Custom + return ( + <> + + typeof store == 'string') + .map((store) => ({ + label: store, + data: Store[store], + }))} + selectedOption={selectedStore} + onChange={async (newVal) => { + await setSelectedStore(newVal.data); + logger.log('switching stores!'); + }} + /> + + {selectedStore == Store.Custom && ( + setSelectedStoreURL(e?.target.value || null)} + /> + } + icon={} + > + )} + + ); +}; + +export default StoreSelect; diff --git a/frontend/src/components/settings/pages/general/index.tsx b/frontend/src/components/settings/pages/general/index.tsx index 6ce9f682..d661b779 100644 --- a/frontend/src/components/settings/pages/general/index.tsx +++ b/frontend/src/components/settings/pages/general/index.tsx @@ -5,6 +5,7 @@ import { FaShapes, FaTools } from 'react-icons/fa'; import { installFromURL } from '../../../../store'; import BranchSelect from './BranchSelect'; import RemoteDebuggingSettings from './RemoteDebugging'; +import StoreSelect from './StoreSelect'; import UpdaterSettings from './Updater'; export default function GeneralSettings({ @@ -15,10 +16,12 @@ export default function GeneralSettings({ setIsDeveloper: (val: boolean) => void; }) { const [pluginURL, setPluginURL] = useState(''); + return (
+