forked from github/plane
1e152c666c
* chore: moved app & space from apps to root * chore: modified workspace configuration * chore: modified dockerfiles for space and web * chore: modified icons for space * feat: updated files for new svg icons supported by next-images * chore: added /spaces base path for next * chore: added compose config for space * chore: updated husky configuration * chore: updated workflows for new configuration * chore: changed app name to web * fix: resolved build errors with web * chore: reset file tracing root for both projects * chore: added nginx config for deploy * fix: eslint and tsconfig settings for space app * husky setup fixes based on new dir * eslint fixes * prettier formatting --------- Co-authored-by: Henit Chobisa <chobisa.henit@gmail.com>
74 lines
2.0 KiB
TypeScript
74 lines
2.0 KiB
TypeScript
import { useState } from "react";
|
|
|
|
// ui
|
|
import { SecondaryButton } from "components/ui";
|
|
// types
|
|
import { ICurrentUserResponse, IWorkspace, TOnboardingSteps } from "types";
|
|
// constants
|
|
import { CreateWorkspaceForm } from "components/workspace";
|
|
|
|
type Props = {
|
|
finishOnboarding: () => Promise<void>;
|
|
stepChange: (steps: Partial<TOnboardingSteps>) => Promise<void>;
|
|
updateLastWorkspace: () => Promise<void>;
|
|
user: ICurrentUserResponse | undefined;
|
|
workspaces: IWorkspace[] | undefined;
|
|
};
|
|
|
|
export const Workspace: React.FC<Props> = ({
|
|
finishOnboarding,
|
|
stepChange,
|
|
updateLastWorkspace,
|
|
user,
|
|
workspaces,
|
|
}) => {
|
|
const [defaultValues, setDefaultValues] = useState({
|
|
name: "",
|
|
slug: "",
|
|
organization_size: "",
|
|
});
|
|
|
|
const completeStep = async () => {
|
|
if (!user) return;
|
|
|
|
const payload: Partial<TOnboardingSteps> = {
|
|
workspace_create: true,
|
|
};
|
|
|
|
await stepChange(payload);
|
|
await updateLastWorkspace();
|
|
};
|
|
|
|
const secondaryButtonAction = async () => {
|
|
if (workspaces && workspaces.length > 0) {
|
|
await stepChange({ workspace_create: true, workspace_invite: true, workspace_join: true });
|
|
await finishOnboarding();
|
|
} else await stepChange({ profile_complete: false, workspace_join: false });
|
|
};
|
|
|
|
return (
|
|
<div className="w-full space-y-7 sm:space-y-10">
|
|
<h4 className="text-xl sm:text-2xl font-semibold">Create your workspace</h4>
|
|
<div className="sm:w-3/4 md:w-2/5">
|
|
<CreateWorkspaceForm
|
|
onSubmit={completeStep}
|
|
defaultValues={defaultValues}
|
|
setDefaultValues={setDefaultValues}
|
|
user={user}
|
|
primaryButtonText={{
|
|
loading: "Creating...",
|
|
default: "Continue",
|
|
}}
|
|
secondaryButton={
|
|
workspaces ? (
|
|
<SecondaryButton onClick={secondaryButtonAction}>
|
|
{workspaces.length > 0 ? "Skip & continue" : "Back"}
|
|
</SecondaryButton>
|
|
) : undefined
|
|
}
|
|
/>
|
|
</div>
|
|
</div>
|
|
);
|
|
};
|