Next.js Discord

Discord Forum

Navigating in server components.

Unanswered
Bumble bee posted this in #help-forum
Open in Discord
Bumble beeOP
import { Button } from "@/components/ui/button";
import { utapi } from "@/server/uploadthing";
import Image from "next/image";
import Link from "next/link";
import { Separator } from "@/components/ui/separator"
import { createStudentSubmition } from "@/lib/actions/submission.actions";
import { ISubmission } from "@/lib/database/models/submission.model";
import { getUserObjectId } from "@/helpers";
import { redirect } from "next/navigation";


async function uploadFiles(formData: FormData) {
    "use server";
    const files = formData.getAll("files");
    //@ts-ignore
    const response = await utapi.uploadFiles(files);
    if(response) {
        
        const submission: ISubmission = {
            // assignmentRef: '',
            studentRef: getUserObjectId(),
            submittedFileUrl: response[0].data?.url!,
            status: 'Submitted'
        }

        try {
            const createdSubmission = await createStudentSubmition(submission);
            if(createdSubmission) {
                const createdSubmissionJSON = JSON.parse(JSON.stringify(createdSubmission));
                console.log(createdSubmissionJSON);
            }
        } catch (error) {
            console.log(error);
        }
    }
}

type submitAssignmentFormProps = {
    assignmentRef: string
}

const submitAssignmentForm = ({}: submitAssignmentFormProps) => {

  return (
    <div className="flex flex-col items-center justify-center min-h-screen bg-white">
      <form action={uploadFiles} className="flex flex-col items-center space-y-4 bg-white p-8">
        ...
        ...
        ...
      </form>
    </div>
  )
}

export default submitAssignmentForm;
can somebody help me, i dont know how to navigate/route/redirect to an url after the submission is created. I know about useRouter and link but im in a server component

1 Reply

@Bumble bee tsx import { Button } from "@/components/ui/button"; import { utapi } from "@/server/uploadthing"; import Image from "next/image"; import Link from "next/link"; import { Separator } from "@/components/ui/separator" import { createStudentSubmition } from "@/lib/actions/submission.actions"; import { ISubmission } from "@/lib/database/models/submission.model"; import { getUserObjectId } from "@/helpers"; import { redirect } from "next/navigation"; async function uploadFiles(formData: FormData) { "use server"; const files = formData.getAll("files"); //@ts-ignore const response = await utapi.uploadFiles(files); if(response) { const submission: ISubmission = { // assignmentRef: '', studentRef: getUserObjectId(), submittedFileUrl: response[0].data?.url!, status: 'Submitted' } try { const createdSubmission = await createStudentSubmition(submission); if(createdSubmission) { const createdSubmissionJSON = JSON.parse(JSON.stringify(createdSubmission)); console.log(createdSubmissionJSON); } } catch (error) { console.log(error); } } } type submitAssignmentFormProps = { assignmentRef: string } const submitAssignmentForm = ({}: submitAssignmentFormProps) => { return ( <div className="flex flex-col items-center justify-center min-h-screen bg-white"> <form action={uploadFiles} className="flex flex-col items-center space-y-4 bg-white p-8"> ... ... ... </form> </div> ) } export default submitAssignmentForm; can somebody help me, i dont know how to navigate/route/redirect to an url after the submission is created. I know about useRouter and link but im in a server component