diff --git a/packages/nicolium/src/columns/timeline.tsx b/packages/nicolium/src/columns/timeline.tsx new file mode 100644 index 000000000..7f84e6fc5 --- /dev/null +++ b/packages/nicolium/src/columns/timeline.tsx @@ -0,0 +1,123 @@ +import clsx from 'clsx'; +import React from 'react'; + +import LoadMore from '@/components/load-more'; +import ScrollableList from '@/components/scrollable-list'; +import Status from '@/components/statuses/status'; +import Tombstone from '@/components/statuses/tombstone'; +import PlaceholderStatus from '@/features/placeholder/components/placeholder-status'; +import { useStatus } from '@/queries/statuses/use-status'; +import { type TimelineEntry, useHomeTimeline } from '@/queries/timelines/use-home-timeline'; + +import type { FilterContextType } from '@/queries/settings/use-filters'; + +interface ITimelineStatus { + id: string; + contextType?: FilterContextType; + isConnectedTop?: boolean; + isConnectedBottom?: boolean; + onMoveUp?: (id: string) => void; + onMoveDown?: (id: string) => void; +} + +/** Status with reply-connector in threads. */ +const TimelineStatus: React.FC = (props): React.JSX.Element => { + const { id, isConnectedTop, isConnectedBottom } = props; + + const statusQuery = useStatus(id, { withFilteredResults: true }); + + if (statusQuery.data?.deleted) { + return ( +
+ +
+ ); + } + + const renderConnector = (): React.JSX.Element | null => { + const isConnected = isConnectedTop || isConnectedBottom; + + if (!isConnected) return null; + + return ( +