Skip to main content

Edit user name

A common use case of pre-call UI is to give the user a option to set / edit their name.

Permissions

Requires meeting.self.permissions.canEditDisplayName to be true

In the preset editor, ensure Miscellaneous > Edit Name is toggled enabled.

File: CustomMeetingPreview.tsx

We add a <input> element for entering the participant name. We should not show this input if the user doese not have permission to edit name (permissions.canEditDisplayName)

await meeting.self.setName(participantName); sets the new name for the participant.

At the end, we let user join the meeting using await meeting.join();.

LIVE EDITOR

import { useDyteMeeting, useDyteSelector } from "@dytesdk/react-web-core";
import { DyteButton } from "@dytesdk/react-ui-kit";
import { useState, useEffect } from "react";

export default function CustomMeetingPreview() {
  const { meeting } = useDyteMeeting();
  const permissions = useDyteSelector((m) => m.self.permissions);
  const [participantName, setParticipantName] = useState("");

  useEffect(() => {
    if (!meeting) {
      return;
    }
    setParticipantName(meeting.self.name);
  }, [meeting]);

  return (
    <div
      className="h-full w-full flex flex-col items-center justify-center"
      style={{ minHeight: "400px" }}
    >
      <div className="flex w-full items-center justify-around p-[10%]">
        <div></div>
        <div className="flex w-1/4 flex-col justify-between">
          <div className="flex flex-col items-center">
            <p>Joining as</p>
          </div>
          {permissions.canEditDisplayName && (
            <input
              placeholder="Your name"
              className="mb-10 rounded-sm border p-2.5 focus:border-blue-500"
              value={participantName}
              onChange={(event) => setParticipantName(event.target.value)}
            />
          )}
          <DyteButton
            kind="wide"
            size="lg"
            style={{ cursor: participantName ? "pointer" : "not-allowed" }}
            onClick={async () => {
              if (participantName) {
                if (permissions.canEditDisplayName) {
                  await meeting.self.setName(participantName);
                }
                await meeting.join();
              }
            }}
          >
            Join
          </DyteButton>
        </div>
      </div>
    </div>
  );
}