diff --git a/e2e/layout/tab_bar.spec.ts b/e2e/layout/tab_bar.spec.ts index c5a3d7e5c..c064dbf57 100644 --- a/e2e/layout/tab_bar.spec.ts +++ b/e2e/layout/tab_bar.spec.ts @@ -117,3 +117,17 @@ test("Search works when dismissing a tab", async ({ page, context }) => { await app.openAndClickNoteActionMenu("Search in note"); await expect(app.findAndReplaceWidget).toBeVisible(); }); + +test("New tab displays workspaces", async ({ page, context }) => { + const app = new App(page, context); + await app.goto(); + + const workspaceNotesEl = app.currentNoteSplitContent.locator(".workspace-notes"); + await expect(workspaceNotesEl).toBeVisible(); + expect(workspaceNotesEl).toContainText("Personal"); + expect(workspaceNotesEl).toContainText("Work"); + await expect(workspaceNotesEl.locator(".bx.bxs-user")).toBeVisible(); + await expect(workspaceNotesEl.locator(".bx.bx-briefcase-alt")).toBeVisible(); + + await app.closeAllTabs(); +}); diff --git a/integration-tests/db/document.db b/integration-tests/db/document.db index c9f96195b..c02b60d34 100644 Binary files a/integration-tests/db/document.db and b/integration-tests/db/document.db differ diff --git a/src/public/app/widgets/type_widgets/empty.ts b/src/public/app/widgets/type_widgets/empty.ts index 231f16fbe..2f90b5159 100644 --- a/src/public/app/widgets/type_widgets/empty.ts +++ b/src/public/app/widgets/type_widgets/empty.ts @@ -99,7 +99,7 @@ export default class EmptyTypeWidget extends TypeWidget { super.doRender(); } - async doRefresh(note: FNote) { + async doRefresh() { const workspaceNotes = await searchService.searchForNotes("#workspace #!template"); this.$workspaceNotes.empty(); diff --git a/src/public/app/widgets/type_widgets/type_widget.ts b/src/public/app/widgets/type_widgets/type_widget.ts index 02257b19e..3a437e109 100644 --- a/src/public/app/widgets/type_widgets/type_widget.ts +++ b/src/public/app/widgets/type_widgets/type_widget.ts @@ -3,6 +3,7 @@ import appContext, { type EventData, type EventNames } from "../../components/ap import type FNote from "../../entities/fnote.js"; import type NoteDetailWidget from "../note_detail.js"; import type SpacedUpdate from "../../services/spaced_update.js"; +import type EmptyTypeWidget from "./empty.js"; /** * The base class for all the note types. @@ -33,8 +34,12 @@ export default abstract class TypeWidget extends NoteContextAwareWidget { } else { this.toggleInt(true); - if (this.note) { + // Avoid passing nullable this.note down to doRefresh(). + if (thisWidgetType !== "empty" && this.note) { await this.doRefresh(this.note); + } else if (thisWidgetType === "empty") { + // EmptyTypeWidget is a special case, since it's used for a new tab where there's no note. + await (this as unknown as EmptyTypeWidget).doRefresh(); } this.triggerEvent("noteDetailRefreshed", { ntxId: this.noteContext?.ntxId });