From f5702297f5835f91f916b36a831d20760982c914 Mon Sep 17 00:00:00 2001 From: keplyx Date: Thu, 5 Mar 2020 10:40:25 +0100 Subject: [PATCH] Use expo web browser for drawer links --- components/Sidebar.js | 16 ++++- navigation/DrawerNavigator.js | 30 ---------- navigation/MainTabNavigator.js | 2 +- screens/Websites/AmicaleScreen.js | 38 ------------ screens/Websites/BlueMindScreen.js | 52 ----------------- screens/Websites/ElusEtudScreen.js | 38 ------------ screens/Websites/EntScreen.js | 90 ----------------------------- screens/Websites/TutorInsaScreen.js | 38 ------------ screens/Websites/WiketudScreen.js | 38 ------------ 9 files changed, 14 insertions(+), 328 deletions(-) delete mode 100644 screens/Websites/AmicaleScreen.js delete mode 100644 screens/Websites/BlueMindScreen.js delete mode 100644 screens/Websites/ElusEtudScreen.js delete mode 100644 screens/Websites/EntScreen.js delete mode 100644 screens/Websites/TutorInsaScreen.js delete mode 100644 screens/Websites/WiketudScreen.js diff --git a/components/Sidebar.js b/components/Sidebar.js index cac9553..a91cf46 100644 --- a/components/Sidebar.js +++ b/components/Sidebar.js @@ -6,6 +6,7 @@ import {Badge, Container, Left, ListItem, Right, Text} from "native-base"; import i18n from "i18n-js"; import CustomMaterialIcon from '../components/CustomMaterialIcon'; import ThemeManager from "../utils/ThemeManager"; +import * as WebBrowser from 'expo-web-browser'; const deviceWidth = Dimensions.get("window").width; @@ -48,21 +49,25 @@ export default class SideBar extends React.Component { { name: "Amicale", route: "AmicaleScreen", + link: "https://amicale-insat.fr/", icon: "alpha-a-box", }, { name: "Élus Étudiants", route: "ElusEtudScreen", + link: "https://etud.insa-toulouse.fr/~eeinsat/", icon: "alpha-e-box", }, { name: "Wiketud", route: "WiketudScreen", + link: "https://wiki.etud.insa-toulouse.fr", icon: "wikipedia", }, { name: "Tutor'INSA", route: "TutorInsaScreen", + link: "https://www.etud.insa-toulouse.fr/~tutorinsa/", icon: "school", }, { @@ -72,11 +77,13 @@ export default class SideBar extends React.Component { { name: i18n.t('screens.bluemind'), route: "BlueMindScreen", + link: "https://etud-mel.insa-toulouse.fr/webmail/", icon: "email", }, { name: i18n.t('screens.ent'), route: "EntScreen", + link: "https://ent.insa-toulouse.fr/", icon: "notebook", }, { @@ -112,8 +119,11 @@ export default class SideBar extends React.Component { } - onListItemPress(route: string) { - this.props.navigation.navigate(route); + onListItemPress(item: Object) { + if (item.link === undefined) + this.props.navigation.navigate(item.route); + else + WebBrowser.openBrowserAsync(item.link); } @@ -123,7 +133,7 @@ export default class SideBar extends React.Component { getRenderItem({item}: Object) { - const onListItemPress = this.onListItemPress.bind(this, item.route); + const onListItemPress = this.onListItemPress.bind(this, item); if (item.icon !== undefined) { return ( diff --git a/navigation/DrawerNavigator.js b/navigation/DrawerNavigator.js index ebadd29..c84af0b 100644 --- a/navigation/DrawerNavigator.js +++ b/navigation/DrawerNavigator.js @@ -7,12 +7,6 @@ import SettingsScreen from '../screens/SettingsScreen'; import AboutScreen from '../screens/About/AboutScreen'; import AboutDependenciesScreen from '../screens/About/AboutDependenciesScreen'; import SelfMenuScreen from '../screens/SelfMenuScreen'; -import TutorInsaScreen from "../screens/Websites/TutorInsaScreen"; -import AmicaleScreen from "../screens/Websites/AmicaleScreen"; -import WiketudScreen from "../screens/Websites/WiketudScreen"; -import ElusEtudScreen from "../screens/Websites/ElusEtudScreen"; -import BlueMindScreen from "../screens/Websites/BlueMindScreen"; -import EntScreen from "../screens/Websites/EntScreen"; import AvailableRoomScreen from "../screens/Websites/AvailableRoomScreen"; import DebugScreen from '../screens/DebugScreen'; import Sidebar from "../components/Sidebar"; @@ -83,30 +77,6 @@ export default function DrawerNavigator() { name="SelfMenuScreen" component={SelfMenuScreen} /> - - - - - - ({ tabBarIcon: ({ focused, color, size }) => { diff --git a/screens/Websites/AmicaleScreen.js b/screens/Websites/AmicaleScreen.js deleted file mode 100644 index 9cb43d7..0000000 --- a/screens/Websites/AmicaleScreen.js +++ /dev/null @@ -1,38 +0,0 @@ -// @flow - -import * as React from 'react'; -import WebViewScreen from "../../components/WebViewScreen"; - -type Props = { - navigation: Object, -} - - -const URL = 'https://amicale-insat.fr/'; - -/** - * Class defining the app's planex screen. - * This screen uses a webview to render the planex page - */ -export default class AmicaleScreen extends React.Component { - - render() { - const nav = this.props.navigation; - return ( - - ); - } -} - diff --git a/screens/Websites/BlueMindScreen.js b/screens/Websites/BlueMindScreen.js deleted file mode 100644 index 1bad89f..0000000 --- a/screens/Websites/BlueMindScreen.js +++ /dev/null @@ -1,52 +0,0 @@ -// @flow - -import * as React from 'react'; -import WebViewScreen from "../../components/WebViewScreen"; -import i18n from "i18n-js"; - -type Props = { - navigation: Object, -} - - -const URL = 'https://etud-mel.insa-toulouse.fr/webmail/'; - -const CUSTOM_CSS_GENERAL = 'https://etud.insa-toulouse.fr/~amicale_app/custom_css/bluemind/customMobile.css'; - - -/** - * Class defining the app's planex screen. - * This screen uses a webview to render the planex page - */ -export default class BlueMindScreen extends React.Component { - - customInjectedJS: string; - - constructor() { - super(); - // Breaks website on ios - this.customInjectedJS = ''; - // '$("head").append(\'\');' + - // '$("head").append(\'\');true;'; - } - - render() { - const nav = this.props.navigation; - return ( - - ); - } -} - diff --git a/screens/Websites/ElusEtudScreen.js b/screens/Websites/ElusEtudScreen.js deleted file mode 100644 index 5227c2d..0000000 --- a/screens/Websites/ElusEtudScreen.js +++ /dev/null @@ -1,38 +0,0 @@ -// @flow - -import * as React from 'react'; -import WebViewScreen from "../../components/WebViewScreen"; - -type Props = { - navigation: Object, -} - - -const URL = 'https://etud.insa-toulouse.fr/~eeinsat/'; - -/** - * Class defining the app's planex screen. - * This screen uses a webview to render the planex page - */ -export default class ElusEtudScreen extends React.Component { - - render() { - const nav = this.props.navigation; - return ( - - ); - } -} - diff --git a/screens/Websites/EntScreen.js b/screens/Websites/EntScreen.js deleted file mode 100644 index da0c1a7..0000000 --- a/screens/Websites/EntScreen.js +++ /dev/null @@ -1,90 +0,0 @@ -// @flow - -import * as React from 'react'; -import WebViewScreen from "../../components/WebViewScreen"; -import i18n from "i18n-js"; - -type Props = { - navigation: Object, -} - - -const URL = 'https://ent.insa-toulouse.fr/'; - -const CUSTOM_CSS_GENERAL = 'https://etud.insa-toulouse.fr/~amicale_app/custom_css/ent/customMobile.css'; - -// let stylesheet = document.createElement('link'); -// stylesheet.type = 'text/css'; -// stylesheet.rel = 'stylesheet'; -// stylesheet.href = 'https://etud.insa-toulouse.fr/~amicale_app/custom_css/ent/customMobile.css'; -// let mobileSpec = document.createElement('meta'); -// mobileSpec.name = 'viewport'; -// mobileSpec.content = 'width=device-width, initial-scale=1.0'; -// document.getElementsByTagName('head')[0].appendChild(mobileSpec); -// // document.getElementsByTagName('head')[0].appendChild(stylesheet); -// document.getElementsByClassName('preference-items')[0].style.display = 'none'; -// document.getElementsByClassName('logoInsa')[0].style.display = 'none'; -// document.getElementsByClassName('logoPress')[0].style.display = 'none'; -// document.getElementsByClassName('ent')[0].style.display = 'none'; -// document.getElementById('portal-page-header').style.margin = 0; -// document.querySelectorAll('.uportal-navigation-category').forEach(element => { -// element.style.cssText = "width: 100%; display: flex; height: 50px;"; -// if (element.children.length > 0) -// element.children[0].style.margin = 'auto'; -// }); -// true; - - -/** - * Class defining the app's ent screen. - * This screen uses a webview to render the ent page - */ -export default class EntScreen extends React.Component { - - customInjectedJS: string; - - constructor() { - super(); - this.customInjectedJS = - 'let stylesheet = document.createElement(\'link\');\n' + - 'stylesheet.type = \'text/css\';\n' + - 'stylesheet.rel = \'stylesheet\';\n' + - 'stylesheet.href = \'' + CUSTOM_CSS_GENERAL + '\';\n' + - 'let mobileSpec = document.createElement(\'meta\');\n' + - 'mobileSpec.name = \'viewport\';\n' + - 'mobileSpec.content = \'width=device-width, initial-scale=1.0\';\n' + - 'document.getElementsByTagName(\'head\')[0].appendChild(mobileSpec);\n' + - 'document.getElementsByTagName(\'head\')[0].appendChild(stylesheet);\n' + - 'document.getElementsByClassName(\'preference-items\')[0].style.display = \'none\';\n' + - 'document.getElementsByClassName(\'logoInsa\')[0].style.display = \'none\';\n' + - 'document.getElementsByClassName(\'logoPress\')[0].style.display = \'none\';\n' + - 'document.getElementsByClassName(\'ent\')[0].style.display = \'none\';\n' + - 'document.getElementById(\'portal-page-header\').style.margin = 0;\n' + - 'document.querySelectorAll(\'.uportal-navigation-category\').forEach(element => {\n' + - ' element.style.cssText = "width: 100%; display: flex; height: 50px;";\n' + - ' if (element.children.length > 0)\n' + - ' element.children[0].style.margin = \'auto\';\n' + - '});' + - 'true;'; - } - - render() { - const nav = this.props.navigation; - return ( - - ); - } -} - diff --git a/screens/Websites/TutorInsaScreen.js b/screens/Websites/TutorInsaScreen.js deleted file mode 100644 index c0bef99..0000000 --- a/screens/Websites/TutorInsaScreen.js +++ /dev/null @@ -1,38 +0,0 @@ -// @flow - -import * as React from 'react'; -import WebViewScreen from "../../components/WebViewScreen"; - -type Props = { - navigation: Object, -} - - -const URL = 'https://www.etud.insa-toulouse.fr/~tutorinsa/'; - -/** - * Class defining the app's planex screen. - * This screen uses a webview to render the planex page - */ -export default class TutorInsaScreen extends React.Component { - - render() { - const nav = this.props.navigation; - return ( - - ); - } -} - diff --git a/screens/Websites/WiketudScreen.js b/screens/Websites/WiketudScreen.js deleted file mode 100644 index a29a87e..0000000 --- a/screens/Websites/WiketudScreen.js +++ /dev/null @@ -1,38 +0,0 @@ -// @flow - -import * as React from 'react'; -import WebViewScreen from "../../components/WebViewScreen"; - -type Props = { - navigation: Object, -} - - -const URL = 'https://wiki.etud.insa-toulouse.fr/'; - -/** - * Class defining the app's planex screen. - * This screen uses a webview to render the planex page - */ -export default class WiketudScreen extends React.Component { - - render() { - const nav = this.props.navigation; - return ( - - ); - } -} -