const result = await (await fetch(configFileUrl, { method: 'GET' })).json();
const selectedHs = result?.defaultHomeserver;
const hsList = result?.homeserverList;
+ const allowCustom = result?.allowCustomHomeservers ?? true;
if (!hsList?.length > 0 || selectedHs < 0 || selectedHs >= hsList?.length) {
throw new Error();
}
- setHs({ selected: hsList[selectedHs], list: hsList });
+ setHs({ selected: hsList[selectedHs], list: hsList, allowCustom: allowCustom });
} catch {
- setHs({ selected: 'matrix.org', list: ['matrix.org'] });
+ setHs({ selected: 'matrix.org', list: ['matrix.org'], allowCustom: true });
}
}, []);
const { value } = e.target;
setProcess({ isLoading: false });
debounce._(async () => {
- setHs({ selected: value.trim(), list: hs.list });
+ setHs({ ...hs, selected: value.trim() });
}, 700)();
};
return (
<>
<div className="homeserver-form">
- <Input name="homeserver" onChange={handleHsInput} value={hs?.selected} forwardRef={hsRef} label="Homeserver" />
+ <Input name="homeserver" onChange={handleHsInput} value={hs?.selected} forwardRef={hsRef} label="Homeserver"
+ disabled={hs === null || !hs.allowCustom} />
<ContextMenu
placement="right"
content={(hideMenu) => (
onClick={() => {
hideMenu();
hsRef.current.value = hsName;
- setHs({ selected: hsName, list: hs.list });
+ setHs({ ...hs, selected: hsName });
}}
>
{hsName}