From b85c398a7be1a92730b6fcaea900395847967ca5 Mon Sep 17 00:00:00 2001 From: ved015 <122012786+ved015@users.noreply.github.com> Date: Mon, 17 Aug 2026 21:09:10 +0530 Subject: [PATCH] fix(extension): preserve default space in picker --- apps/browser-extension/utils/api.ts | 8 +++-- apps/browser-extension/utils/projects.ts | 40 ++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 apps/browser-extension/utils/projects.ts diff --git a/apps/browser-extension/utils/api.ts b/apps/browser-extension/utils/api.ts index 59cef3d7..f7254401 100644 --- a/apps/browser-extension/utils/api.ts +++ b/apps/browser-extension/utils/api.ts @@ -2,6 +2,7 @@ * API service for supermemory browser extension */ import { API_ENDPOINTS } from "./constants" +import { normalizeProjects } from "./projects" import { bearerToken, defaultProject, userData } from "./storage" import { buildSearchMemoriesBody } from "./search-request" import { @@ -62,9 +63,10 @@ async function makeAuthenticatedRequest( */ export async function fetchProjects(): Promise { try { - const response = - await makeAuthenticatedRequest("/v3/projects") - return response.projects + const response = await makeAuthenticatedRequest( + "/v3/projects", + ) + return normalizeProjects(response?.projects) } catch (error) { console.error("Failed to fetch projects:", error) throw error diff --git a/apps/browser-extension/utils/projects.ts b/apps/browser-extension/utils/projects.ts new file mode 100644 index 00000000..a70abb3c --- /dev/null +++ b/apps/browser-extension/utils/projects.ts @@ -0,0 +1,40 @@ +import { CONTAINER_TAGS } from "./constants" +import type { Project } from "./types" + +type ApiProject = Omit & { + name?: string | null +} + +const defaultProject: Project = { + id: "default", + name: "Default Project", + containerTag: CONTAINER_TAGS.DEFAULT_PROJECT, + createdAt: "", + updatedAt: "", + documentCount: 0, +} + +export function normalizeProjects( + projects: ApiProject[] | null | undefined, +): Project[] { + const normalizedProjects = (Array.isArray(projects) ? projects : []).map( + (project) => ({ + ...project, + name: + project.name?.trim() || + (project.containerTag === CONTAINER_TAGS.DEFAULT_PROJECT + ? defaultProject.name + : project.containerTag), + }), + ) + + if ( + normalizedProjects.some( + (project) => project.containerTag === CONTAINER_TAGS.DEFAULT_PROJECT, + ) + ) { + return normalizedProjects + } + + return [defaultProject, ...normalizedProjects] +}