mirror of
https://github.com/Ravinou/borgwarehouse
synced 2024-05-17 13:06:39 +02:00
feat: hydrate wizard steps from API
This commit is contained in:
parent
28115f3506
commit
1e7917041d
|
@ -3,24 +3,17 @@ import React from 'react';
|
||||||
import classes from '../WizardStep1/WizardStep1.module.css';
|
import classes from '../WizardStep1/WizardStep1.module.css';
|
||||||
import { IconTool, IconAlertCircle } from '@tabler/icons-react';
|
import { IconTool, IconAlertCircle } from '@tabler/icons-react';
|
||||||
import CopyButton from '../../UI/CopyButton/CopyButton';
|
import CopyButton from '../../UI/CopyButton/CopyButton';
|
||||||
|
import lanCommandOption from '../../../helpers/functions/lanCommandOption';
|
||||||
|
|
||||||
function WizardStep2(props) {
|
function WizardStep2(props) {
|
||||||
////Vars
|
////Vars
|
||||||
|
const wizardEnv = props.wizardEnv;
|
||||||
|
const UNIX_USER = wizardEnv.UNIX_USER;
|
||||||
//Needed to generate command for borg over LAN instead of WAN if env vars are set and option enabled.
|
//Needed to generate command for borg over LAN instead of WAN if env vars are set and option enabled.
|
||||||
let HOSTNAME;
|
const { HOSTNAME, SSH_SERVER_PORT } = lanCommandOption(
|
||||||
let SSH_SERVER_PORT;
|
wizardEnv,
|
||||||
let UNIX_USER = process.env.NEXT_PUBLIC_UNIX_USER;
|
props.selectedOption.lanCommand
|
||||||
if (
|
);
|
||||||
props.selectedOption.lanCommand &&
|
|
||||||
process.env.NEXT_PUBLIC_HOSTNAME_LAN &&
|
|
||||||
process.env.NEXT_PUBLIC_SSH_SERVER_PORT_LAN
|
|
||||||
) {
|
|
||||||
HOSTNAME = process.env.NEXT_PUBLIC_HOSTNAME_LAN;
|
|
||||||
SSH_SERVER_PORT = process.env.NEXT_PUBLIC_SSH_SERVER_PORT_LAN;
|
|
||||||
} else {
|
|
||||||
HOSTNAME = process.env.NEXT_PUBLIC_HOSTNAME;
|
|
||||||
SSH_SERVER_PORT = process.env.NEXT_PUBLIC_SSH_SERVER_PORT;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={classes.container}>
|
<div className={classes.container}>
|
||||||
|
@ -125,20 +118,17 @@ function WizardStep2(props) {
|
||||||
connect :
|
connect :
|
||||||
<li>
|
<li>
|
||||||
<span className={classes.sshPublicKey}>
|
<span className={classes.sshPublicKey}>
|
||||||
ECDSA :{' '}
|
ECDSA : {wizardEnv.SSH_SERVER_FINGERPRINT_ECDSA}
|
||||||
{process.env.NEXT_PUBLIC_SSH_SERVER_FINGERPRINT_ECDSA}
|
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span className={classes.sshPublicKey}>
|
<span className={classes.sshPublicKey}>
|
||||||
ED25519 :{' '}
|
ED25519 : {wizardEnv.SSH_SERVER_FINGERPRINT_ED25519}
|
||||||
{process.env.NEXT_PUBLIC_SSH_SERVER_FINGERPRINT_ED25519}
|
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span className={classes.sshPublicKey}>
|
<span className={classes.sshPublicKey}>
|
||||||
RSA :{' '}
|
RSA : {wizardEnv.SSH_SERVER_FINGERPRINT_RSA}
|
||||||
{process.env.NEXT_PUBLIC_SSH_SERVER_FINGERPRINT_RSA}
|
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,24 +3,17 @@ import React from 'react';
|
||||||
import classes from '../WizardStep1/WizardStep1.module.css';
|
import classes from '../WizardStep1/WizardStep1.module.css';
|
||||||
import { IconChecks, IconPlayerPlay } from '@tabler/icons-react';
|
import { IconChecks, IconPlayerPlay } from '@tabler/icons-react';
|
||||||
import CopyButton from '../../UI/CopyButton/CopyButton';
|
import CopyButton from '../../UI/CopyButton/CopyButton';
|
||||||
|
import lanCommandOption from '../../../helpers/functions/lanCommandOption';
|
||||||
|
|
||||||
function WizardStep3(props) {
|
function WizardStep3(props) {
|
||||||
////Vars
|
////Vars
|
||||||
|
const wizardEnv = props.wizardEnv;
|
||||||
|
const UNIX_USER = wizardEnv.UNIX_USER;
|
||||||
//Needed to generate command for borg over LAN instead of WAN if env vars are set and option enabled.
|
//Needed to generate command for borg over LAN instead of WAN if env vars are set and option enabled.
|
||||||
let HOSTNAME;
|
const { HOSTNAME, SSH_SERVER_PORT } = lanCommandOption(
|
||||||
let SSH_SERVER_PORT;
|
wizardEnv,
|
||||||
let UNIX_USER = process.env.NEXT_PUBLIC_UNIX_USER;
|
props.selectedOption.lanCommand
|
||||||
if (
|
);
|
||||||
props.selectedOption.lanCommand &&
|
|
||||||
process.env.NEXT_PUBLIC_HOSTNAME_LAN &&
|
|
||||||
process.env.NEXT_PUBLIC_SSH_SERVER_PORT_LAN
|
|
||||||
) {
|
|
||||||
HOSTNAME = process.env.NEXT_PUBLIC_HOSTNAME_LAN;
|
|
||||||
SSH_SERVER_PORT = process.env.NEXT_PUBLIC_SSH_SERVER_PORT_LAN;
|
|
||||||
} else {
|
|
||||||
HOSTNAME = process.env.NEXT_PUBLIC_HOSTNAME;
|
|
||||||
SSH_SERVER_PORT = process.env.NEXT_PUBLIC_SSH_SERVER_PORT;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={classes.container}>
|
<div className={classes.container}>
|
||||||
|
|
|
@ -3,24 +3,17 @@ import React from 'react';
|
||||||
import classes from '../WizardStep1/WizardStep1.module.css';
|
import classes from '../WizardStep1/WizardStep1.module.css';
|
||||||
import { IconWand } from '@tabler/icons-react';
|
import { IconWand } from '@tabler/icons-react';
|
||||||
import CopyButton from '../../UI/CopyButton/CopyButton';
|
import CopyButton from '../../UI/CopyButton/CopyButton';
|
||||||
|
import lanCommandOption from '../../../helpers/functions/lanCommandOption';
|
||||||
|
|
||||||
function WizardStep4(props) {
|
function WizardStep4(props) {
|
||||||
////Vars
|
////Vars
|
||||||
|
const wizardEnv = props.wizardEnv;
|
||||||
|
const UNIX_USER = wizardEnv.UNIX_USER;
|
||||||
//Needed to generate command for borg over LAN instead of WAN if env vars are set and option enabled.
|
//Needed to generate command for borg over LAN instead of WAN if env vars are set and option enabled.
|
||||||
let HOSTNAME;
|
const { HOSTNAME, SSH_SERVER_PORT } = lanCommandOption(
|
||||||
let SSH_SERVER_PORT;
|
wizardEnv,
|
||||||
let UNIX_USER = process.env.NEXT_PUBLIC_UNIX_USER;
|
props.selectedOption.lanCommand
|
||||||
if (
|
);
|
||||||
props.selectedOption.lanCommand &&
|
|
||||||
process.env.NEXT_PUBLIC_HOSTNAME_LAN &&
|
|
||||||
process.env.NEXT_PUBLIC_SSH_SERVER_PORT_LAN
|
|
||||||
) {
|
|
||||||
HOSTNAME = process.env.NEXT_PUBLIC_HOSTNAME_LAN;
|
|
||||||
SSH_SERVER_PORT = process.env.NEXT_PUBLIC_SSH_SERVER_PORT_LAN;
|
|
||||||
} else {
|
|
||||||
HOSTNAME = process.env.NEXT_PUBLIC_HOSTNAME;
|
|
||||||
SSH_SERVER_PORT = process.env.NEXT_PUBLIC_SSH_SERVER_PORT;
|
|
||||||
}
|
|
||||||
|
|
||||||
const configBorgmatic = `location:
|
const configBorgmatic = `location:
|
||||||
# List of source directories to backup.
|
# List of source directories to backup.
|
||||||
|
|
|
@ -20,6 +20,7 @@ function SetupWizard(props) {
|
||||||
const [list, setList] = useState([]);
|
const [list, setList] = useState([]);
|
||||||
const [listIsLoading, setListIsLoading] = useState(true);
|
const [listIsLoading, setListIsLoading] = useState(true);
|
||||||
const [step, setStep] = useState();
|
const [step, setStep] = useState();
|
||||||
|
const [wizardEnv, setWizardEnv] = useState({});
|
||||||
const [selectedOption, setSelectedOption] = useState({
|
const [selectedOption, setSelectedOption] = useState({
|
||||||
id: '#id',
|
id: '#id',
|
||||||
repository: 'repo',
|
repository: 'repo',
|
||||||
|
@ -44,6 +45,21 @@ function SetupWizard(props) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
repoList();
|
repoList();
|
||||||
|
//Fetch wizardEnv to hydrate Wizard' steps
|
||||||
|
const fetchWizardEnv = async () => {
|
||||||
|
try {
|
||||||
|
const response = await fetch('/api/account/getWizardEnv', {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'Content-type': 'application/json',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
setWizardEnv((await response.json()).wizardEnv);
|
||||||
|
} catch (error) {
|
||||||
|
console.log('Fetching datas error');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
fetchWizardEnv();
|
||||||
}, []);
|
}, []);
|
||||||
//Component did update
|
//Component did update
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
@ -84,11 +100,26 @@ function SetupWizard(props) {
|
||||||
if (step == 1) {
|
if (step == 1) {
|
||||||
return <WizardStep1 />;
|
return <WizardStep1 />;
|
||||||
} else if (step == 2) {
|
} else if (step == 2) {
|
||||||
return <WizardStep2 selectedOption={selectedOption} />;
|
return (
|
||||||
|
<WizardStep2
|
||||||
|
selectedOption={selectedOption}
|
||||||
|
wizardEnv={wizardEnv}
|
||||||
|
/>
|
||||||
|
);
|
||||||
} else if (step == 3) {
|
} else if (step == 3) {
|
||||||
return <WizardStep3 selectedOption={selectedOption} />;
|
return (
|
||||||
|
<WizardStep3
|
||||||
|
selectedOption={selectedOption}
|
||||||
|
wizardEnv={wizardEnv}
|
||||||
|
/>
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
return <WizardStep4 selectedOption={selectedOption} />;
|
return (
|
||||||
|
<WizardStep4
|
||||||
|
selectedOption={selectedOption}
|
||||||
|
wizardEnv={wizardEnv}
|
||||||
|
/>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
13
helpers/functions/lanCommandOption.js
Normal file
13
helpers/functions/lanCommandOption.js
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
export default function lanCommandOption(wizardEnv, lanCommand) {
|
||||||
|
let HOSTNAME;
|
||||||
|
let SSH_SERVER_PORT;
|
||||||
|
if (lanCommand && wizardEnv.HOSTNAME_LAN && wizardEnv.SSH_SERVER_PORT_LAN) {
|
||||||
|
HOSTNAME = wizardEnv.HOSTNAME_LAN;
|
||||||
|
SSH_SERVER_PORT = wizardEnv.SSH_SERVER_PORT_LAN;
|
||||||
|
} else {
|
||||||
|
HOSTNAME = wizardEnv.HOSTNAME;
|
||||||
|
SSH_SERVER_PORT = wizardEnv.SSH_SERVER_PORT;
|
||||||
|
}
|
||||||
|
|
||||||
|
return { HOSTNAME, SSH_SERVER_PORT };
|
||||||
|
}
|
Loading…
Reference in a new issue