diff --git a/src/objects/navigation.js b/src/objects/navigation.js index 2beb584..2ef4c9c 100644 --- a/src/objects/navigation.js +++ b/src/objects/navigation.js @@ -7,12 +7,10 @@ export async function importNotionNavigation(env) { const notionProperties = await queryNotionDataSource(env.PROPERTIES_DB); // Transform the incoming pages for the given type const navigationItems = ( - await Promise.all( - notionPages.map(async (item) => transformNavigation(item, "page")), - notionProperties.map(async (item) => - transformNavigation(item, "property") - ) - ) + await Promise.all([ + ...notionPages.map((item) => transformNavigation(item, "page")), + ...notionProperties.map((item) => transformNavigation(item, "property")), + ]) ).filter(Boolean); // Store the updated cache diff --git a/src/utils/icon.js b/src/utils/icon.js index 9d211f1..9be4b9d 100644 --- a/src/utils/icon.js +++ b/src/utils/icon.js @@ -22,13 +22,25 @@ async function processSVG(svgText, cssClass) { } } +function notionIconUrl(iconObj) { + return ( + iconObj?.external?.url || + iconObj?.file?.url || + iconObj?.custom_emoji?.url || + iconObj?.url + ); +} + // processNotionIcon fetches and validates the SVG export async function processNotionIcon(iconObj, cssClass = "") { - if (iconObj?.external?.url && iconObj?.url) { - return undefined; + if (iconObj?.type === "emoji") { + return iconObj.emoji; } - const url = iconObj?.external?.url || iconObj.url; + const url = notionIconUrl(iconObj); + if (!url) { + return undefined; + } const urlObject = new URL(url); diff --git a/src/utils/navigation.js b/src/utils/navigation.js index b0a26c4..fb34940 100644 --- a/src/utils/navigation.js +++ b/src/utils/navigation.js @@ -72,7 +72,11 @@ export async function storeNavigation(env, navigation) { export async function transformNavigation(notionPage, type) { var icon = undefined; if (notionPage.icon) { - icon = await processNotionIcon(notionPage.icon, "th-icon"); + try { + icon = await processNotionIcon(notionPage.icon, "th-icon"); + } catch (error) { + console.error("Error processing navigation icon:", error); + } } const properties = notionPage.properties; const id = notionPage.id;