Skip to content

Commit 415b41d

Browse files
authored
Update revision draft file IDs to ensure uniqueness (#468)
1 parent 1b911dd commit 415b41d

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

src/commands/revisionDraft/RevisionDraftFileSystem.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { KnownActiveRevisionsMode, type Template } from "@azure/arm-appcontainers";
7+
import { ParsedAzureResourceId, parseAzureResourceId } from "@microsoft/vscode-azext-azureutils";
78
import { nonNullValueAndProp } from "@microsoft/vscode-azext-utils";
89
import { Disposable, Event, EventEmitter, FileChangeEvent, FileChangeType, FileStat, FileSystemProvider, FileType, TextDocument, Uri, window, workspace } from "vscode";
910
import { URI } from "vscode-uri";
@@ -160,7 +161,11 @@ export class RevisionDraftFileSystem implements FileSystemProvider {
160161
}
161162

162163
private buildUriFromItem(item: ContainerAppsItem): Uri {
163-
return URI.parse(`${RevisionDraftFileSystem.scheme}:/${item.containerApp.name}.json`);
164+
// Container app names are not globally unique, so we need to produce a unique ID for lookup
165+
// Note: Using '|' delimiters instead of '/' to prevent each file as showing up within multiple virtual directories when opened
166+
const parsedResourceId: ParsedAzureResourceId = parseAzureResourceId(item.containerApp.id);
167+
const shortenedContainerAppId: string = `${parsedResourceId.subscriptionId?.slice(0, 5)}...|resourceGroups|${parsedResourceId.resourceGroup}|containerApps|${parsedResourceId.resourceName}`;
168+
return URI.parse(`${RevisionDraftFileSystem.scheme}:/${shortenedContainerAppId}.json`);
164169
}
165170

166171
// Adapted from: https://github.com/microsoft/vscode-extension-samples/blob/master/fsprovider-sample/src/fileSystemProvider.ts

0 commit comments

Comments
 (0)