Skip to content

Commit 64a71eb

Browse files
committed
chore(workspaces): drop leftover churn and mark the legacy last-active column for contract
1 parent bf2c905 commit 64a71eb

3 files changed

Lines changed: 20 additions & 21 deletions

File tree

‎apps/sim/hooks/queries/workspace.test.tsx‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ function seedList(queryClient: QueryClient, pinnedWorkspaceIds: string[]) {
7878
workspaces: [],
7979
lastActiveWorkspaceId: null,
8080
pinnedWorkspaceIds,
81-
recentWorkspaceIds: [],
8281
creationPolicy: null,
8382
})
8483
}

‎apps/sim/lib/workspaces/list.ts‎

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -125,29 +125,28 @@ export async function listWorkspacesForViewer(params: {
125125
const { userId, activeOrganizationId, scope = 'active' } = params
126126

127127
/** Workspace pins ride along here; see `pinnedResourceTypeSchema` for why. */
128-
const [creationPolicy, accessibleWorkspaces, userSettings, workspacePins, recentIds] =
129-
await Promise.all([
130-
getWorkspaceCreationPolicy({ userId, activeOrganizationId }),
131-
listAccessibleWorkspaceRowsForUser(userId, scope).then((rows) =>
132-
buildWorkspacesWithInviteFlags(rows, userId)
133-
),
134-
db
135-
.select({ lastActiveWorkspaceId: settings.lastActiveWorkspaceId })
136-
.from(settings)
137-
.where(eq(settings.userId, userId))
138-
.limit(1),
139-
db
140-
.select({ resourceId: pinnedItem.resourceId })
141-
.from(pinnedItem)
142-
.where(and(eq(pinnedItem.userId, userId), eq(pinnedItem.resourceType, 'workspace'))),
143-
listRecentWorkspaceIds(userId),
144-
])
145-
const workspaces = sortByVisitRecency(accessibleWorkspaces, recentIds)
146-
const [mostRecent] = workspaces
128+
const [creationPolicy, workspaces, userSettings, workspacePins, recentIds] = await Promise.all([
129+
getWorkspaceCreationPolicy({ userId, activeOrganizationId }),
130+
listAccessibleWorkspaceRowsForUser(userId, scope).then((rows) =>
131+
buildWorkspacesWithInviteFlags(rows, userId)
132+
),
133+
db
134+
.select({ lastActiveWorkspaceId: settings.lastActiveWorkspaceId })
135+
.from(settings)
136+
.where(eq(settings.userId, userId))
137+
.limit(1),
138+
db
139+
.select({ resourceId: pinnedItem.resourceId })
140+
.from(pinnedItem)
141+
.where(and(eq(pinnedItem.userId, userId), eq(pinnedItem.resourceType, 'workspace'))),
142+
listRecentWorkspaceIds(userId),
143+
])
144+
const orderedWorkspaces = sortByVisitRecency(workspaces, recentIds)
145+
const [mostRecent] = orderedWorkspaces
147146
const lastVisitedId = mostRecent && recentIds.includes(mostRecent.id) ? mostRecent.id : null
148147

149148
return {
150-
workspaces,
149+
workspaces: orderedWorkspaces,
151150
/** Visits supersede the settings column, which only predates them. */
152151
lastActiveWorkspaceId: lastVisitedId ?? userSettings[0]?.lastActiveWorkspaceId ?? null,
153152
pinnedWorkspaceIds: workspacePins.map((row) => row.resourceId),

‎packages/db/schema.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1030,6 +1030,7 @@ export const settings = pgTable('settings', {
10301030
copilotAutoAllowedTools: jsonb('copilot_auto_allowed_tools').notNull().default('[]'),
10311031

10321032
// Workspace navigation
1033+
/** contract-pending(after #8284 is fully deployed): drop this column and its settings API fields — `workspace_visit` supersedes it, and the workspace list reads it only as a fallback for users with no visits. */
10331034
lastActiveWorkspaceId: text('last_active_workspace_id'),
10341035

10351036
updatedAt: timestamp('updated_at').notNull().defaultNow(),

0 commit comments

Comments
 (0)