From f8da14119c6402a15fd52a317fec4210d75e2695 Mon Sep 17 00:00:00 2001 From: Nikolai R Kristiansen Date: Sun, 17 Sep 2017 23:53:48 +0200 Subject: [PATCH] ios: Open more links directly in apps bump ver --- src/modules/about/About.js | 21 +++++++++++++++++++-- src/modules/events/EventDetail.js | 27 ++++++++++++++++++++++++--- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/src/modules/about/About.js b/src/modules/about/About.js index de9c348..2688bef 100644 --- a/src/modules/about/About.js +++ b/src/modules/about/About.js @@ -11,7 +11,10 @@ export default class About extends Component { openFacebook() { /* Ref: https://stackoverflow.com/questions/4810803/open-facebook-page-from-android-app */ - const url = 'fb://page/23664032291/'; + const url = Platform.select({ + ios: 'fb://page/?id=23664032291', + android: 'fb://page/23664032291/' + }); Linking.canOpenURL(url).then(supported => { if (!supported) { return Linking.openURL('https://www.facebook.com/studentersamfundet/'); @@ -36,6 +39,20 @@ export default class About extends Component { }).catch(err => console.error('An error occurred', err)); } + openMap() { + const url = Platform.select({ + ios: `comgooglemaps://?q=${CHATEAU_NEUF_ADDRESS}`, + android: `https://www.google.com/maps/search/?api=1&query=${CHATEAU_NEUF_ADDRESS}` + }); + Linking.canOpenURL(url).then(supported => { + if (!supported) { + return Linking.openURL(`https://www.google.com/maps/search/?api=1&query=${CHATEAU_NEUF_ADDRESS}`); + } else { + return Linking.openURL(url); + } + }).catch(err => console.error('An error occurred', err)); + } + render() { return ( @@ -57,7 +74,7 @@ export default class About extends Component { Adresse Det Norske Studentersamfund{"\n"}Slemdalsveien 15, 0369 Oslo - diff --git a/src/modules/events/EventDetail.js b/src/modules/events/EventDetail.js index e6b204c..e205799 100644 --- a/src/modules/events/EventDetail.js +++ b/src/modules/events/EventDetail.js @@ -73,9 +73,30 @@ export default class EventDetail extends Component { return text; } - onUrlPress(link) { + onTicketUrlPress(link) { Linking.openURL(link); } + + onFacebookUrlPress(link) { + const fbEventPattern = /https?:\/\/www\.facebook\.com\/events\/(\d+)\/?/i; + const matches = fbEventPattern.exec(link); + let iosURL = link; + if( matches.length ) { + iosURL = 'fb://event/?id=' + matches[1]; + } + const url = Platform.select({ + ios: iosURL, + android: link + }); + Linking.canOpenURL(url).then(supported => { + if (!supported) { + return Linking.openURL(link); + } else { + return Linking.openURL(url); + } + }).catch(err => console.error('An error occurred', err)); + } + onLocationPress(venue) { if( venue !== 'Annetsteds' ) { Linking.openURL(`https://www.google.com/maps/dir/?api=1&destination=${CHATEAU_NEUF_ADDRESS}`); @@ -92,7 +113,7 @@ export default class EventDetail extends Component { if(item.ticket_url) { return ( - this.onUrlPress(item.ticket_url)}> + this.onTicketUrlPress(item.ticket_url)}> {text} @@ -116,7 +137,7 @@ export default class EventDetail extends Component { if (!item.facebook_url) { return;} return ( - this.onUrlPress(item.facebook_url)} style={styles.metaInner}> + this.onFacebookUrlPress(item.facebook_url)} style={styles.metaInner}> På Facebook