[web] improvement: able to specify a custom User-Agent when installing apps that demand specific settings to work properly on Electron 13.X

This commit is contained in:
Vinicius Moreira
2021-12-12 19:03:20 -03:00
parent cf9fe8b87e
commit dd5b5f891c
4 changed files with 18 additions and 4 deletions

View File

@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [0.9.24]
### Improvements
- Web
- able to specify a custom User-Agent when installing apps that demand specific settings to work properly on Electron 13.X (e.g: WhatsApp Web)
## [0.9.23] 2021-12-10 ## [0.9.23] 2021-12-10
### Features ### Features
- General - General

View File

@@ -702,6 +702,7 @@ class WebApplicationManager(SoftwareManager):
electron_version=electron_version if not widevine_support else None, electron_version=electron_version if not widevine_support else None,
system=bool(web_config['environment']['system']), system=bool(web_config['environment']['system']),
cwd=INSTALLED_PATH, cwd=INSTALLED_PATH,
user_agent=pkg.user_agent,
extra_options=install_options)) extra_options=install_options))
if not installed: if not installed:
@@ -893,7 +894,8 @@ class WebApplicationManager(SoftwareManager):
icon_url=suggestion.get('icon_url'), icon_url=suggestion.get('icon_url'),
categories=[suggestion['category']] if suggestion.get('category') else None, categories=[suggestion['category']] if suggestion.get('category') else None,
preset_options=suggestion.get('options'), preset_options=suggestion.get('options'),
save_icon=suggestion.get('save_icon', False)) save_icon=suggestion.get('save_icon', False),
user_agent=suggestion.get('user_agent'))
app.set_version(suggestion.get('version')) app.set_version(suggestion.get('version'))

View File

@@ -17,7 +17,8 @@ class WebApplication(SoftwarePackage):
icon_url: Optional[str] = None, installation_dir: Optional[str] = None, desktop_entry: Optional[str] = None, icon_url: Optional[str] = None, installation_dir: Optional[str] = None, desktop_entry: Optional[str] = None,
installed: bool = False, version: Optional[str] = None, categories: Optional[List[str]] = None, installed: bool = False, version: Optional[str] = None, categories: Optional[List[str]] = None,
custom_icon: Optional[str] = None, preset_options: Optional[List[str]] = None, save_icon: bool = True, custom_icon: Optional[str] = None, preset_options: Optional[List[str]] = None, save_icon: bool = True,
options_set: Optional[List[str]] = None, package_name: Optional[str] = None, source_url: Optional[str] = None): options_set: Optional[List[str]] = None, package_name: Optional[str] = None, source_url: Optional[str] = None,
user_agent: Optional[str] = None):
super(WebApplication, self).__init__(id=id if id else url, name=name, description=description, super(WebApplication, self).__init__(id=id if id else url, name=name, description=description,
icon_url=icon_url, installed=installed, version=version, icon_url=icon_url, installed=installed, version=version,
categories=categories) categories=categories)
@@ -31,6 +32,7 @@ class WebApplication(SoftwarePackage):
self.package_name = package_name self.package_name = package_name
self.custom_icon = custom_icon self.custom_icon = custom_icon
self.set_custom_icon(custom_icon) self.set_custom_icon(custom_icon)
self.user_agent = user_agent
def get_source_url(self): def get_source_url(self):
if self.source_url: if self.source_url:
@@ -51,7 +53,8 @@ class WebApplication(SoftwarePackage):
@staticmethod @staticmethod
def _get_cached_attrs() -> tuple: def _get_cached_attrs() -> tuple:
return 'id', 'name', 'version', 'url', 'description', 'icon_url', 'installation_dir', \ return 'id', 'name', 'version', 'url', 'description', 'icon_url', 'installation_dir', \
'desktop_entry', 'categories', 'custom_icon', 'options_set', 'save_icon', 'package_name', 'source_url' 'desktop_entry', 'categories', 'custom_icon', 'options_set', 'save_icon', 'package_name', 'source_url', \
'user_agent'
def can_be_downgraded(self): def can_be_downgraded(self):
return False return False

View File

@@ -6,13 +6,17 @@ from bauh.commons.system import SimpleProcess, run_cmd
from bauh.gems.web import NATIVEFIER_BIN_PATH, NODE_PATHS, ELECTRON_CACHE_DIR from bauh.gems.web import NATIVEFIER_BIN_PATH, NODE_PATHS, ELECTRON_CACHE_DIR
def install(url: str, name: str, output_dir: str, electron_version: Optional[str], cwd: str, system: bool, extra_options: List[str] = None) -> SimpleProcess: def install(url: str, name: str, output_dir: str, electron_version: Optional[str], cwd: str, system: bool,
user_agent: Optional[str] = None, extra_options: List[str] = None) -> SimpleProcess:
cmd = [NATIVEFIER_BIN_PATH if not system else 'nativefier', url, '--name', name, output_dir] cmd = [NATIVEFIER_BIN_PATH if not system else 'nativefier', url, '--name', name, output_dir]
if electron_version: if electron_version:
cmd.append('-e') cmd.append('-e')
cmd.append(electron_version) cmd.append(electron_version)
if user_agent:
cmd.extend(('--user-agent', user_agent))
if extra_options: if extra_options:
cmd.extend(extra_options) cmd.extend(extra_options)