import React, { useState } from 'react';
import { useMedia } from 'react-use';
import { selectLocalPeerName, useHMSActions, useHMSStore } from '@100mslive/react-sdk';
import { config as cssConfig, Dialog } from '../../..';
import { Sheet } from '../../../Sheet';
// @ts-ignore: No implicit Any
import { ToastManager } from '../Toast/ToastManager';
// @ts-ignore: No implicit Any
import { ChangeNameContent } from './ChangeNameContent';
// @ts-ignore: No implicit Any
import { UserPreferencesKeys, useUserPreferences } from '../hooks/useUserPreferences';
export const ChangeNameModal = ({
onOpenChange,
openParentSheet = undefined,
}: {
onOpenChange: (value: boolean) => void;
openParentSheet?: () => void;
}) => {
const [previewPreference, setPreviewPreference] = useUserPreferences(UserPreferencesKeys.PREVIEW);
const hmsActions = useHMSActions();
const localPeerName = useHMSStore(selectLocalPeerName);
const [currentName, setCurrentName] = useState(localPeerName);
const isMobile = useMedia(cssConfig.media.md);
const changeName = async () => {
const name = currentName?.trim() || '';
if (!name || name === localPeerName) {
return;
}
try {
await hmsActions.changeName(name);
setPreviewPreference({
...(previewPreference || {}),
name,
});
} catch (error) {
console.error('failed to update name', error);
ToastManager.addToast({ title: (error as Error).message });
} finally {
onOpenChange(false);
}
};
const props = {
changeName,
setCurrentName,
currentName,
localPeerName,
isMobile,
onExit: () => onOpenChange(false),
onBackClick: () => {
onOpenChange(false);
openParentSheet?.();
},
};
if (isMobile) {
return (
e.preventDefault()}>
);
}
return (
);
};