diff --git a/src/actions/mrf.ts b/src/actions/mrf.ts index 359d7711f..509bdb8fc 100644 --- a/src/actions/mrf.ts +++ b/src/actions/mrf.ts @@ -1,4 +1,4 @@ -import { Map as ImmutableMap, Set as ImmutableSet } from 'immutable'; +import { Set as ImmutableSet } from 'immutable'; import ConfigDB from 'soapbox/utils/config-db'; @@ -7,9 +7,9 @@ import { fetchConfig, updateConfig } from './admin'; import type { MRFSimple } from 'soapbox/schemas/pleroma'; import type { AppDispatch, RootState } from 'soapbox/store'; -const simplePolicyMerge = (simplePolicy: MRFSimple, host: string, restrictions: ImmutableMap) => { +const simplePolicyMerge = (simplePolicy: MRFSimple, host: string, restrictions: Record) => { const entries = Object.entries(simplePolicy).map(([key, hosts]) => { - const isRestricted = restrictions.get(key); + const isRestricted = restrictions[key]; if (isRestricted) { return [key, ImmutableSet(hosts).add(host).toJS()]; @@ -21,7 +21,7 @@ const simplePolicyMerge = (simplePolicy: MRFSimple, host: string, restrictions: return Object.fromEntries(entries); }; -const updateMrf = (host: string, restrictions: ImmutableMap) => +const updateMrf = (host: string, restrictions: Record) => (dispatch: AppDispatch, getState: () => RootState) => dispatch(fetchConfig()) .then(() => { diff --git a/src/features/ui/components/modals/edit-federation-modal.tsx b/src/features/ui/components/modals/edit-federation-modal.tsx index 4b102e8ef..646439612 100644 --- a/src/features/ui/components/modals/edit-federation-modal.tsx +++ b/src/features/ui/components/modals/edit-federation-modal.tsx @@ -30,24 +30,25 @@ const EditFederationModal: React.FC = ({ host, onClose }) const getRemoteInstance = useCallback(makeGetRemoteInstance(), []); const remoteInstance = useAppSelector(state => getRemoteInstance(state, host)); - const [data, setData] = useState({} as any); + const [data, setData] = useState>({}); useEffect(() => { - setData(remoteInstance.get('federation')); + setData(remoteInstance.get('federation') as Record); }, [remoteInstance]); const handleDataChange = (key: string): React.ChangeEventHandler => { return ({ target }) => { - setData(data.set(key, target.checked)); + setData({ ...data, [key]: target.checked }); }; }; const handleMediaRemoval: React.ChangeEventHandler = ({ target: { checked } }) => { - const newData = data.merge({ + const newData = { + ...data, avatar_removal: checked, banner_removal: checked, media_removal: checked, - }); + }; setData(newData); }; diff --git a/src/utils/config-db.ts b/src/utils/config-db.ts index 5faf18163..4dbf3c163 100644 --- a/src/utils/config-db.ts +++ b/src/utils/config-db.ts @@ -9,7 +9,7 @@ import trimStart from 'lodash/trimStart'; import { type MRFSimple, mrfSimpleSchema } from 'soapbox/schemas/pleroma'; export type Config = ImmutableMap; -export type Policy = ImmutableMap; +export type Policy = Record; const find = ( configs: ImmutableList, @@ -40,15 +40,15 @@ const toSimplePolicy = (configs: ImmutableList): MRFSimple => { }; const fromSimplePolicy = (simplePolicy: Policy): ImmutableList => { - const mapper = (hosts: ImmutableList, key: string) => fromJS({ tuple: [`:${key}`, hosts.toJS()] }); + const mapper = ([key, hosts]: [key: string, hosts: ImmutableList]) => fromJS({ tuple: [`:${key}`, hosts] }); - const value = simplePolicy.map(mapper).toList(); + const value = Object.entries(simplePolicy).map(mapper); return ImmutableList([ ImmutableMap({ group: ':pleroma', key: ':mrf_simple', - value, + value: ImmutableList(value), }), ]); };