set launchUrl mode to LaunchMode.externalApplication

This commit is contained in:
Serhii 2024-05-23 14:00:52 +03:00
parent dfba5be2cd
commit f401dafdca
13 changed files with 40 additions and 57 deletions

View file

@ -5,7 +5,6 @@ import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/screens/connect_device/connect_device_page.dart';
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
import 'package:cake_wallet/utils/device_info.dart';
import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:cake_wallet/view_model/hardware_wallet/ledger_view_model.dart';
import 'package:cw_core/wallet_base.dart';
@ -167,11 +166,7 @@ class DFXBuyProvider extends BuyProvider {
});
if (await canLaunchUrl(uri)) {
if (DeviceInfo.instance.isMobile) {
Navigator.of(context).pushNamed(Routes.webViewPage, arguments: [title, uri]);
} else {
await launchUrl(uri, mode: LaunchMode.externalApplication);
}
} else {
throw Exception('Could not launch URL');
}

View file

@ -9,11 +9,9 @@ import 'package:cake_wallet/buy/order.dart';
import 'package:cake_wallet/exchange/trade_state.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/palette.dart';
import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
import 'package:cake_wallet/store/settings_store.dart';
import 'package:cake_wallet/themes/theme_base.dart';
import 'package:cake_wallet/utils/device_info.dart';
import 'package:cw_core/crypto_currency.dart';
import 'package:cw_core/wallet_base.dart';
import 'package:cw_core/wallet_type.dart';
@ -272,11 +270,7 @@ class MoonPayProvider extends BuyProvider {
}
if (await canLaunchUrl(uri)) {
if (DeviceInfo.instance.isMobile) {
Navigator.of(context).pushNamed(Routes.webViewPage, arguments: ['MoonPay', uri]);
} else {
await launchUrl(uri, mode: LaunchMode.externalApplication);
}
} else {
throw Exception('Could not launch URL');
}

View file

@ -1,10 +1,8 @@
import 'package:cake_wallet/.secrets.g.dart' as secrets;
import 'package:cake_wallet/buy/buy_provider.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/store/settings_store.dart';
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
import 'package:cake_wallet/utils/device_info.dart';
import 'package:cw_core/crypto_currency.dart';
import 'package:cw_core/wallet_base.dart';
import 'package:flutter/material.dart';
@ -94,11 +92,6 @@ class OnRamperBuyProvider extends BuyProvider {
Future<void> launchProvider(BuildContext context, bool? isBuyAction) async {
final uri = requestOnramperUrl(context, isBuyAction);
if (DeviceInfo.instance.isMobile) {
Navigator.of(context)
.pushNamed(Routes.webViewPage, arguments: [title, uri]);
} else {
await launchUrl(uri);
}
await launchUrl(uri, mode: LaunchMode.externalApplication);
}
}

View file

@ -2,7 +2,6 @@ import 'package:cake_wallet/src/screens/dashboard/widgets/anonpay_transaction_ro
import 'package:cake_wallet/src/screens/dashboard/widgets/order_row.dart';
import 'package:cake_wallet/themes/extensions/placeholder_theme.dart';
import 'package:cake_wallet/src/widgets/dashboard_card_widget.dart';
import 'package:cake_wallet/utils/device_info.dart';
import 'package:cake_wallet/utils/responsive_layout_util.dart';
import 'package:cake_wallet/view_model/dashboard/anonpay_transaction_list_item.dart';
import 'package:cake_wallet/view_model/dashboard/order_list_item.dart';
@ -52,11 +51,7 @@ class TransactionsPage extends StatelessWidget {
try {
final uri = Uri.parse(
"https://guides.cakewallet.com/docs/FAQ/why_are_my_funds_not_appearing/");
if (DeviceInfo.instance.isMobile) {
Navigator.of(context).pushNamed(Routes.webViewPage, arguments: ['', uri]);
} else {
launchUrl(uri);
}
launchUrl(uri, mode: LaunchMode.externalApplication);
} catch (_) {}
},
title: S.of(context).syncing_wallet_alert_title,

View file

