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/routes.dart';
import 'package:cake_wallet/src/screens/connect_device/connect_device_page.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/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/utils/show_pop_up.dart';
import 'package:cake_wallet/view_model/hardware_wallet/ledger_view_model.dart'; import 'package:cake_wallet/view_model/hardware_wallet/ledger_view_model.dart';
import 'package:cw_core/wallet_base.dart'; import 'package:cw_core/wallet_base.dart';
@ -167,11 +166,7 @@ class DFXBuyProvider extends BuyProvider {
}); });
if (await canLaunchUrl(uri)) { if (await canLaunchUrl(uri)) {
if (DeviceInfo.instance.isMobile) { await launchUrl(uri, mode: LaunchMode.externalApplication);
Navigator.of(context).pushNamed(Routes.webViewPage, arguments: [title, uri]);
} else {
await launchUrl(uri, mode: LaunchMode.externalApplication);
}
} else { } else {
throw Exception('Could not launch URL'); 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/exchange/trade_state.dart';
import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/palette.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/src/widgets/alert_with_one_action.dart';
import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/store/settings_store.dart';
import 'package:cake_wallet/themes/theme_base.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/crypto_currency.dart';
import 'package:cw_core/wallet_base.dart'; import 'package:cw_core/wallet_base.dart';
import 'package:cw_core/wallet_type.dart'; import 'package:cw_core/wallet_type.dart';
@ -272,11 +270,7 @@ class MoonPayProvider extends BuyProvider {
} }
if (await canLaunchUrl(uri)) { if (await canLaunchUrl(uri)) {
if (DeviceInfo.instance.isMobile) { await launchUrl(uri, mode: LaunchMode.externalApplication);
Navigator.of(context).pushNamed(Routes.webViewPage, arguments: ['MoonPay', uri]);
} else {
await launchUrl(uri, mode: LaunchMode.externalApplication);
}
} else { } else {
throw Exception('Could not launch URL'); 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/.secrets.g.dart' as secrets;
import 'package:cake_wallet/buy/buy_provider.dart'; import 'package:cake_wallet/buy/buy_provider.dart';
import 'package:cake_wallet/generated/i18n.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/store/settings_store.dart';
import 'package:cake_wallet/themes/extensions/cake_text_theme.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/crypto_currency.dart';
import 'package:cw_core/wallet_base.dart'; import 'package:cw_core/wallet_base.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -94,11 +92,6 @@ class OnRamperBuyProvider extends BuyProvider {
Future<void> launchProvider(BuildContext context, bool? isBuyAction) async { Future<void> launchProvider(BuildContext context, bool? isBuyAction) async {
final uri = requestOnramperUrl(context, isBuyAction); final uri = requestOnramperUrl(context, isBuyAction);
if (DeviceInfo.instance.isMobile) { await launchUrl(uri, mode: LaunchMode.externalApplication);
Navigator.of(context)
.pushNamed(Routes.webViewPage, arguments: [title, uri]);
} else {
await launchUrl(uri);
}
} }
} }

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

View file

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

View file

@ -107,7 +107,9 @@ class IoniaCreateAccountPage extends BasePage {
), ),
recognizer: TapGestureRecognizer() recognizer: TapGestureRecognizer()
..onTap = () async { ..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} '), TextSpan(text: ' ${S.of(context).and} '),
@ -119,7 +121,9 @@ class IoniaCreateAccountPage extends BasePage {
), ),
recognizer: TapGestureRecognizer() recognizer: TapGestureRecognizer()
..onTap = () async { ..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}'), TextSpan(text: ' ${S.of(context).by_cake_pay}'),
], ],

View file

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

View file

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

View file

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

View file

@ -19,7 +19,7 @@ class OrderDetailsViewModel = OrderDetailsViewModelBase
abstract class OrderDetailsViewModelBase with Store { abstract class OrderDetailsViewModelBase with Store {
OrderDetailsViewModelBase({required WalletBase wallet, required Order orderForDetails}) OrderDetailsViewModelBase({required WalletBase wallet, required Order orderForDetails})
: items = ObservableList<StandartListItem>(), : items = ObservableList<StandartListItem>(),
order = orderForDetails { order = orderForDetails {
if (order.provider != null) { if (order.provider != null) {
switch (order.provider) { switch (order.provider) {
@ -101,13 +101,13 @@ abstract class OrderDetailsViewModelBase with Store {
TrackTradeListItem( TrackTradeListItem(
title: S.current.track, title: S.current.track,
value: buildURL, value: buildURL,
onTap: () { onTap: () async {
try { try {
launch(buildURL); final uri = Uri.parse(buildURL);
if (await canLaunchUrl(uri))
await launchUrl(uri, mode: LaunchMode.externalApplication);
} catch (e) {} } catch (e) {}
} }));
)
);
} }
} }

View file

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

View file

@ -99,9 +99,10 @@ abstract class TransactionDetailsViewModelBase with Store {
items.add(BlockExplorerListItem( items.add(BlockExplorerListItem(
title: S.current.view_in_block_explorer, title: S.current.view_in_block_explorer,
value: _explorerDescription(type), value: _explorerDescription(type),
onTap: () { onTap: () async {
try { 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) {} } catch (e) {}
})); }));

View file

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