diff --git a/package.json b/package.json index b8657aa..02dbe91 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,6 @@ "expo-localization": "~8.1.0", "expo-permissions": "~8.1.0", "expo-secure-store": "~8.1.0", - "expo-web-browser": "~8.1.0", "i18n-js": "^3.3.0", "react": "16.9.0", "react-dom": "16.9.0", diff --git a/src/components/Sidebar/SideBarSection.js b/src/components/Sidebar/SideBarSection.js index 33fe67f..88e6154 100644 --- a/src/components/Sidebar/SideBarSection.js +++ b/src/components/Sidebar/SideBarSection.js @@ -3,7 +3,7 @@ import * as React from 'react'; import {FlatList} from "react-native"; import {Drawer, List, withTheme} from 'react-native-paper'; -import {openBrowser} from "../../utils/WebBrowser"; +import {Linking} from "expo"; type Props = { navigation: Object, @@ -58,7 +58,7 @@ class SideBarSection extends React.PureComponent { */ onListItemPress(item: Object) { if (item.link !== undefined) - openBrowser(item.link, this.colors.primary); + Linking.openURL(item.link); else if (item.action !== undefined) item.action(); else diff --git a/src/components/Sidebar/Sidebar.js b/src/components/Sidebar/Sidebar.js index 8e8a00f..7068c44 100644 --- a/src/components/Sidebar/Sidebar.js +++ b/src/components/Sidebar/Sidebar.js @@ -115,26 +115,22 @@ class SideBar extends React.Component { const websitesData = [ { name: "Amicale", - route: "amicale", - link: "https://amicale-insat.fr/", + route: "amicale-website", icon: "alpha-a-box", }, { name: "Élus Étudiants", route: "elus-etudiants", - link: "https://etud.insa-toulouse.fr/~eeinsat/", icon: "alpha-e-box", }, { name: "Wiketud", route: "wiketud", - link: "https://wiki.etud.insa-toulouse.fr", icon: "wikipedia", }, { name: "Tutor'INSA", - route: "tutor-insa", - link: "https://www.etud.insa-toulouse.fr/~tutorinsa/", + route: "tutorinsa", icon: "school", }, ]; diff --git a/src/navigation/DrawerNavigator.js b/src/navigation/DrawerNavigator.js index 3644e3c..810cd0c 100644 --- a/src/navigation/DrawerNavigator.js +++ b/src/navigation/DrawerNavigator.js @@ -22,6 +22,10 @@ import ClubAboutScreen from "../screens/Amicale/Clubs/ClubAboutScreen"; import VoteScreen from "../screens/Amicale/VoteScreen"; import AmicaleContactScreen from "../screens/Amicale/AmicaleContactScreen"; import MaterialHeaderButtons, {Item} from "../components/Custom/HeaderButton"; +import {AmicaleWebsiteScreen} from "../screens/Websites/AmicaleWebsiteScreen"; +import {TutorInsaWebsiteScreen} from "../screens/Websites/TutorInsaWebsiteScreen"; +import {WiketudWebsiteScreen} from "../screens/Websites/WiketudWebsiteScreen"; +import {ElusEtudiantsWebsiteScreen} from "../screens/Websites/ElusEtudiantsWebsiteScreen"; const defaultScreenOptions = { gestureEnabled: true, @@ -171,6 +175,104 @@ function BibStackComponent() { ); } +const AmicaleWebsiteStack = createStackNavigator(); + +function AmicaleWebsiteStackComponent() { + return ( + + { + const openDrawer = getDrawerButton.bind(this, navigation); + return { + title: "Amicale", + headerLeft: openDrawer + }; + }} + /> + + ); +} + +const ElusEtudiantsStack = createStackNavigator(); + +function ElusEtudiantsStackComponent() { + return ( + + { + const openDrawer = getDrawerButton.bind(this, navigation); + return { + title: "Élus Étudiants", + headerLeft: openDrawer + }; + }} + /> + + ); +} + +const WiketudStack = createStackNavigator(); + +function WiketudStackComponent() { + return ( + + { + const openDrawer = getDrawerButton.bind(this, navigation); + return { + title: "Wiketud", + headerLeft: openDrawer + }; + }} + /> + + ); +} + +const TutorInsaStack = createStackNavigator(); + +function TutorInsaStackComponent() { + return ( + + { + const openDrawer = getDrawerButton.bind(this, navigation); + return { + title: "Tutor'INSA", + headerLeft: openDrawer + }; + }} + /> + + ); +} + + + const TetrisStack = createStackNavigator(); function TetrisStackComponent() { @@ -406,6 +508,22 @@ export default class DrawerNavigator extends React.Component { name="bib" component={BibStackComponent} /> + + + + { handleSuccess = () => this.props.navigation.navigate(this.nextScreen); - onResetPasswordClick = () => openBrowser(RESET_PASSWORD_LINK, this.colors.primary); + onResetPasswordClick = () => Linking.openURL(RESET_PASSWORD_LINK); validateEmail = () => this.setState({isEmailValidated: true}); diff --git a/src/screens/Amicale/ProfileScreen.js b/src/screens/Amicale/ProfileScreen.js index 15f562f..9c33dfe 100644 --- a/src/screens/Amicale/ProfileScreen.js +++ b/src/screens/Amicale/ProfileScreen.js @@ -4,10 +4,10 @@ import * as React from 'react'; import {FlatList, StyleSheet, View} from "react-native"; import {Avatar, Button, Card, Divider, List, withTheme} from 'react-native-paper'; import AuthenticatedScreen from "../../components/Amicale/AuthenticatedScreen"; -import {openBrowser} from "../../utils/WebBrowser"; import i18n from 'i18n-js'; import LogoutDialog from "../../components/Amicale/LogoutDialog"; import MaterialHeaderButtons, {Item} from "../../components/Custom/HeaderButton"; +import {Linking} from "expo"; type Props = { navigation: Object, @@ -158,7 +158,7 @@ class ProfileScreen extends React.Component { diff --git a/src/screens/HomeScreen.js b/src/screens/HomeScreen.js index 15b9df3..a3f5d2e 100644 --- a/src/screens/HomeScreen.js +++ b/src/screens/HomeScreen.js @@ -10,11 +10,11 @@ import FeedItem from "../components/Home/FeedItem"; import SquareDashboardItem from "../components/Home/SmallDashboardItem"; import PreviewEventDashboardItem from "../components/Home/PreviewEventDashboardItem"; import {stringToDate} from "../utils/Planning"; -import {openBrowser} from "../utils/WebBrowser"; import ActionsDashBoardItem from "../components/Home/ActionsDashboardItem"; import ConnectionManager from "../managers/ConnectionManager"; import {CommonActions} from '@react-navigation/native'; import MaterialHeaderButtons, {Item} from "../components/Custom/HeaderButton"; +import {Linking} from "expo"; // import DATA from "../dashboard_data.json"; @@ -103,7 +103,7 @@ class HomeScreen extends React.Component { onProxiwashClick = () => this.props.navigation.navigate('proxiwash'); - onTutorInsaClick = () => openBrowser("https://www.etud.insa-toulouse.fr/~tutorinsa/", this.colors.primary); + onTutorInsaClick = () => this.props.navigation.navigate('tutorinsa'); onProximoClick = () => this.props.navigation.navigate('proximo'); @@ -426,7 +426,7 @@ class HomeScreen extends React.Component { } openLink(link: string) { - openBrowser(link, this.colors.primary); + Linking.openURL(link); } /** diff --git a/src/screens/Websites/AmicaleWebsiteScreen.js b/src/screens/Websites/AmicaleWebsiteScreen.js new file mode 100644 index 0000000..9d1b6a5 --- /dev/null +++ b/src/screens/Websites/AmicaleWebsiteScreen.js @@ -0,0 +1,18 @@ +// @flow + +import * as React from 'react'; +import WebViewScreen from "../../components/Screens/WebViewScreen"; + +const URL = 'https://amicale-insat.fr/'; +/** + * Class defining the app's available rooms screen. + * This screen uses a webview to render the page + */ +export const AmicaleWebsiteScreen = (props: Object) => { + return ( + + ); +}; + diff --git a/src/screens/Websites/AvailableRoomScreen.js b/src/screens/Websites/AvailableRoomScreen.js index 4fd364d..b2bd3e0 100644 --- a/src/screens/Websites/AvailableRoomScreen.js +++ b/src/screens/Websites/AvailableRoomScreen.js @@ -9,7 +9,6 @@ type Props = { const ROOM_URL = 'http://planex.insa-toulouse.fr/salles.php'; -const PC_URL = 'http://planex.insa-toulouse.fr/sallesInfo.php'; const CUSTOM_CSS_GENERAL = 'https://etud.insa-toulouse.fr/~amicale_app/custom_css/rooms/customMobile.css'; /** @@ -39,8 +38,7 @@ export default class AvailableRoomScreen extends React.Component { + customJS={this.customInjectedJS}/> ); } } diff --git a/src/screens/Websites/ElusEtudiantsWebsiteScreen.js b/src/screens/Websites/ElusEtudiantsWebsiteScreen.js new file mode 100644 index 0000000..d51002e --- /dev/null +++ b/src/screens/Websites/ElusEtudiantsWebsiteScreen.js @@ -0,0 +1,18 @@ +// @flow + +import * as React from 'react'; +import WebViewScreen from "../../components/Screens/WebViewScreen"; + +const URL = 'https://etud.insa-toulouse.fr/~eeinsat/'; +/** + * Class defining the app's available rooms screen. + * This screen uses a webview to render the page + */ +export const ElusEtudiantsWebsiteScreen = (props: Object) => { + return ( + + ); +}; + diff --git a/src/screens/Websites/TutorInsaWebsiteScreen.js b/src/screens/Websites/TutorInsaWebsiteScreen.js new file mode 100644 index 0000000..5f7ed92 --- /dev/null +++ b/src/screens/Websites/TutorInsaWebsiteScreen.js @@ -0,0 +1,18 @@ +// @flow + +import * as React from 'react'; +import WebViewScreen from "../../components/Screens/WebViewScreen"; + +const URL = 'https://www.etud.insa-toulouse.fr/~tutorinsa/'; +/** + * Class defining the app's available rooms screen. + * This screen uses a webview to render the page + */ +export const TutorInsaWebsiteScreen = (props: Object) => { + return ( + + ); +}; + diff --git a/src/screens/Websites/WiketudWebsiteScreen.js b/src/screens/Websites/WiketudWebsiteScreen.js new file mode 100644 index 0000000..6d3bd1b --- /dev/null +++ b/src/screens/Websites/WiketudWebsiteScreen.js @@ -0,0 +1,18 @@ +// @flow + +import * as React from 'react'; +import WebViewScreen from "../../components/Screens/WebViewScreen"; + +const URL = 'https://wiki.etud.insa-toulouse.fr/'; +/** + * Class defining the app's available rooms screen. + * This screen uses a webview to render the page + */ +export const WiketudWebsiteScreen = (props: Object) => { + return ( + + ); +}; + diff --git a/src/utils/WebBrowser.js b/src/utils/WebBrowser.js deleted file mode 100644 index 61238df..0000000 --- a/src/utils/WebBrowser.js +++ /dev/null @@ -1,11 +0,0 @@ -// @flow - -import * as React from 'react'; -import * as WebBrowser from 'expo-web-browser'; - -export function openBrowser(url: string, color: string) { - WebBrowser.openBrowserAsync(url, { - toolbarColor: color, - enableBarCollapsing: true, - }); -}