gab-social/app/javascript/gabsocial/components/timeline_injections/pwa_injection.js

109 lines
3.1 KiB
JavaScript
Raw Normal View History

import React from 'react'
import PropTypes from 'prop-types'
import Button from '../button'
import Text from '../text'
class PWAInjection extends React.PureComponent {
deferredPrompt=null
componentDidMount() {
window.addEventListener('beforeinstallprompt',(e) => {
console.log("e:",e)
// Prevent the mini-infobar from appearing on mobile
e.preventDefault()
// Stash the event so it can be triggered later.
this.deferredPrompt=e
// Update UI notify the user they can install the PWA
// showInstallPromotion()
})
window.addEventListener('appinstalled',(evt) => {
// Log install to analytics
console.log('INSTALL: Success')
})
window.addEventListener('DOMContentLoaded',() => {
let displayMode='browser tab'
if(navigator.standalone) {
displayMode='standalone-ios'
}
if(window.matchMedia('(display-mode: standalone)').matches) {
displayMode='standalone'
}
// Log launch display mode to analytics
console.log('DISPLAY_MODE_LAUNCH:',displayMode)
window.matchMedia('(display-mode: standalone)').addListener((evt) => {
let displayMode='browser tab';
if(evt.matches) {
displayMode='standalone';
}
// Log display mode change to analytics
console.log('DISPLAY_MODE_CHANGED',displayMode);
});
})
}
handleOnClick=() => {
// Hide the app provided install promotion
// hideMyInstallPromotion()
// Show the install prompt
this.deferredPrompt.prompt()
// Wait for the user to respond to the prompt
this.deferredPrompt.userChoice.then((choiceResult) => {
if(choiceResult.outcome==='accepted') {
console.log('User accepted the install prompt')
} else {
console.log('User dismissed the install prompt')
}
})
}
render() {
// : todo :
return <div />
return (
<div className={[_s.d,_s.w100PC,_s.px15,_s.mb15].join(' ')}>
<div className={[_s.d,_s.w100PC,_s.py15,_s.px10,_s.boxShadowBlock,_s.radiusSmall,_s.bgPrimary].join(' ')}>
<div className={[_s.d,_s.py15,_s.px10].join(' ')}>
<Text size='large' align='center' className={_s.mb10}>
Were not on the app stores, but you can still get the Gab app on your phone.
</Text>
<Text size='large' align='center'>
Click install to learn how.
</Text>
</div>
<div className={[_s.d,_s.mt10,_s.mb5,_s.flexRow,_s.mlAuto,_s.mrAuto].join(' ')}>
<Button
backgroundColor='none'
color='secondary'
className={_s.mr15}
>
Not now
</Button>
<Button
onClick={this.handleOnClick}
>
<Text color='inherit' weight='medium' className={_s.px10}>
Install
</Text>
</Button>
</div>
</div>
</div>
)
}
}
PWAInjection.propTypes = {
injectionId: PropTypes.string,
isXS: PropTypes.string,
}
export default PWAInjection