pl-fe: wip valibot migration

Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
This commit is contained in:
marcin mikołajczak
2024-10-16 17:30:05 +02:00
parent a521c9044d
commit 905e1626a4
29 changed files with 75 additions and 63 deletions

View File

@ -5,6 +5,7 @@ import {
type AdminCreateAnnouncementParams,
type AdminUpdateAnnouncementParams,
} from 'pl-api';
import * as v from 'valibot';
import { useClient } from 'pl-fe/hooks';
import { normalizeAnnouncement, AdminAnnouncement } from 'pl-fe/normalizers';
@ -36,7 +37,7 @@ const useAnnouncements = () => {
retry: false,
onSuccess: (data) =>
queryClient.setQueryData(['admin', 'announcements'], (prevResult: ReadonlyArray<AdminAnnouncement>) =>
[...prevResult, adminAnnouncementSchema.parse(data)],
[...prevResult, v.parse(adminAnnouncementSchema, data)],
),
onSettled: () => userAnnouncements.refetch(),
});
@ -50,7 +51,7 @@ const useAnnouncements = () => {
retry: false,
onSuccess: (data) =>
queryClient.setQueryData(['admin', 'announcements'], (prevResult: ReadonlyArray<AdminAnnouncement>) =>
prevResult.map((announcement) => announcement.id === data.id ? adminAnnouncementSchema.parse(data) : announcement),
prevResult.map((announcement) => announcement.id === data.id ? v.parse(adminAnnouncementSchema, data) : announcement),
),
onSettled: () => userAnnouncements.refetch(),
});

View File

@ -1,11 +1,12 @@
import { useMutation, useQuery } from '@tanstack/react-query';
import { announcementReactionSchema, type AnnouncementReaction } from 'pl-api';
import * as v from 'valibot';
import { useClient } from 'pl-fe/hooks';
import { type Announcement, normalizeAnnouncement } from 'pl-fe/normalizers';
import { queryClient } from 'pl-fe/queries/client';
const updateReaction = (reaction: AnnouncementReaction, count: number, me?: boolean, overwrite?: boolean) => announcementReactionSchema.parse({
const updateReaction = (reaction: AnnouncementReaction, count: number, me?: boolean, overwrite?: boolean) => v.parse(announcementReactionSchema, {
...reaction,
me: typeof me === 'boolean' ? me : reaction.me,
count: overwrite ? count : (reaction.count + count),
@ -18,7 +19,7 @@ const updateReactions = (reactions: AnnouncementReaction[], name: string, count:
reactions = reactions.map(reaction => reaction.name === name ? updateReaction(reaction, count, me, overwrite) : reaction);
}
return [...reactions, updateReaction(announcementReactionSchema.parse({ name }), count, me, overwrite)];
return [...reactions, updateReaction(v.parse(announcementReactionSchema, { name }), count, me, overwrite)];
};
const useAnnouncements = () => {

View File

@ -1,4 +1,5 @@
import { instanceSchema } from 'pl-api';
import * as v from 'valibot';
import { __stub } from 'pl-fe/api';
import { buildGroup } from 'pl-fe/jest/factory';
@ -8,7 +9,7 @@ import { useGroups } from './useGroups';
const group = buildGroup({ id: '1', display_name: 'soapbox' });
const store = {
instance: instanceSchema.parse({
instance: v.parse(instanceSchema, {
version: '3.4.1 (compatible; TruthSocial 1.0.0+unreleased)',
}),
};

View File

@ -1,10 +1,11 @@
import { useMutation, useQuery } from '@tanstack/react-query';
import { type InteractionPolicies, interactionPoliciesSchema } from 'pl-api';
import * as v from 'valibot';
import { useClient, useFeatures, useLoggedIn } from 'pl-fe/hooks';
import { queryClient } from 'pl-fe/queries/client';
const emptySchema = interactionPoliciesSchema.parse({});
const emptySchema = v.parse(interactionPoliciesSchema, {});
const useInteractionPolicies = () => {
const client = useClient();