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.localUser.permissions.miscellaneous.canEditDisplayName to be true
In the preset editor, ensure Miscellaneous > Edit Name is toggled enabled.
File: CustomMeetingPreview.tsx
We add a <DyteInputField> element for entering the participant name. We should not show this input if the user doese not have permission to edit name (meeting.localUser.permissions.miscellaneous.canEditDisplayName)
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
  ....
  >
  <dyte.io.uikit.view.DyteLabel
    android:id="@+id/dyteLabelView"
    android:layout_width="300dp"
    android:layout_height="25dp"
    android:text="Join in as %s"
    android:textColor="#fff"
    android:textSize="16sp"
  />
  <dyte.io.uikit.view.DyteInputField
    android:contentDescription="Textbox for display name"
    android:id="@+id/textInputEditText"
    android:layout_width="300dp"
    android:layout_height="48dp"
    android:hint="Your name"
  />
  <dyte.io.uikit.view.DyteJoinButton
    android:contentDescription="Button for joining meeting"
    android:id="@+id/dytejoinbutton_setup_screen"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
  />
</androidx.constraintlayout.widget.ConstraintLayout>
And on the kolin side we bind the newly added element like follows:
nameAtom.addTextChangedListener(
  object : TextWatcher {
    override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
      // no-op
    }
    override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
      // no-op
    }
    override fun afterTextChanged(s: Editable?) {
      meeting.self.setDisplayName(s?.toString()) 
    }
  }
)
meeting.self.setDisplayName(participantName) sets the new name for the participant.
At the end, we let user join the meeting using meeting.join();.