Skip to main content

BookmarksPort

BookmarksPort provides full CRUD access to the browser's bookmark tree, enabling extensions to read, create, reorganize, and delete bookmarks.

Context

  • Availability: Background
  • Source: packages/ports/src/background/bookmarks/bookmarks.port.ts

Key Methods

  • create(bookmark: WebExtBookmarkCreateArg): Promise<WebExtBookmarkTreeNode> - Create a bookmark or folder.
  • get(idOrIdList: string | string[]): Promise<WebExtBookmarkTreeNode[]> - Retrieve bookmarks by ID.
  • getTree(): Promise<WebExtBookmarkTreeNode[]> - Retrieve the full bookmark tree.
  • search(query: string | { query?: string; title?: string; url?: string }): Promise<WebExtBookmarkTreeNode[]> - Search bookmarks by text or properties.
  • update(id: string, changes: WebExtBookmarkChanges): Promise<WebExtBookmarkTreeNode> - Update a bookmark's title or URL.
  • move(id: string, destination: WebExtBookmarkMoveDestination): Promise<WebExtBookmarkTreeNode> - Move a bookmark to a new parent or index.
  • remove(id: string): Promise<void> - Remove a single bookmark.
  • removeTree(id: string): Promise<void> - Remove a folder and all its contents.

Usage

import { BookmarksPort } from '@hexajs-dev/ports';
import { Injectable, HexaContext } from '@hexajs-dev/common';

@Injectable({ context: HexaContext.Background })
export class BookmarkOrganizerService {
constructor(private readonly bookmarks: BookmarksPort) {}

async archiveByDomain(domain: string, archiveFolderId: string) {
const results = await this.bookmarks.search({ query: domain });
for (const bookmark of results) {
await this.bookmarks.move(bookmark.id, { parentId: archiveFolderId });
}
}
}

API Reference Appendix

Below is the exhaustive, auto-generated technical reference for all types, interfaces, and signatures associated with this API.

Classes

BookmarksPort

import { BookmarksPort } from '@hexajs-dev/ports';
class BookmarksPort { ... }

Methods

create()

create(bookmark: HexaWebBookmarkCreateArg): Promise<HexaWebBookmarkTreeNode>

get()

get(idOrIdList: string | string[]): Promise<HexaWebBookmarkTreeNode[]>

getTree()

getTree(): Promise<HexaWebBookmarkTreeNode[]>

move()

move(id: string, destination: HexaWebBookmarkMoveDestination): Promise<HexaWebBookmarkTreeNode>

onChangedAddListener()

onChangedAddListener(listener: (id: string, changeInfo: HexaWebBookmarkChanges) => void): void

onChangedRemoveListener()

onChangedRemoveListener(listener: (id: string, changeInfo: HexaWebBookmarkChanges) => void): void

onCreatedAddListener()

onCreatedAddListener(listener: (id: string, bookmark: HexaWebBookmarkTreeNode) => void): void

onCreatedRemoveListener()

onCreatedRemoveListener(listener: (id: string, bookmark: HexaWebBookmarkTreeNode) => void): void

onMovedAddListener()

onMovedAddListener(listener: (id: string, moveInfo: {
parentId: string;
index: number;
oldParentId: string;
oldIndex: number;
}) => void): void

onMovedRemoveListener()

onMovedRemoveListener(listener: (id: string, moveInfo: {
parentId: string;
index: number;
oldParentId: string;
oldIndex: number;
}) => void): void

onRemovedAddListener()

onRemovedAddListener(listener: (id: string, removeInfo: HexaWebBookmarkRemoveInfo) => void): void

onRemovedRemoveListener()

onRemovedRemoveListener(listener: (id: string, removeInfo: HexaWebBookmarkRemoveInfo) => void): void

remove()

remove(id: string): Promise<void>

removeTree()

removeTree(id: string): Promise<void>

search()

search(query: string | {
query?: string;
title?: string;
url?: string;
}): Promise<HexaWebBookmarkTreeNode[]>

update()

update(id: string, changes: HexaWebBookmarkChanges): Promise<HexaWebBookmarkTreeNode>