mirror of
https://github.com/git-touch/git-touch
synced 2025-03-05 11:48:02 +01:00
refactor: launch url
This commit is contained in:
parent
3506609024
commit
2ce2384578
@ -237,7 +237,7 @@ class AuthModel with ChangeNotifier {
|
||||
void redirectToGithubOauth() {
|
||||
_oauthState = nanoid();
|
||||
var scope = Uri.encodeComponent('user,repo,read:org');
|
||||
launch(
|
||||
launchUrl(
|
||||
'https://github.com/login/oauth/authorize?client_id=$clientId&redirect_uri=gittouch://login&scope=$scope&state=$_oauthState',
|
||||
);
|
||||
}
|
||||
|
@ -4,7 +4,6 @@ import 'package:git_touch/models/auth.dart';
|
||||
import 'package:primer/primer.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:share/share.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import '../utils/utils.dart';
|
||||
import '../scaffolds/long_list.dart';
|
||||
import '../widgets/timeline_item.dart';
|
||||
@ -354,7 +353,7 @@ mutation {
|
||||
MyAction(
|
||||
text: 'Open in Browser',
|
||||
onPress: () {
|
||||
launch(payload['url']);
|
||||
launchUrl(payload['url']);
|
||||
},
|
||||
),
|
||||
],
|
||||
|
@ -8,7 +8,6 @@ import 'package:git_touch/widgets/entry_item.dart';
|
||||
import 'package:git_touch/widgets/repository_item.dart';
|
||||
import 'package:git_touch/widgets/table_view.dart';
|
||||
import 'package:git_touch/widgets/user_item.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import 'package:share/share.dart';
|
||||
import 'package:git_touch/models/auth.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
@ -107,7 +106,7 @@ class OrganizationScreen extends StatelessWidget {
|
||||
text: 'Open in Browser',
|
||||
onPress: () {
|
||||
if (payload != null) {
|
||||
launch(payload['url']);
|
||||
launchUrl(payload['url']);
|
||||
}
|
||||
},
|
||||
),
|
||||
@ -147,7 +146,7 @@ class OrganizationScreen extends StatelessWidget {
|
||||
leftIconData: Octicons.location,
|
||||
text: Text(payload['location']),
|
||||
onTap: () {
|
||||
launch('https://www.google.com/maps/place/' +
|
||||
launchUrl('https://www.google.com/maps/place/' +
|
||||
(payload['location'] as String)
|
||||
.replaceAll(RegExp(r'\s+'), ''));
|
||||
},
|
||||
@ -157,7 +156,7 @@ class OrganizationScreen extends StatelessWidget {
|
||||
leftIconData: Octicons.mail,
|
||||
text: Text(payload['email']),
|
||||
onTap: () {
|
||||
launch('mailto:' + payload['email']);
|
||||
launchUrl('mailto:' + payload['email']);
|
||||
},
|
||||
),
|
||||
if (isNotNullOrEmpty(payload['websiteUrl']))
|
||||
@ -169,7 +168,7 @@ class OrganizationScreen extends StatelessWidget {
|
||||
if (!url.startsWith('http')) {
|
||||
url = 'http://$url';
|
||||
}
|
||||
launch(url);
|
||||
launchUrl(url);
|
||||
},
|
||||
),
|
||||
],
|
||||
|
@ -14,7 +14,6 @@ import 'package:git_touch/models/theme.dart';
|
||||
import 'package:git_touch/screens/commits.dart';
|
||||
import 'package:git_touch/screens/object.dart';
|
||||
import 'package:share/share.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import 'package:git_touch/widgets/repository_item.dart';
|
||||
import '../widgets/entry_item.dart';
|
||||
import '../screens/issues.dart';
|
||||
@ -213,7 +212,7 @@ class RepositoryScreen extends StatelessWidget {
|
||||
text: 'Open in Browser',
|
||||
onPress: () {
|
||||
if (data != null) {
|
||||
launch(data[0]['url']);
|
||||
launchUrl(data[0]['url']);
|
||||
}
|
||||
},
|
||||
),
|
||||
|
@ -9,14 +9,12 @@ import 'package:git_touch/widgets/table_view.dart';
|
||||
import 'package:git_touch/widgets/text_contains_organization.dart';
|
||||
import 'package:git_touch/widgets/user_item.dart';
|
||||
import 'package:primer/primer.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import 'package:share/share.dart';
|
||||
import 'package:github_contributions/github_contributions.dart';
|
||||
import 'package:git_touch/models/auth.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import '../widgets/entry_item.dart';
|
||||
import 'package:git_touch/widgets/repository_item.dart';
|
||||
import '../widgets/link.dart';
|
||||
import '../widgets/action.dart';
|
||||
import '../screens/users.dart';
|
||||
import '../screens/settings.dart';
|
||||
@ -191,7 +189,7 @@ class UserScreen extends StatelessWidget {
|
||||
text: 'Open in Browser',
|
||||
onPress: () {
|
||||
if (data[0] != null) {
|
||||
launch(data[0]['url']);
|
||||
launchUrl(data[0]['url']);
|
||||
}
|
||||
},
|
||||
),
|
||||
@ -252,7 +250,7 @@ class UserScreen extends StatelessWidget {
|
||||
leftIconData: Octicons.location,
|
||||
text: Text(payload['location']),
|
||||
onTap: () {
|
||||
launch('https://www.google.com/maps/place/' +
|
||||
launchUrl('https://www.google.com/maps/place/' +
|
||||
(payload['location'] as String)
|
||||
.replaceAll(RegExp(r'\s+'), ''));
|
||||
},
|
||||
@ -262,7 +260,7 @@ class UserScreen extends StatelessWidget {
|
||||
leftIconData: Octicons.mail,
|
||||
text: Text(payload['email']),
|
||||
onTap: () {
|
||||
launch('mailto:' + payload['email']);
|
||||
launchUrl('mailto:' + payload['email']);
|
||||
},
|
||||
),
|
||||
if (isNotNullOrEmpty(payload['websiteUrl']))
|
||||
@ -274,7 +272,7 @@ class UserScreen extends StatelessWidget {
|
||||
if (!url.startsWith('http')) {
|
||||
url = 'http://$url';
|
||||
}
|
||||
launch(url);
|
||||
launchUrl(url);
|
||||
},
|
||||
),
|
||||
],
|
||||
|
@ -184,3 +184,13 @@ class PrimerBranchName extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
launchUrl(String url) async {
|
||||
if (url == null) return;
|
||||
|
||||
if (await canLaunch(url)) {
|
||||
await launch(url);
|
||||
} else {
|
||||
// TODO: fallback
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:git_touch/utils/utils.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import 'package:git_touch/models/theme.dart';
|
||||
|
||||
class Link extends StatelessWidget {
|
||||
@ -27,7 +27,7 @@ class Link extends StatelessWidget {
|
||||
return Provider.of<ThemeModel>(context).pushRoute(context, screenBuilder);
|
||||
}
|
||||
if (url != null) {
|
||||
launch(url);
|
||||
launchUrl(url);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,10 +3,8 @@ import 'package:flutter/cupertino.dart';
|
||||
import 'package:git_touch/models/notification.dart';
|
||||
import 'package:git_touch/models/theme.dart';
|
||||
import 'package:primer/primer.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import '../utils/utils.dart';
|
||||
import '../screens/issue.dart';
|
||||
// import '../screens/not_found.dart';
|
||||
import 'package:git_touch/models/auth.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'link.dart';
|
||||
@ -115,7 +113,7 @@ class _NotificationItemState extends State<NotificationItem> {
|
||||
|
||||
break;
|
||||
case 'Release':
|
||||
launch(
|
||||
launchUrl(
|
||||
'https://github.com/${payload.owner}/${payload.name}/releases/tag/${payload.title}');
|
||||
break;
|
||||
case 'Commit':
|
||||
|
Loading…
x
Reference in New Issue
Block a user