SILENT KILLERPanel

Current Path: > home > transcarter > > > www > wp-content > > > > plugins > leadin > scripts > shared > > Meeting


Operation   : Linux host59.registrar-servers.com 4.18.0-513.18.1.lve.2.el8.x86_64 #1 SMP Sat Mar 30 15:36:11 UTC 2024 x86_64
Software     : Apache
Server IP    : 198.54.126.42 | Your IP: 216.73.216.135
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: /home/transcarter///www/wp-content////plugins/leadin/scripts/shared//Meeting

NameTypeSizeLast ModifiedActions
hooks Directory - -
MeetingController.tsx File 2582 bytes July 17 2025 21:06:25.
MeetingEdit.tsx File 2015 bytes July 17 2025 21:06:25.
MeetingSelector.tsx File 840 bytes July 17 2025 21:06:25.
MeetingWarning.tsx File 1273 bytes July 17 2025 21:06:25.
MeetingsContext.tsx File 2329 bytes July 17 2025 21:06:25.
PreviewMeeting.tsx File 887 bytes July 17 2025 21:06:25.
constants.ts File 152 bytes July 17 2025 21:06:25.

Reading File: /home/transcarter///www/wp-content////plugins/leadin/scripts/shared//Meeting/MeetingController.tsx

import React, { Fragment, useEffect } from 'react';
import LoadingBlock from '../Common/LoadingBlock';
import MeetingSelector from './MeetingSelector';
import MeetingWarning from './MeetingWarning';
import useMeetings, {
  useSelectedMeeting,
  useSelectedMeetingCalendar,
} from './hooks/useMeetings';
import HubspotWrapper from '../Common/HubspotWrapper';
import ErrorHandler from '../Common/ErrorHandler';
import { pluginPath } from '../../constants/leadinConfig';
import { __ } from '@wordpress/i18n';
import Raven from 'raven-js';

interface IMeetingControllerProps {
  url: string;
  handleChange: Function;
}

export default function MeetingController({
  handleChange,
  url,
}: IMeetingControllerProps) {
  const {
    mappedMeetings: meetings,
    loading,
    error,
    reload,
    connectCalendar,
  } = useMeetings();
  const selectedMeetingOption = useSelectedMeeting(url);
  const selectedMeetingCalendar = useSelectedMeetingCalendar(url);

  useEffect(() => {
    if (!url && meetings.length > 0) {
      handleChange(meetings[0].value);
    }
  }, [meetings, url, handleChange]);

  const handleLocalChange = (option: { value: string }) => {
    handleChange(option.value);
  };

  const handleConnectCalendar = () => {
    return connectCalendar()
      .then(() => {
        reload();
      })
      .catch(error => {
        Raven.captureMessage('Unable to connect calendar', {
          extra: { error },
        });
      });
  };

  return (
    <Fragment>
      {loading ? (
        <LoadingBlock />
      ) : error ? (
        <ErrorHandler
          status={(error && error.status) || error}
          resetErrorState={() => reload()}
          errorInfo={{
            header: __(
              'There was a problem retrieving your meetings',
              'leadin'
            ),
            message: __(
              'Please refresh your meetings or try again in a few minutes',
              'leadin'
            ),
            action: __('Refresh meetings', 'leadin'),
          }}
        />
      ) : (
        <HubspotWrapper padding="90px 32px 24px" pluginPath={pluginPath}>
          {selectedMeetingCalendar && (
            <MeetingWarning
              status={selectedMeetingCalendar}
              onConnectCalendar={handleConnectCalendar}
            />
          )}
          {meetings.length > 1 && (
            <MeetingSelector
              onChange={handleLocalChange}
              options={meetings}
              value={selectedMeetingOption}
            />
          )}
        </HubspotWrapper>
      )}
    </Fragment>
  );
}

SILENT KILLER Tool