feat(Links): [Android Only] Attach module headers when viewing web GUI

This commit is contained in:
Jagandeep Brar
2021-04-18 12:38:44 -05:00
parent 7fa50e4cf8
commit 54cc4ad33d
7 changed files with 25 additions and 10 deletions

View File

@@ -33,7 +33,7 @@ extension StringExtension on String {
}
extension StringLinksExtension on String {
Future<void> _openLink(String url) async {
Future<void> _openLink(String url, { Map<String, String> headers }) async {
try {
//Attempt to launch the link forced as a universal link
if(await _launchUniversalLink(url)) return;
@@ -41,7 +41,7 @@ extension StringLinksExtension on String {
LunaBrowser _browser = LunaDatabaseValue.SELECTED_BROWSER.data;
if(_browser != LunaBrowser.APPLE_SAFARI && await _launchCustomBrowser(_browser.formatted(url))) return;
//If all else fails, just launch it in Safari/stock browser
await _launch(url);
await _launch(url, headers: headers);
} catch (error, stack) {
LunaLogger().error('Unable to open link: $url', error, stack);
}
@@ -49,10 +49,10 @@ extension StringLinksExtension on String {
Future<bool> _launchUniversalLink(String url) async => await launch(url, forceSafariVC: false, universalLinksOnly: true);
Future<bool> _launchCustomBrowser(String url) async => await launch(url, forceSafariVC: false);
Future<bool> _launch(String url) async => await launch(url);
Future<bool> _launch(String url, { Map<String, String> headers }) async => await launch(url, headers: headers);
/// Attempt to open this string as a URL in a browser.
Future<void> lunaOpenGenericLink() async => await _openLink(this);
Future<void> lunaOpenGenericLink({ Map<dynamic, dynamic> headers }) async => await _openLink(this, headers: headers?.cast<String, String>());
/// Attach this string as an ID/title to IMDB and attempt to launch it as a URL.
Future<void> lunaOpenIMDB() async => await _openLink('https://www.imdb.com/title/$this');

View File

@@ -126,7 +126,10 @@ class _State extends State<Lidarr> {
Future<void> _handlePopup() async {
List<dynamic> values = await LidarrDialogs.globalSettings(context);
if(values[0]) switch(values[1]) {
case 'web_gui': await _api.host?.toString()?.lunaOpenGenericLink(); break;
case 'web_gui':
ProfileHiveObject profile = Database.currentProfileObject;
await profile.lidarrHost?.lunaOpenGenericLink(headers: profile.lidarrHeaders);
break;
case 'update_library': await _api.updateLibrary()
.then((_) => showLunaSuccessSnackBar(title: 'Updating Library...', message: 'Updating your library in the background'))
.catchError((error) => showLunaErrorSnackBar(title: 'Failed to Update Library', error: error));

View File

@@ -99,7 +99,10 @@ class _State extends State<NZBGet> {
Future<void> _handlePopup() async {
List<dynamic> values = await NZBGetDialogs.globalSettings(context);
if(values[0]) switch(values[1]) {
case 'web_gui': _api.host.lunaOpenGenericLink(); break;
case 'web_gui':
ProfileHiveObject profile = Database.currentProfileObject;
await profile.nzbgetHost?.lunaOpenGenericLink(headers: profile.nzbgetHeaders);
break;
case 'add_nzb': _addNZB(); break;
case 'sort': _sort(); break;
case 'server_details': _serverDetails(); break;

View File

@@ -44,7 +44,9 @@ extension RadarrGlobalSettingsTypeExtension on RadarrGlobalSettingsType {
throw Exception('Invalid RadarrGlobalSettingsType');
}
Future<void> _webGUI(BuildContext context) async => context.read<RadarrState>().host.lunaOpenGenericLink();
Future<void> _webGUI(BuildContext context) async => context.read<RadarrState>().host.lunaOpenGenericLink(
headers: context.read<RadarrState>().headers,
);
Future<void> _backupDatabase(BuildContext context) async => RadarrAPIHelper().backupDatabase(context: context);
Future<void> _searchAllMissing(BuildContext context) async {
bool result = await RadarrDialogs().searchAllMissingMovies(context);

View File

@@ -99,7 +99,10 @@ class _State extends State<SABnzbd> {
Future<void> _handlePopup() async {
List<dynamic> values = await SABnzbdDialogs.globalSettings(context);
if(values[0]) switch(values[1]) {
case 'web_gui': _api.host.lunaOpenGenericLink(); break;
case 'web_gui':
ProfileHiveObject profile = Database.currentProfileObject;
await profile.sabnzbdHost?.lunaOpenGenericLink(headers: profile.sabnzbdHeaders);
break;
case 'add_nzb': _addNZB(); break;
case 'sort': _sort(); break;
case 'clear_history': _clearHistory(); break;

View File

@@ -22,7 +22,9 @@ class SonarrAppBarGlobalSettingsAction extends StatelessWidget {
}
}
Future<void> _webGUI(BuildContext context) async => Provider.of<SonarrState>(context, listen: false).host.lunaOpenGenericLink();
Future<void> _webGUI(BuildContext context) async => context.read<SonarrState>().host.lunaOpenGenericLink(
headers: context.read<SonarrState>().headers,
);
Future<void> _viewQueue(BuildContext context) async => SonarrQueueRouter().navigateTo(context);

View File

@@ -48,7 +48,9 @@ extension TautulliGlobalSettingsTypeExtension on TautulliGlobalSettingsType {
throw Exception('Invalid TautulliGlobalSettingsType');
}
Future<void> _webGUI(BuildContext context) async => context.read<TautulliState>().host.lunaOpenGenericLink();
Future<void> _webGUI(BuildContext context) async => context.read<TautulliState>().host.lunaOpenGenericLink(
headers: context.read<TautulliState>().headers,
);
Future<void> _backupConfig(BuildContext context) async => TautulliAPIHelper().backupConfiguration(context: context);
Future<void> _backupDatabase(BuildContext context) async => TautulliAPIHelper().backupDatabase(context: context);
Future<void> _deleteCache(BuildContext context) async => TautulliAPIHelper().deleteCache(context: context);