Skip to content
Snippets Groups Projects
Select Git revision
2 results Searching

ProjectController.php

Blame
  • AccessTokenSender.js 1.20 KiB
    import { Component } from 'react';
    import PropTypes from 'prop-types';
    import IComCom from 'icomcom-react';
    
    /**
     * Opens a new window for click
     */
    export class AccessTokenSender extends Component {
      /** */
      constructor(props) {
        super(props);
    
        this.onReceiveAccessTokenMessage = this.onReceiveAccessTokenMessage.bind(this);
      }
    
      /** @private */
      onReceiveAccessTokenMessage(e) {
        const { handleAccessTokenMessage, url } = this.props;
        if (e.data && e.data.messageId && e.data.messageId === url) handleAccessTokenMessage(e.data);
      }
    
      /** */
      render() {
        const { url } = this.props;
        if (!url) return null;
    
        /**
        login, clickthrough/kiosk open @id, wait for close
        external, no-op
        */
        return (
          <IComCom
            attributes={{
              'aria-hidden': true,
              height: 1,
              src: `${url}?origin=${window.origin}&messageId=${url}`,
              style: { visibility: 'hidden' },
              width: 1,
            }}
            handleReceiveMessage={this.onReceiveAccessTokenMessage}
          />
        );
      }
    }
    
    AccessTokenSender.propTypes = {
      handleAccessTokenMessage: PropTypes.func.isRequired,
      url: PropTypes.string,
    };
    
    AccessTokenSender.defaultProps = {
      url: undefined,
    };