diff --git a/src/main/api/routes/snippets.ts b/src/main/api/routes/snippets.ts index 470878a6..bbcd4828 100644 --- a/src/main/api/routes/snippets.ts +++ b/src/main/api/routes/snippets.ts @@ -342,5 +342,32 @@ app }, }, ) + // Удаление содержимого сниппета + .delete( + '/:id/contents/:contentId', + ({ params, set }) => { + const { contentId } = params + + const result = db + .prepare( + ` + DELETE FROM snippet_contents WHERE id = ? + `, + ) + .run(contentId) + + if (!result.changes) { + set.status = 404 + throw new Error('Snippet content not found') + } + + return { message: 'Snippet content deleted' } + }, + { + detail: { + tags: ['Snippets'], + }, + }, + ) export default app diff --git a/src/renderer/components/editor/Tab.vue b/src/renderer/components/editor/Tab.vue index 024b9ee4..db94aa4f 100644 --- a/src/renderer/components/editor/Tab.vue +++ b/src/renderer/components/editor/Tab.vue @@ -4,14 +4,21 @@ import { useApp, useSnippets, useSnippetUpdate } from '@/composables' import { i18n } from '@/electron' interface Props { + id: number + index: number name: string } const props = defineProps() -const { selectedSnippetContent, selectedSnippet } = useSnippets() +const { selectedSnippetContent, selectedSnippet, deleteSnippetContent } + = useSnippets() const { addToUpdateContentQueue } = useSnippetUpdate() -const { highlightedSnippetId, highlightedFolderId } = useApp() +const { + highlightedSnippetId, + highlightedFolderId, + selectedSnippetContentIndex, +} = useApp() const tabRef = ref() const isEdit = ref(false) @@ -37,6 +44,17 @@ function onClickContextMenu() { highlightedSnippetId.value = undefined highlightedFolderId.value = undefined } + +async function onDelete() { + await deleteSnippetContent(selectedSnippet.value!.id, props.id) + + if (selectedSnippetContentIndex.value === props.index) { + selectedSnippetContentIndex.value = 0 + } + else if (selectedSnippetContentIndex.value > props.index) { + selectedSnippetContentIndex.value-- + } +}