Respect viewtype for reopen with in notebooks (#120101)

* Respect viewtype for reopen with in notebooks

* Switch to using a ternary
This commit is contained in:
Logan Ramos 2021-03-29 10:38:15 -04:00 committed by GitHub
parent 3e0f2f1c6e
commit 7c8da70fd0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 8 deletions

View file

@ -480,15 +480,17 @@ export class NotebookService extends Disposable implements INotebookService, IEd
});
}
async withNotebookDataProvider(resource: URI): Promise<ComplexNotebookProviderInfo | SimpleNotebookProviderInfo> {
const [first] = this._notebookProviderInfoStore.getContributedNotebook(resource);
if (!first) {
async withNotebookDataProvider(resource: URI, viewType?: string): Promise<ComplexNotebookProviderInfo | SimpleNotebookProviderInfo> {
const providers = this._notebookProviderInfoStore.getContributedNotebook(resource);
// If we have a viewtype specified we want that data provider, as the resource won't always map correctly
const selected = viewType ? providers.find(p => p.id === viewType) : providers[0];
if (!selected) {
throw new Error(`NO contribution for resource: '${resource.toString()}'`);
}
await this.canResolve(first.id);
const result = this._notebookProviders.get(first.id);
await this.canResolve(selected.id);
const result = this._notebookProviders.get(selected.id);
if (!result) {
throw new Error(`NO provider registered for view type: '${first.id}'`);
throw new Error(`NO provider registered for view type: '${selected.id}'`);
}
return result;
}

View file

@ -48,7 +48,7 @@ class NotebookModelReferenceCollection extends ReferenceCollection<Promise<IReso
protected async createReferencedObject(key: string, viewType: string): Promise<IResolvedNotebookEditorModel> {
const uri = URI.parse(key);
const info = await this._notebookService.withNotebookDataProvider(uri);
const info = await this._notebookService.withNotebookDataProvider(uri, viewType);
let result: IResolvedNotebookEditorModel;

View file

@ -71,7 +71,7 @@ export interface INotebookService {
registerNotebookController(viewType: string, extensionData: NotebookExtensionDescription, controller: IMainNotebookController): IDisposable;
registerNotebookSerializer(viewType: string, extensionData: NotebookExtensionDescription, serializer: INotebookSerializer): IDisposable;
withNotebookDataProvider(resource: URI): Promise<ComplexNotebookProviderInfo | SimpleNotebookProviderInfo>;
withNotebookDataProvider(resource: URI, viewType?: string): Promise<ComplexNotebookProviderInfo | SimpleNotebookProviderInfo>;
getMimeTypeInfo(textModel: NotebookTextModel, output: IOutputDto): readonly IOrderedMimeType[];