Fix view deletion (#2314)

* fix view deletion

* fix view deletion bugs

* improve code readability
This commit is contained in:
bosiraphael
2023-11-02 12:17:50 +01:00
committed by GitHub
parent 8080353075
commit 27b451ee56
4 changed files with 27 additions and 19 deletions

View File

@ -41,6 +41,7 @@ export const ViewBarEffect = () => {
} = useView(); } = useView();
const [searchParams] = useSearchParams(); const [searchParams] = useSearchParams();
const currentViewIdFromUrl = searchParams.get('view');
const { viewType, viewObjectId } = useViewGetStates(viewScopeId); const { viewType, viewObjectId } = useViewGetStates(viewScopeId);
@ -63,7 +64,7 @@ export const ViewBarEffect = () => {
if (!nextViews.length) return; if (!nextViews.length) return;
if (!currentViewId) return changeViewInUrl(nextViews[0].id); if (!currentViewIdFromUrl) return changeViewInUrl(nextViews[0].id);
}, },
), ),
}); });
@ -223,8 +224,6 @@ export const ViewBarEffect = () => {
), ),
}); });
const currentViewIdFromUrl = searchParams.get('view');
useEffect(() => { useEffect(() => {
if (!currentViewIdFromUrl) return; if (!currentViewIdFromUrl) return;
loadView(currentViewIdFromUrl); loadView(currentViewIdFromUrl);

View File

@ -77,11 +77,11 @@ export const useViewSorts = (viewScopeId: string) => {
if (!viewSortIdsToDelete.length) return; if (!viewSortIdsToDelete.length) return;
return Promise.all( return Promise.all(
viewSortIdsToDelete.map((viewFilterId) => viewSortIdsToDelete.map((viewSortId) =>
apolloClient.mutate({ apolloClient.mutate({
mutation: deleteOneMutation, mutation: deleteOneMutation,
variables: { variables: {
idToDelete: viewFilterId, idToDelete: viewSortId,
}, },
}), }),
), ),

View File

@ -7,10 +7,14 @@ import { viewTypeScopedState } from '@/views/states/viewTypeScopedState';
import { View } from '@/views/types/View'; import { View } from '@/views/types/View';
export const useViews = (scopeId: string) => { export const useViews = (scopeId: string) => {
const { updateOneMutation, createOneMutation, findManyQuery } = const {
useFindOneObjectMetadataItem({ updateOneMutation,
objectNameSingular: 'viewV2', createOneMutation,
}); deleteOneMutation,
findManyQuery,
} = useFindOneObjectMetadataItem({
objectNameSingular: 'viewV2',
});
const apolloClient = useApolloClient(); const apolloClient = useApolloClient();
const createView = useRecoilCallback( const createView = useRecoilCallback(
@ -54,11 +58,14 @@ export const useViews = (scopeId: string) => {
}); });
}; };
const deleteView = async (_viewId: string) => { const deleteView = async (viewId: string) => {
// await deleteViewMutation({ await apolloClient.mutate({
// variables: { where: { id: viewId } }, mutation: deleteOneMutation,
// refetchQueries: [getOperationName(GET_VIEWS) ?? ''], variables: {
// }); idToDelete: viewId,
},
refetchQueries: [findManyQuery],
});
}; };
return { return {

View File

@ -227,20 +227,22 @@ export const useView = (props?: UseViewProps) => {
const removeView = useRecoilCallback( const removeView = useRecoilCallback(
({ set, snapshot }) => ({ set, snapshot }) =>
async (viewId: string) => { async (viewIdToDelete: string) => {
const currentViewId = await snapshot.getPromise( const currentViewId = await snapshot.getPromise(
currentViewIdScopedState({ scopeId }), currentViewIdScopedState({ scopeId }),
); );
if (currentViewId === viewId) if (currentViewId === viewIdToDelete)
set(currentViewIdScopedState({ scopeId }), undefined); set(currentViewIdScopedState({ scopeId }), undefined);
set(viewsScopedState({ scopeId }), (previousViews) => set(viewsScopedState({ scopeId }), (previousViews) =>
previousViews.filter((view) => view.id !== viewId), previousViews.filter((view) => view.id !== viewIdToDelete),
); );
internalDeleteView(viewId); internalDeleteView(viewIdToDelete);
if (currentViewId === viewIdToDelete) setSearchParams();
}, },
[internalDeleteView, scopeId], [internalDeleteView, scopeId, setSearchParams],
); );
const handleViewNameSubmit = useRecoilCallback( const handleViewNameSubmit = useRecoilCallback(