From 33d90f912661924daeb834879005fd55efeeeedc Mon Sep 17 00:00:00 2001 From: Flemmli97 <34157027+Flemmli97@users.noreply.github.com> Date: Sun, 3 Dec 2023 22:25:52 +0100 Subject: [PATCH] Allow creating new files (#437) * allow creating new files * icon and translation key fix * Change how new file works * Fix selected file in tree view * Reword to "New empty file" * Reword to "Save as" --------- Co-authored-by: Flemmli97 Co-authored-by: Misode --- src/app/components/generator/ProjectPanel.tsx | 7 ++++--- .../components/generator/SchemaGenerator.tsx | 17 ++++++++++++++++- src/locales/en.json | 4 ++-- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/app/components/generator/ProjectPanel.tsx b/src/app/components/generator/ProjectPanel.tsx index 390e00a4..317a6637 100644 --- a/src/app/components/generator/ProjectPanel.tsx +++ b/src/app/components/generator/ProjectPanel.tsx @@ -124,8 +124,9 @@ export function ProjectPanel({ onRename, onCreate, onDeleteProject }: Props) { evt.preventDefault() setFocus() } - - return
selectFile(entry)} onContextMenu={onContextMenu} > + const file = disectEntry(entry) + + return
selectFile(entry)} onContextMenu={onContextMenu} > {Octicon.file} {entry.split('/').at(-1)} {focused &&
@@ -135,7 +136,7 @@ export function ProjectPanel({ onRename, onCreate, onDeleteProject }: Props) {
)}
}
- }, [actions]) + }, [actions, disectEntry]) return <>
diff --git a/src/app/components/generator/SchemaGenerator.tsx b/src/app/components/generator/SchemaGenerator.tsx index 4f52902d..9fe4b4fe 100644 --- a/src/app/components/generator/SchemaGenerator.tsx +++ b/src/app/components/generator/SchemaGenerator.tsx @@ -22,7 +22,7 @@ interface Props { export function SchemaGenerator({ gen, allowedVersions }: Props) { const { locale } = useLocale() const { version, changeVersion, changeTargetVersion } = useVersion() - const { projects, project, file, updateProject, updateFile } = useProject() + const { projects, project, file, updateProject, updateFile, closeFile } = useProject() const [error, setError] = useState(null) const [errorBoundary, errorRetry] = useErrorBoundary() if (errorBoundary) { @@ -298,6 +298,20 @@ export function SchemaGenerator({ gen, allowedVersions }: Props) { const [projectDeleting, setprojectDeleting] = useState(false) const [fileSaving, setFileSaving] = useState(undefined) const [fileRenaming, setFileRenaming] = useState<{ type: string, id: string } | undefined>(undefined) + const [newFileQueued, setNewFileQueued] = useState(false) + + const onNewFile = useCallback(() => { + closeFile() + // Need to queue reset because otherwise the useModel hook will update the old file + setNewFileQueued(true) + }, [closeFile]) + + useEffect(() => { + if (file === undefined && newFileQueued) { + model?.reset(DataModel.wrapLists(model.schema.default()), true) + setNewFileQueued(false) + } + }, [model, newFileQueued, file]) return <>
@@ -316,6 +330,7 @@ export function SchemaGenerator({ gen, allowedVersions }: Props) { {backup !== undefined && } + setFileSaving('menu')} />
diff --git a/src/locales/en.json b/src/locales/en.json index 493eeae7..a7530ff9 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -189,11 +189,11 @@ "project.delete_file": "Delete file", "project.download": "Download data pack", "project.go_to": "Go to project", - "project.new_file": "New file", + "project.new_file": "New empty file", "project.no_files": "No files", "project.rename": "Rename", "project.rename_file": "Rename file", - "project.save": "Save", + "project.save": "Save as", "project.save_current_file": "Save file to project", "project.search": "Search project", "project.search_drafts": "Search drafts",