SILENT KILLERPanel

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


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/public_html/wp-content/plugins/leadin/scripts/shared/Meeting/hooks

NameTypeSizeLast ModifiedActions
useCurrentUserFetch.ts File 1227 bytes July 17 2025 21:06:25.
useMeetings.ts File 3102 bytes July 17 2025 21:06:25.
useMeetingsFetch.ts File 1420 bytes July 17 2025 21:06:25.
useMeetingsScript.ts File 667 bytes July 17 2025 21:06:25.

Reading File: /home/transcarter/public_html/wp-content/plugins/leadin/scripts/shared/Meeting/hooks/useMeetings.ts

import { useCallback } from 'react';
import { __ } from '@wordpress/i18n';
import {
  CURRENT_USER_CALENDAR_MISSING,
  OTHER_USER_CALENDAR_MISSING,
} from '../constants';
import useMeetingsFetch, { MeetingUser } from './useMeetingsFetch';
import useCurrentUserFetch from './useCurrentUserFetch';
import LoadState from '../../enums/loadState';
import { usePostAsyncBackgroundMessage } from '../../../iframe/useBackgroundApp';
import { ProxyMessages } from '../../../iframe/integratedMessages';

function getDefaultMeetingName(
  meeting: any,
  currentUser: any,
  meetingUsers: any
) {
  const [meetingOwnerId] = meeting.meetingsUserIds;
  let result = __('Default', 'leadin');
  if (
    currentUser &&
    meetingOwnerId !== currentUser.id &&
    meetingUsers[meetingOwnerId]
  ) {
    const user = meetingUsers[meetingOwnerId];
    result += ` (${user.userProfile.fullName})`;
  }
  return result;
}

function hasCalendarObject(user: any) {
  return (
    user &&
    user.meetingsUserBlob &&
    user.meetingsUserBlob.calendarSettings &&
    user.meetingsUserBlob.calendarSettings.email
  );
}

export default function useMeetings() {
  const proxy = usePostAsyncBackgroundMessage();
  const {
    meetings,
    meetingUsers,
    error: meetingsError,
    loadMeetingsState,
    reload: reloadMeetings,
  } = useMeetingsFetch();
  const {
    user: currentUser,
    error: userError,
    loadUserState,
    reload: reloadUser,
  } = useCurrentUserFetch();

  const reload = useCallback(() => {
    reloadUser();
    reloadMeetings();
  }, [reloadUser, reloadMeetings]);

  const connectCalendar = () => {
    return proxy({
      key: ProxyMessages.ConnectMeetingsCalendar,
    });
  };

  return {
    mappedMeetings: meetings.map(meet => ({
      label:
        meet.name || getDefaultMeetingName(meet, currentUser, meetingUsers),
      value: meet.link,
    })),
    meetings,
    meetingUsers,
    currentUser,
    error: meetingsError || (userError as any),
    loading:
      loadMeetingsState == LoadState.Loading ||
      loadUserState === LoadState.Loading,
    reload,
    connectCalendar,
  };
}

export function useSelectedMeeting(url: string) {
  const { mappedMeetings: meetings } = useMeetings();
  const option = meetings.find(({ value }) => value === url);

  return option;
}

export function useSelectedMeetingCalendar(url: string) {
  const { meetings, meetingUsers, currentUser } = useMeetings();

  const meeting = meetings.find(meet => meet.link === url);

  const mappedMeetingUsersId: {
    [key: number]: MeetingUser;
  } = meetingUsers.reduce((p, c) => ({ ...p, [c.id]: c }), {});

  if (!meeting) {
    return null;
  } else {
    const { meetingsUserIds } = meeting;
    if (
      currentUser &&
      meetingsUserIds.includes(currentUser.id) &&
      !hasCalendarObject(currentUser)
    ) {
      return CURRENT_USER_CALENDAR_MISSING;
    } else if (
      meetingsUserIds
        .map(id => mappedMeetingUsersId[id])
        .some((user: any) => !hasCalendarObject(user))
    ) {
      return OTHER_USER_CALENDAR_MISSING;
    } else {
      return null;
    }
  }
}

SILENT KILLER Tool