From dd53efabea6b8af36892df397145d1aa808a497d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?nicole=20miko=C5=82ajczyk?= Date: Thu, 26 Feb 2026 22:01:54 +0100 Subject: [PATCH] nicolium: move more stuff around MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: nicole mikołajczyk --- packages/pl-fe/src/actions/frontend-config.ts | 2 +- .../chats/components/chat-message-list.tsx | 7 +++++-- .../chats/components/chat-message.tsx | 3 +-- .../components/crypto-address-input.tsx | 2 +- .../components/footer-link-input.tsx | 2 +- .../components/promo-panel-input.tsx | 2 +- .../pl-fe-config/components/site-preview.tsx | 2 +- .../settings/components/setting-toggle.tsx | 2 +- packages/pl-fe/src/hooks/use-theme-css.ts | 2 +- .../pl-fe/src/normalizers/chat-message.ts | 14 ------------- .../pl-fe/src/normalizers/notification.ts | 20 ------------------- .../src/pages/dashboard/frontend-config.tsx | 2 +- .../src/pages/dashboard/theme-editor.tsx | 2 +- packages/pl-fe/src/queries/chats.ts | 14 ++++++++++++- packages/pl-fe/src/queries/keys.ts | 2 +- .../notifications/use-notifications.ts | 17 +++++++++++++++- .../pl-fe/src/reducers/frontend-config.ts | 2 +- .../frontend-config.ts | 2 +- .../settings.ts => frontend-settings.ts} | 2 +- packages/pl-fe/src/stores/settings.ts | 2 +- packages/pl-fe/src/utils/chats.ts | 2 +- packages/pl-fe/src/utils/timelines.ts | 2 +- 22 files changed, 51 insertions(+), 56 deletions(-) delete mode 100644 packages/pl-fe/src/normalizers/chat-message.ts delete mode 100644 packages/pl-fe/src/normalizers/notification.ts rename packages/pl-fe/src/{normalizers => schemas}/frontend-config.ts (98%) rename packages/pl-fe/src/schemas/{pl-fe/settings.ts => frontend-settings.ts} (99%) diff --git a/packages/pl-fe/src/actions/frontend-config.ts b/packages/pl-fe/src/actions/frontend-config.ts index d9cebfc6d..cffd0c18d 100644 --- a/packages/pl-fe/src/actions/frontend-config.ts +++ b/packages/pl-fe/src/actions/frontend-config.ts @@ -2,7 +2,7 @@ import { createSelector } from 'reselect'; import * as v from 'valibot'; import { getHost } from '@/actions/instance'; -import { frontendConfigSchema } from '@/normalizers/frontend-config'; +import { frontendConfigSchema } from '@/schemas/frontend-config'; import KVStore from '@/storage/kv-store'; import { useSettingsStore } from '@/stores/settings'; diff --git a/packages/pl-fe/src/features/chats/components/chat-message-list.tsx b/packages/pl-fe/src/features/chats/components/chat-message-list.tsx index 12fedfadf..7a0956505 100644 --- a/packages/pl-fe/src/features/chats/components/chat-message-list.tsx +++ b/packages/pl-fe/src/features/chats/components/chat-message-list.tsx @@ -10,11 +10,14 @@ import Stack from '@/components/ui/stack'; import Text from '@/components/ui/text'; import PlaceholderChatMessage from '@/features/placeholder/components/placeholder-chat-message'; import { useRelationshipQuery } from '@/queries/accounts/use-relationship'; -import { useChatMessages, useMarkChatAsRead } from '@/queries/chats'; +import { + useChatMessages, + useMarkChatAsRead, + type ChatMessage as ChatMessageEntity, +} from '@/queries/chats'; import ChatMessage from './chat-message'; -import type { ChatMessage as ChatMessageEntity } from '@/normalizers/chat-message'; import type { Chat } from 'pl-api'; const messages = defineMessages({ diff --git a/packages/pl-fe/src/features/chats/components/chat-message.tsx b/packages/pl-fe/src/features/chats/components/chat-message.tsx index 2686fbc37..7df9fef34 100644 --- a/packages/pl-fe/src/features/chats/components/chat-message.tsx +++ b/packages/pl-fe/src/features/chats/components/chat-message.tsx @@ -11,13 +11,12 @@ import Stack from '@/components/ui/stack'; import Text from '@/components/ui/text'; import { MediaGallery } from '@/features/ui/util/async-components'; import { useAppSelector } from '@/hooks/use-app-selector'; -import { useDeleteChatMessage } from '@/queries/chats'; +import { useDeleteChatMessage, type ChatMessage as ChatMessageEntity } from '@/queries/chats'; import { useModalsActions } from '@/stores/modals'; import { stripHTML } from '@/utils/html'; import { onlyEmoji } from '@/utils/rich-content'; import type { Menu as IMenu } from '@/components/dropdown-menu'; -import type { ChatMessage as ChatMessageEntity } from '@/normalizers/chat-message'; import type { Chat } from 'pl-api'; const messages = defineMessages({ diff --git a/packages/pl-fe/src/features/pl-fe-config/components/crypto-address-input.tsx b/packages/pl-fe/src/features/pl-fe-config/components/crypto-address-input.tsx index 1321d09ff..9b41ef09c 100644 --- a/packages/pl-fe/src/features/pl-fe-config/components/crypto-address-input.tsx +++ b/packages/pl-fe/src/features/pl-fe-config/components/crypto-address-input.tsx @@ -5,7 +5,7 @@ import HStack from '@/components/ui/hstack'; import Input from '@/components/ui/input'; import type { StreamfieldComponent } from '@/components/ui/streamfield'; -import type { CryptoAddress } from '@/normalizers/frontend-config'; +import type { CryptoAddress } from '@/schemas/frontend-config'; const messages = defineMessages({ ticker: { diff --git a/packages/pl-fe/src/features/pl-fe-config/components/footer-link-input.tsx b/packages/pl-fe/src/features/pl-fe-config/components/footer-link-input.tsx index c8851da06..c8095706a 100644 --- a/packages/pl-fe/src/features/pl-fe-config/components/footer-link-input.tsx +++ b/packages/pl-fe/src/features/pl-fe-config/components/footer-link-input.tsx @@ -5,7 +5,7 @@ import HStack from '@/components/ui/hstack'; import Input from '@/components/ui/input'; import type { StreamfieldComponent } from '@/components/ui/streamfield'; -import type { FooterItem } from '@/normalizers/frontend-config'; +import type { FooterItem } from '@/schemas/frontend-config'; const messages = defineMessages({ label: { diff --git a/packages/pl-fe/src/features/pl-fe-config/components/promo-panel-input.tsx b/packages/pl-fe/src/features/pl-fe-config/components/promo-panel-input.tsx index a98021632..2040fde89 100644 --- a/packages/pl-fe/src/features/pl-fe-config/components/promo-panel-input.tsx +++ b/packages/pl-fe/src/features/pl-fe-config/components/promo-panel-input.tsx @@ -7,7 +7,7 @@ import Input from '@/components/ui/input'; import IconPicker from './icon-picker'; import type { StreamfieldComponent } from '@/components/ui/streamfield'; -import type { PromoPanelItem } from '@/normalizers/frontend-config'; +import type { PromoPanelItem } from '@/schemas/frontend-config'; const messages = defineMessages({ icon: { id: 'frontend_config.promo_panel.meta_fields.icon_placeholder', defaultMessage: 'Icon' }, diff --git a/packages/pl-fe/src/features/pl-fe-config/components/site-preview.tsx b/packages/pl-fe/src/features/pl-fe-config/components/site-preview.tsx index d03645f08..674621d86 100644 --- a/packages/pl-fe/src/features/pl-fe-config/components/site-preview.tsx +++ b/packages/pl-fe/src/features/pl-fe-config/components/site-preview.tsx @@ -7,7 +7,7 @@ import BackgroundShapes from '@/features/ui/components/background-shapes'; import { useSystemTheme } from '@/hooks/use-system-theme'; import { useThemeCss } from '@/hooks/use-theme-css'; -import type { FrontendConfig } from '@/normalizers/frontend-config'; +import type { FrontendConfig } from '@/schemas/frontend-config'; interface ISitePreview { /** Raw pl-fe configuration. */ diff --git a/packages/pl-fe/src/features/settings/components/setting-toggle.tsx b/packages/pl-fe/src/features/settings/components/setting-toggle.tsx index 32b242039..f953217a4 100644 --- a/packages/pl-fe/src/features/settings/components/setting-toggle.tsx +++ b/packages/pl-fe/src/features/settings/components/setting-toggle.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Toggle from '@/components/ui/toggle'; -import type { Settings } from '@/schemas/pl-fe/settings'; +import type { Settings } from '@/schemas/frontend-settings'; interface ISettingToggle { /** Unique identifier for the Toggle. */ diff --git a/packages/pl-fe/src/hooks/use-theme-css.ts b/packages/pl-fe/src/hooks/use-theme-css.ts index b56872c8d..71cf725a3 100644 --- a/packages/pl-fe/src/hooks/use-theme-css.ts +++ b/packages/pl-fe/src/hooks/use-theme-css.ts @@ -6,7 +6,7 @@ import { generateAccent, generateThemeCss } from '@/utils/theme'; import { useFrontendConfig } from './use-frontend-config'; -import type { FrontendConfig } from '@/normalizers/frontend-config'; +import type { FrontendConfig } from '@/schemas/frontend-config'; const DEFAULT_COLORS = { success: { diff --git a/packages/pl-fe/src/normalizers/chat-message.ts b/packages/pl-fe/src/normalizers/chat-message.ts deleted file mode 100644 index 49bf3ce41..000000000 --- a/packages/pl-fe/src/normalizers/chat-message.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { ChatMessage as BaseChatMessage } from 'pl-api'; - -const normalizeChatMessage = ( - chatMessage: BaseChatMessage & { pending?: boolean; deleting?: boolean }, -) => ({ - type: 'message' as const, - pending: false, - deleting: false, - ...chatMessage, -}); - -type ChatMessage = ReturnType; - -export { normalizeChatMessage, type ChatMessage }; diff --git a/packages/pl-fe/src/normalizers/notification.ts b/packages/pl-fe/src/normalizers/notification.ts deleted file mode 100644 index 98fe0318b..000000000 --- a/packages/pl-fe/src/normalizers/notification.ts +++ /dev/null @@ -1,20 +0,0 @@ -import omit from 'lodash/omit'; - -import type { Notification as BaseNotification, NotificationGroup } from 'pl-api'; - -const normalizeNotification = (notification: BaseNotification): NotificationGroup => ({ - ...omit(notification, ['account', 'status', 'target']), - group_key: notification.id, - notifications_count: 1, - most_recent_notification_id: notification.id, - page_min_id: notification.id, - page_max_id: notification.id, - latest_page_notification_at: notification.created_at, - sample_account_ids: [notification.account.id], - // @ts-expect-error - status_id: notification.status?.id, - // @ts-expect-error - target_id: notification.target?.id, -}); - -export { normalizeNotification }; diff --git a/packages/pl-fe/src/pages/dashboard/frontend-config.tsx b/packages/pl-fe/src/pages/dashboard/frontend-config.tsx index 310f314bc..1706278d0 100644 --- a/packages/pl-fe/src/pages/dashboard/frontend-config.tsx +++ b/packages/pl-fe/src/pages/dashboard/frontend-config.tsx @@ -33,7 +33,7 @@ import { frontendConfigSchema, promoPanelItemSchema, type FrontendConfig, -} from '@/normalizers/frontend-config'; +} from '@/schemas/frontend-config'; import toast from '@/toast'; const messages = defineMessages({ diff --git a/packages/pl-fe/src/pages/dashboard/theme-editor.tsx b/packages/pl-fe/src/pages/dashboard/theme-editor.tsx index ead825806..ab93386d9 100644 --- a/packages/pl-fe/src/pages/dashboard/theme-editor.tsx +++ b/packages/pl-fe/src/pages/dashboard/theme-editor.tsx @@ -17,7 +17,7 @@ import { useAppDispatch } from '@/hooks/use-app-dispatch'; import { useAppSelector } from '@/hooks/use-app-selector'; import { useFrontendConfig } from '@/hooks/use-frontend-config'; import { normalizeColors } from '@/hooks/use-theme-css'; -import { frontendConfigSchema } from '@/normalizers/frontend-config'; +import { frontendConfigSchema } from '@/schemas/frontend-config'; import toast from '@/toast'; import { download } from '@/utils/download'; diff --git a/packages/pl-fe/src/queries/chats.ts b/packages/pl-fe/src/queries/chats.ts index 8e0712589..933384228 100644 --- a/packages/pl-fe/src/queries/chats.ts +++ b/packages/pl-fe/src/queries/chats.ts @@ -21,7 +21,6 @@ import { useClient } from '@/hooks/use-client'; import { useFeatures } from '@/hooks/use-features'; import { useLoggedIn } from '@/hooks/use-logged-in'; import { useOwnAccount } from '@/hooks/use-own-account'; -import { type ChatMessage, normalizeChatMessage } from '@/normalizers/chat-message'; import { reOrderChatListItems } from '@/utils/chats'; import { flattenPages, updatePageItem } from '@/utils/queries'; @@ -29,6 +28,17 @@ import { useRelationshipQuery } from './accounts/use-relationship'; import { queryClient } from './client'; import { queryKeys } from './keys'; +const normalizeChatMessage = ( + chatMessage: BaseChatMessage & { pending?: boolean; deleting?: boolean }, +) => ({ + type: 'message' as const, + pending: false, + deleting: false, + ...chatMessage, +}); + +type ChatMessage = ReturnType; + const useChatMessages = (chat: Chat) => { const client = useClient(); const isBlocked = !!useRelationshipQuery(chat?.account.id).data?.blocked_by; @@ -270,6 +280,7 @@ const useDeleteChatMessage = (chatId: string) => { }; export { + normalizeChatMessage, useChat, useMarkChatAsRead, useCreateChatMessage, @@ -277,4 +288,5 @@ export { useDeleteChatMessage, useChats, useChatMessages, + type ChatMessage, }; diff --git a/packages/pl-fe/src/queries/keys.ts b/packages/pl-fe/src/queries/keys.ts index 1178c7298..b3775823f 100644 --- a/packages/pl-fe/src/queries/keys.ts +++ b/packages/pl-fe/src/queries/keys.ts @@ -1,4 +1,5 @@ import type { MinifiedScrobble } from './accounts/account-scrobble'; +import type { ChatMessage } from './chats'; import type { MinifiedGroupMember } from './groups/use-group-members'; import type { FilterType } from './notifications/use-notifications'; import type { DraftStatus } from './statuses/use-draft-statuses'; @@ -12,7 +13,6 @@ import type { MinifiedAdminReport, MinifiedConversation, } from './utils/minify-list'; -import type { ChatMessage } from '@/normalizers/chat-message'; import type { DataTag, InfiniteData } from '@tanstack/react-query'; import type { Account, diff --git a/packages/pl-fe/src/queries/notifications/use-notifications.ts b/packages/pl-fe/src/queries/notifications/use-notifications.ts index 5b99de4ac..3306e9019 100644 --- a/packages/pl-fe/src/queries/notifications/use-notifications.ts +++ b/packages/pl-fe/src/queries/notifications/use-notifications.ts @@ -1,5 +1,6 @@ import { useInfiniteQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import 'intl-pluralrules'; +import omit from 'lodash/omit'; import { useCallback, useEffect } from 'react'; import { useIntl } from 'react-intl'; @@ -12,7 +13,6 @@ import { useAppDispatch } from '@/hooks/use-app-dispatch'; import { useAppSelector } from '@/hooks/use-app-selector'; import { useClient } from '@/hooks/use-client'; import { useLoggedIn } from '@/hooks/use-logged-in'; -import { normalizeNotification } from '@/normalizers/notification'; import { appendFollowRequest } from '@/queries/accounts/use-follow-requests'; import { queryClient } from '@/queries/client'; import { makePaginatedResponseQueryOptions } from '@/queries/utils/make-paginated-response-query-options'; @@ -43,6 +43,21 @@ const FILTER_TYPES = { type FilterType = keyof typeof FILTER_TYPES; +const normalizeNotification = (notification: Notification): NotificationGroup => ({ + ...omit(notification, ['account', 'status', 'target']), + group_key: notification.id, + notifications_count: 1, + most_recent_notification_id: notification.id, + page_min_id: notification.id, + page_max_id: notification.id, + latest_page_notification_at: notification.created_at, + sample_account_ids: [notification.account.id], + // @ts-expect-error + status_id: notification.status?.id, + // @ts-expect-error + target_id: notification.target?.id, +}); + const useActiveFilter = () => useSettingsStore((state) => state.settings.notifications.quickFilter.active); diff --git a/packages/pl-fe/src/reducers/frontend-config.ts b/packages/pl-fe/src/reducers/frontend-config.ts index d65e4dbf5..bfd8b829d 100644 --- a/packages/pl-fe/src/reducers/frontend-config.ts +++ b/packages/pl-fe/src/reducers/frontend-config.ts @@ -9,7 +9,7 @@ import { FRONTEND_CONFIG_REQUEST_FAIL, } from '../actions/frontend-config'; -import type { FrontendConfig } from '@/normalizers/frontend-config'; +import type { FrontendConfig } from '@/schemas/frontend-config'; import type { PleromaConfig } from 'pl-api'; const initialState: Partial = {}; diff --git a/packages/pl-fe/src/normalizers/frontend-config.ts b/packages/pl-fe/src/schemas/frontend-config.ts similarity index 98% rename from packages/pl-fe/src/normalizers/frontend-config.ts rename to packages/pl-fe/src/schemas/frontend-config.ts index b8e33cb95..2c74c110c 100644 --- a/packages/pl-fe/src/normalizers/frontend-config.ts +++ b/packages/pl-fe/src/schemas/frontend-config.ts @@ -1,7 +1,7 @@ import trimStart from 'lodash/trimStart'; import * as v from 'valibot'; -import { settingsSchema } from '@/schemas/pl-fe/settings'; +import { settingsSchema } from '@/schemas/frontend-settings'; import { coerceObject, filteredArray } from '@/schemas/utils'; const promoPanelItemSchema = coerceObject({ diff --git a/packages/pl-fe/src/schemas/pl-fe/settings.ts b/packages/pl-fe/src/schemas/frontend-settings.ts similarity index 99% rename from packages/pl-fe/src/schemas/pl-fe/settings.ts rename to packages/pl-fe/src/schemas/frontend-settings.ts index b5b029ee9..3f7bf2bc6 100644 --- a/packages/pl-fe/src/schemas/pl-fe/settings.ts +++ b/packages/pl-fe/src/schemas/frontend-settings.ts @@ -2,7 +2,7 @@ import * as v from 'valibot'; import { locales } from '@/messages'; -import { coerceObject } from '../utils'; +import { coerceObject } from './utils'; const skinToneSchema = v.picklist([1, 2, 3, 4, 5, 6]); diff --git a/packages/pl-fe/src/stores/settings.ts b/packages/pl-fe/src/stores/settings.ts index 44b0be65d..41ba5c6bb 100644 --- a/packages/pl-fe/src/stores/settings.ts +++ b/packages/pl-fe/src/stores/settings.ts @@ -4,7 +4,7 @@ import * as v from 'valibot'; import { create } from 'zustand'; import { mutative } from 'zustand-mutative'; -import { settingsSchema, type Settings } from '@/schemas/pl-fe/settings'; +import { settingsSchema, type Settings } from '@/schemas/frontend-settings'; import KVStore from '@/storage/kv-store'; import toast from '@/toast'; import { diff --git a/packages/pl-fe/src/utils/chats.ts b/packages/pl-fe/src/utils/chats.ts index 650926be1..9b8ebb6de 100644 --- a/packages/pl-fe/src/utils/chats.ts +++ b/packages/pl-fe/src/utils/chats.ts @@ -1,6 +1,6 @@ import sumBy from 'lodash/sumBy'; -import { normalizeChatMessage } from '@/normalizers/chat-message'; +import { normalizeChatMessage } from '@/queries/chats'; import { queryClient } from '@/queries/client'; import { queryKeys } from '@/queries/keys'; diff --git a/packages/pl-fe/src/utils/timelines.ts b/packages/pl-fe/src/utils/timelines.ts index fb310686e..d3fefb206 100644 --- a/packages/pl-fe/src/utils/timelines.ts +++ b/packages/pl-fe/src/utils/timelines.ts @@ -1,5 +1,5 @@ import type { Status } from '@/normalizers/status'; -import type { Settings } from '@/schemas/pl-fe/settings'; +import type { Settings } from '@/schemas/frontend-settings'; const shouldFilter = ( status: Pick,