Update extension.js
This commit is contained in:
		
							parent
							
								
									7a7efd9db6
								
							
						
					
					
						commit
						4f0fa3603f
					
				| 
						 | 
					@ -24,7 +24,26 @@ class ErikrafTDropViewProvider {
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    webviewView.webview.html = this.getWebviewContent(webviewView.webview);
 | 
					    webviewView.webview.html = this.getWebviewContent(webviewView.webview);
 | 
				
			||||||
 | 
					    // Listen for messages from the webview
 | 
				
			||||||
 | 
					    handleWebviewMessages(webviewView.webview);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Função para lidar com mensagens do webview
 | 
				
			||||||
 | 
					function handleWebviewMessages(webview) {
 | 
				
			||||||
 | 
					  webview.onDidReceiveMessage(async (message) => {
 | 
				
			||||||
 | 
					    if (message && message.type && message.url) {
 | 
				
			||||||
 | 
					      if (message.type === 'external-link' || message.type === 'download') {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					          await vscode.env.openExternal(vscode.Uri.parse(message.url));
 | 
				
			||||||
 | 
					        } catch (err) {
 | 
				
			||||||
 | 
					          vscode.window.showErrorMessage('Não foi possível abrir o link externo: ' + message.url);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  getWebviewContent(webview) {
 | 
					  getWebviewContent(webview) {
 | 
				
			||||||
    return `
 | 
					    return `
 | 
				
			||||||
| 
						 | 
					@ -67,10 +86,27 @@ class ErikrafTDropViewProvider {
 | 
				
			||||||
          referrerpolicy="strict-origin-when-cross-origin"
 | 
					          referrerpolicy="strict-origin-when-cross-origin"
 | 
				
			||||||
        ></iframe>
 | 
					        ></iframe>
 | 
				
			||||||
        <script>
 | 
					        <script>
 | 
				
			||||||
          // Handle external links from iframe
 | 
					          const vscode = acquireVsCodeApi();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          // Listen for messages coming from any embedded iframe (cross-origin)
 | 
				
			||||||
          window.addEventListener('message', (event) => {
 | 
					          window.addEventListener('message', (event) => {
 | 
				
			||||||
            if (event.data.type === 'external-link') {
 | 
					            if (event.data && (event.data.type === 'external-link' || event.data.type === 'download')) {
 | 
				
			||||||
              parent.postMessage({ type: 'external-link', url: event.data.url }, '*');
 | 
					              vscode.postMessage(event.data);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          // Intercept clicks inside the webview itself
 | 
				
			||||||
 | 
					          document.addEventListener('click', (event) => {
 | 
				
			||||||
 | 
					            const link = event.target.closest('a');
 | 
				
			||||||
 | 
					            if (link && link.href.startsWith('http')) {
 | 
				
			||||||
 | 
					              event.preventDefault();
 | 
				
			||||||
 | 
					              vscode.postMessage({ type: 'external-link', url: link.href });
 | 
				
			||||||
 | 
					              return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            const downloadLink = event.target.closest('a[download]');
 | 
				
			||||||
 | 
					            if (downloadLink) {
 | 
				
			||||||
 | 
					              event.preventDefault();
 | 
				
			||||||
 | 
					              vscode.postMessage({ type: 'download', url: downloadLink.href });
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          });
 | 
					          });
 | 
				
			||||||
        </script>
 | 
					        </script>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue