fix: store and populate memberKey for share invite link
This commit is contained in:
@@ -960,9 +960,11 @@ export const BoardView: React.FC<BoardViewProps> = ({ boardId, hash: propHash, o
|
||||
id: board.id,
|
||||
title: board.title,
|
||||
adminKey: role === 'admin' ? key : '***',
|
||||
memberKey: role === 'member' ? key : '***',
|
||||
adminUrlFragment: `/b/${board.id}#admin=${role === 'admin' ? key : ''}`,
|
||||
memberUrlFragment: `/b/${board.id}#member=${role === 'member' ? key : ''}`,
|
||||
memberKey: role === 'admin' ? (board.memberKey || '') : (role === 'member' ? key : '***'),
|
||||
adminUrlFragment: role === 'admin' ? `/b/${board.id}#admin=${key}` : '',
|
||||
memberUrlFragment: role === 'admin'
|
||||
? (board.memberKey ? `/b/${board.id}#member=${board.memberKey}` : `/b/${board.id}#member=`)
|
||||
: `/b/${board.id}#member=${key}`,
|
||||
createdAt: board.createdAt,
|
||||
}}
|
||||
onEnterBoard={() => setShowShareModal(false)}
|
||||
|
||||
@@ -67,14 +67,15 @@ export const Navbar: React.FC<NavbarProps> = ({
|
||||
if (onLanguageChange) onLanguageChange(next);
|
||||
};
|
||||
|
||||
const handleSaveName = (e: React.FormEvent) => {
|
||||
e.preventDefault();
|
||||
if (tempName.trim()) {
|
||||
setUserName(tempName.trim());
|
||||
setProfileState(getUserProfile());
|
||||
setIsEditingName(false);
|
||||
const handleSaveName = (e?: React.FormEvent) => {
|
||||
if (e) e.preventDefault();
|
||||
const trimmed = tempName.trim();
|
||||
if (trimmed) {
|
||||
const updated = setUserName(trimmed);
|
||||
setProfileState(updated);
|
||||
soundFx.playClick();
|
||||
}
|
||||
setIsEditingName(false);
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -118,11 +119,19 @@ export const Navbar: React.FC<NavbarProps> = ({
|
||||
maxLength={18}
|
||||
value={tempName}
|
||||
onChange={(e) => setTempName(e.target.value)}
|
||||
className="bg-white dark:bg-slate-900 border border-indigo-500 text-slate-900 dark:text-indigo-300 text-xs px-2 py-1 rounded-md outline-none w-20 sm:w-32"
|
||||
onKeyDown={(e) => {
|
||||
if (e.key === 'Escape') {
|
||||
setTempName(profile.userName);
|
||||
setIsEditingName(false);
|
||||
}
|
||||
}}
|
||||
className="bg-white dark:bg-slate-900 border border-indigo-500 text-slate-900 dark:text-indigo-300 text-xs px-2 py-1 rounded-md outline-none w-24 sm:w-36"
|
||||
autoFocus
|
||||
onBlur={() => setIsEditingName(false)}
|
||||
/>
|
||||
<button type="submit" className="bg-indigo-600 text-white text-[10px] font-bold px-1.5 py-1 rounded-md">
|
||||
<button
|
||||
type="submit"
|
||||
className="bg-indigo-600 hover:bg-indigo-500 text-white text-[10px] font-bold px-2 py-1.5 rounded-md shadow-sm"
|
||||
>
|
||||
OK
|
||||
</button>
|
||||
</form>
|
||||
@@ -130,13 +139,16 @@ export const Navbar: React.FC<NavbarProps> = ({
|
||||
<button
|
||||
onClick={() => {
|
||||
soundFx.playClick();
|
||||
setTempName(profile.userName);
|
||||
setIsEditingName(true);
|
||||
}}
|
||||
className="flex items-center gap-1 bg-slate-100 dark:bg-slate-900/90 border border-slate-200 dark:border-slate-800 px-2 py-1.5 text-xs text-slate-700 dark:text-slate-200 rounded-lg hover:border-indigo-500 transition-all"
|
||||
title={t('changeName')}
|
||||
>
|
||||
<User size={12} className="text-indigo-600 dark:text-indigo-400 shrink-0" />
|
||||
<span className="max-w-[50px] xs:max-w-[70px] sm:max-w-[120px] truncate text-[11px]">{profile.userName}</span>
|
||||
<span className="max-w-[50px] xs:max-w-[70px] sm:max-w-[120px] truncate text-[11px] font-medium">
|
||||
{profile.userName}
|
||||
</span>
|
||||
<span className="text-[9px] text-slate-400">✏️</span>
|
||||
</button>
|
||||
)}
|
||||
|
||||
@@ -55,6 +55,8 @@ export interface Board {
|
||||
id: string;
|
||||
title: string;
|
||||
role: Role;
|
||||
memberKey?: string;
|
||||
memberUrlFragment?: string;
|
||||
autoMoveStale: boolean;
|
||||
columns: Column[];
|
||||
createdAt: string;
|
||||
|
||||
Reference in New Issue
Block a user