mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-18 13:35:42 +09:00
40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
import Authentication from '@app/features/auth/state/Authentication';
|
|
import * as GuildMemberCommands from '@app/features/member/commands/GuildMemberCommands';
|
|
import type {GuildMember} from '@app/features/member/models/GuildMember';
|
|
import {BaseChangeNicknameModal} from '@app/features/user/components/modals/BaseChangeNicknameModal';
|
|
import type {User} from '@app/features/user/models/User';
|
|
import {observer} from 'mobx-react-lite';
|
|
import type React from 'react';
|
|
import {useCallback} from 'react';
|
|
|
|
interface ChangeNicknameModalProps {
|
|
guildId: string;
|
|
user: User;
|
|
member: GuildMember;
|
|
}
|
|
|
|
export const ChangeNicknameModal: React.FC<ChangeNicknameModalProps> = observer(({guildId, user, member}) => {
|
|
const currentUserId = Authentication.currentUserId;
|
|
const isCurrentUser = user.id === currentUserId;
|
|
const handleSave = useCallback(
|
|
async (nick: string | null) => {
|
|
if (isCurrentUser) {
|
|
await GuildMemberCommands.updateProfile(guildId, {nick});
|
|
} else {
|
|
await GuildMemberCommands.update(guildId, user.id, {nick});
|
|
}
|
|
},
|
|
[guildId, user.id, isCurrentUser],
|
|
);
|
|
return (
|
|
<BaseChangeNicknameModal
|
|
currentNick={member.nick || ''}
|
|
displayName={user.displayName}
|
|
onSave={handleSave}
|
|
data-flx="user.change-nickname-modal.base-change-nickname-modal"
|
|
/>
|
|
);
|
|
});
|