Skip to content

Commit

Permalink
refactor: removed support for slug and added subdomain support
Browse files Browse the repository at this point in the history
  • Loading branch information
piyushgarg-dev committed Oct 8, 2023
1 parent 2fd673e commit 217bf6d
Show file tree
Hide file tree
Showing 15 changed files with 94 additions and 61 deletions.
5 changes: 2 additions & 3 deletions components/Dashboard/DashboardSidebar/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -97,13 +97,12 @@ const DashboardSidebar: React.FC = () => {
/>
</div>
) : (

<p className="relative flex h-10 w-10 items-center justify-center rounded-full bg-violet-700 font-semibold text-white">
{user?.firstName.charAt(0)}
{user?.lastName?.charAt(0)}
</p>
)}
<p className="truncate max-w-[107px]">
<p className="max-w-[107px] truncate">
{user?.firstName} {user?.lastName}
</p>
</div>
Expand All @@ -129,7 +128,7 @@ const DashboardSidebar: React.FC = () => {
{route.links.map((link) => (
<li key={link.href}>
<Link
href={`/dashboard/${project?.slug}/${link.href}`}
href={`/dashboard/${project?.subdomain}/${link.href}`}
className={cn(
'offset_ring group my-0.5 flex w-full cursor-pointer justify-start rounded-lg p-2 text-sm font-medium hover:bg-accent',
{
Expand Down
4 changes: 2 additions & 2 deletions components/Dashboard/FormPane.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ const FormPane: React.FC = () => {
/>

<Link
href={`/dashboard/${project?.slug}/forms/edit/${form?.id}`}
href={`/dashboard/${project?.subdomain}/forms/edit/${form?.id}`}
className="offset_ring flex flex-grow items-center gap-4 overflow-x-hidden rounded-lg"
>
<Image
Expand Down Expand Up @@ -106,7 +106,7 @@ const FormPane: React.FC = () => {
onClick={() =>
label.toLowerCase() === 'edit'
? router.push(
`/dashboard/${project?.slug}/forms/edit/${form?.id}`
`/dashboard/${project?.subdomain}/forms/edit/${form?.id}`
)
: null
}
Expand Down
6 changes: 3 additions & 3 deletions components/Dashboard/ProjectSwitch.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ const ProjectSwitch: React.FC = () => {
const { project: selectedProject } = useSelectedProject()

const handleSelectProject = useCallback(
(slug: string) => {
router.replace(`/dashboard/${slug}`)
(domain: string) => {
router.replace(`/dashboard/${domain}`)
},
[router]
)
Expand Down Expand Up @@ -60,7 +60,7 @@ const ProjectSwitch: React.FC = () => {
<CommandItem
key={project?.id}
onSelect={() =>
project ? handleSelectProject(project?.slug) : null
project ? handleSelectProject(project?.subdomain) : null
}
className="cursor-pointer text-sm"
>
Expand Down
4 changes: 3 additions & 1 deletion components/Modals/CreateFormModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,9 @@ export const CreateFormModal: React.FC = () => {
toast.success('Project created successfully', {
id: 'create-form',
})
router.push(`/dashboard/${selectedProject.slug}/forms/edit/${formId}`)
router.push(
`/dashboard/${selectedProject.subdomain}/forms/edit/${formId}`
)
}
} catch (error) {
toast.error('Something went wrong', { id: 'create-form' })
Expand Down
18 changes: 9 additions & 9 deletions components/Modals/ProjectModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ const formSchema = z.object({
.string()
.min(3, { message: 'Project name must be atleast 3 characters long' })
.max(17, { message: 'Project name must be less than 17 characters' }),
slug: z
subdomain: z
.string()
.min(3, { message: 'Project slug must be atleast 3 characters long' }),
.min(3, { message: 'Project subdomain must be atleast 3 characters long' }),
})

export const ProjectModal: React.FC = () => {
Expand All @@ -42,7 +42,7 @@ export const ProjectModal: React.FC = () => {
resolver: zodResolver(formSchema),
defaultValues: {
name: '',
slug: '',
subdomain: '',
},
})

Expand All @@ -53,13 +53,13 @@ export const ProjectModal: React.FC = () => {
try {
const res = await createProjectAsync({
name: values.name,
slug: values.slug,
subdomain: values.subdomain,
})
if (res.createProject?.id) {
toast.success('Project created successfully', {
id: 'create-project',
})
router.push(`/dashboard/${res.createProject.slug}`)
router.push(`/dashboard/${res.createProject.subdomain}`)
}
} catch (error) {
toast.error('Something went wrong', { id: 'create-project' })
Expand All @@ -68,7 +68,7 @@ export const ProjectModal: React.FC = () => {
projectModal.closeCreateProjectModal()
}
},
[createProjectAsync, router]
[createProjectAsync, projectModal, router]
)

return (
Expand Down Expand Up @@ -101,15 +101,15 @@ export const ProjectModal: React.FC = () => {

<FormField
control={form.control}
name="slug"
name="subdomain"
render={({ field }) => (
<FormItem>
<FormLabel>Project Slug</FormLabel>
<FormLabel>Project Subdomain</FormLabel>
<FormControl>
<Input
{...field}
disabled={loading}
placeholder="my-slug"
placeholder="something"
/>
</FormControl>
<FormMessage />
Expand Down
12 changes: 6 additions & 6 deletions gql/gql.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/
const documents = {
"\n #graphql\n mutation CreateForm($data: CreateFormData!) {\n createForm(data: $data)\n }\n": types.CreateFormDocument,
"\n #graphql\n mutation UpdateForm($data: UpdateFormInput!) {\n updateForm(data: $data)\n }\n": types.UpdateFormDocument,
"\n #graphql\n mutation CreateProject($data: CreateProjectData!) {\n createProject(data: $data) {\n id\n slug\n }\n }\n": types.CreateProjectDocument,
"\n #graphql\n mutation CreateProject($data: CreateProjectData!) {\n createProject(data: $data) {\n id\n subdomain\n customDomain\n }\n }\n": types.CreateProjectDocument,
"\n #graphql\n mutation CreateUserWithEmailAndPassword($data: CreateUserData!) {\n createUser(data: $data) {\n id\n }\n }\n": types.CreateUserWithEmailAndPasswordDocument,
"\n #graphql\n query GetForms($input: GetFormsInput!) {\n getForms(input: $input) {\n id\n name\n slug\n createdAt\n updatedAt\n }\n }\n": types.GetFormsDocument,
"\n #graphql\n query GetFormById($getFormByIdId: ID!) {\n getFormById(id: $getFormByIdId) {\n id\n name\n slug\n introTitle\n introMessage\n promptTitle\n promptDescription\n thankyouTitle\n thankyouMessage\n enableCTA\n ctaTitle\n ctaURL\n projectId\n createdByUserId\n isActive\n primaryColor\n backgroundColor\n lang\n collectVideoTestimonials\n collectTextTestimonials\n collectRatings\n collectImages\n collectEmail\n collectJobTitle\n collectUserImage\n collectWebsiteURL\n collectCompany\n autoApproveTestimonials\n autoAddTags\n createdAt\n updatedAt\n }\n }\n": types.GetFormByIdDocument,
"\n #graphql\n query GetUserProjects {\n getUserProjects {\n id\n name\n slug\n }\n }\n": types.GetUserProjectsDocument,
"\n #graphql\n query GetProjectBySlug($slug: String!) {\n getProjectBySlug(slug: $slug) {\n id\n name\n slug\n createdAt\n updatedAt\n }\n }\n": types.GetProjectBySlugDocument,
"\n #graphql\n query GetUserProjects {\n getUserProjects {\n id\n name\n subdomain\n customDomain\n }\n }\n": types.GetUserProjectsDocument,
"\n #graphql\n query GetProjectByDomain($domain: String!) {\n getProjectByDomain(domain: $domain) {\n id\n name\n customDomain\n subdomain\n createdAt\n updatedAt\n }\n }\n": types.GetProjectByDomainDocument,
"\n query GetSessionUser {\n getSessionUser {\n id\n firstName\n lastName\n email\n emailVerified\n authenticationType\n profileImageURL\n role\n createdAt\n updatedAt\n }\n }\n": types.GetSessionUserDocument,
"\n #graphql\n query SigninWithEmailPassword($email: String!, $password: String!) {\n singinwithEmailPassword(email: $email, password: $password)\n }\n": types.SigninWithEmailPasswordDocument,
};
Expand Down Expand Up @@ -50,7 +50,7 @@ export function graphql(source: "\n #graphql\n mutation UpdateForm($data: Upda
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function graphql(source: "\n #graphql\n mutation CreateProject($data: CreateProjectData!) {\n createProject(data: $data) {\n id\n slug\n }\n }\n"): (typeof documents)["\n #graphql\n mutation CreateProject($data: CreateProjectData!) {\n createProject(data: $data) {\n id\n slug\n }\n }\n"];
export function graphql(source: "\n #graphql\n mutation CreateProject($data: CreateProjectData!) {\n createProject(data: $data) {\n id\n subdomain\n customDomain\n }\n }\n"): (typeof documents)["\n #graphql\n mutation CreateProject($data: CreateProjectData!) {\n createProject(data: $data) {\n id\n subdomain\n customDomain\n }\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
Expand All @@ -66,11 +66,11 @@ export function graphql(source: "\n #graphql\n query GetFormById($getFormByIdI
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function graphql(source: "\n #graphql\n query GetUserProjects {\n getUserProjects {\n id\n name\n slug\n }\n }\n"): (typeof documents)["\n #graphql\n query GetUserProjects {\n getUserProjects {\n id\n name\n slug\n }\n }\n"];
export function graphql(source: "\n #graphql\n query GetUserProjects {\n getUserProjects {\n id\n name\n subdomain\n customDomain\n }\n }\n"): (typeof documents)["\n #graphql\n query GetUserProjects {\n getUserProjects {\n id\n name\n subdomain\n customDomain\n }\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function graphql(source: "\n #graphql\n query GetProjectBySlug($slug: String!) {\n getProjectBySlug(slug: $slug) {\n id\n name\n slug\n createdAt\n updatedAt\n }\n }\n"): (typeof documents)["\n #graphql\n query GetProjectBySlug($slug: String!) {\n getProjectBySlug(slug: $slug) {\n id\n name\n slug\n createdAt\n updatedAt\n }\n }\n"];
export function graphql(source: "\n #graphql\n query GetProjectByDomain($domain: String!) {\n getProjectByDomain(domain: $domain) {\n id\n name\n customDomain\n subdomain\n createdAt\n updatedAt\n }\n }\n"): (typeof documents)["\n #graphql\n query GetProjectByDomain($domain: String!) {\n getProjectByDomain(domain: $domain) {\n id\n name\n customDomain\n subdomain\n createdAt\n updatedAt\n }\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
Expand Down
Loading

0 comments on commit 217bf6d

Please sign in to comment.