Skip to content

Commit eba298c

Browse files
committed
buttons: Add support for opening external links in browser.
This commit uses the open_in_browser() function from previous commits and allows opening external links in the browser on pressing ENTER on the MessageLinkButton. After this commit ZT, should be able to narrow to a message if the link is an internal link, and open in browser if the link is an external link. This commit does not handles internal media links in any way currently. Tests amended.
1 parent 3332519 commit eba298c

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

tests/ui_tools/test_buttons.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -369,19 +369,21 @@ def test_update_widget(self, mocker, caption, expected_cursor_position,
369369
@pytest.mark.parametrize([
370370
'link',
371371
'handle_narrow_link_called',
372+
'open_in_browser_called',
372373
],
373374
[
374-
(SERVER_URL + '/#narrow/stream/1-Stream-1', True),
375-
(SERVER_URL + '/user_uploads/some/path/image.png', False),
376-
('https://foo.com', False),
375+
(SERVER_URL + '/#narrow/stream/1-Stream-1', True, False),
376+
(SERVER_URL + '/user_uploads/some/path/image.png', False, False),
377+
('https://foo.com', False, True),
377378
],
378379
ids=[
379380
'internal_narrow_link',
380381
'internal_media_link',
381382
'external_link',
382383
]
383384
)
384-
def test_handle_link(self, mocker, link, handle_narrow_link_called):
385+
def test_handle_link(self, mocker, link, handle_narrow_link_called,
386+
open_in_browser_called):
385387
self.controller.model.server_url = SERVER_URL
386388
self.handle_narrow_link = (
387389
mocker.patch(BUTTONS + '.MessageLinkButton.handle_narrow_link')
@@ -391,6 +393,7 @@ def test_handle_link(self, mocker, link, handle_narrow_link_called):
391393
mocked_button.handle_link()
392394

393395
assert self.handle_narrow_link.called == handle_narrow_link_called
396+
assert self.controller.open_in_browser.called == open_in_browser_called
394397

395398
@pytest.mark.parametrize('stream_data, expected_response', [
396399
('206-zulip-terminal', dict(stream_id=206, stream_name=None)),

zulipterminal/ui_tools/buttons.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,8 @@ def handle_link(self, *_: Any) -> None:
341341
server_url = self.model.server_url
342342
if self.link.startswith(urljoin(server_url, '/#narrow/')):
343343
self.handle_narrow_link()
344+
elif not self.link.startswith(urljoin(server_url, '/user_uploads/')):
345+
self.controller.open_in_browser(self.link)
344346

345347
@staticmethod
346348
def _decode_stream_data(encoded_stream_data: str) -> DecodedStream:

0 commit comments

Comments
 (0)