MCPcopy Create free account
hub / github.com/dailydotdev/apps / useDiscardPost

Function useDiscardPost

packages/shared/src/hooks/input/useDiscardPost.ts:33–69  ·  view source on GitHub ↗
({
  post,
  draftIdentifier,
}: UseDiscardPostProps = {})

Source from the content-addressed store, hash-verified

31}
32
33export const useDiscardPost = ({
34 post,
35 draftIdentifier,
36}: UseDiscardPostProps = {}): UseDiscardPost => {
37 const formRef = useRef<HTMLFormElement>();
38 const draftKey = generateWritePostKey(draftIdentifier ?? post?.id);
39 const [draft, updateDraft, isDraftReady, isUpdatingDraft] =
40 usePersistentContext<Partial<WriteForm>>(draftKey, {});
41 const onValidateAction = useCallback(() => {
42 if (!formRef.current) {
43 return true;
44 }
45
46 const form = formToJson<EditPostProps>(formRef.current);
47 const isTitleSaved = checkSavedProperty('title', form, draft, post);
48 const isContentSaved = checkSavedProperty('content', form, draft, post);
49 return isTitleSaved && isContentSaved;
50 }, [post, draft]);
51
52 const { onAskConfirmation } = useExitConfirmation({ onValidateAction });
53
54 const clearDraft = useCallback(async () => {
55 await updateDraft({});
56 await deleteCache(draftKey);
57 await deleteCache(generateWritePostKey());
58 }, [updateDraft, draftKey]);
59
60 return {
61 onAskConfirmation,
62 draft,
63 updateDraft,
64 isDraftReady,
65 formRef,
66 clearDraft,
67 isUpdatingDraft,
68 };
69};

Callers 1

EditPostFunction · 0.90

Calls 5

generateWritePostKeyFunction · 0.90
formToJsonFunction · 0.90
checkSavedPropertyFunction · 0.90
useExitConfirmationFunction · 0.90
usePersistentContextFunction · 0.85

Tested by

no test coverage detected