Implement basic settings save button
This commit is contained in:
parent
8dc8269b5d
commit
d2554c7a0e
|
|
@ -114,7 +114,6 @@ export default function App() {
|
||||||
element={
|
element={
|
||||||
<Register
|
<Register
|
||||||
authTokenStorageHandler={authTokenStorageHandler}
|
authTokenStorageHandler={authTokenStorageHandler}
|
||||||
usernameStorageHandler={usernameStorageHandler}
|
|
||||||
></Register>
|
></Register>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
|
|
@ -4,16 +4,24 @@ import { Link } from "react-router-dom";
|
||||||
interface Props {
|
interface Props {
|
||||||
settingField: string;
|
settingField: string;
|
||||||
settingValue: string;
|
settingValue: string;
|
||||||
|
settingsChangedHook: object;
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleSettingFieldChange(eventData, setFunction) {
|
function handleSettingFieldChange(eventData, setFunction, settingsChangedHook, initialValue) {
|
||||||
setFunction(eventData.target.value);
|
setFunction(eventData.target.value);
|
||||||
|
if (eventData.target.value === initialValue) {
|
||||||
|
settingsChangedHook.setsettingsChanged(false);
|
||||||
|
} else {
|
||||||
|
settingsChangedHook.setsettingsChanged(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function AccountDefaultSetting({
|
export default function AccountDefaultSetting({
|
||||||
settingField,
|
settingField,
|
||||||
settingValue,
|
settingValue,
|
||||||
|
settingsChangedHook,
|
||||||
}: Props) {
|
}: Props) {
|
||||||
|
const initialValue = settingValue;
|
||||||
const [fieldValue, setFieldValue] = React.useState(settingValue);
|
const [fieldValue, setFieldValue] = React.useState(settingValue);
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|
@ -23,7 +31,7 @@ export default function AccountDefaultSetting({
|
||||||
key={settingField + "Body"}
|
key={settingField + "Body"}
|
||||||
value={fieldValue}
|
value={fieldValue}
|
||||||
onChange={(eventData) =>
|
onChange={(eventData) =>
|
||||||
handleSettingFieldChange(eventData, setFieldValue)
|
handleSettingFieldChange(eventData, setFieldValue, settingsChangedHook, initialValue)
|
||||||
}
|
}
|
||||||
></input>
|
></input>
|
||||||
</>
|
</>
|
||||||
|
|
|
||||||
|
|
@ -161,8 +161,16 @@ a {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.currentSettingBox {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
.currentSetting {
|
.currentSetting {
|
||||||
|
max-height: 100%;
|
||||||
|
max-width: 100%;
|
||||||
padding-left: var(--tiling-box-padding);
|
padding-left: var(--tiling-box-padding);
|
||||||
|
flex-grow: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.blogEntryGrid {
|
.blogEntryGrid {
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,10 @@ interface Props {
|
||||||
authTokenStorageHandler: object;
|
authTokenStorageHandler: object;
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderCurrentSetting(setting: string) {
|
function renderCurrentSetting(setting: string, settingsChangedHook: object) {
|
||||||
switch (setting) {
|
switch (setting) {
|
||||||
case "Account":
|
case "Account":
|
||||||
return <AccountSetting></AccountSetting>;
|
return <AccountSetting settingsChangedHook={settingsChangedHook}></AccountSetting>;
|
||||||
case "Security":
|
case "Security":
|
||||||
return <SecuritySetting></SecuritySetting>;
|
return <SecuritySetting></SecuritySetting>;
|
||||||
default:
|
default:
|
||||||
|
|
@ -24,11 +24,16 @@ function renderCurrentSetting(setting: string) {
|
||||||
export default function Home({ authTokenStorageHandler }: Props) {
|
export default function Home({ authTokenStorageHandler }: Props) {
|
||||||
const settings = ["Account", "Security"];
|
const settings = ["Account", "Security"];
|
||||||
const [currentSetting, setCurrentSetting] = React.useState(settings[0]);
|
const [currentSetting, setCurrentSetting] = React.useState(settings[0]);
|
||||||
/* Make object to pass by reference */
|
const [settingsChanged, setsettingsChanged] = React.useState(false);
|
||||||
|
/* Make objects to pass by reference */
|
||||||
const currentSettingHook = {
|
const currentSettingHook = {
|
||||||
currentSetting,
|
currentSetting,
|
||||||
setCurrentSetting,
|
setCurrentSetting,
|
||||||
};
|
};
|
||||||
|
const settingsChangedHook = {
|
||||||
|
settingsChanged,
|
||||||
|
setsettingsChanged,
|
||||||
|
};
|
||||||
|
|
||||||
if (!authTokenStorageHandler.authTokenValue) {
|
if (!authTokenStorageHandler.authTokenValue) {
|
||||||
return <Navigate to="/home"></Navigate>;
|
return <Navigate to="/home"></Navigate>;
|
||||||
|
|
@ -52,9 +57,12 @@ export default function Home({ authTokenStorageHandler }: Props) {
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<hr></hr>
|
<hr></hr>
|
||||||
<div className="currentSetting">
|
<div className="currentSettingBox">
|
||||||
{renderCurrentSetting(currentSetting)}
|
<div className="currentSetting">
|
||||||
</div>
|
{renderCurrentSetting(currentSetting, settingsChangedHook)}
|
||||||
|
</div>
|
||||||
|
{settingsChangedHook.settingsChanged ? ( <button>Save</button> ) : null }
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</TilingItem>
|
</TilingItem>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,11 @@ import * as React from "react";
|
||||||
import { authTokenStorageHandlerInit } from "../../components/storageHandler.ts";
|
import { authTokenStorageHandlerInit } from "../../components/storageHandler.ts";
|
||||||
import AccountDefaultSetting from "../../components/AccountDefaultSetting.tsx";
|
import AccountDefaultSetting from "../../components/AccountDefaultSetting.tsx";
|
||||||
|
|
||||||
function RenderSettingField(settingField: str, settingValue: str) {
|
interface Props {
|
||||||
|
settingsChangedHook: object;
|
||||||
|
}
|
||||||
|
|
||||||
|
function RenderSettingField(settingField: str, settingValue: str, settingsChangedHook: object) {
|
||||||
switch (settingField) {
|
switch (settingField) {
|
||||||
default:
|
default:
|
||||||
return (
|
return (
|
||||||
|
|
@ -10,12 +14,13 @@ function RenderSettingField(settingField: str, settingValue: str) {
|
||||||
key={settingField + "Main"}
|
key={settingField + "Main"}
|
||||||
settingField={settingField}
|
settingField={settingField}
|
||||||
settingValue={settingValue}
|
settingValue={settingValue}
|
||||||
|
settingsChangedHook={settingsChangedHook}
|
||||||
></AccountDefaultSetting>
|
></AccountDefaultSetting>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function AccountSetting() {
|
export default function AccountSetting({ settingsChangedHook }: Props) {
|
||||||
const [accountSettings, setAccountSettings] = React.useState({});
|
const [accountSettings, setAccountSettings] = React.useState({});
|
||||||
const authTokenStorageHandler = authTokenStorageHandlerInit();
|
const authTokenStorageHandler = authTokenStorageHandlerInit();
|
||||||
|
|
||||||
|
|
@ -44,7 +49,7 @@ export default function AccountSetting() {
|
||||||
<h1>Account</h1>
|
<h1>Account</h1>
|
||||||
<hr></hr>
|
<hr></hr>
|
||||||
{Object.entries(accountSettings).map((item, key) =>
|
{Object.entries(accountSettings).map((item, key) =>
|
||||||
RenderSettingField(item[0], item[1]),
|
RenderSettingField(item[0], item[1], settingsChangedHook),
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue