Dev #3
No files matched your search
@@ -529,6 +529,8 @@ export const SharedListsView: React.FC<SharedListsViewProps> = ({ onRefreshGloba
|
|||||||
const isShared =
|
const isShared =
|
||||||
(activeSpace.shares && activeSpace.shares.length > 0) ||
|
(activeSpace.shares && activeSpace.shares.length > 0) ||
|
||||||
(activeSpace.members && activeSpace.members.length > 1);
|
(activeSpace.members && activeSpace.members.length > 1);
|
||||||
|
const ownerMember = activeSpace.members?.find((m) => m.role === 'owner' || m.userId === activeSpace.ownerId);
|
||||||
|
const ownerDisplayName = activeSpace.ownerName || ownerMember?.displayName || ownerMember?.email || 'Eigentümer';
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex items-center gap-1.5">
|
<div className="flex items-center gap-1.5">
|
||||||
@@ -551,7 +553,7 @@ export const SharedListsView: React.FC<SharedListsViewProps> = ({ onRefreshGloba
|
|||||||
title="Teilen & Berechtigungen öffnen"
|
title="Teilen & Berechtigungen öffnen"
|
||||||
>
|
>
|
||||||
<Users className="w-2.5 h-2.5" />
|
<Users className="w-2.5 h-2.5" />
|
||||||
<span>Geteilt von {activeSpace.ownerName || 'Eigentümer'}</span>
|
<span>Geteilt von {ownerDisplayName}</span>
|
||||||
</button>
|
</button>
|
||||||
)
|
)
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -948,11 +948,14 @@ export const TasksView: React.FC<TasksViewProps> = ({
|
|||||||
{/* Right Header Section: Sharing Badge, Icon-Only Button & View Switcher */}
|
{/* Right Header Section: Sharing Badge, Icon-Only Button & View Switcher */}
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
{currentSelectedList && (() => {
|
{currentSelectedList && (() => {
|
||||||
const isOwner = !currentSelectedList.ownerId || currentSelectedList.ownerId === currentUser?.id;
|
const listOwnerId = currentSelectedList.ownerId || currentSelectedList.userId;
|
||||||
|
const isOwner = currentSelectedList.isOwner !== false && (!listOwnerId || listOwnerId === currentUser?.id);
|
||||||
const sharesCount = (currentSelectedList.shares?.length || 0) > 0
|
const sharesCount = (currentSelectedList.shares?.length || 0) > 0
|
||||||
? currentSelectedList.shares.length
|
? currentSelectedList.shares.length
|
||||||
: (currentSelectedList.members?.filter((m) => m.userId !== currentSelectedList.ownerId).length || 0);
|
: (currentSelectedList.members?.filter((m) => m.userId !== listOwnerId).length || 0);
|
||||||
const isShared = sharesCount > 0 || Boolean(currentSelectedList.teamId) || ((currentSelectedList.members?.length || 0) > 1);
|
const isShared = sharesCount > 0 || Boolean(currentSelectedList.teamId) || ((currentSelectedList.members?.length || 0) > 1);
|
||||||
|
const ownerMember = currentSelectedList.members?.find((m) => m.role === 'owner' || m.userId === listOwnerId);
|
||||||
|
const ownerDisplayName = currentSelectedList.ownerName || ownerMember?.displayName || ownerMember?.email || 'Eigentümer';
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex items-center gap-1.5">
|
<div className="flex items-center gap-1.5">
|
||||||
@@ -975,7 +978,7 @@ export const TasksView: React.FC<TasksViewProps> = ({
|
|||||||
title="Teilen & Berechtigungen öffnen"
|
title="Teilen & Berechtigungen öffnen"
|
||||||
>
|
>
|
||||||
<Users className="w-2.5 h-2.5" />
|
<Users className="w-2.5 h-2.5" />
|
||||||
<span>Geteilt von {currentSelectedList.ownerName || 'Eigentümer'}</span>
|
<span>Geteilt von {ownerDisplayName}</span>
|
||||||
</button>
|
</button>
|
||||||
)
|
)
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -4512,7 +4512,7 @@ export const WorkspaceView: React.FC<WorkspaceViewProps> = ({
|
|||||||
) : (
|
) : (
|
||||||
<div className="space-y-1.5 max-h-56 overflow-y-auto">
|
<div className="space-y-1.5 max-h-56 overflow-y-auto">
|
||||||
{docShares.map((share) => {
|
{docShares.map((share) => {
|
||||||
const isTeam = share.targetType === 'team' || Boolean(share.teamId) || String(share.targetId || '').startsWith('team_');
|
const isTeam = share.targetType === 'team' || Boolean((share as any).teamId) || String(share.targetId || '').startsWith('team_');
|
||||||
const targetKey = share.targetId || share.userId || share.id;
|
const targetKey = share.targetId || share.userId || share.id;
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import {
|
|||||||
SharedList,
|
SharedList,
|
||||||
Space,
|
Space,
|
||||||
SpaceMember,
|
SpaceMember,
|
||||||
|
SpaceShare,
|
||||||
SystemSettings,
|
SystemSettings,
|
||||||
Team,
|
Team,
|
||||||
TaskList,
|
TaskList,
|
||||||
|
|||||||
@@ -95,6 +95,7 @@ export interface TaskList {
|
|||||||
spaceName?: string;
|
spaceName?: string;
|
||||||
teamId?: string;
|
teamId?: string;
|
||||||
teamName?: string;
|
teamName?: string;
|
||||||
|
ownerId?: string;
|
||||||
ownerName?: string;
|
ownerName?: string;
|
||||||
isOwner?: boolean;
|
isOwner?: boolean;
|
||||||
members?: TaskListMember[];
|
members?: TaskListMember[];
|
||||||
@@ -165,6 +166,7 @@ export interface DocShare {
|
|||||||
targetType?: 'user' | 'team';
|
targetType?: 'user' | 'team';
|
||||||
targetId?: string;
|
targetId?: string;
|
||||||
targetName?: string;
|
targetName?: string;
|
||||||
|
teamId?: string;
|
||||||
userId?: string;
|
userId?: string;
|
||||||
userEmail?: string;
|
userEmail?: string;
|
||||||
displayName?: string;
|
displayName?: string;
|
||||||
@@ -260,6 +262,7 @@ export interface Space {
|
|||||||
inviteCode: string;
|
inviteCode: string;
|
||||||
isPersonal: boolean;
|
isPersonal: boolean;
|
||||||
ownerId: string;
|
ownerId: string;
|
||||||
|
ownerName?: string;
|
||||||
members?: SpaceMember[];
|
members?: SpaceMember[];
|
||||||
shares?: SpaceShare[];
|
shares?: SpaceShare[];
|
||||||
listsCount: number;
|
listsCount: number;
|
||||||
|
|||||||
Reference in new issue
Block a user