258685467b
* Added Overview page * Revised Getting Started page * Minor revision * Edited readme, minor modifications to docs * Removed sweep.yaml, .devcontainer, .ergomake * Moved security.md to .github, added contributing.md * changes as per code review * updated contributing.md * fixed broken links & added missing links in doc, improved structure * fixed link in wsl setup * fixed server link, added https cloning in yarn-setup * removed package-lock.json * added doc card, admonitions * removed underline from nav buttons * refactoring modules/ui * refactoring modules/ui * Change folder case * Fix theme location * Fix case 2 * Fix storybook --------- Co-authored-by: Nimra Ahmed <nimra1408@gmail.com> Co-authored-by: Nimra Ahmed <50912134+nimraahmed@users.noreply.github.com>
36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import { useContext } from 'react';
|
|
import { useRecoilCallback } from 'recoil';
|
|
|
|
import { useRecoilScopeId } from '@/ui/utilities/recoil-scope/hooks/useRecoilScopeId';
|
|
|
|
import { ViewBarContext } from '../contexts/ViewBarContext';
|
|
import { currentViewIdScopedState } from '../states/currentViewIdScopedState';
|
|
import { viewsScopedState } from '../states/viewsScopedState';
|
|
|
|
export const useRemoveView = () => {
|
|
const { onViewRemove, ViewBarRecoilScopeContext } =
|
|
useContext(ViewBarContext);
|
|
|
|
const recoilScopeId = useRecoilScopeId(ViewBarRecoilScopeContext);
|
|
|
|
const removeView = useRecoilCallback(
|
|
({ set, snapshot }) =>
|
|
async (viewId: string) => {
|
|
const currentViewId = await snapshot.getPromise(
|
|
currentViewIdScopedState(recoilScopeId),
|
|
);
|
|
|
|
if (currentViewId === viewId)
|
|
set(currentViewIdScopedState(recoilScopeId), undefined);
|
|
|
|
set(viewsScopedState(recoilScopeId), (previousViews) =>
|
|
previousViews.filter((view) => view.id !== viewId),
|
|
);
|
|
await onViewRemove?.(viewId);
|
|
},
|
|
[onViewRemove, recoilScopeId],
|
|
);
|
|
|
|
return { removeView };
|
|
};
|