/* * Copyright (C) 2026 Fluxer Contributors * * This file is part of Fluxer. * * Fluxer is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Fluxer is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with Fluxer. If not, see . */ import * as GuildMemberActionCreators from '@app/actions/GuildMemberActionCreators'; import {BaseChangeNicknameModal} from '@app/components/modals/BaseChangeNicknameModal'; import type {GuildMemberRecord} from '@app/records/GuildMemberRecord'; import type {UserRecord} from '@app/records/UserRecord'; import AuthenticationStore from '@app/stores/AuthenticationStore'; import {observer} from 'mobx-react-lite'; import type React from 'react'; import {useCallback} from 'react'; interface ChangeNicknameModalProps { guildId: string; user: UserRecord; member: GuildMemberRecord; } export const ChangeNicknameModal: React.FC = observer(({guildId, user, member}) => { const currentUserId = AuthenticationStore.currentUserId; const isCurrentUser = user.id === currentUserId; const handleSave = useCallback( async (nick: string | null) => { if (isCurrentUser) { await GuildMemberActionCreators.updateProfile(guildId, {nick}); } else { await GuildMemberActionCreators.update(guildId, user.id, {nick}); } }, [guildId, user.id, isCurrentUser], ); return ; });