From a0e45b895106cfe0c3b78e66a3ba9e272984f97a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?nicole=20miko=C5=82ajczyk?= Date: Sun, 15 Mar 2026 13:27:41 +0100 Subject: [PATCH] nicolium: more moves MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: nicole mikołajczyk --- packages/nicolium/src/actions/admin.ts | 25 ------------------- .../nicolium/src/actions/remote-timeline.ts | 22 ---------------- packages/nicolium/src/actions/statuses.ts | 19 ++++++++++++++ .../components/statuses/status-action-bar.tsx | 3 +-- .../components/panels/instance-info-panel.tsx | 22 ++++++++++++---- packages/nicolium/src/features/ui/index.tsx | 2 +- .../hooks/streaming/use-direct-stream.ts | 0 .../hooks/streaming/use-timeline-stream.ts | 0 .../hooks/streaming/use-user-stream.ts | 0 .../src/pages/status-lists/conversations.tsx | 2 +- .../src/queries/timelines/use-timeline.ts | 2 +- 11 files changed, 40 insertions(+), 57 deletions(-) delete mode 100644 packages/nicolium/src/actions/admin.ts delete mode 100644 packages/nicolium/src/actions/remote-timeline.ts rename packages/nicolium/src/{api => }/hooks/streaming/use-direct-stream.ts (100%) rename packages/nicolium/src/{api => }/hooks/streaming/use-timeline-stream.ts (100%) rename packages/nicolium/src/{api => }/hooks/streaming/use-user-stream.ts (100%) diff --git a/packages/nicolium/src/actions/admin.ts b/packages/nicolium/src/actions/admin.ts deleted file mode 100644 index ca89f003f..000000000 --- a/packages/nicolium/src/actions/admin.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { getClient } from '@/api'; -import { queryClient } from '@/queries/client'; -import { queryKeys } from '@/queries/keys'; -import { useComposeStore } from '@/stores/compose'; -import { useModalsStore } from '@/stores/modals'; - -const redactStatus = (statusId: string) => { - const status = queryClient.getQueryData(queryKeys.statuses.show(statusId)); - if (!status) return; - - const poll = status.poll_id - ? queryClient.getQueryData(queryKeys.statuses.polls.show(status.poll_id)) - : undefined; - - return getClient() - .statuses.getStatusSource(statusId) - .then((source) => { - useComposeStore - .getState() - .actions.setComposeToStatus(status, poll, source, false, null, null, true); - useModalsStore.getState().actions.openModal('COMPOSE'); - }); -}; - -export { redactStatus }; diff --git a/packages/nicolium/src/actions/remote-timeline.ts b/packages/nicolium/src/actions/remote-timeline.ts deleted file mode 100644 index ed3f6fe33..000000000 --- a/packages/nicolium/src/actions/remote-timeline.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { changeSetting } from '@/actions/settings'; -import { useSettingsStore } from '@/stores/settings'; - -const getPinnedHosts = () => { - const { settings } = useSettingsStore.getState(); - return settings.remote_timeline.pinnedHosts; -}; - -const pinHost = (host: string) => { - const pinnedHosts = getPinnedHosts(); - changeSetting(['remote_timeline', 'pinnedHosts'], [...pinnedHosts, host]); -}; - -const unpinHost = (host: string) => { - const pinnedHosts = getPinnedHosts(); - changeSetting( - ['remote_timeline', 'pinnedHosts'], - pinnedHosts.filter((value) => value !== host), - ); -}; - -export { pinHost, unpinHost }; diff --git a/packages/nicolium/src/actions/statuses.ts b/packages/nicolium/src/actions/statuses.ts index 8d7364958..0a4980812 100644 --- a/packages/nicolium/src/actions/statuses.ts +++ b/packages/nicolium/src/actions/statuses.ts @@ -170,6 +170,24 @@ const editStatus = (statusId: string) => { }); }; +const redactStatus = (statusId: string) => { + const status = queryClient.getQueryData(queryKeys.statuses.show(statusId)); + if (!status) return; + + const poll = status.poll_id + ? queryClient.getQueryData(queryKeys.statuses.polls.show(status.poll_id)) + : undefined; + + return getClient() + .statuses.getStatusSource(statusId) + .then((source) => { + useComposeStore + .getState() + .actions.setComposeToStatus(status, poll, source, false, null, null, true); + useModalsStore.getState().actions.openModal('COMPOSE'); + }); +}; + const fetchStatus = (statusId: string, intl?: IntlShape) => { const params = intl && useSettingsStore.getState().settings.autoTranslate @@ -224,6 +242,7 @@ const toggleMuteStatus = (status: Pick) => export { createStatus, editStatus, + redactStatus, fetchStatus, toggleMuteStatus, decrementReplyCount, diff --git a/packages/nicolium/src/components/statuses/status-action-bar.tsx b/packages/nicolium/src/components/statuses/status-action-bar.tsx index 253f67fc5..217560755 100644 --- a/packages/nicolium/src/components/statuses/status-action-bar.tsx +++ b/packages/nicolium/src/components/statuses/status-action-bar.tsx @@ -3,9 +3,8 @@ import { type Account, type CustomEmoji, GroupRoles } from 'pl-api'; import React, { useCallback, useMemo } from 'react'; import { defineMessages, useIntl } from 'react-intl'; -import { redactStatus } from '@/actions/admin'; import { changeSetting } from '@/actions/settings'; -import { editStatus, toggleMuteStatus } from '@/actions/statuses'; +import { editStatus, toggleMuteStatus, redactStatus } from '@/actions/statuses'; import DropdownMenu from '@/components/dropdown-menu'; import StatusActionButton from '@/components/statuses/status-action-button'; import { useCurrentAccount } from '@/contexts/current-account-context'; diff --git a/packages/nicolium/src/features/ui/components/panels/instance-info-panel.tsx b/packages/nicolium/src/features/ui/components/panels/instance-info-panel.tsx index 2b68a5b57..415084eb7 100644 --- a/packages/nicolium/src/features/ui/components/panels/instance-info-panel.tsx +++ b/packages/nicolium/src/features/ui/components/panels/instance-info-panel.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { useIntl, defineMessages } from 'react-intl'; -import { pinHost, unpinHost } from '@/actions/remote-timeline'; +import { changeSetting } from '@/actions/settings'; import Widget from '@/components/ui/widget'; import { useRemoteInstance } from '@/queries/instance/use-remote-instance'; import { useSettings } from '@/stores/settings'; @@ -22,10 +22,22 @@ const InstanceInfoPanel: React.FC = ({ host }) => { const settings = useSettings(); const remoteInstance = useRemoteInstance(host); - const pinned = settings.remote_timeline.pinnedHosts.includes(host); + const pinnedHosts = settings.remote_timeline.pinnedHosts; + const isPinned = pinnedHosts.includes(host); + + const pinHost = (host: string) => { + changeSetting(['remote_timeline', 'pinnedHosts'], [...pinnedHosts, host]); + }; + + const unpinHost = (host: string) => { + changeSetting( + ['remote_timeline', 'pinnedHosts'], + pinnedHosts.filter((value) => value !== host), + ); + }; const handlePinHost = () => { - if (!pinned) { + if (!isPinned) { pinHost(host); } else { unpinHost(host); @@ -39,11 +51,11 @@ const InstanceInfoPanel: React.FC = ({ host }) => { title={remoteInstance.host} onActionClick={handlePinHost} actionIcon={ - pinned + isPinned ? require('@phosphor-icons/core/regular/push-pin-slash.svg') : require('@phosphor-icons/core/regular/push-pin.svg') } - actionTitle={intl.formatMessage(pinned ? messages.unpinHost : messages.pinHost, { host })} + actionTitle={intl.formatMessage(isPinned ? messages.unpinHost : messages.pinHost, { host })} /> ); }; diff --git a/packages/nicolium/src/features/ui/index.tsx b/packages/nicolium/src/features/ui/index.tsx index fa31eed14..da2fe374c 100644 --- a/packages/nicolium/src/features/ui/index.tsx +++ b/packages/nicolium/src/features/ui/index.tsx @@ -4,11 +4,11 @@ import React, { Suspense, useEffect, useRef } from 'react'; import { Toaster } from 'react-hot-toast'; import { register as registerPushNotifications } from '@/actions/push-notifications/registerer'; -import { useUserStream } from '@/api/hooks/streaming/use-user-stream'; import SidebarNavigation from '@/components/navigation/sidebar-navigation'; import ThumbNavigation from '@/components/navigation/thumb-navigation'; import Layout from '@/components/ui/layout'; import { useCurrentAccount } from '@/contexts/current-account-context'; +import { useUserStream } from '@/hooks/streaming/use-user-stream'; import { useClient } from '@/hooks/use-client'; import { useDraggedFiles } from '@/hooks/use-dragged-files'; import { useFeatures } from '@/hooks/use-features'; diff --git a/packages/nicolium/src/api/hooks/streaming/use-direct-stream.ts b/packages/nicolium/src/hooks/streaming/use-direct-stream.ts similarity index 100% rename from packages/nicolium/src/api/hooks/streaming/use-direct-stream.ts rename to packages/nicolium/src/hooks/streaming/use-direct-stream.ts diff --git a/packages/nicolium/src/api/hooks/streaming/use-timeline-stream.ts b/packages/nicolium/src/hooks/streaming/use-timeline-stream.ts similarity index 100% rename from packages/nicolium/src/api/hooks/streaming/use-timeline-stream.ts rename to packages/nicolium/src/hooks/streaming/use-timeline-stream.ts diff --git a/packages/nicolium/src/api/hooks/streaming/use-user-stream.ts b/packages/nicolium/src/hooks/streaming/use-user-stream.ts similarity index 100% rename from packages/nicolium/src/api/hooks/streaming/use-user-stream.ts rename to packages/nicolium/src/hooks/streaming/use-user-stream.ts diff --git a/packages/nicolium/src/pages/status-lists/conversations.tsx b/packages/nicolium/src/pages/status-lists/conversations.tsx index 3a181fc4e..26f0d6252 100644 --- a/packages/nicolium/src/pages/status-lists/conversations.tsx +++ b/packages/nicolium/src/pages/status-lists/conversations.tsx @@ -1,9 +1,9 @@ import React from 'react'; import { defineMessages, useIntl } from 'react-intl'; -import { useDirectStream } from '@/api/hooks/streaming/use-direct-stream'; import Column from '@/components/ui/column'; import ConversationsList from '@/features/conversations/components/conversations-list'; +import { useDirectStream } from '@/hooks/streaming/use-direct-stream'; const messages = defineMessages({ title: { id: 'column.direct', defaultMessage: 'Direct messages' }, diff --git a/packages/nicolium/src/queries/timelines/use-timeline.ts b/packages/nicolium/src/queries/timelines/use-timeline.ts index 0414c71b4..a9d6b5587 100644 --- a/packages/nicolium/src/queries/timelines/use-timeline.ts +++ b/packages/nicolium/src/queries/timelines/use-timeline.ts @@ -1,6 +1,6 @@ import { useCallback, useEffect, useMemo, useRef } from 'react'; -import { useTimelineStream } from '@/api/hooks/streaming/use-timeline-stream'; +import { useTimelineStream } from '@/hooks/streaming/use-timeline-stream'; import { importEntities } from '@/queries/utils/import-entities'; import { useTimelinesStore,