54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
import {
|
|
BookmarkTypes,
|
|
ZBookmark,
|
|
ZBookmarkedLink,
|
|
} from "@hoarder/shared/types/bookmarks";
|
|
|
|
import { getAssetUrl } from "./assetUtils";
|
|
|
|
const MAX_LOADING_MSEC = 30 * 1000;
|
|
|
|
export function getBookmarkLinkImageUrl(bookmark: ZBookmarkedLink) {
|
|
if (bookmark.imageAssetId) {
|
|
return { url: getAssetUrl(bookmark.imageAssetId), localAsset: true };
|
|
}
|
|
if (bookmark.screenshotAssetId) {
|
|
return { url: getAssetUrl(bookmark.screenshotAssetId), localAsset: true };
|
|
}
|
|
return bookmark.imageUrl
|
|
? { url: bookmark.imageUrl, localAsset: false }
|
|
: null;
|
|
}
|
|
|
|
export function isBookmarkStillCrawling(bookmark: ZBookmark) {
|
|
return (
|
|
bookmark.content.type == BookmarkTypes.LINK &&
|
|
!bookmark.content.crawledAt &&
|
|
Date.now().valueOf() - bookmark.createdAt.valueOf() < MAX_LOADING_MSEC
|
|
);
|
|
}
|
|
|
|
export function isBookmarkStillTagging(bookmark: ZBookmark) {
|
|
return (
|
|
bookmark.taggingStatus == "pending" &&
|
|
Date.now().valueOf() - bookmark.createdAt.valueOf() < MAX_LOADING_MSEC
|
|
);
|
|
}
|
|
|
|
export function isBookmarkStillLoading(bookmark: ZBookmark) {
|
|
return isBookmarkStillTagging(bookmark) || isBookmarkStillCrawling(bookmark);
|
|
}
|
|
|
|
export function getSourceUrl(bookmark: ZBookmark) {
|
|
if (bookmark.content.type === BookmarkTypes.LINK) {
|
|
return bookmark.content.url;
|
|
}
|
|
if (bookmark.content.type === BookmarkTypes.ASSET) {
|
|
return bookmark.content.sourceUrl ?? null;
|
|
}
|
|
if (bookmark.content.type === BookmarkTypes.TEXT) {
|
|
return bookmark.content.sourceUrl ?? null;
|
|
}
|
|
return null;
|
|
}
|