diff --git a/apps/desktop/layer/renderer/src/components/common/ErrorTooltip.tsx b/apps/desktop/layer/renderer/src/components/common/ErrorTooltip.tsx new file mode 100644 index 000000000..2e5031649 --- /dev/null +++ b/apps/desktop/layer/renderer/src/components/common/ErrorTooltip.tsx @@ -0,0 +1,45 @@ +import { + Tooltip, + TooltipContent, + TooltipPortal, + TooltipTrigger, +} from "@follow/components/ui/tooltip/index.js" +import dayjs from "dayjs" +import { useTranslation } from "react-i18next" + +export function ErrorTooltip({ + errorAt, + errorMessage, + children, + showWhenError = false, +}: { + errorMessage?: string | null + errorAt?: string | null + children: React.ReactNode + showWhenError?: boolean +}) { + const { t } = useTranslation() + if (!errorAt || !errorMessage) { + return showWhenError ? children : null + } + return ( + + {children} + + + + + {t("feed_item.error_since")}{" "} + {dayjs.duration(dayjs(errorAt).diff(dayjs(), "minute"), "minute").humanize(true)} + + {!!errorMessage && ( + + + {errorMessage} + + )} + + + + ) +} diff --git a/apps/desktop/layer/renderer/src/modules/timeline-column/FeedItem.tsx b/apps/desktop/layer/renderer/src/modules/timeline-column/FeedItem.tsx index 4a54bb652..f269283fd 100644 --- a/apps/desktop/layer/renderer/src/modules/timeline-column/FeedItem.tsx +++ b/apps/desktop/layer/renderer/src/modules/timeline-column/FeedItem.tsx @@ -11,13 +11,13 @@ import { EllipsisHorizontalTextWithTooltip } from "@follow/components/ui/typogra import type { FeedViewType } from "@follow/constants" import { nextFrame } from "@follow/utils/dom" import { cn, isKeyForMultiSelectPressed } from "@follow/utils/utils" -import dayjs from "dayjs" import { createElement, memo, use, useCallback, useState } from "react" import { useTranslation } from "react-i18next" import { MenuItemSeparator, MenuItemText, useShowContextMenu } from "~/atoms/context-menu" import { getMainContainerElement } from "~/atoms/dom" import { useGeneralSettingKey } from "~/atoms/settings/general" +import { ErrorTooltip } from "~/components/common/ErrorTooltip" import { useFeedActions, useInboxActions, useListActions } from "~/hooks/biz/useFeedActions" import { useFollow } from "~/hooks/biz/useFollow" import { useNavigateEntry } from "~/hooks/biz/useNavigateEntry" @@ -187,29 +187,10 @@ const FeedItemImpl = ({ view, feedId, className, isPreview }: FeedItemProps) =>