fix: store and populate memberKey for share invite link

This commit is contained in:
Power BI Dev
2026-08-17 18:37:03 +07:00
parent 2a9cf59e55
commit 8e958ea0ed
11 changed files with 91 additions and 55 deletions
+5 -3
View File
@@ -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)}
+22 -10
View File
@@ -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>
)}
+2
View File
@@ -55,6 +55,8 @@ export interface Board {
id: string;
title: string;
role: Role;
memberKey?: string;
memberUrlFragment?: string;
autoMoveStale: boolean;
columns: Column[];
createdAt: string;