Skip to content

Commit b799188

Browse files
Refactor useFolderTree and bookmarkFactory to use BookmarkTreeNode for improved type safety
1 parent d43c287 commit b799188

File tree

2 files changed

+12
-16
lines changed

2 files changed

+12
-16
lines changed

src/composables/useFolderTree.ts

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
11
import { ref } from 'vue';
2+
import type { Browser } from 'wxt/browser';
23

3-
export interface BookmarkNode {
4-
id: string;
5-
title: string;
6-
url?: string;
7-
parentId?: string;
8-
children?: BookmarkNode[];
9-
}
4+
type BookmarkTreeNode = Browser.bookmarks.BookmarkTreeNode;
105

116
export interface BookmarkFolder {
127
id: string;
@@ -21,7 +16,7 @@ export function useFolderTree() {
2116
const folderMap = ref<Map<string, BookmarkFolder>>(new Map());
2217

2318
const buildFolderTree = (
24-
nodes: BookmarkNode[],
19+
nodes: BookmarkTreeNode[],
2520
parentPath = '',
2621
level = 0,
2722
): BookmarkFolder[] => {
@@ -62,7 +57,7 @@ export function useFolderTree() {
6257
const loadFolders = async () => {
6358
try {
6459
const tree = await browser.bookmarks.getTree();
65-
const folders = buildFolderTree(tree as BookmarkNode[]);
60+
const folders = buildFolderTree(tree);
6661

6762
allFolders.value = folders.filter(
6863
(folder) => folder.title !== '' && folder.id !== '0',

src/test-utils/bookmarkFactory.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import type {
2-
BookmarkFolder,
3-
BookmarkNode,
4-
} from '../composables/useFolderTree';
1+
import type { Browser } from 'wxt/browser';
2+
import type { BookmarkFolder } from '../composables/useFolderTree';
3+
4+
type BookmarkTreeNode = Browser.bookmarks.BookmarkTreeNode;
55

66
/**
77
* Factory for creating realistic bookmark test data
@@ -21,7 +21,7 @@ export interface CreateNodeOptions {
2121
title: string;
2222
url?: string;
2323
parentId?: string;
24-
children?: BookmarkNode[];
24+
children?: BookmarkTreeNode[];
2525
}
2626

2727
/**
@@ -38,12 +38,13 @@ export function createFolder(options: CreateFolderOptions): BookmarkFolder {
3838
}
3939

4040
/**
41-
* Creates a single BookmarkNode (raw browser format)
41+
* Creates a single BookmarkTreeNode (raw browser format)
4242
*/
43-
export function createNode(options: CreateNodeOptions): BookmarkNode {
43+
export function createNode(options: CreateNodeOptions): BookmarkTreeNode {
4444
return {
4545
id: options.id || `node-${Math.random().toString(36).substr(2, 9)}`,
4646
title: options.title,
47+
syncing: false, // Default to not synced for test data
4748
url: options.url,
4849
parentId: options.parentId,
4950
children: options.children,

0 commit comments

Comments
 (0)