2021-02-15 12:33:47 +00:00
|
|
|
import { useApi } from '@skolplattformen/api-hooks'
|
|
|
|
import { Icon, Text } from '@ui-kitten/components'
|
2021-01-26 11:02:24 +00:00
|
|
|
import URI from 'jsuri'
|
2021-02-18 10:43:16 +00:00
|
|
|
import React, { useState } from 'react'
|
2021-02-15 12:33:47 +00:00
|
|
|
import { Modal, StyleSheet, View } from 'react-native'
|
2021-02-18 10:43:16 +00:00
|
|
|
import { TouchableOpacity } from 'react-native'
|
2021-02-15 12:33:47 +00:00
|
|
|
import { SafeAreaView } from 'react-native-safe-area-context'
|
|
|
|
import { WebView } from 'react-native-webview'
|
2021-01-26 11:02:24 +00:00
|
|
|
|
2021-02-15 12:33:47 +00:00
|
|
|
export const ModalWebView = ({ url, onClose }) => {
|
2021-02-18 10:43:16 +00:00
|
|
|
const [modalVisible, setModalVisible] = useState(true);
|
2021-02-15 12:33:47 +00:00
|
|
|
const { api } = useApi()
|
2021-02-07 16:14:45 +00:00
|
|
|
const cookie = api.getSessionCookie()
|
2021-01-26 11:02:24 +00:00
|
|
|
const uri = new URI(url)
|
2021-02-15 12:33:47 +00:00
|
|
|
|
2021-02-18 10:43:16 +00:00
|
|
|
const closeModal = () => {
|
|
|
|
setModalVisible(false)
|
|
|
|
onClose()
|
|
|
|
}
|
|
|
|
|
2021-01-26 11:02:24 +00:00
|
|
|
return (
|
2021-02-18 10:43:16 +00:00
|
|
|
<Modal
|
|
|
|
animationType="slide"
|
|
|
|
statusBarTranslucent={true}
|
|
|
|
visible={modalVisible}
|
|
|
|
onRequestClose={closeModal}>
|
2021-01-26 11:02:24 +00:00
|
|
|
<SafeAreaView style={styles.container}>
|
|
|
|
<View style={styles.headerWrapper}>
|
|
|
|
<View style={styles.header}>
|
|
|
|
<Text category="s1">{uri.host()}</Text>
|
2021-02-18 10:43:16 +00:00
|
|
|
<TouchableOpacity onPress={closeModal}>
|
2021-02-07 16:14:45 +00:00
|
|
|
<Icon name="close-circle" style={styles.icon} fill="#333333" />
|
2021-01-26 11:02:24 +00:00
|
|
|
</TouchableOpacity>
|
|
|
|
</View>
|
|
|
|
</View>
|
2021-02-18 10:43:16 +00:00
|
|
|
|
2021-01-26 11:02:24 +00:00
|
|
|
<WebView
|
|
|
|
style={styles.webview}
|
2021-02-15 12:33:47 +00:00
|
|
|
source={{ uri: url, headers: { cookie } }}
|
2021-02-07 16:14:45 +00:00
|
|
|
/>
|
2021-01-26 11:02:24 +00:00
|
|
|
</SafeAreaView>
|
|
|
|
</Modal>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
const styles = StyleSheet.create({
|
|
|
|
container: {
|
2021-02-07 16:14:45 +00:00
|
|
|
flex: 1,
|
2021-01-26 11:02:24 +00:00
|
|
|
},
|
|
|
|
headerWrapper: {
|
|
|
|
backgroundColor: '#333333',
|
|
|
|
padding: 5,
|
|
|
|
},
|
|
|
|
header: {
|
|
|
|
flexDirection: 'row',
|
|
|
|
justifyContent: 'space-between',
|
|
|
|
alignItems: 'center',
|
|
|
|
paddingHorizontal: 10,
|
|
|
|
paddingVertical: 4,
|
|
|
|
backgroundColor: '#ffffff',
|
|
|
|
borderRadius: 5,
|
|
|
|
},
|
|
|
|
icon: {
|
|
|
|
width: 30,
|
|
|
|
height: 30,
|
|
|
|
},
|
2021-02-07 16:14:45 +00:00
|
|
|
webview: {},
|
2021-01-26 11:02:24 +00:00
|
|
|
})
|