File "index.js"
Full Path: /home/warrior1/public_html/wp-content/plugins/astra-sites/inc/lib/onboarding/assets/src/steps/congrats/index.js
File size: 4.94 KB
MIME-type: text/x-java
Charset: utf-8
import React, { useState } from 'react';
import { __, sprintf } from '@wordpress/i18n';
import confetti from 'canvas-confetti';
import DefaultStep from '../../components/default-step/index';
import { useStateValue } from '../../store/store';
import './style.scss';
import ICONS from '../../../icons';
import { whiteLabelEnabled } from '../../utils/functions';
import { Button } from '../../components';
const { siteUrl } = starterTemplates;
const getTotalTime = ( value ) => {
const hours = Math.floor( value / 60 / 60 );
const minutes = Math.floor( value / 60 ) - hours * 60;
const seconds = value % 60;
if ( minutes ) {
return minutes + '.' + seconds;
}
return '0.' + seconds;
};
const Congrats = () => {
const [ { confettiDone, builder }, dispatch ] = useStateValue();
const istConfetti = confetti.create(
document.getElementById( 'ist-bashcanvas' ),
{ resize: true }
);
if ( ! confettiDone ) {
setTimeout( function () {
istConfetti( {
particleCount: 250,
origin: { x: 1, y: 1.4 },
gravity: 0.4,
spread: 80,
ticks: 300,
angle: 120,
startVelocity: 100,
colors: [
'#0e6ef1',
'#f5b800',
'#ff344c',
'#98e027',
'#9900f1',
],
} );
}, 100 );
setTimeout( function () {
istConfetti( {
particleCount: 250,
origin: { x: 0, y: 1.4 },
gravity: 0.4,
spread: 80,
ticks: 300,
angle: 60,
startVelocity: 100,
colors: [
'#0e6ef1',
'#f5b800',
'#ff344c',
'#98e027',
'#9900f1',
],
} );
dispatch( {
type: 'set',
confettiDone: true,
} );
}, 500 );
}
const [ {} ] = useStateValue();
const [ showClickToPlay, setShowClickToPlay ] = useState( true );
const start = localStorage.getItem( 'st-import-start' );
const end = localStorage.getItem( 'st-import-end' );
const diff = end - start;
const unixTimeInSeconds = Math.floor( diff / 1000 );
const totalTime = start && end ? getTotalTime( unixTimeInSeconds ) : 0;
const typeOfTime = totalTime > 1 ? 'minutes' : 'seconds';
let timeTaken = totalTime;
let descMessage;
let tweetMessage;
const threshold = 5; // Max 5 mins threshold.
if ( timeTaken > 0 && timeTaken <= threshold ) {
timeTaken = timeTaken < 1 ? timeTaken.split( '.' )[ 1 ] : timeTaken;
descMessage = sprintf(
//translators: %1$s Time taken %2$s Time Type %3$s Website Url.
__(
`Your Website is ready and it took just %1$s %2$s to build.`,
'astra-sites'
),
timeTaken,
typeOfTime
);
tweetMessage = `I just built my website in ${ timeTaken } ${ typeOfTime } with Starter Templates by @AstraWP. Can't believe how easy it is! 😍`;
} else {
descMessage = __( 'Your Website is up and ready!.', 'astra-sites' );
tweetMessage = `I just built my website with Starter Templates by @AstraWP in minutes. Can't believe how easy it is! 😍`;
}
const handleClick = () => {
const target = document.getElementById( 'st-information-video' );
const youtubeLink = target.src.replace(
'&mute=1&controls=0',
'&mute=0&controls=1'
);
target.src = youtubeLink;
setShowClickToPlay( false );
};
const ytId = builder === 'gutenberg' ? 'Zb2DU4vzNWE' : '3dARpNLcL30';
return (
<DefaultStep
content={
<div className="congrats-screen">
<h1 className="d-flex-center-align">
{ __( 'Congratulations!', 'astra-sites' ) }
{ ICONS.tada }
</h1>
<p className="screen-description p-bold">{ descMessage }</p>
<Button
className="view-website-btn"
after
onClick={ () => {
window.open( siteUrl, '_blank' );
} }
>
{ __( 'View Your Website', 'astra-sites' ) }
</Button>
{ ! whiteLabelEnabled() && (
<>
<div
className="video-showcase"
onClick={ handleClick }
>
{ showClickToPlay && (
<div className="click-to-play-wrap">
<span className="click-btn-text">
{ ICONS.clickToPlay }
</span>
<span className="youtube-btn middle-content">
{ ICONS.youtube }
</span>
</div>
) }
<iframe
src={ `https://www.youtube-nocookie.com/embed/${ ytId }?rel=0&autoplay=1&mute=1&controls=0&showinfo=0&loop=1&modestbranding=1&loop=1` }
frameBorder="0"
allow="autoplay; encrypted-media"
allowFullScreen
title="st-information-video"
height="415"
width="740"
id="st-information-video"
/>
</div>
<div className="tweet-import-success">
<p className="tweet-text">{ tweetMessage }</p>
<a
href={ `https://twitter.com/intent/tweet?text=${ tweetMessage }` }
target="_blank"
className="twitter-btn-wrap"
rel="noreferrer"
>
<p className="tweet-btn">
{ __(
'CLICK TO TWEET',
'astra-sites'
) }
</p>
{ ICONS.twitter }
</a>
</div>
</>
) }
</div>
}
actions={ null }
/>
);
};
export default Congrats;