From 2f6491fd120902c4ce07f274db371369cbffc74a Mon Sep 17 00:00:00 2001 From: Harry Hopkinson Date: Wed, 7 Sep 2022 20:07:47 +0100 Subject: [PATCH] Fix the remove-all-pets command. --- package.json | 4 +-- src/extension/extension.ts | 63 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 63 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index ff007a70..b8ff03f8 100644 --- a/package.json +++ b/package.json @@ -88,13 +88,13 @@ "command": "vscode-pets.delete-pet", "title": "Remove pet", "category": "Pet Coding", - "icon" : { + "icon": { "dark": "media/icon/dark-trash.svg", "light": "media/icon/light-trash.svg" } }, { - "command": "vscode-pets.delete-pets", + "command": "vscode-pets.remove-all-pets", "title": "Remove all pets", "category": "Pet Coding", "icon": { diff --git a/src/extension/extension.ts b/src/extension/extension.ts index 8b9fb050..420e40f5 100644 --- a/src/extension/extension.ts +++ b/src/extension/extension.ts @@ -246,7 +246,7 @@ function getPetPanel(): IPetPanel | undefined { } else if (PetPanel.currentPanel) { return PetPanel.currentPanel; } else { - vscode.window.showErrorMessage("Please open a Pet's Playground first."); + return undefined; } } @@ -359,6 +359,34 @@ export function activate(context: vscode.ExtensionContext) { handleRemovePetMessage, context, ); + } else { + const spec = PetSpecification.fromConfiguration(); + PetPanel.createOrShow( + context.extensionUri, + context.extensionPath, + spec.color, + spec.type, + spec.size, + getConfiguredTheme(), + getConfiguredThemeKind(), + ); + if (PetPanel.currentPanel) { + var collection = PetSpecification.collectionFromMemento( + context, + getConfiguredSize(), + ); + collection.forEach((item) => { + PetPanel.currentPanel!.spawnPet(item); + }); + storeCollectionAsMemento(context, collection); + } else { + var collection = PetSpecification.collectionFromMemento( + context, + getConfiguredSize(), + ); + collection.push(spec); + storeCollectionAsMemento(context, collection); + } } }), ); @@ -478,11 +506,42 @@ export function activate(context: vscode.ExtensionContext) { ); context.subscriptions.push( - vscode.commands.registerCommand('vscode-pets.reset-pets', () => { + vscode.commands.registerCommand('vscode-pets.remove-all-pets', () => { const panel = getPetPanel(); if (panel !== undefined) { panel.resetPets(); storeCollectionAsMemento(context, []); + } else { + const spec = PetSpecification.fromConfiguration(); + PetPanel.createOrShow( + context.extensionUri, + context.extensionPath, + spec.color, + spec.type, + spec.size, + getConfiguredTheme(), + getConfiguredThemeKind(), + ); + if (PetPanel.currentPanel) { + var collection = PetSpecification.collectionFromMemento( + context, + getConfiguredSize(), + ); + collection.forEach((item) => { + PetPanel.currentPanel!.spawnPet(item); + }); + storeCollectionAsMemento(context, collection); + } else { + var collection = PetSpecification.collectionFromMemento( + context, + getConfiguredSize(), + ); + collection.push(spec); + storeCollectionAsMemento(context, collection); + } + vscode.window.showInformationMessage( + "A Pet Playground has been created. You can now use the 'Remove All Pets' Command to remove all pets.", + ); } }), );