from selenium.webdriver.common.by import By

from pages.desktop.base import Base


class Progress(Base):
    """Progress page object model."""

    _cancel_button = (By.ID, 'cancel-upload')
    _progress_icon_locator = (By.CLASS_NAME, 'progress__bar')

    def wait_for_page_to_load(self, cancel_after_load=False):
        self.wait.until(
            lambda _: self.find_element(
                *self._progress_icon_locator).is_displayed())
        if cancel_after_load:
            self.cancel_btn.click()
            return
        from pages.desktop.share import Share
        return Share(self.selenium, self.base_url).wait_for_page_to_load()

    @property
    def cancel_btn(self):
        """Cancel upload button."""
        return self.find_element(*self._cancel_button)