@@ -10,6 +10,8 @@ import VscodeWrapper from "../controllers/vscodeWrapper";
10
10
import * as LocConstants from "../constants/locConstants" ;
11
11
import { TreeNodeInfo } from "../objectExplorer/nodes/treeNodeInfo" ;
12
12
import MainController from "../controllers/mainController" ;
13
+ import { homedir } from "os" ;
14
+ import { getUniqueFilePath } from "../utils/utils" ;
13
15
14
16
export class SchemaDesignerWebviewController extends ReactWebviewPanelController <
15
17
SchemaDesigner . SchemaDesignerWebviewState ,
@@ -62,11 +64,18 @@ export class SchemaDesignerWebviewController extends ReactWebviewPanelController
62
64
63
65
private registerReducers ( ) {
64
66
this . registerRequestHandler ( "exportToFile" , async ( payload ) => {
67
+ // Determine the base folder for saving the file
68
+ const baseFolder =
69
+ vscode . workspace . workspaceFolders ?. [ 0 ] ?. uri ?? vscode . Uri . file ( homedir ( ) ) ;
70
+
71
+ // Prompt the user with a Save dialog
65
72
const outputPath = await vscode . window . showSaveDialog ( {
66
- filters : {
67
- [ payload . format ] : [ payload . format ] ,
68
- } ,
69
- defaultUri : vscode . Uri . file ( `${ this . databaseName } .${ payload . format } ` ) ,
73
+ filters : { [ payload . format ] : [ payload . format ] } ,
74
+ defaultUri : await getUniqueFilePath (
75
+ baseFolder ,
76
+ `schema-${ this . databaseName } ` ,
77
+ payload . format ,
78
+ ) ,
70
79
saveLabel : LocConstants . SchemaDesigner . Save ,
71
80
title : LocConstants . SchemaDesigner . SaveAs ,
72
81
} ) ;
0 commit comments