diff --git a/src/components/modal-root.tsx b/src/components/modal-root.tsx index 5881612bf..a04f76b7a 100644 --- a/src/components/modal-root.tsx +++ b/src/components/modal-root.tsx @@ -8,8 +8,6 @@ import { cancelReplyCompose } from 'soapbox/actions/compose'; import { cancelEventCompose } from 'soapbox/actions/events'; import { openModal, closeModal } from 'soapbox/actions/modals'; import { useAppDispatch, usePrevious } from 'soapbox/hooks'; -import { queryClient } from 'soapbox/queries/client'; -import { IPolicy, PolicyKeys } from 'soapbox/queries/policies'; import type { ModalType } from 'soapbox/features/ui/components/modal-root'; import type { ReducerCompose } from 'soapbox/reducers/compose'; @@ -114,15 +112,6 @@ const ModalRoot: React.FC = ({ children, onCancel, onClose, type }) })); } else if ((hasComposeContent || hasEventComposeContent) && type === 'CONFIRM') { dispatch(closeModal('CONFIRM')); - } else if (type === 'POLICY') { - // If the user has not accepted the Policy, prevent them - // from closing the Modal. - const pendingPolicy = queryClient.getQueryData(PolicyKeys.policy) as IPolicy; - if (pendingPolicy?.pending_policy_id) { - return; - } - - onClose(); } else { onClose(); } diff --git a/src/features/ui/components/modal-root.tsx b/src/features/ui/components/modal-root.tsx index f43e2ce03..6b975fd5e 100644 --- a/src/features/ui/components/modal-root.tsx +++ b/src/features/ui/components/modal-root.tsx @@ -30,7 +30,6 @@ import { MentionsModal, MissingDescriptionModal, MuteModal, - PolicyModal, ReactionsModal, ReblogsModal, ReplyMentionsModal, @@ -75,7 +74,6 @@ const MODAL_COMPONENTS = { 'MENTIONS': MentionsModal, 'MISSING_DESCRIPTION': MissingDescriptionModal, 'MUTE': MuteModal, - 'POLICY': PolicyModal, 'REACTIONS': ReactionsModal, 'REBLOGS': ReblogsModal, 'REPLY_MENTIONS': ReplyMentionsModal, diff --git a/src/features/ui/components/modals/policy-modal.tsx b/src/features/ui/components/modals/policy-modal.tsx deleted file mode 100644 index 97cdee5bb..000000000 --- a/src/features/ui/components/modals/policy-modal.tsx +++ /dev/null @@ -1,162 +0,0 @@ -import React from 'react'; -import { FormattedMessage } from 'react-intl'; - -import { Text, Button, Modal, Stack, HStack } from 'soapbox/components/ui'; -import { useAppSelector, useSoapboxConfig } from 'soapbox/hooks'; -import { usePendingPolicy, useAcceptPolicy } from 'soapbox/queries/policies'; - -interface IPolicyModal { - onClose: (type: string) => void -} - -const DirectMessageUpdates = () => { - const soapboxConfig = useSoapboxConfig(); - const { links } = soapboxConfig; - - return ( - - - - - - - - - - - - - - - - Direct Messaging - - - - - Yes, direct messages are finally here! - - - - Bring one-on-one conversations from your Feed to your DMs with - messages that automatically delete for your privacy. - - - - - - - - - - - - - - - - - Privacy Policy Updates - - -
    -
  • - - 1 - - - Consolidates previously-separate policies -
  • -
  • - - 2 - - - Reaffirms jurisdiction-specific requirements -
  • -
  • - - 3 - - - Introduces updates regarding ads and direct messages -
  • -
- - {links.get('privacyPolicy') ? ( - - View Privacy Policy - - ) : null} -
-
- ); -}; - -const supportedPolicyIds = ['1']; - -/** Modal to show privacy policy changes that need confirmation. */ -const PolicyModal: React.FC = ({ onClose }) => { - const acceptPolicy = useAcceptPolicy(); - const instance = useAppSelector((state) => state.instance); - - const { data: pendingPolicy, isLoading } = usePendingPolicy(); - - const renderPolicyBody = () => { - switch (pendingPolicy?.pending_policy_id) { - case '1': - return ; - default: - return null; - } - }; - - const handleAccept = () => { - acceptPolicy.mutate({ - policy_id: pendingPolicy?.pending_policy_id as string, - }, { - onSuccess() { - onClose('POLICY'); - }, - }); - }; - - if (isLoading || !pendingPolicy) { - return null; - } - - return ( - - - - - - - {renderPolicyBody()} - - - - - ); -}; - -export { PolicyModal as default, supportedPolicyIds }; diff --git a/src/features/ui/index.tsx b/src/features/ui/index.tsx index 179f123e2..1d53834a2 100644 --- a/src/features/ui/index.tsx +++ b/src/features/ui/index.tsx @@ -8,7 +8,6 @@ import { fetchAnnouncements } from 'soapbox/actions/announcements'; import { fetchCustomEmojis } from 'soapbox/actions/custom-emojis'; import { fetchFilters } from 'soapbox/actions/filters'; import { fetchMarker } from 'soapbox/actions/markers'; -import { openModal } from 'soapbox/actions/modals'; import { expandNotifications } from 'soapbox/actions/notifications'; import { register as registerPushNotifications } from 'soapbox/actions/push-notifications'; import { fetchScheduledStatuses } from 'soapbox/actions/scheduled-statuses'; @@ -38,13 +37,11 @@ import ProfilePage from 'soapbox/pages/profile-page'; import RemoteInstancePage from 'soapbox/pages/remote-instance-page'; import SearchPage from 'soapbox/pages/search-page'; import StatusPage from 'soapbox/pages/status-page'; -import { usePendingPolicy } from 'soapbox/queries/policies'; import { getVapidKey } from 'soapbox/utils/auth'; import { isStandalone } from 'soapbox/utils/state'; import BackgroundShapes from './components/background-shapes'; import FloatingActionButton from './components/floating-action-button'; -import { supportedPolicyIds } from './components/modals/policy-modal'; import Navbar from './components/navbar'; import BundleContainer from './containers/bundle-container'; import { @@ -389,7 +386,6 @@ interface IUI { const UI: React.FC = ({ children }) => { const history = useHistory(); const dispatch = useAppDispatch(); - const { data: pendingPolicy } = usePendingPolicy(); const node = useRef(null); const me = useAppSelector(state => state.me); const { account } = useOwnAccount(); @@ -483,14 +479,6 @@ const UI: React.FC = ({ children }) => { dispatch(registerPushNotifications()); }, [vapidKey]); - useEffect(() => { - if (account && pendingPolicy && supportedPolicyIds.includes(pendingPolicy.pending_policy_id)) { - setTimeout(() => { - dispatch(openModal('POLICY')); - }, 500); - } - }, [pendingPolicy, !!account]); - const shouldHideFAB = (): boolean => { const path = location.pathname; return Boolean(path.match(/^\/posts\/|^\/search|^\/getting-started|^\/chats/)); diff --git a/src/features/ui/util/async-components.ts b/src/features/ui/util/async-components.ts index 120617f49..3bf291c71 100644 --- a/src/features/ui/util/async-components.ts +++ b/src/features/ui/util/async-components.ts @@ -122,10 +122,6 @@ export function AccountModerationModal() { return import('../components/modals/account-moderation-modal/account-moderation-modal'); } -export function PolicyModal() { - return import('../components/modals/policy-modal'); -} - export function MediaGallery() { return import('../../../components/media-gallery'); } diff --git a/src/queries/policies.ts b/src/queries/policies.ts deleted file mode 100644 index fc91705a5..000000000 --- a/src/queries/policies.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { useMutation, useQuery } from '@tanstack/react-query'; - -import { useApi, useFeatures, useOwnAccount } from 'soapbox/hooks'; - -import { queryClient } from './client'; - -export interface IPolicy { - pending_policy_id: string -} - -const PolicyKeys = { - policy: ['policy'] as const, -}; - -function usePendingPolicy() { - const api = useApi(); - const { account } = useOwnAccount(); - const features = useFeatures(); - - const getPolicy = async() => { - const { data } = await api.get('/api/v1/truth/policies/pending'); - - return data; - }; - - return useQuery(PolicyKeys.policy, getPolicy, { - retry: 3, - refetchOnWindowFocus: true, - staleTime: 60000, // 1 minute - cacheTime: Infinity, - enabled: !!account && features.truthPolicies, - }); -} - -function useAcceptPolicy() { - const api = useApi(); - - return useMutation(( - { policy_id }: { policy_id: string }, - ) => api.patch(`/api/v1/truth/policies/${policy_id}/accept`), { - onSuccess() { - queryClient.setQueryData(PolicyKeys.policy, {}); - }, - }); -} - -export { usePendingPolicy, useAcceptPolicy, PolicyKeys }; \ No newline at end of file diff --git a/src/utils/features.ts b/src/utils/features.ts index b479c4611..2beae84e4 100644 --- a/src/utils/features.ts +++ b/src/utils/features.ts @@ -934,13 +934,6 @@ const getInstanceFeatures = (instance: Instance) => { v.software === DITTO, ]), - /** - * Truth Social policies. - * @see GET /api/v1/truth/policies/pending - * @see PATCH /api/v1/truth/policies/:policyId/accept - */ - truthPolicies: v.software === TRUTHSOCIAL, - /** * Whether the backend allows adding users you don't follow to lists. * @see POST /api/v1/lists/:id/accounts