diff --git a/app/onboarding/createProfile/page.tsx b/app/onboarding/createProfile/page.tsx
index d80cfa0..09b885f 100644
--- a/app/onboarding/createProfile/page.tsx
+++ b/app/onboarding/createProfile/page.tsx
@@ -1,6 +1,6 @@
"use client";
-import { UpdateProfileForm } from "@/components/UpdateProfileForm";
+import { CreateProfileForm } from "@/components/CreateProfileForm";
import { useEffect } from "react";
export default function OnboardingCreateProfile() {
@@ -12,7 +12,7 @@ export default function OnboardingCreateProfile() {
<>
Step 2: Create Profile
-
+
>
);
diff --git a/components/CreateProfileForm.tsx b/components/CreateProfileForm.tsx
new file mode 100644
index 0000000..c6d6269
--- /dev/null
+++ b/components/CreateProfileForm.tsx
@@ -0,0 +1,111 @@
+'use client';
+
+import React, { useState } from 'react';
+import { Button } from "@/components/ui/button"
+import { Input } from "@/components/ui/input"
+import { nip19 } from "nostr-tools"
+import { Label } from "./ui/label"
+import { Textarea } from "@/components/ui/textarea"
+import { verifyEvent } from 'nostr-tools/pure'
+import { hexToBytes } from '@noble/hashes/utils'
+import { useNostr, useProfile } from 'nostr-react';
+import { signEvent } from '@/utils/utils';
+
+export function CreateProfileForm() {
+
+ const { publish } = useNostr();
+
+ let npub = '';
+ let pubkey = '';
+ let loginType = '';
+ let nsec: Uint8Array;
+
+ if (typeof window !== 'undefined') {
+ pubkey = window.localStorage.getItem("pubkey") ?? '';
+ const nsecHex = window.localStorage.getItem("nsec");
+ loginType = window.localStorage.getItem("loginType") ?? '';
+
+ if (pubkey && pubkey.length > 0) {
+ npub = nip19.npubEncode(pubkey);
+ }
+
+ if (nsecHex && nsecHex.length > 0) {
+ nsec = hexToBytes(nsecHex);
+ }
+ }
+
+ let { data: userData } = useProfile({
+ pubkey,
+ });
+
+ const [username, setUsername] = useState(userData?.name);
+ const [displayName, setDisplayName] = useState(userData?.display_name);
+ const [bio, setBio] = useState(userData?.about);
+
+ const handleUsernameChange = (event: React.ChangeEvent) => {
+ setUsername(event.target.value);
+ };
+ const handleDisplayNameChange = (event: React.ChangeEvent) => {
+ setDisplayName(event.target.value);
+ };
+ const handleBioChange = (event: React.ChangeEvent) => {
+ setBio(event.target.value);
+ };
+
+ async function handleProfileUpdate() {
+ const username = (document.getElementById('username') as HTMLInputElement).value;
+ const bio = (document.getElementById('bio') as HTMLInputElement).value;
+ const displayname = (document.getElementById('displayname') as HTMLInputElement).value;
+
+ if (loginType) {
+ let event = {
+ kind: 0,
+ created_at: Math.floor(Date.now() / 1000),
+ tags: [],
+ content: `{"name": "${username}", "about": "${bio}"}`,
+ pubkey: pubkey,
+ id: "",
+ sig: "",
+ };
+
+ let signedEvent = await signEvent(loginType, event);
+
+ if (signedEvent === null) {
+ alert('Failed to sign the event. Please check your connection and try again.');
+ return;
+ }
+
+ let isGood = verifyEvent(signedEvent);
+
+ if (isGood) {
+ publish(signedEvent);
+ window.location.href = `/profile/${npub}`;
+ }
+ }
+ }
+
+ return (
+
+ )
+}
\ No newline at end of file