import React, { Component, Fragment } from 'react'; import Button from '@material-ui/core/Button'; import Card from '@material-ui/core/Card'; import CardActionArea from '@material-ui/core/CardActionArea'; import CardActions from '@material-ui/core/CardActions'; import CardContent from '@material-ui/core/CardContent'; import CardMedia from '@material-ui/core/CardMedia'; import Typography from '@material-ui/core/Typography'; import { withStyles } from '@material-ui/core/styles'; import Snackbar from '@material-ui/core/Snackbar'; const styles = theme => ({ cardSnack: { maxWidth: 345, }, media: { height: 140, } }); class PWAInstallSnack extends Component { state = { openSnack: false, buttonDisplay: true } isAvailable = () =>{ console.log(this.buttonDisplay) return this.state.buttonDisplay; } initInstall = () => { this.setState({openSnack: true}) } getStateAndHelpers() { return { on: this.state.openSnack, initInstall: this.initInstall, } } iOS() { var iDevices = [ 'iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod' ]; if (!!navigator.platform) { while (iDevices.length) { if (navigator.platform === iDevices.pop()){ return true; } } } return false; } componentDidMount() { if (window !== undefined) { // don't show if we are in App if (window.navigator.standalone || window.matchMedia('(display-mode: standalone)').matches) { console.log('standalone') this.setState({ openSnack: false, buttonDisplay: false }) } else if(this.IsSafari()) { console.log('safari') this.setState({ openSnack: false, buttonDisplay: false }) if(this.iOS()) this.setState({ openSnack: false, buttonDisplay: true }) } } } //A2HS 'Add 2 Home Screen' PromptA2HS = (event, reason) => { this.setState({ openSnack: false }) console.log('prompted') if (window !== undefined) { window.promptInstall(); } } IsSafari = () => { if (typeof window !== 'undefined') { var isSafari = /Safari/.test(window.navigator.userAgent) && /Apple Computer/.test(window.navigator.vendor); return isSafari; } else return false; } handleClose = () => { this.setState({ openSnack: false }); } render() { const { classes } = this.props; var safariSnack = ( -> les PWA doivent encore s'installer manuellement sous IOS ); var usualSnack = ( Voulez-vous installer notre application ? ); return {this.IsSafari() ? safariSnack : usualSnack} {this.state.buttonDisplay && this.props.children(this.getStateAndHelpers())} } } export default withStyles(styles)(PWAInstallSnack)