All files / commands toggle-document-inference.ts

100% Statements 13/13
100% Branches 8/8
100% Functions 1/1
100% Lines 13/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32          1x     4x     4x   4x 1x 1x     3x   3x 1x 1x     2x   2x 4x      
import * as vscode from 'vscode';
import { container } from 'tsyringe';
import { ServiceToken } from '@src/services/tokens';
import { ISparqlConnectionService } from '@src/languages/sparql/services';
 
export const toggleDocumentInference = {
	id: 'mentor.command.toggleDocumentInference',
	handler: async (documentUri?: vscode.Uri) => {
		const connectionService = container.resolve<ISparqlConnectionService>(ServiceToken.SparqlConnectionService);
		
		// If no document URI provided, use the active editor
		const targetUri = documentUri ?? vscode.window.activeTextEditor?.document.uri;
		
		if (!targetUri) {
			vscode.window.showErrorMessage('No document selected.');
			return;
		}
		
		const connection = connectionService.getConnectionForDocument(targetUri);
		
		if (!connectionService.supportsInference(connection)) {
			vscode.window.showErrorMessage('The current connection does not support inference toggling.');
			return;
		}
		
		const newValue = await connectionService.toggleInferenceEnabledForDocument(targetUri);
		
		const statusText = newValue ? 'enabled' : 'disabled';
		vscode.window.setStatusBarMessage(`Inference ${statusText} for this document`, 3000);
	}
};