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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -10,8 +10,8 @@
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=Press+Start+2P&family=Silkscreen:wght@400;700&display=swap" rel="stylesheet">
<script type="module" crossorigin src="/assets/index-D2ZOrmDk.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-COtT48NQ.css">
<script type="module" crossorigin src="/assets/index-h2AVDMMH.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-C1k3Ryr0.css">
</head>
<body class="bg-slate-50 text-slate-900 min-h-screen font-sans antialiased selection:bg-indigo-500 selection:text-white transition-colors duration-200">
<div id="root"></div>
+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;