Skip to content

Commit 3fb5cdc

Browse files
committed
refactor: rename variables for clarity in user-related data handling across services
1 parent f4feea5 commit 3fb5cdc

File tree

8 files changed

+28
-27
lines changed

8 files changed

+28
-27
lines changed

apps/nestjs-backend/src/features/base/base.service.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,23 +129,23 @@ export class BaseService {
129129
orderBy: [{ spaceId: 'asc' }, { order: 'asc' }],
130130
});
131131

132-
const createUserList = await this.prismaService.user.findMany({
132+
const createdUserList = await this.prismaService.user.findMany({
133133
where: { id: { in: baseList.map((base) => base.createdBy) } },
134134
select: { id: true, name: true, avatar: true },
135135
});
136-
const createUserMap = keyBy(createUserList, 'id');
136+
const createdUserMap = keyBy(createdUserList, 'id');
137137

138138
return baseList.map((base) => {
139139
const role = roleMap[base.id] || roleMap[base.spaceId];
140-
const createUser = createUserMap[base.createdBy];
140+
const createdUser = createdUserMap[base.createdBy];
141141
return {
142142
...base,
143143
role,
144144
lastModifiedTime: base.lastModifiedTime?.toISOString(),
145145
createdTime: base.createdTime?.toISOString(),
146146
createdUser: {
147-
...createUser,
148-
avatar: createUser?.avatar && getPublicFullStorageUrl(createUser.avatar),
147+
...(createdUser ?? {}),
148+
avatar: createdUser?.avatar && getPublicFullStorageUrl(createdUser.avatar),
149149
},
150150
};
151151
});

apps/nestjs-backend/src/features/collaborator/collaborator.service.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import type {
1919
} from '@teable/openapi';
2020
import { CollaboratorType, PrincipalType } from '@teable/openapi';
2121
import { Knex } from 'knex';
22-
import { difference, map } from 'lodash';
22+
import { difference, keyBy, map } from 'lodash';
2323
import { InjectModel } from 'nest-knexjs';
2424
import { ClsService } from 'nestjs-cls';
2525
import { CustomHttpException } from '../../custom.exception';
@@ -830,6 +830,12 @@ export class CollaboratorService {
830830
},
831831
},
832832
});
833+
834+
const createdUserList = await this.prismaService.txClient().user.findMany({
835+
where: { id: { in: bases.map((base) => base.createdBy) } },
836+
select: { id: true, name: true, avatar: true },
837+
});
838+
const createdUserMap = keyBy(createdUserList, 'id');
833839
return bases.map((base) => ({
834840
id: base.id,
835841
name: base.name,
@@ -842,9 +848,10 @@ export class CollaboratorService {
842848
createdTime: base.createdTime?.toISOString(),
843849
createdBy: base.createdBy,
844850
createdUser: {
845-
id: base.createdBy,
846-
name: base.createdBy,
847-
avatar: base.createdBy ? getPublicFullStorageUrl(base.createdBy) : null,
851+
...(createdUserMap[base.createdBy] ?? {}),
852+
avatar:
853+
createdUserMap[base.createdBy]?.avatar &&
854+
getPublicFullStorageUrl(createdUserMap[base.createdBy]?.avatar ?? ''),
848855
},
849856
}));
850857
}

apps/nestjs-backend/src/features/space/space.service.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -280,23 +280,23 @@ export class SpaceService {
280280
},
281281
});
282282

