diff --git a/bauh/gems/web/__init__.py b/bauh/gems/web/__init__.py index c0f8819b..58c753e7 100644 --- a/bauh/gems/web/__init__.py +++ b/bauh/gems/web/__init__.py @@ -15,3 +15,4 @@ ELECTRON_DOWNLOAD_URL = 'https://github.com/electron/electron/releases/download/ ELECTRON_SHA256_URL = 'https://github.com/electron/electron/releases/download/v{version}/SHASUMS256.txt' URL_ENVIRONMENT_SETTINGS = 'https://raw.githubusercontent.com/vinifmor/bauh-files/master/web/environment.yml' DESKTOP_ENTRY_PATH_PATTERN = DESKTOP_ENTRIES_DIR + '/bauh.web.{name}.desktop' +URL_FIX_PATTERN = "https://raw.githubusercontent.com/vinifmor/bauh-files/master/web/fix/{url}.js" diff --git a/bauh/gems/web/controller.py b/bauh/gems/web/controller.py index bded66bf..3fbddf19 100644 --- a/bauh/gems/web/controller.py +++ b/bauh/gems/web/controller.py @@ -16,10 +16,10 @@ from bauh.api.abstract.disk import DiskCacheLoader from bauh.api.abstract.handler import ProcessWatcher from bauh.api.abstract.model import SoftwarePackage, PackageAction, PackageSuggestion, PackageUpdate, PackageHistory from bauh.api.abstract.view import MessageType, MultipleSelectComponent, InputOption, SingleSelectComponent, \ - SelectViewType, TextInputComponent + SelectViewType from bauh.commons.html import bold from bauh.commons.system import ProcessHandler, get_dir_size, get_human_size_str -from bauh.gems.web import INSTALLED_PATH, nativefier, DESKTOP_ENTRY_PATH_PATTERN +from bauh.gems.web import INSTALLED_PATH, nativefier, DESKTOP_ENTRY_PATH_PATTERN, URL_FIX_PATTERN from bauh.gems.web.environment import EnvironmentUpdater from bauh.gems.web.model import WebApplication @@ -81,6 +81,15 @@ class WebApplicationManager(SoftwareManager): return icon_url + def _get_fix_for(self, url_no_protocol: str) -> str: + res = self.http_client.get(URL_FIX_PATTERN.format(url=url_no_protocol)) + + if res: + return res.text + + def _strip_url_protocol(self, url: str) -> str: + return RE_PROTOCOL_STRIP.split(url)[1].strip().lower() + def search(self, words: str, disk_loader: DiskCacheLoader, limit: int = -1, is_url: bool = False) -> SearchResult: res = SearchResult([], [], 0) @@ -89,9 +98,9 @@ class WebApplicationManager(SoftwareManager): if is_url: url = words[0:-1] if words.endswith('/') else words - url_no_protocol = RE_PROTOCOL_STRIP.split(url)[1].strip().lower() + url_no_protocol = self._strip_url_protocol(url) - installed_matches = [app for app in installed if RE_PROTOCOL_STRIP.split(app.url)[1].strip().lower() == url_no_protocol] + installed_matches = [app for app in installed if self._strip_url_protocol(app.url)== url_no_protocol] if installed_matches: res.installed.extend(installed_matches) @@ -266,6 +275,13 @@ class WebApplicationManager(SoftwareManager): app_dir = '{}/{}'.format(INSTALLED_PATH, app_name_id) counter += 1 + watcher.change_substatus(self.i18n['web.install.substatus.checking_fixes']) + fix = self._get_fix_for(url_no_protocol=self._strip_url_protocol(pkg.url)) + + if fix: + watcher.print('Fix found for {}'.format(pkg.url)) + print(fix) + watcher.change_substatus(self.i18n['web.install.substatus.call_nativefier'].format(bold('nativefier'))) installed = handler.handle_simple(nativefier.install(url=pkg.url, name=pkg_name, output_dir=app_dir, electron_version=self.env_settings['electron']['version'], diff --git a/bauh/gems/web/resources/locale/en b/bauh/gems/web/resources/locale/en index 146c5766..850a094b 100644 --- a/bauh/gems/web/resources/locale/en +++ b/bauh/gems/web/resources/locale/en @@ -11,6 +11,7 @@ web.install.nativefier.error.inner_dir=The app installation directory was not fo web.install.substatus.call_nativefier=Running {} web.install.substatus.shortcut=Generating a menu shortcut web.install.substatus.options=Waiting for the installation options +web.install.substatus.checking_fixes=Checking if there are published fixes web.install.option.single.label=Single web.install.option.single.tip=It will not allow the app to be opened again if it is already opened web.install.option.max.label=Open maximized diff --git a/bauh/gems/web/resources/locale/pt b/bauh/gems/web/resources/locale/pt index e00ee9de..9b31b5b4 100644 --- a/bauh/gems/web/resources/locale/pt +++ b/bauh/gems/web/resources/locale/pt @@ -11,6 +11,7 @@ web.install.nativefier.error.inner_dir=O diretório de instalação do aplicativ web.install.substatus.call_nativefier=Executando {} web.install.substatus.shortcut=Criando um atalho no menu web.install.substatus.options=Aguardando as opções de instalação +web.install.substatus.checking_fixes=Verificando se há correções publicadas web.install.option.single.label=Único web.install.option.single.tip=Não permitirá que o aplicativo seja aberto novamente caso o mesmo já esteja web.install.option.max.label=Abrir maximizado diff --git a/bauh/gems/web/resources/suggestions.yml b/bauh/gems/web/resources/suggestions.yml new file mode 100644 index 00000000..f56fd71f --- /dev/null +++ b/bauh/gems/web/resources/suggestions.yml @@ -0,0 +1,17 @@ +youtube: + url: https://youtube.com + +facebook: + url: https://facebook.com + +outlook: + url: https://outlook.live.com + options: + - allow_urls + +twitch: + url: https://twitch.tv + +whatsapp: + url: https://web.whatsapp.com + icon_url: \ No newline at end of file