oxen-website/utils/links.ts

30 lines
762 B
TypeScript

import { Block, Inline } from '@contentful/rich-text-types';
// utils for checking if hyperlinks are for the current site
// are there any links to id's i.e. #mac, #linux, #windows
const protocols = ['https://', 'http://', 'ftp://', 'file://', 'mailto:'];
export function isLocal(url: string) {
let result = true;
if (url[0] === '#' || url.indexOf('localhost:') > 0) {
return result;
}
protocols.forEach(protocol => {
if (url.indexOf(protocol) >= 0) {
result = false;
}
});
return result;
}
export function hasLocalID(node: Block | Inline) {
let id = '';
node.content.forEach(child => {
if (child.nodeType === 'hyperlink' && isLocal(child.data.uri)) {
id = child.data.uri.split('#')[1];
}
});
return id;
}