|
1 | 1 | import 'dart:async';
|
2 | 2 |
|
3 | 3 | import 'package:flutter/cupertino.dart';
|
4 |
| -import 'package:flutter/foundation.dart'; |
5 | 4 | import 'package:flutter/gestures.dart';
|
6 | 5 | import 'package:flutter/material.dart';
|
7 | 6 | import 'package:flutter/rendering.dart';
|
8 |
| -import 'package:flutter/services.dart'; |
9 | 7 | import 'package:html/dom.dart' as dom;
|
10 | 8 | import 'package:intl/intl.dart';
|
11 | 9 |
|
12 | 10 | import '../api/core.dart';
|
13 | 11 | import '../api/model/model.dart';
|
14 | 12 | import '../generated/l10n/zulip_localizations.dart';
|
15 | 13 | import '../model/avatar_url.dart';
|
16 |
| -import '../model/binding.dart'; |
17 | 14 | import '../model/content.dart';
|
18 | 15 | import '../model/internal_link.dart';
|
| 16 | +import 'actions.dart'; |
19 | 17 | import 'code_block.dart';
|
20 | 18 | import 'dialog.dart';
|
21 | 19 | import 'icons.dart';
|
@@ -1432,32 +1430,7 @@ void _launchUrl(BuildContext context, String urlString) async {
|
1432 | 1430 | return;
|
1433 | 1431 | }
|
1434 | 1432 |
|
1435 |
| - bool launched = false; |
1436 |
| - String? errorMessage; |
1437 |
| - try { |
1438 |
| - launched = await ZulipBinding.instance.launchUrl(url, |
1439 |
| - mode: switch (defaultTargetPlatform) { |
1440 |
| - // On iOS we prefer LaunchMode.externalApplication because (for |
1441 |
| - // HTTP URLs) LaunchMode.platformDefault uses SFSafariViewController, |
1442 |
| - // which gives an awkward UX as described here: |
1443 |
| - // https://chat.zulip.org/#narrow/stream/48-mobile/topic/in-app.20browser/near/1169118 |
1444 |
| - TargetPlatform.iOS => UrlLaunchMode.externalApplication, |
1445 |
| - _ => UrlLaunchMode.platformDefault, |
1446 |
| - }); |
1447 |
| - } on PlatformException catch (e) { |
1448 |
| - errorMessage = e.message; |
1449 |
| - } |
1450 |
| - if (!launched) { // TODO(log) |
1451 |
| - if (!context.mounted) return; |
1452 |
| - |
1453 |
| - final zulipLocalizations = ZulipLocalizations.of(context); |
1454 |
| - showErrorDialog(context: context, |
1455 |
| - title: zulipLocalizations.errorCouldNotOpenLinkTitle, |
1456 |
| - message: [ |
1457 |
| - zulipLocalizations.errorCouldNotOpenLink(url.toString()), |
1458 |
| - if (errorMessage != null) errorMessage, |
1459 |
| - ].join("\n\n")); |
1460 |
| - } |
| 1433 | + await PlatformActions.launchUrl(context, url); |
1461 | 1434 | }
|
1462 | 1435 |
|
1463 | 1436 | /// Like [Image.network], but includes [authHeader] if [src] is on-realm.
|
|
0 commit comments