@udus/notion-renderer
Version:

57 lines (56 loc) • 1.77 kB
JavaScript
import { Client, isFullDatabase, isFullPage } from "@notionhq/client";
import { listComments } from "../../comments.js";
import { retrieveDatabase } from "../../database/retrieve.js";
import { retrievePage } from "../../pages/retrieve.js";
export const convertLinkToPageResponseToBlock = async (block, client) => {
switch (block.link_to_page.type) {
case "database_id": {
const { ok, data } = await retrieveDatabase(client, {
database_id: block.link_to_page.database_id,
});
if (!ok) {
return block;
}
if (!isFullDatabase(data)) {
return block;
}
return {
...block,
link_to_page: {
...block.link_to_page,
database: data,
},
};
}
case "page_id": {
const { ok, data } = await retrievePage(client, {
page_id: block.link_to_page.page_id,
});
if (!ok) {
return block;
}
if (!isFullPage(data)) {
return block;
}
return {
...block,
link_to_page: {
...block.link_to_page,
page: data,
},
};
}
case "comment_id": {
const linkedComments = await listComments(client, {
block_id: block.link_to_page.comment_id,
});
return {
...block,
link_to_page: {
...block.link_to_page,
comments: linkedComments,
},
};
}
}
};