diff --git a/packages/pl-fe/src/api/hooks/admin/useAnnouncements.ts b/packages/pl-fe/src/api/hooks/admin/useAnnouncements.ts index c20dc1ce9..6c2c78ff1 100644 --- a/packages/pl-fe/src/api/hooks/admin/useAnnouncements.ts +++ b/packages/pl-fe/src/api/hooks/admin/useAnnouncements.ts @@ -1,14 +1,13 @@ import { useMutation, useQuery } from '@tanstack/react-query'; import { adminAnnouncementSchema, - type AdminAnnouncement as BaseAdminAnnouncement, + type AdminAnnouncement, type AdminCreateAnnouncementParams, type AdminUpdateAnnouncementParams, } from 'pl-api'; import * as v from 'valibot'; import { useClient } from 'pl-fe/hooks/useClient'; -import { normalizeAnnouncement, AdminAnnouncement } from 'pl-fe/normalizers/announcement'; import { queryClient } from 'pl-fe/queries/client'; import { useAnnouncements as useUserAnnouncements } from '../announcements/useAnnouncements'; @@ -20,7 +19,7 @@ const useAnnouncements = () => { const getAnnouncements = async () => { const data = await client.admin.announcements.getAnnouncements(); - return data.items.map(normalizeAnnouncement); + return data.items; }; const result = useQuery>({ diff --git a/packages/pl-fe/src/api/hooks/announcements/useAnnouncements.ts b/packages/pl-fe/src/api/hooks/announcements/useAnnouncements.ts index d505fd38c..04443affd 100644 --- a/packages/pl-fe/src/api/hooks/announcements/useAnnouncements.ts +++ b/packages/pl-fe/src/api/hooks/announcements/useAnnouncements.ts @@ -1,9 +1,8 @@ import { useMutation, useQuery } from '@tanstack/react-query'; -import { announcementReactionSchema, type AnnouncementReaction } from 'pl-api'; +import { announcementReactionSchema, type AnnouncementReaction, type Announcement } from 'pl-api'; import * as v from 'valibot'; import { useClient } from 'pl-fe/hooks/useClient'; -import { type Announcement, normalizeAnnouncement } from 'pl-fe/normalizers/announcement'; import { queryClient } from 'pl-fe/queries/client'; const updateReaction = (reaction: AnnouncementReaction, count: number, me?: boolean, overwrite?: boolean) => v.parse(announcementReactionSchema, { @@ -25,14 +24,9 @@ const updateReactions = (reactions: AnnouncementReaction[], name: string, count: const useAnnouncements = () => { const client = useClient(); - const getAnnouncements = async () => { - const data = await client.announcements.getAnnouncements(); - return data.map(normalizeAnnouncement); - }; - const { data, ...result } = useQuery>({ queryKey: ['announcements'], - queryFn: getAnnouncements, + queryFn: () => client.announcements.getAnnouncements(), placeholderData: [], }); diff --git a/packages/pl-fe/src/components/announcements/announcement-content.tsx b/packages/pl-fe/src/components/announcements/announcement-content.tsx index d9bfb3408..6c405c166 100644 --- a/packages/pl-fe/src/components/announcements/announcement-content.tsx +++ b/packages/pl-fe/src/components/announcements/announcement-content.tsx @@ -3,8 +3,9 @@ import { useHistory } from 'react-router-dom'; import { getTextDirection } from 'pl-fe/utils/rtl'; -import type { Mention as MentionEntity } from 'pl-api'; -import type { Announcement } from 'pl-fe/normalizers/announcement'; +import { ParsedContent } from '../parsed-content'; + +import type { Announcement, Mention as MentionEntity } from 'pl-api'; interface IAnnouncementContent { announcement: Announcement; @@ -83,8 +84,9 @@ const AnnouncementContent: React.FC = ({ announcement }) = dir={direction} className='text-sm ltr:ml-0 rtl:mr-0' ref={node} - dangerouslySetInnerHTML={{ __html: announcement.contentHtml }} - /> + > + + ); }; diff --git a/packages/pl-fe/src/components/announcements/announcement.tsx b/packages/pl-fe/src/components/announcements/announcement.tsx index d83d01feb..c99cb6385 100644 --- a/packages/pl-fe/src/components/announcements/announcement.tsx +++ b/packages/pl-fe/src/components/announcements/announcement.tsx @@ -10,8 +10,7 @@ import AnnouncementContent from './announcement-content'; import ReactionsBar from './reactions-bar'; import type { Map as ImmutableMap } from 'immutable'; -import type { CustomEmoji } from 'pl-api'; -import type { Announcement as AnnouncementEntity } from 'pl-fe/normalizers/announcement'; +import type { Announcement as AnnouncementEntity, CustomEmoji } from 'pl-api'; interface IAnnouncement { announcement: AnnouncementEntity; diff --git a/packages/pl-fe/src/components/status-action-bar.tsx b/packages/pl-fe/src/components/status-action-bar.tsx index 8e59f9ac1..f4588cfa9 100644 --- a/packages/pl-fe/src/components/status-action-bar.tsx +++ b/packages/pl-fe/src/components/status-action-bar.tsx @@ -156,7 +156,7 @@ const StatusActionBar: React.FC = ({ allow_unauthenticated: allowUnauthenticated, } = instance.pleroma.metadata.translation; - const renderTranslate = (me || allowUnauthenticated) && (allowRemote || status.account.local) && ['public', 'unlisted'].includes(status.visibility) && status.contentHtml.length > 0 && status.language !== null && !knownLanguages.includes(status.language); + const renderTranslate = (me || allowUnauthenticated) && (allowRemote || status.account.local) && ['public', 'unlisted'].includes(status.visibility) && status.content.length > 0 && status.language !== null && !knownLanguages.includes(status.language); const supportsLanguages = (translationLanguages[status.language!]?.includes(intl.locale)); return autoTranslate && features.translations && renderTranslate && supportsLanguages; diff --git a/packages/pl-fe/src/components/status-content.tsx b/packages/pl-fe/src/components/status-content.tsx index 9404c59cc..ad54c7dbf 100644 --- a/packages/pl-fe/src/components/status-content.tsx +++ b/packages/pl-fe/src/components/status-content.tsx @@ -7,6 +7,7 @@ import Icon from 'pl-fe/components/icon'; import Button from 'pl-fe/components/ui/button'; import Stack from 'pl-fe/components/ui/stack'; import Text from 'pl-fe/components/ui/text'; +import Emojify from 'pl-fe/features/emoji/emojify'; import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; import { useSettings } from 'pl-fe/hooks/useSettings'; import { onlyEmoji as isOnlyEmoji } from 'pl-fe/utils/rich-content'; @@ -106,13 +107,13 @@ const StatusContent: React.FC = React.memo(({ maybeSetOnlyEmoji(); }); - const parsedHtml = useMemo( + const content = useMemo( (): string => translatable && status.translation ? status.translation.content! - : (status.contentMapHtml && status.currentLanguage) - ? (status.contentMapHtml[status.currentLanguage] || status.contentHtml) - : status.contentHtml, - [status.contentHtml, status.translation, status.currentLanguage], + : (status.content_map && status.currentLanguage) + ? (status.content_map[status.currentLanguage] || status.content) + : status.content, + [status.content, status.translation, status.currentLanguage], ); useEffect(() => { @@ -121,9 +122,9 @@ const StatusContent: React.FC = React.memo(({ const withSpoiler = status.spoiler_text.length > 0; - const spoilerText = status.spoilerMapHtml && status.currentLanguage - ? status.spoilerMapHtml[status.currentLanguage] || status.spoilerHtml - : status.spoilerHtml; + const spoilerText = status.spoiler_text_map && status.currentLanguage + ? status.spoiler_text_map[status.currentLanguage] || status.spoiler_text + : status.spoiler_text; const direction = getTextDirection(status.search_index); const className = clsx('relative text-ellipsis break-words text-gray-900 focus:outline-none dark:text-gray-100', { @@ -142,11 +143,9 @@ const StatusContent: React.FC = React.memo(({ if (spoilerText) { output.push( - + + + {status.content && expandable && (