Skip to content

Commit add4090

Browse files
committed
feat: add createdTime field to service responses and update sorting logic in BaseList component
1 parent 1d1cfc1 commit add4090

File tree

5 files changed

+30
-11
lines changed

5 files changed

+30
-11
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ export class BaseService {
105105
spaceId: true,
106106
icon: true,
107107
createdBy: true,
108+
createdTime: true,
108109
lastModifiedTime: true,
109110
},
110111
where: {
@@ -141,6 +142,7 @@ export class BaseService {
141142
...base,
142143
role,
143144
lastModifiedTime: base.lastModifiedTime?.toISOString(),
145+
createdTime: base.createdTime?.toISOString(),
144146
createdUser: {
145147
...createUser,
146148
avatar: createUser?.avatar && getPublicFullStorageUrl(createUser.avatar),

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -839,6 +839,7 @@ export class CollaboratorService {
839839
spaceName: base.space?.name,
840840
collaboratorType: CollaboratorType.Base,
841841
lastModifiedTime: base.lastModifiedTime?.toISOString(),
842+
createdTime: base.createdTime?.toISOString(),
842843
createdBy: base.createdBy,
843844
createdUser: {
844845
id: base.createdBy,

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ export class SpaceService {
269269
icon: true,
270270
createdBy: true,
271271
lastModifiedTime: true,
272+
createdTime: true,
272273
},
273274
where: {
274275
spaceId,
@@ -292,6 +293,7 @@ export class SpaceService {
292293
...base,
293294
role,
294295
lastModifiedTime: base.lastModifiedTime?.toISOString(),
296+
createdTime: base.createdTime?.toISOString(),
295297
createdUser: {
296298
...createUser,
297299
avatar: createUser?.avatar && getPublicFullStorageUrl(createUser.avatar),

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

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,31 @@ export const BaseList = (props: IBaseListProps) => {
4545
};
4646
});
4747

48+
/**
49+
* 1. Both have lastVisitTime: compare by lastVisitTime (recent first)
50+
* 2. One has lastVisitTime: prioritize the one with lastVisitTime
51+
* 3. Both have lastModifiedTime: compare by lastModifiedTime (recent first)
52+
* 4. One has lastModifiedTime: prioritize the one with lastModifiedTime
53+
* 5. Finally, sort by createdTime (recent first)
54+
*/
4855
return withTime.sort((a, b) => {
49-
const aTime = a.lastVisitTime
50-
? new Date(a.lastVisitTime).getTime()
51-
: a.lastModifiedTime
52-
? new Date(a.lastModifiedTime).getTime()
53-
: Number.NEGATIVE_INFINITY;
54-
const bTime = b.lastVisitTime
55-
? new Date(b.lastVisitTime).getTime()
56-
: b.lastModifiedTime
57-
? new Date(b.lastModifiedTime).getTime()
58-
: Number.NEGATIVE_INFINITY;
59-
return bTime - aTime;
56+
if (a.lastVisitTime && b.lastVisitTime) {
57+
return new Date(b.lastVisitTime).getTime() - new Date(a.lastVisitTime).getTime();
58+
}
59+
60+
if (a.lastVisitTime && !b.lastVisitTime) return -1;
61+
if (!a.lastVisitTime && b.lastVisitTime) return 1;
62+
63+
if (a.lastModifiedTime && b.lastModifiedTime) {
64+
return new Date(b.lastModifiedTime).getTime() - new Date(a.lastModifiedTime).getTime();
65+
}
66+
67+
if (a.lastModifiedTime && !b.lastModifiedTime) return -1;
68+
if (!a.lastModifiedTime && b.lastModifiedTime) return 1;
69+
70+
const aCreated = a.createdTime ? new Date(a.createdTime).getTime() : 0;
71+
const bCreated = b.createdTime ? new Date(b.createdTime).getTime() : 0;
72+
return bCreated - aCreated;
6073
});
6174
}, [baseIds, allBaseMap, lastVisitBaseMap]);
6275

packages/openapi/src/base/get.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export const getBaseItemSchema = z.object({
1717
restrictedAuthority: z.boolean().optional(),
1818
enabledAuthority: z.boolean().optional(),
1919
lastModifiedTime: z.string().nullable().optional(),
20+
createdTime: z.string().nullable().optional(),
2021
createdBy: z.string(),
2122
createdUser: z
2223
.object({

0 commit comments

Comments
 (0)