-
- {step === 0 &&
}
- {step === 1 &&
}
- {step === 2 &&
}
- {step === 3 &&
}
- {step === 4 &&
}
- {step === 5 &&
}
- {step === 6 &&
}
+ <>
+
+ Rustchat Setup
+
+
+
+
+ {step === 0 &&
}
+ {step === 1 &&
}
+ {step === 2 &&
}
+ {step === 3 &&
}
+ {step === 4 &&
}
+ {step === 5 &&
}
+ {step === 6 &&
}
+
-
-
+
+ >
);
}
diff --git a/src/routes/onboarding/steps/1-welcome.js b/src/routes/onboarding/steps/1-welcome.js
index a9debbfb..6d274acc 100644
--- a/src/routes/onboarding/steps/1-welcome.js
+++ b/src/routes/onboarding/steps/1-welcome.js
@@ -10,14 +10,14 @@ const StyledFirstStep = styled.div`
align-items: center;
`;
-export default function WelcomeStep({ step, setStep }) {
+export default function WelcomeStep({ setStep }) {
return (
Welcome to your Rustchat!
Everything in this space is owned by you. Let’s set up your space!
- setStep(step + 1)}>
+ setStep((prev) => prev + 1)}>
Start
diff --git a/src/routes/onboarding/steps/2-spaceName.js b/src/routes/onboarding/steps/2-serverName.js
similarity index 84%
rename from src/routes/onboarding/steps/2-spaceName.js
rename to src/routes/onboarding/steps/2-serverName.js
index e31a938d..8fe3d849 100644
--- a/src/routes/onboarding/steps/2-spaceName.js
+++ b/src/routes/onboarding/steps/2-serverName.js
@@ -19,7 +19,7 @@ const StyledSpaceNameStep = styled.div`
}
`;
-export default function SpaceNameStep({ step, setStep, data, setData }) {
+export default function ServerNameStep({ setStep, data, setData }) {
return (
Create a new server
@@ -29,11 +29,11 @@ export default function SpaceNameStep({ step, setStep, data, setData }) {
setData({
...data,
- spaceName: e.target.value
+ serverName: e.target.value
})
}
/>
@@ -41,11 +41,11 @@ export default function SpaceNameStep({ step, setStep, data, setData }) {
className="button"
onClick={() => {
// Verification for space name
- if (data.spaceName === "") {
+ if (data.serverName === "") {
toast.error("Please enter server name!");
return;
}
- setStep(step + 1);
+ setStep((prev) => prev + 1);
}}
>
Create Server
diff --git a/src/routes/onboarding/steps/3-adminCredentials.js b/src/routes/onboarding/steps/3-adminCredentials.js
index cadb2c20..88b8fca4 100644
--- a/src/routes/onboarding/steps/3-adminCredentials.js
+++ b/src/routes/onboarding/steps/3-adminCredentials.js
@@ -1,10 +1,17 @@
import { useEffect, useState } from "react";
import styled from "styled-components";
import toast from "react-hot-toast";
+import { useDispatch } from "react-redux";
import StyledInput from "../../../common/component/styled/Input";
import StyledButton from "../../../common/component/styled/Button";
-import { useCreateAdminMutation } from "../../../app/services/server";
+import {
+ useCreateAdminMutation,
+ useGetInitializedQuery,
+ useGetServerQuery,
+ useUpdateServerMutation
+} from "../../../app/services/server";
import { useLoginMutation } from "../../../app/services/auth";
+import { setAuthData } from "../../../app/slices/auth.data";
const StyledAdminCredentialsStep = styled.div`
height: 100%;
@@ -22,13 +29,18 @@ const StyledAdminCredentialsStep = styled.div`
}
`;
-export default function AdminCredentialsStep({ step, setStep }) {
+export default function AdminCredentialsStep({ data, setStep }) {
+ const dispatch = useDispatch();
+
+ const [createAdmin, { isLoading: isSigningUp, error: signUpError }] = useCreateAdminMutation();
const [
- createAdmin,
- { isLoading: isSignUpLoading, isSuccess: isSignUpSuccess, error: signUpError }
- ] = useCreateAdminMutation();
- const [login, { isLoading: isLoginLoading, isSuccess: isLoginSuccess, error: loginError }] =
- useLoginMutation();
+ login,
+ { isLoading: isLoggingIn, isSuccess: isLoggedIn, error: loginError, data: loginData }
+ ] = useLoginMutation();
+ const { refetch: refetchInitialized } = useGetInitializedQuery();
+ const { data: serverData } = useGetServerQuery();
+ const [updateServer, { isLoading: isUpdatingServer, isSuccess: isUpdatedServer }] =
+ useUpdateServerMutation();
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
@@ -39,16 +51,32 @@ export default function AdminCredentialsStep({ step, setStep }) {
if (signUpError === undefined) return;
toast.error(`Failed to sign up: ${signUpError.data}`);
}, [signUpError]);
-
useEffect(() => {
if (loginError === undefined) return;
toast.error(`Login failed: ${loginError.data}`);
}, [loginError]);
- // Increment `step` when both signing up and logging in have completed
+ // After logged in
useEffect(() => {
- if (isSignUpSuccess && isLoginSuccess) setStep(step + 1);
- }, [isSignUpSuccess, isLoginSuccess]);
+ if (isLoggedIn && loginData) {
+ // Update local auth data
+ dispatch(setAuthData(loginData));
+ // Update initialized state
+ refetchInitialized();
+ // Set server name
+ updateServer({
+ ...serverData,
+ name: data.serverName
+ });
+ }
+ }, [isLoggedIn, loginData]);
+
+ // After updated server
+ useEffect(() => {
+ if (isUpdatedServer) {
+ setStep((prev) => prev + 1);
+ }
+ }, [isUpdatedServer]);
return (
@@ -101,7 +129,7 @@ export default function AdminCredentialsStep({ step, setStep }) {
});
}}
>
- {!(isSignUpLoading || isLoginLoading) ? "Sign Up" : "..."}
+ {!(isSigningUp || isLoggingIn || isUpdatingServer) ? "Sign Up" : "..."}
);
diff --git a/src/routes/onboarding/steps/4-inviteRule.js b/src/routes/onboarding/steps/4-inviteRule.js
index 9b1aa36f..0945e9a0 100644
--- a/src/routes/onboarding/steps/4-inviteRule.js
+++ b/src/routes/onboarding/steps/4-inviteRule.js
@@ -17,11 +17,11 @@ const StyledInviteRuleStep = styled.div`
}
`;
-export default function InviteRuleStep({ step, setStep }) {
+export default function InviteRuleStep({ setStep }) {
const { data: loginConfig } = useGetLoginConfigQuery();
const [updateLoginConfig, { isSuccess, error }] = useUpdateLoginConfigMutation();
- const [value, setValue] = useState(null);
+ const [value, setValue] = useState(0);
// Display error
useEffect(() => {
@@ -31,7 +31,7 @@ export default function InviteRuleStep({ step, setStep }) {
// Increment `step` when updating has completed
useEffect(() => {
- if (isSuccess) setStep(step + 1);
+ if (isSuccess) setStep((prev) => prev + 1);
}, [isSuccess]);
return (
@@ -41,18 +41,18 @@ export default function InviteRuleStep({ step, setStep }) {
{
+ onChange={async (v) => {
setValue(v);
if (loginConfig !== undefined) {
const whoCanSignUp = ["EveryOne", "InvitationOnly"][v];
- updateLoginConfig({
+ await updateLoginConfig({
...loginConfig,
who_can_sign_up: whoCanSignUp
});
}
}}
/>
- setStep(step + 1)}>
+ setStep((prev) => prev + 1)}>
Skip
diff --git a/src/routes/onboarding/steps/5-inviteLink.js b/src/routes/onboarding/steps/5-inviteLink.js
index 72bd6d1d..14e79c85 100644
--- a/src/routes/onboarding/steps/5-inviteLink.js
+++ b/src/routes/onboarding/steps/5-inviteLink.js
@@ -51,7 +51,7 @@ const StyledInviteLinkStep = styled.div`
}
`;
-export default function InviteLinkStep({ step, setStep }) {
+export default function InviteLinkStep({ setStep }) {
const { link, linkCopied, copyLink } = useInviteLink();
return (
@@ -65,7 +65,7 @@ export default function InviteLinkStep({ step, setStep }) {
{linkCopied ? "Copied" : `Copy`}
-