| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 | 
							- // @flow
 - 
 - import React, { useState } from 'react';
 - 
 - import { translate } from '../../../../base/i18n';
 - import { Icon, IconCheck, IconCopy } from '../../../../base/icons';
 - import { copyText } from '../../../../base/util';
 - 
 - type Props = {
 - 
 -     /**
 -      * The current known URL for a live stream in progress.
 -      */
 -     liveStreamViewURL: string,
 - 
 -     /**
 -      * Invoked to obtain translated strings.
 -      */
 -     t: Function
 - }
 - 
 - /**
 -  * Section of the {@code AddPeopleDialog} that renders the
 -  * live streaming url, allowing a copy action.
 -  *
 -  * @returns {React$Element<any>}
 -  */
 - function LiveStreamSection({ liveStreamViewURL, t }: Props) {
 -     const [ isClicked, setIsClicked ] = useState(false);
 -     const [ isHovered, setIsHovered ] = useState(false);
 - 
 -     /**
 -      * Click handler for the element.
 -      *
 -      * @returns {void}
 -      */
 -     async function onClick() {
 -         setIsHovered(false);
 - 
 -         const isCopied = await copyText(liveStreamViewURL);
 - 
 -         if (isCopied) {
 -             setIsClicked(true);
 - 
 -             setTimeout(() => {
 -                 setIsClicked(false);
 -             }, 2500);
 -         }
 -     }
 - 
 -     /**
 -      * Hover handler for the element.
 -      *
 -      * @returns {void}
 -      */
 -     function onHoverIn() {
 -         if (!isClicked) {
 -             setIsHovered(true);
 -         }
 -     }
 - 
 -     /**
 -      * Hover handler for the element.
 -      *
 -      * @returns {void}
 -      */
 -     function onHoverOut() {
 -         setIsHovered(false);
 -     }
 - 
 -     /**
 -      * Renders the content of the link based on the state.
 -      *
 -      * @returns {React$Element<any>}
 -      */
 -     function renderLinkContent() {
 -         if (isClicked) {
 -             return (
 -                 <>
 -                     <div className = 'invite-more-dialog stream-text selected'>
 -                         {t('addPeople.linkCopied')}
 -                     </div>
 -                     <Icon src = { IconCheck } />
 -                 </>
 -             );
 -         }
 - 
 -         return (
 -             <>
 -                 <div className = 'invite-more-dialog stream-text'>
 -                     {isHovered ? t('addPeople.copyStream') : liveStreamViewURL}
 -                 </div>
 -                 <Icon src = { IconCopy } />
 -             </>
 -         );
 -     }
 - 
 -     return (
 -         <>
 -             <span>{t('addPeople.shareStream')}</span>
 -             <div
 -                 className = { `invite-more-dialog stream${isClicked ? ' clicked' : ''}` }
 -                 onClick = { onClick }
 -                 onMouseOut = { onHoverOut }
 -                 onMouseOver = { onHoverIn }>
 -                 { renderLinkContent() }
 -             </div>
 -             <div className = 'invite-more-dialog separator' />
 -         </>
 -     );
 - }
 - 
 - export default translate(LiveStreamSection);
 
 
  |