From c9c3d508145cdc3ec770ed8a2feb0f31eae1cb57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?nicole=20miko=C5=82ajczyk?= Date: Sun, 1 Mar 2026 21:07:48 +0100 Subject: [PATCH] nicolium: add a way to use the new timeline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: nicole mikołajczyk --- packages/nicolium/src/columns/timeline.tsx | 123 ++++++++++++++++++ .../src/features/preferences/index.tsx | 23 ++++ packages/nicolium/src/locales/en.json | 2 + .../src/pages/timelines/home-timeline.tsx | 96 ++++++++------ .../nicolium/src/schemas/frontend-settings.ts | 2 + 5 files changed, 203 insertions(+), 43 deletions(-) create mode 100644 packages/nicolium/src/columns/timeline.tsx 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 ( +