pl-fe: types, preload improvements

Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
nicole mikołajczyk
2025-08-06 16:07:21 +02:00
parent f3e655e6cd
commit ec27c5917a
2 changed files with 9 additions and 4 deletions

View File

@ -44,7 +44,7 @@ const preload = () =>
dispatch(preloadFromMarkup('initial-state', JSON.parse, preloadMastodon));
};
const preloadPleroma = (data: Record<string, any>) => ({
const preloadPleroma = (data: Record<string, any>): PreloadAction => ({
type: PLEROMA_PRELOAD_IMPORT,
data,
});

View File

@ -12,9 +12,14 @@ const initialState: State = { fetched: false, ...v.parse(instanceSchema, {}) };
type State = Instance & { fetched : boolean };
const preloadImport = (state: State, action: Record<string, any>, path: string) => {
const preloadImport = (state: State, action: PreloadAction, path: string): State => {
const instance = action.data[path];
return instance ? v.parse(instanceSchema, instance) : state;
const parsedInstance = v.safeParse(instanceSchema, instance);
if (parsedInstance.success) {
return { fetched: true, ...parsedInstance.output };
}
return state;
};
const getConfigValue = (instanceConfig: Array<any>, key: string) => {
@ -87,7 +92,7 @@ const handleInstanceFetchFail = (state: State, error: any) => {
const instance = (state = initialState, action: AdminActions | InstanceAction | PreloadAction): State => {
switch (action.type) {
case PLEROMA_PRELOAD_IMPORT:
return create(state, (draft) => ({ fetched: true, ...preloadImport(draft, action, '/api/v1/instance') }));
return preloadImport(state, action, '/api/v1/instance');
case INSTANCE_FETCH_SUCCESS:
persistInstance(action.instance);
return { fetched: true, ...action.instance };