// @ts-nocheck /** * This is an auto generate file from fireback project. * You can use this in order to communicate in backend, it gives you available actions, * and their types * Module: workspaces */ import { FormikHelpers } from "formik"; import React, { useCallback } from "react"; import { useMutation, useQuery, useQueryClient, QueryClient, } from "react-query"; import { UserActions } from "./user-actions"; import * as workspaces from "./index"; import { execApiFn, RemoteRequestOption, IDeleteResponse, core, IResponse, ExecApi, mutationErrorsToFormik, IResponseList, } from "../../core/http-tools"; /** * Gives you formik forms, all mutations, submit actions, and error handling, * and provides internal store for all changes happens through this * for modules */ export function useWorkspaces( { options, query, execFn }: { options: RemoteRequestOption; query?: any }, queryClient: QueryClient, execFn?: ExecApi ) { const caller = execFn ? UserActions.fnExec(execFn(options)) : UserActions.fn(options); const Q = () => caller .startIndex(query?.startIndex) .deep(query?.deep) .itemsPerPage(query?.itemsPerPage) .query(query?.query); // patch user const mutationPatchUser = useMutation< IResponse, IResponse, workspaces.UserEntity >((entity) => { return Q().patchUser(entity); }); // Only entities are having a store in front-end const fnPatchUserUpdater = ( data: IResponseList | undefined, item: IResponse ) => { return []; if (!data) { return { data: { items: [] }, }; } if (data?.data?.items && item.data) { data.data.items = data.data.items.map((t) => { if ( item.data !== undefined && UserActions.isUserEntityEqual(t, item.data) ) { return item.data; } return t; }); } else if (data?.data && item.data) { data.data.items = [item.data, ...(data?.data?.items || [])]; } return data; }; const submitPatchUser = ( values: workspaces.UserEntity, formikProps?: FormikHelpers ): Promise> => { return new Promise((resolve, reject) => { mutationPatchUser.mutate(values, { onSuccess(response: IResponse) { queryClient.setQueriesData>( "*[]workspaces.UserEntity", (data: any) => { if (!(data?.data?.items?.length > 0)) { return data; } data.data.items = data.data.items.map( (item: workspaces.UserEntity) => { if (item.uniqueId === response.data?.uniqueId) { return response.data; } return item; } ); return data; } ); resolve(response); }, onError(error: any) { formikProps?.setErrors(mutationErrorsToFormik(error)); reject(error); }, }); }); }; // post user const mutationPostUser = useMutation< IResponse, IResponse, workspaces.UserEntity >((entity) => { return Q().postUser(entity); }); // Only entities are having a store in front-end const fnPostUserUpdater = ( data: IResponseList | undefined, item: IResponse ) => { return []; if (!data) { return { data: { items: [] }, }; } if (data?.data?.items && item.data) { data.data.items = data.data.items.map((t) => { if ( item.data !== undefined && UserActions.isUserEntityEqual(t, item.data) ) { return item.data; } return t; }); } else if (data?.data && item.data) { data.data.items = [item.data, ...(data?.data?.items || [])]; } return data; }; const submitPostUser = ( values: workspaces.UserEntity, formikProps?: FormikHelpers ): Promise> => { return new Promise((resolve, reject) => { mutationPostUser.mutate(values, { onSuccess(response: IResponse) { queryClient.setQueriesData>( "*[]workspaces.UserEntity", (data: any) => { if (!(data?.data?.items?.length > 0)) { return data; } data.data.items = data.data.items.map( (item: workspaces.UserEntity) => { if (item.uniqueId === response.data?.uniqueId) { return response.data; } return item; } ); return data; } ); resolve(response); }, onError(error: any) { formikProps?.setErrors(mutationErrorsToFormik(error)); reject(error); }, }); }); }; // Deleting an entity const mutationDeleteUser = useMutation< IDeleteResponse, IDeleteResponse, core.DeleteRequest >(() => { return Q().deleteUser(); }); const fnDeleteUserUpdater = ( data: IResponseList | undefined, deleteItemsList: string[] ) => { if (!data) { return { data: { items: [] }, }; } if (data?.data?.items) { data.data.items = data.data.items.filter((t) => { const key = UserActions.getUserEntityPrimaryKey(t); if (!deleteItemsList.includes(key)) { return true; } return false; }); } return data; }; const submitDeleteUser = ( values: string[], formikProps?: FormikHelpers ) => { return new Promise((resolve, reject) => { mutationDeleteUser.mutate(values, { onSuccess(response: IDeleteResponse) { queryClient.setQueryData>( "*[]workspaces.UserEntity", (data) => fnDeleteUserUpdater(data, values) ); resolve(response); }, onError(error: any) { formikProps?.setErrors(mutationErrorsToFormik(error)); reject(error); }, }); }); }; const usersQuery = useQuery( ["*[]workspaces.UserEntity", options], () => Q().getUsers(), { cacheTime: 1000, enabled: !!options?.headers?.authorization, } ); const userByUniqueIdQuery = useQuery( ["*workspaces.UserEntity", options], (uniqueId: string) => Q().getUserByUniqueId(uniqueId), { cacheTime: 1000, enabled: !!options?.headers?.authorization, } ); const exchangeKeyByUniqueIdQuery = useQuery( ["*workspaces.ExchangeKeyInformationDto", options], (uniqueId: string) => Q().getExchangeKeyByUniqueId(uniqueId), { cacheTime: 1000, enabled: !!options?.headers?.authorization, } ); // post authorization const mutationPostAuthorization = useMutation< IResponse, IResponse, core.EmptyRequest >((entity) => { return Q().postAuthorization(entity); }); // Only entities are having a store in front-end const submitPostAuthorization = ( values: core.EmptyRequest, formikProps?: FormikHelpers ): Promise> => { return new Promise((resolve, reject) => { mutationPostAuthorization.mutate(values, { onSuccess(response: IResponse) { queryClient.setQueriesData>( "*[]core.EmptyRequest", (data: any) => { if (!(data?.data?.items?.length > 0)) { return data; } data.data.items = data.data.items.map( (item: core.EmptyRequest) => { if (item.uniqueId === response.data?.uniqueId) { return response.data; } return item; } ); return data; } ); resolve(response); }, onError(error: any) { formikProps?.setErrors(mutationErrorsToFormik(error)); reject(error); }, }); }); }; const profileQuery = useQuery( ["*workspaces.UserEntity", options], () => Q().getprofile(), { cacheTime: 1000, enabled: !!options?.headers?.authorization, } ); // post profile const mutationPostprofile = useMutation< IResponse, IResponse, workspaces.UserProfileEntity >((entity) => { return Q().postprofile(entity); }); // Only entities are having a store in front-end const fnPostprofileUpdater = ( data: IResponseList | undefined, item: IResponse ) => { return []; if (!data) { return { data: { items: [] }, }; } if (data?.data?.items && item.data) { data.data.items = data.data.items.map((t) => { if ( item.data !== undefined && UserActions.isUserProfileEntityEqual(t, item.data) ) { return item.data; } return t; }); } else if (data?.data && item.data) { data.data.items = [item.data, ...(data?.data?.items || [])]; } return data; }; const submitPostprofile = ( values: workspaces.UserProfileEntity, formikProps?: FormikHelpers ): Promise> => { return new Promise((resolve, reject) => { mutationPostprofile.mutate(values, { onSuccess(response: IResponse) { queryClient.setQueriesData< IResponseList >("*[]workspaces.UserProfileEntity", (data: any) => { if (!(data?.data?.items?.length > 0)) { return data; } data.data.items = data.data.items.map( (item: workspaces.UserProfileEntity) => { if (item.uniqueId === response.data?.uniqueId) { return response.data; } return item; } ); return data; }); resolve(response); }, onError(error: any) { formikProps?.setErrors(mutationErrorsToFormik(error)); reject(error); }, }); }); }; // Deleting an entity const mutationDeleteAuthRevoke = useMutation< IDeleteResponse, IDeleteResponse, core.DeleteRequest >(() => { return Q().deleteAuthRevoke(); }); const fnDeleteAuthRevokeUpdater = ( data: IResponseList | undefined, deleteItemsList: string[] ) => { if (!data) { return { data: { items: [] }, }; } if (data?.data?.items) { data.data.items = data.data.items.filter((t) => { const key = UserActions.getTokenPrimaryKey(t); if (!deleteItemsList.includes(key)) { return true; } return false; }); } return data; }; const submitDeleteAuthRevoke = ( values: string[], formikProps?: FormikHelpers ) => { return new Promise((resolve, reject) => { mutationDeleteAuthRevoke.mutate(values, { onSuccess(response: IDeleteResponse) { queryClient.setQueryData>( "*[]workspaces.Token", (data) => fnDeleteAuthRevokeUpdater(data, values) ); resolve(response); }, onError(error: any) { formikProps?.setErrors(mutationErrorsToFormik(error)); reject(error); }, }); }); }; // post preferences const mutationPostPreferences = useMutation< IResponse, IResponse, any >((entity) => { return Q().postPreferences(entity); }); // Only entities are having a store in front-end const submitPostPreferences = ( values: any, formikProps?: FormikHelpers ): Promise> => { return new Promise((resolve, reject) => { mutationPostPreferences.mutate(values, { onSuccess(response: IResponse) { queryClient.setQueriesData>( "map[string]interface {}", (data: any) => { if (!(data?.data?.items?.length > 0)) { return data; } data.data.items = data.data.items.map((item: any) => { if (item.uniqueId === response.data?.uniqueId) { return response.data; } return item; }); return data; } ); resolve(response); }, onError(error: any) { formikProps?.setErrors(mutationErrorsToFormik(error)); reject(error); }, }); }); }; const preferencesQuery = useQuery( ["map[string]interface {}", options], () => Q().getPreferences(), { cacheTime: 1000, enabled: !!options?.headers?.authorization, } ); return { queryClient, mutationPatchUser, submitPatchUser, mutationPostUser, submitPostUser, mutationDeleteUser, submitDeleteUser, usersQuery, userByUniqueIdQuery, exchangeKeyByUniqueIdQuery, mutationPostAuthorization, submitPostAuthorization, profileQuery, mutationPostprofile, submitPostprofile, mutationDeleteAuthRevoke, submitDeleteAuthRevoke, mutationPostPreferences, submitPostPreferences, preferencesQuery, }; }