Add actions to remove and delete setting files

Signed-off-by: Sanjula Ganepola <sanjulagane@gmail.com>
This commit is contained in:
Sanjula Ganepola
2024-11-21 22:20:17 -05:00
parent db7972e887
commit c10f7109ac
11 changed files with 70 additions and 24 deletions

View File

@@ -1,4 +1,4 @@
import { WorkspaceFolder } from "vscode";
import { Uri, window, workspace, WorkspaceFolder } from "vscode";
import { act } from "./extension";
import { GitHubManager } from "./githubManager";
import { SecretManager } from "./secretManager";
@@ -169,6 +169,27 @@ export class SettingsManager {
await this.storageManager.update(storageKey, existingSettingFiles);
}
async removeSettingFile(workspaceFolder: WorkspaceFolder, settingFile: SettingFile, storageKey: StorageKey) {
const existingSettingFiles = this.storageManager.get<{ [path: string]: SettingFile[] }>(storageKey) || {};
if (existingSettingFiles[workspaceFolder.uri.fsPath]) {
const settingFileIndex = existingSettingFiles[workspaceFolder.uri.fsPath].findIndex(settingFile => settingFile.path === settingFile.path);
if (settingFileIndex > -1) {
existingSettingFiles[workspaceFolder.uri.fsPath].splice(settingFileIndex, 1);
}
}
await this.storageManager.update(storageKey, existingSettingFiles);
}
async deleteSettingFile(workspaceFolder: WorkspaceFolder, settingFile: SettingFile, storageKey: StorageKey) {
try {
await workspace.fs.delete(Uri.file(settingFile.path));
await this.removeSettingFile(workspaceFolder, settingFile, storageKey);
} catch (error: any) {
window.showErrorMessage(`Failed to delete file. Error ${error}`)
}
}
async editSetting(workspaceFolder: WorkspaceFolder, newSetting: Setting, storageKey: StorageKey) {
const value = newSetting.value;
if (storageKey === StorageKey.Secrets) {