diff --git a/src/lib/components/FileManagement/CreateNewButton.svelte b/src/lib/components/FileManagement/CreateNewButton.svelte index 9731e85..35abf0b 100644 --- a/src/lib/components/FileManagement/CreateNewButton.svelte +++ b/src/lib/components/FileManagement/CreateNewButton.svelte @@ -1,5 +1,6 @@ diff --git a/src/lib/components/FileManagement/DeleteButton.svelte b/src/lib/components/FileManagement/DeleteButton.svelte index 07ead4e..00653a7 100644 --- a/src/lib/components/FileManagement/DeleteButton.svelte +++ b/src/lib/components/FileManagement/DeleteButton.svelte @@ -1,5 +1,6 @@ @@ -9,6 +10,7 @@ on:click={async () => { if (confirm(`Are you sure you want to delete '${spec.name}'?`)) { await db.apiSpecs.delete(spec.id); + setSpec(newSpec); } }} > diff --git a/src/lib/components/FileManagement/SaveNewButton.svelte b/src/lib/components/FileManagement/SaveNewButton.svelte index 0faf2e4..e11d00d 100644 --- a/src/lib/components/FileManagement/SaveNewButton.svelte +++ b/src/lib/components/FileManagement/SaveNewButton.svelte @@ -11,8 +11,9 @@ }; } console.log($selectedSpec); - $selectedSpec.id = undefined; - db.apiSpecs.put($selectedSpec); + const newSpec = structuredClone($selectedSpec); + newSpec.id = undefined; + db.apiSpecs.put(newSpec); } diff --git a/src/lib/index.ts b/src/lib/index.ts index 90c8656..3c62420 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -1,30 +1,10 @@ +import type { APISpec } from './db'; import type { OpenAPIV3_1 } from './openAPITypes'; import { writable, type Writable } from 'svelte/store'; export const localStoragePrefix = 'openapigen-'; -export const operationCount = (openApiDoc: OpenAPIV3_1.Document) => { - let count = 0; - for (const path in openApiDoc.paths) { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - for (const method in openApiDoc.paths[path]) { - count++; - } - } - return count; -} - -export const pathCount = (openApiDoc: OpenAPIV3_1.Document) => { - let count = 0; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - for (const path in openApiDoc.paths) { - count++; - } - return count; -} - - -export const openApiStore: Writable = writable({ +export const blankSpec: OpenAPIV3_1.Document = { openapi: '3.1.0', // OpenAPI version info: { /** Title of the API (required) */ @@ -58,7 +38,35 @@ export const openApiStore: Writable = writable({ description: '', url: '' } -}); +} + +export const newSpec: APISpec = { + name: 'OpenAPI', + spec: blankSpec +} + +export const operationCount = (openApiDoc: OpenAPIV3_1.Document) => { + let count = 0; + for (const path in openApiDoc.paths) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + for (const method in openApiDoc.paths[path]) { + count++; + } + } + return count; +} + +export const pathCount = (openApiDoc: OpenAPIV3_1.Document) => { + let count = 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + for (const path in openApiDoc.paths) { + count++; + } + return count; +} + + +export const openApiStore: Writable = writable(blankSpec); export enum HttpMethods { GET = 'get',