Skip to content

Commit bbde951

Browse files
committed
✨ Feat: Create sidebar drafts upon 'W' and 'M' shortcuts
1 parent 0257f07 commit bbde951

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

packages/web/src/ducks/events/selectors/draft.selectors.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ import { RootState } from "@web/store";
33

44
export const selectDraft = (state: RootState) => state.events.draft.event;
55

6+
export const selectDraftActivity = (state: RootState) =>
7+
state.events.draft.status?.activity;
8+
69
export const selectDraftCategory = (state: RootState) =>
710
state.events.draft.status?.eventType;
811

packages/web/src/views/Calendar/components/Draft/sidebar/hooks/useSidebarActions.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import {
2828
} from "@web/common/utils/web.date.util";
2929
import {
3030
selectDraft,
31+
selectDraftActivity,
3132
selectDraftCategory,
3233
selectIsDrafting,
3334
} from "@web/ducks/events/selectors/draft.selectors";
@@ -59,6 +60,7 @@ export const useSidebarActions = (
5960
const { start, end } = useAppSelector(selectDatesInView);
6061
const reduxDraft = useAppSelector(selectDraft);
6162
const draftType = useAppSelector(selectDraftCategory);
63+
const activity = useAppSelector(selectDraftActivity);
6264

6365
const viewStart = dayjs(start);
6466
const viewEnd = dayjs(end);
@@ -92,6 +94,10 @@ export const useSidebarActions = (
9294
setIsSomedayFormOpen(false);
9395
};
9496

97+
const openForm = useCallback(() => {
98+
setIsSomedayFormOpen(true);
99+
}, [setIsSomedayFormOpen]);
100+
95101
// call this when enabling DND for drafts
96102
const convertSomedayDraftToTimed = (
97103
dropItem: DropResult_ReactDND,
@@ -159,6 +165,12 @@ export const useSidebarActions = (
159165
);
160166
};
161167

168+
const create = useCallback(() => {
169+
setDraft(reduxDraft);
170+
setIsDrafting(true);
171+
openForm();
172+
}, [openForm, reduxDraft, setDraft, setIsDrafting]);
173+
162174
const createDefaultSomeday = useCallback(async () => {
163175
const somedayDefault = await assembleDefaultEvent(
164176
Categories_Event.SOMEDAY_WEEK,
@@ -203,6 +215,12 @@ export const useSidebarActions = (
203215
}
204216
};
205217

218+
const handleChange = useCallback(() => {
219+
if (activity === "createShortcut") {
220+
create();
221+
}
222+
}, [activity, create]);
223+
206224
const onDraft = (event: Schema_Event, category: Categories_Event) => {
207225
setIsDrafting(true);
208226
setDraft(event);
@@ -328,6 +346,7 @@ export const useSidebarActions = (
328346

329347
createDefaultSomeday();
330348
};
349+
331350
const onSubmit = async (category: Categories_Event) => {
332351
if (!state.draft) return;
333352

@@ -424,6 +443,7 @@ export const useSidebarActions = (
424443
closeForm,
425444
createDefaultSomeday,
426445
discard,
446+
handleChange,
427447
onDraft,
428448
onDragEnd,
429449
onDragStart,

packages/web/src/views/Calendar/components/Draft/sidebar/hooks/useSidebarEffects.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,15 @@ export const useSidebarEffects = (
99
actions: Actions_Sidebar,
1010
) => {
1111
const isDNDing = useAppSelector(selectIsDNDing);
12+
const { closeForm, handleChange } = actions;
13+
14+
useEffect(() => {
15+
handleChange();
16+
}, [handleChange]);
1217

1318
useEffect(() => {
1419
if (isDNDing && state.isSomedayFormOpen) {
15-
actions.closeForm();
20+
closeForm();
1621
}
17-
}, [isDNDing, state.isSomedayFormOpen, actions]);
22+
}, [isDNDing, state.isSomedayFormOpen, closeForm]);
1823
};

0 commit comments

Comments
 (0)