283-
const createUserList = await this.prismaService.user.findMany({
283+
const createdUserList = await this.prismaService.user.findMany({
284284
where: { id: { in: baseList.map((base) => base.createdBy) } },
285285
select: { id: true, name: true, avatar: true },
286286
});
287-
const createUserMap = keyBy(createUserList, 'id');
287+
const createdUserMap = keyBy(createdUserList, 'id');
288288

289289
return baseList.map((base) => {
290290
const role = roleMap[base.id] || roleMap[base.spaceId];
291-
const createUser = createUserMap[base.createdBy];
291+
const createdUser = createdUserMap[base.createdBy];
292292
return {
293293
...base,
294294
role,
295295
lastModifiedTime: base.lastModifiedTime?.toISOString(),
296296
createdTime: base.createdTime?.toISOString(),
297297
createdUser: {
298-
...createUser,
299-
avatar: createUser?.avatar && getPublicFullStorageUrl(createUser.avatar),
298+
...createdUser,
299+
avatar: createdUser?.avatar && getPublicFullStorageUrl(createdUser.avatar),
300300
},
301301
};
302302
});

apps/nextjs-app/src/features/app/blocks/space/BaseItem.tsx

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
11
/* eslint-disable jsx-a11y/no-static-element-interactions */
22
/* eslint-disable jsx-a11y/click-events-have-key-events */
33
import { hasPermission } from '@teable/core';
4-
import {
5-
ChevronDown,
6-
ChevronRight,
7-
Database,
8-
DraggableHandle,
9-
MoreHorizontal,
10-
} from '@teable/icons';
4+
import { ChevronDown, ChevronRight, Database, MoreHorizontal } from '@teable/icons';
115
import type { IGetBaseVo } from '@teable/openapi';
126
import { PinType } from '@teable/openapi';
137
import { useLanDayjs } from '@teable/sdk/hooks';
@@ -161,7 +155,9 @@ export const BaseItem: FC<IBaseItemProps> = (props) => {
161155
<AvatarImage src={base.createdUser?.avatar ?? ''} />
162156
<AvatarFallback className="text-xs">{base.createdUser?.name?.slice(0, 1)}</AvatarFallback>
163157
</Avatar>
164-
<span className="truncate text-xs">{base.createdUser?.name}</span>
158+
<span className="truncate text-xs" title={base.createdUser?.name}>
159+
{base.createdUser?.name}
160+
</span>
165161
</div>
166162

167163
{/* Last Opened Column */}

apps/nextjs-app/src/features/app/blocks/space/BaseList.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ export const BaseList = (props: IBaseListProps) => {
123123
<div className="bg-muted">
124124
<BaseNodeTree
125125
mode="view"
126-
emptyText={t('space:baseList.empty')}
126+
emptyText={t('space:baseList.noTables')}
127127
skeleton={
128128
<div className="flex w-full flex-col gap-2 px-2">
129129
<Skeleton className="h-7 w-full" />

apps/nextjs-app/src/features/app/blocks/space/space-side-bar/PinList.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ export const PinList = (props: { className?: string }) => {
100100
innerClassName="flex min-h-0 flex-1 flex-col"
101101
>
102102
<ScrollArea className="flex w-full !border-none px-2 [&>[data-radix-scroll-area-viewport]>div]:!block [&>[data-radix-scroll-area-viewport]>div]:!min-w-0">
103-
<div className="flexmin-h-0 flex-1 flex-col overflow-y-auto">
103+
<div className="flex min-h-0 flex-1 flex-col overflow-y-auto">
104104
{pinListData?.length === 0 && (
105105
<div className="text-center text-xs text-muted-foreground">
106106
{t('space:pin.empty')}

apps/nextjs-app/src/features/app/blocks/trash/SpaceInnerTrashPage.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,13 @@ import { toast } from '@teable/ui-lib/shadcn/ui/sonner';
1818
import dayjs from 'dayjs';
1919
import { IterationCcwIcon } from 'lucide-react';
2020
import { useParams } from 'next/navigation';
21-
import { useRouter } from 'next/router';
2221
import { useTranslation } from 'next-i18next';
2322
import { useCallback, useMemo, useState } from 'react';
2423
import { spaceConfig } from '@/features/i18n/space.config';
2524
import { Collaborator } from '../../components/collaborator-manage/components/Collaborator';
2625

2726
export const SpaceInnerTrashPage = () => {
2827
const { spaceId } = useParams<{ spaceId: string }>();
29-
const router = useRouter();
3028
const isHydrated = useIsHydrated();
3129
const queryClient = useQueryClient();
3230
const { t } = useTranslation(spaceConfig.i18nNamespaces);

apps/nextjs-app/src/features/app/layouts/SharedBaseLayout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { DehydratedState } from '@tanstack/react-query';
2-
import { Component, Database, Home, Users } from '@teable/icons';
2+
import { Component, Database } from '@teable/icons';
33
import type { IUser } from '@teable/sdk';
44
import { NotificationProvider, SessionProvider } from '@teable/sdk';
55
import { AppProvider } from '@teable/sdk/context';

0 commit comments

Comments
 (0)