Skip to content

Commit 17f89bb

Browse files
preetmishraneiljp
authored andcommitted
core/helper: Show PopUpConfirmationView before opening any media.
Use 'center' location for show_media_confirmation_popup() for better visibility of the popup message. Test amended.
1 parent dbe6447 commit 17f89bb

File tree

3 files changed

+28
-8
lines changed

3 files changed

+28
-8
lines changed

tests/helper/test_helper.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -506,7 +506,7 @@ def test_download_media(
506506

507507

508508
@pytest.mark.parametrize(
509-
"platform, download_media_called, open_media_called, tool, modified_media_path",
509+
"platform, download_media_called, show_media_called, tool, modified_media_path",
510510
[
511511
("Linux", True, True, "xdg-open", "/path/to/media"),
512512
("MacOS", True, True, "open", "/path/to/media"),
@@ -524,7 +524,7 @@ def test_process_media(
524524
mocker: MockerFixture,
525525
platform: str,
526526
download_media_called: bool,
527-
open_media_called: bool,
527+
show_media_called: bool,
528528
tool: str,
529529
modified_media_path: str,
530530
media_path: str = "/path/to/media",
@@ -536,13 +536,16 @@ def test_process_media(
536536
)
537537
mocked_open_media = mocker.patch(MODULE + ".open_media")
538538
mocker.patch(MODULE + ".PLATFORM", platform)
539+
mocker.patch("zulipterminal.core.Controller.show_media_confirmation_popup")
539540

540541
process_media(controller, link)
541542

542543
assert mocked_download_media.called == download_media_called
543-
assert mocked_open_media.called == open_media_called
544-
if open_media_called:
545-
mocked_open_media.assert_called_once_with(controller, tool, modified_media_path)
544+
assert controller.show_media_confirmation_popup.called == show_media_called
545+
if show_media_called:
546+
controller.show_media_confirmation_popup.assert_called_once_with(
547+
mocked_open_media, tool, modified_media_path
548+
)
546549

547550

548551
def test_process_media_empty_url(
@@ -552,12 +555,12 @@ def test_process_media_empty_url(
552555
controller = mocker.Mock()
553556
mocker.patch("zulipterminal.core.Controller.report_error")
554557
mocked_download_media = mocker.patch(MODULE + ".download_media")
555-
mocked_open_media = mocker.patch(MODULE + ".open_media")
558+
mocker.patch("zulipterminal.core.Controller.show_media_confirmation_popup")
556559

557560
process_media(controller, link)
558561

559562
mocked_download_media.assert_not_called()
560-
mocked_open_media.assert_not_called()
563+
controller.show_media_confirmation_popup.assert_not_called()
561564
controller.report_error.assert_called_once_with("The media link is empty")
562565

563566

zulipterminal/core.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,23 @@ def report_warning(
471471
"""
472472
self.view.set_footer_text(text, "task:warning", duration)
473473

474+
def show_media_confirmation_popup(
475+
self, func: Any, tool: str, media_path: str
476+
) -> None:
477+
callback = partial(func, self, tool, media_path)
478+
question = urwid.Text(
479+
[
480+
"Your requested media has been downloaded to:\n",
481+
("bold", media_path),
482+
"\n\nDo you want the application to open it with ",
483+
("bold", tool),
484+
"?",
485+
]
486+
)
487+
self.loop.widget = PopUpConfirmationView(
488+
self, question, callback, location="center"
489+
)
490+
474491
def search_messages(self, text: str) -> None:
475492
# Search for a text in messages
476493
self.model.index["search"].clear()

zulipterminal/helper.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -761,7 +761,7 @@ def process_media(controller: Any, link: str) -> None:
761761
controller.report_error("Media not supported for this platform")
762762
return
763763

764-
open_media(controller, tool, media_path)
764+
controller.show_media_confirmation_popup(open_media, tool, media_path)
765765

766766

767767
def download_media(

0 commit comments

Comments
 (0)