@ -46,10 +46,6 @@ class DisclaimerBodyState extends State<DisclaimerPageBody> {
bool _checked = false;
String _fileText = '';
Future<void> launchUrl(String url) async {
if (await canLaunch(url)) await launch(url);
}
Future getFileLines() async {
_fileText = await rootBundle.loadString(
isMoneroOnly
@ -152,7 +148,11 @@ class DisclaimerBodyState extends State<DisclaimerPageBody> {
children: <Widget>[
Expanded(
child: GestureDetector(
onTap: () => launchUrl(changenowUrl),
onTap: () async {
final uri = Uri.parse(changenowUrl);
if (await canLaunchUrl(uri))
await launchUrl(uri, mode: LaunchMode.externalApplication);
},
child: Text(
changenowUrl,
textAlign: TextAlign.left,

View file

@ -107,7 +107,9 @@ class IoniaCreateAccountPage extends BasePage {
),
recognizer: TapGestureRecognizer()
..onTap = () async {
if (await canLaunch(termsAndConditionsUrl)) await launch(termsAndConditionsUrl);
final uri = Uri.parse(termsAndConditionsUrl);
if (await canLaunchUrl(uri))
await launchUrl(uri, mode: LaunchMode.externalApplication);
},
),
TextSpan(text: ' ${S.of(context).and} '),
@ -119,7 +121,9 @@ class IoniaCreateAccountPage extends BasePage {
),
recognizer: TapGestureRecognizer()
..onTap = () async {
if (await canLaunch(privacyPolicyUrl)) await launch(privacyPolicyUrl);
final uri = Uri.parse(privacyPolicyUrl);
if (await canLaunchUrl(uri))
await launchUrl(uri, mode: LaunchMode.externalApplication);
}),
TextSpan(text: ' ${S.of(context).by_cake_pay}'),
],

View file

@ -31,7 +31,8 @@ class SettingsLinkProviderCell extends StandardListRow {
static void _launchUrl(String url) async {
try {
await launch(url, forceSafariVC: false);
final uri = Uri.parse(url);
if (await canLaunchUrl(uri)) await launchUrl(uri, mode: LaunchMode.externalApplication);
} catch (e) {}
}
}

View file

@ -161,27 +161,26 @@ class YatPopup extends StatelessWidget {
onClose: onClose,
onGet: () {
var createNewYatUrl = YatLink.startFlowUrl;
final createNewYatUrlParameters = dashboardViewModel.
yatStore.defineQueryParameters();
final createNewYatUrlParameters =
dashboardViewModel.yatStore.defineQueryParameters();
if (createNewYatUrlParameters.isNotEmpty) {
createNewYatUrl += '?sub1=' + createNewYatUrlParameters;
}
launch(createNewYatUrl, forceSafariVC: false);
final uri = Uri.parse(createNewYatUrl);
launchUrl(uri, mode: LaunchMode.externalApplication);
},
onConnect: () {
String url = baseUrl + YatLink.signInSuffix;
final parameters = dashboardViewModel
.yatStore.defineQueryParameters();
final parameters = dashboardViewModel.yatStore.defineQueryParameters();
if (parameters.isNotEmpty) {
url += YatLink.queryParameter + parameters;
}
launch(url, forceSafariVC: false);
}
))
: Container()
)
final uri = Uri.parse(url);
launchUrl(uri, mode: LaunchMode.externalApplication);
}))
: Container())
],
);
}

View file

@ -103,7 +103,8 @@ class _ServicesUpdatesWidgetState extends State<ServicesUpdatesWidget> {
child: PrimaryImageButton(
onPressed: () {
try {
launchUrl(Uri.parse("https://status.cakewallet.com/"));
launchUrl(Uri.parse("https://status.cakewallet.com/"),
mode: LaunchMode.externalApplication);
} catch (_) {}
},
image: Image.asset(

View file

@ -101,13 +101,13 @@ abstract class OrderDetailsViewModelBase with Store {
TrackTradeListItem(
title: S.current.track,
value: buildURL,
onTap: () {
onTap: () async {
try {
launch(buildURL);
final uri = Uri.parse(buildURL);
if (await canLaunchUrl(uri))
await launchUrl(uri, mode: LaunchMode.externalApplication);
} catch (e) {}
}
)
);
}));
}
}

View file

@ -179,7 +179,7 @@ abstract class TradeDetailsViewModelBase with Store {
void _launchUrl(String url) {
final uri = Uri.parse(url);
try {
launchUrl(uri);
launchUrl(uri, mode: LaunchMode.externalApplication);
} catch (e) {}
}
}

View file

@ -99,9 +99,10 @@ abstract class TransactionDetailsViewModelBase with Store {
items.add(BlockExplorerListItem(
title: S.current.view_in_block_explorer,
value: _explorerDescription(type),
onTap: () {
onTap: () async {
try {
launch(_explorerUrl(type, tx.id));
final uri = Uri.parse(_explorerUrl(type, tx.id));
if (await canLaunchUrl(uri)) await launchUrl(uri, mode: LaunchMode.externalApplication);
} catch (e) {}
}));

View file

@ -56,7 +56,7 @@ abstract class UnspentCoinsDetailsViewModelBase with Store {
onTap: () {
try {
final url = Uri.parse(_explorerUrl(_type, unspentCoinsItem.hash));
return launchUrl(url);
return launchUrl(url, mode: LaunchMode.externalApplication);
} catch (e) {}
},
));