Skip to content

Commit

Permalink
ui: enable remove datadoc from sidebar (#1241)
Browse files Browse the repository at this point in the history
* test

* ui: enable remove datadoc from sidebar

* clean

* typing
  • Loading branch information
meowcodes committed May 3, 2023
1 parent d902232 commit db7d674
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { useRouteMatch } from 'react-router-dom';

import { CreateDataDocButton } from 'components/CreateDataDocButton/CreateDataDocButton';
import { IDataDoc } from 'const/datadoc';
import { useDeleteDataDoc } from 'hooks/dataDoc/useDeleteDataDoc';
import * as dataDocActions from 'redux/dataDoc/action';
import {
dataDocsMineSelector,
Expand Down Expand Up @@ -258,6 +259,8 @@ const MyDataDocsSection: React.FC<ICommonSectionProps> = (props) => {
);
const dataDocs = useSelector(dataDocsMineSelector);

const handleDeleteDataDoc = useDeleteDataDoc();

return (
<DataDocNavigatorSection
sectionHeader="my docs"
Expand All @@ -270,6 +273,7 @@ const MyDataDocsSection: React.FC<ICommonSectionProps> = (props) => {
collapsed={collapsed}
setCollapsed={setCollapsed}
allowReorder
onRemove={(dataDoc: IDataDoc) => handleDeleteDataDoc(dataDoc.id)}
/>
);
};
Original file line number Diff line number Diff line change
@@ -1,14 +1,7 @@
import React from 'react';
import toast from 'react-hot-toast';
import { useDispatch } from 'react-redux';

import { ComponentType, ElementType } from 'const/analytics';
import { TooltipDirection } from 'const/tooltip';
import { trackClick } from 'lib/analytics';
import { sendConfirm } from 'lib/querybookUI';
import { navigateWithinEnv } from 'lib/utils/query-string';
import * as dataDocActions from 'redux/dataDoc/action';
import { Dispatch } from 'redux/store/types';
import { useDeleteDataDoc } from 'hooks/dataDoc/useDeleteDataDoc';
import { IconButton } from 'ui/Button/IconButton';

export interface IDeleteDataDocButtonProps {
Expand All @@ -21,43 +14,14 @@ export interface IDeleteDataDocButtonProps {
export const DeleteDataDocButton: React.FunctionComponent<
IDeleteDataDocButtonProps
> = ({ docId, tooltip = 'Delete', tooltipPos = 'left' }) => {
const dispatch: Dispatch = useDispatch();

const handleDeleteDataDoc = React.useCallback(
() =>
sendConfirm({
header: 'Delete DataDoc?',
message: 'This action is irreversible.',
onConfirm: () => {
trackClick({
component: ComponentType.DATADOC_PAGE,
element: ElementType.DELETE_DATADOC_BUTTON,
});
toast.promise(
dispatch(dataDocActions.deleteDataDoc(docId)).then(() =>
navigateWithinEnv('/')
),
{
loading: 'Deleting DataDoc...',
success: 'DataDoc Deleted!',
error: 'Deletion failed',
}
);
},
confirmColor: 'cancel',
cancelColor: 'default',
confirmText: 'Confirm Deletion',
confirmIcon: 'AlertOctagon',
}),
[docId]
);
const handleDeleteDataDoc = useDeleteDataDoc();

return (
<IconButton
icon="Trash"
tooltip={tooltip}
tooltipPos={tooltipPos}
onClick={handleDeleteDataDoc}
onClick={() => handleDeleteDataDoc(docId)}
title="Delete"
/>
);
Expand Down
43 changes: 43 additions & 0 deletions querybook/webapp/hooks/dataDoc/useDeleteDataDoc.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import { useCallback } from 'react';
import toast from 'react-hot-toast';
import { useDispatch } from 'react-redux';

import { ComponentType, ElementType } from 'const/analytics';
import { trackClick } from 'lib/analytics';
import { sendConfirm } from 'lib/querybookUI';
import { navigateWithinEnv } from 'lib/utils/query-string';
import * as dataDocActions from 'redux/dataDoc/action';
import { Dispatch } from 'redux/store/types';

export function useDeleteDataDoc() {
const dispatch: Dispatch = useDispatch();

return useCallback(
(docId: number) =>
sendConfirm({
header: 'Delete DataDoc?',
message: 'This action is irreversible.',
onConfirm: () => {
trackClick({
component: ComponentType.DATADOC_PAGE,
element: ElementType.DELETE_DATADOC_BUTTON,
});
toast.promise(
dispatch(dataDocActions.deleteDataDoc(docId)).then(() =>
navigateWithinEnv('/')
),
{
loading: 'Deleting DataDoc...',
success: 'DataDoc Deleted!',
error: 'Deletion failed',
}
);
},
confirmColor: 'cancel',
cancelColor: 'default',
confirmText: 'Confirm Deletion',
confirmIcon: 'AlertOctagon',
}),
[]
);
}

0 comments on commit db7d674

Please sign in to comment.