diff --git a/src/games/ai-story/components/header/header.tsx b/src/games/ai-story/components/header/header.tsx
index 7eb97ac..80253aa 100644
--- a/src/games/ai-story/components/header/header.tsx
+++ b/src/games/ai-story/components/header/header.tsx
@@ -55,18 +55,14 @@ export const Header = () => {
assistantOpen.setFalse();
}, [addSwipe, messages]);
- const handleSetBannedWords = useCallback((e: Event) => {
- if (e.target instanceof HTMLTextAreaElement) {
- const words = e.target.value.split('\n');
- setBannedWords(words);
- }
+ const handleSetBannedWords = useInputCallback((text) => {
+ const words = text.split('\n');
+ setBannedWords(words);
}, [setBannedWords]);
- const handleBlurBannedWords = useCallback((e: Event) => {
- if (e.target instanceof HTMLTextAreaElement) {
- const words = e.target.value.toLowerCase().split('\n').sort();
- setBannedWords(words);
- }
+ const handleBlurBannedWords = useInputCallback((text) => {
+ const words = text.toLowerCase().split('\n').sort();
+ setBannedWords(words);
}, [setBannedWords]);
const handleSetSummaryEnabled = useCallback((e: Event) => {
@@ -76,21 +72,21 @@ export const Header = () => {
}, [setSummaryEnabled]);
const handleChangeStory = useInputCallback((story) => {
- if (story === '@new') {
- const id = prompt('Story id');
- if (id) {
- createStory(id);
- setCurrentStory(id);
- }
- } else {
- setCurrentStory(story);
- }
+ setCurrentStory(story);
}, []);
const handleDeleteStory = useCallback(() => {
if (confirm(`Delete story "${currentStory}"?`)) {
deleteStory(currentStory);
- }
+ }
+ }, [currentStory]);
+
+ const handleDuplicateStory = useCallback(() => {
+ const id = prompt('Story id');
+ if (id) {
+ createStory(id, currentStory);
+ setCurrentStory(id);
+ }
}, [currentStory]);
return (
@@ -137,8 +133,10 @@ export const Header = () => {
{Object.keys(stories).map((story) => (
))}
-
+
{currentStory !== DEFAULT_STORY
?