fix: handle errors from Iframely

This commit is contained in:
Apoorv Mishra
2023-07-24 23:04:40 +05:30
parent 81bd68380e
commit bd0240b7a5
4 changed files with 25 additions and 12 deletions

View File

@@ -93,7 +93,7 @@ function HoverPreviewInternal({ element, onClose }: Props) {
React.useEffect(() => {
const card = cardRef.current;
if (data) {
if (data && !data.error) {
startOpenTimer();
if (card) {
@@ -134,7 +134,7 @@ function HoverPreviewInternal({ element, onClose }: Props) {
return <LoadingIndicator />;
}
if (!data) {
if (!data || data.error) {
return null;
}

View File

@@ -1,13 +1,18 @@
import { Unfurl } from "@shared/types";
import { IframelyErrorResponse, Unfurl } from "@shared/types";
function presentUnfurl(data: any): Unfurl {
return {
function presentUnfurl(data: any): Unfurl | IframelyErrorResponse {
return !data.error
? {
url: data.url,
type: data.type,
title: data.title,
description: data.description,
thumbnailUrl: data.thumbnail_url,
meta: data.meta,
}
: {
status: data.status,
error: data.error,
};
}

View File

@@ -63,6 +63,9 @@ router.post(
}
const data = await Iframely.unfurl(url);
if (data.error) {
ctx.response.status = data.status;
}
ctx.body = presentUnfurl(data);
}
);

View File

@@ -225,5 +225,10 @@ export type Unfurl<T = OEmbedType> = {
meta?: Record<string, string>;
};
export type IframelyErrorResponse = {
status: number;
error: string;
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export type ProsemirrorData = Record<string, any>;