From bb90b6f383b975c7ab11d3848c006d4195a135ef Mon Sep 17 00:00:00 2001 From: Danny Rorabaugh Date: Mon, 11 Sep 2023 16:24:56 -0400 Subject: [PATCH 1/2] Clear the audio when a new entry is submitted --- .../DataEntry/DataEntryTable/NewEntry/index.tsx | 9 ++++----- .../DataEntryTable/NewEntry/tests/index.test.tsx | 1 + src/components/DataEntry/DataEntryTable/index.tsx | 12 ++++++++++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/components/DataEntry/DataEntryTable/NewEntry/index.tsx b/src/components/DataEntry/DataEntryTable/NewEntry/index.tsx index d0c738d166..7fb100d31e 100644 --- a/src/components/DataEntry/DataEntryTable/NewEntry/index.tsx +++ b/src/components/DataEntry/DataEntryTable/NewEntry/index.tsx @@ -45,6 +45,7 @@ interface NewEntryProps { vernacularLang: WritingSystem; // Parent component handles new entry state: addNewEntry: () => Promise; + resetNewEntry: () => void; updateWordWithNewGloss: (wordId: string) => Promise; newAudioUrls: string[]; addNewAudioUrl: (file: File) => void; @@ -73,6 +74,7 @@ export default function NewEntry(props: NewEntryProps): ReactElement { // Parent component handles new entry state: addNewEntry, updateWordWithNewGloss, + resetNewEntry, newAudioUrls, addNewAudioUrl, delNewAudioUrl, @@ -116,13 +118,10 @@ export default function NewEntry(props: NewEntryProps): ReactElement { ); const resetState = useCallback((): void => { - setNewGloss(""); - setNewNote(""); - setNewVern(""); + resetNewEntry(); setVernOpen(false); - // May also need to reset newAudioUrls in the parent component. focus(FocusTarget.Vernacular); - }, [focus, setNewGloss, setNewNote, setNewVern, setVernOpen]); + }, [focus, resetNewEntry, setVernOpen]); /** Reset when tree opens, except for the first time it is open. */ useEffect(() => { diff --git a/src/components/DataEntry/DataEntryTable/NewEntry/tests/index.test.tsx b/src/components/DataEntry/DataEntryTable/NewEntry/tests/index.test.tsx index 8f945c4ff9..963a54725a 100644 --- a/src/components/DataEntry/DataEntryTable/NewEntry/tests/index.test.tsx +++ b/src/components/DataEntry/DataEntryTable/NewEntry/tests/index.test.tsx @@ -26,6 +26,7 @@ describe("NewEntry", () => { // Parent component handles new entry state: addNewEntry={jest.fn()} updateWordWithNewGloss={jest.fn()} + resetNewEntry={jest.fn()} newAudioUrls={[]} addNewAudioUrl={jest.fn()} delNewAudioUrl={jest.fn()} diff --git a/src/components/DataEntry/DataEntryTable/index.tsx b/src/components/DataEntry/DataEntryTable/index.tsx index 5c1f91754b..aeba39b12a 100644 --- a/src/components/DataEntry/DataEntryTable/index.tsx +++ b/src/components/DataEntry/DataEntryTable/index.tsx @@ -346,6 +346,17 @@ export default function DataEntryTable( }); }; + /*** Clear all new entry state elements. */ + const resetNewEntry = (): void => { + setState((prevState) => ({ + ...prevState, + newAudioUrls: [], + newGloss: "", + newNote: "", + newVern: "", + })); + }; + /*** Add an audio file to newAudioUrls. */ const addNewAudioUrl = (file: File): void => { setState((prevState) => { @@ -894,6 +905,7 @@ export default function DataEntryTable( // Parent handles new entry state of child: addNewEntry={addNewEntry} updateWordWithNewGloss={updateWordWithNewEntry} + resetNewEntry={resetNewEntry} newAudioUrls={state.newAudioUrls} addNewAudioUrl={addNewAudioUrl} delNewAudioUrl={delNewAudioUrl} From c0edf60b9322938dd7035f8dcd1b620abde06d2b Mon Sep 17 00:00:00 2001 From: Danny Rorabaugh Date: Mon, 11 Sep 2023 16:27:41 -0400 Subject: [PATCH 2/2] Make props order consistant --- src/components/DataEntry/DataEntryTable/NewEntry/index.tsx | 2 +- .../DataEntry/DataEntryTable/NewEntry/tests/index.test.tsx | 2 +- src/components/DataEntry/DataEntryTable/index.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/DataEntry/DataEntryTable/NewEntry/index.tsx b/src/components/DataEntry/DataEntryTable/NewEntry/index.tsx index 7fb100d31e..37597271b7 100644 --- a/src/components/DataEntry/DataEntryTable/NewEntry/index.tsx +++ b/src/components/DataEntry/DataEntryTable/NewEntry/index.tsx @@ -73,8 +73,8 @@ export default function NewEntry(props: NewEntryProps): ReactElement { vernacularLang, // Parent component handles new entry state: addNewEntry, - updateWordWithNewGloss, resetNewEntry, + updateWordWithNewGloss, newAudioUrls, addNewAudioUrl, delNewAudioUrl, diff --git a/src/components/DataEntry/DataEntryTable/NewEntry/tests/index.test.tsx b/src/components/DataEntry/DataEntryTable/NewEntry/tests/index.test.tsx index 963a54725a..e9705063cd 100644 --- a/src/components/DataEntry/DataEntryTable/NewEntry/tests/index.test.tsx +++ b/src/components/DataEntry/DataEntryTable/NewEntry/tests/index.test.tsx @@ -25,8 +25,8 @@ describe("NewEntry", () => { vernacularLang={newWritingSystem()} // Parent component handles new entry state: addNewEntry={jest.fn()} - updateWordWithNewGloss={jest.fn()} resetNewEntry={jest.fn()} + updateWordWithNewGloss={jest.fn()} newAudioUrls={[]} addNewAudioUrl={jest.fn()} delNewAudioUrl={jest.fn()} diff --git a/src/components/DataEntry/DataEntryTable/index.tsx b/src/components/DataEntry/DataEntryTable/index.tsx index aeba39b12a..f237550364 100644 --- a/src/components/DataEntry/DataEntryTable/index.tsx +++ b/src/components/DataEntry/DataEntryTable/index.tsx @@ -904,8 +904,8 @@ export default function DataEntryTable( vernacularLang={vernacularLang} // Parent handles new entry state of child: addNewEntry={addNewEntry} - updateWordWithNewGloss={updateWordWithNewEntry} resetNewEntry={resetNewEntry} + updateWordWithNewGloss={updateWordWithNewEntry} newAudioUrls={state.newAudioUrls} addNewAudioUrl={addNewAudioUrl} delNewAudioUrl={delNewAudioUrl}