plugin updates

This commit is contained in:
Tony Volpe
2024-06-17 15:33:26 -04:00
parent 3751a5a1a6
commit e4e274a9a7
2674 changed files with 0 additions and 507851 deletions

View File

@@ -1,45 +0,0 @@
import { useEffect, useState } from 'react';
import { usePostAsyncBackgroundMessage } from '../../../iframe/useBackgroundApp';
import LoadState, { LoadStateType } from '../../enums/loadState';
import { ProxyMessages } from '../../../iframe/integratedMessages';
let user: any = null;
export default function useCurrentUserFetch() {
const proxy = usePostAsyncBackgroundMessage();
const [loadState, setLoadState] = useState<LoadStateType>(
LoadState.NotLoaded
);
const [error, setError] = useState<null | Error>(null);
const createUser = () => {
if (!user) {
setLoadState(LoadState.NotLoaded);
}
};
const reload = () => {
user = null;
setLoadState(LoadState.NotLoaded);
setError(null);
};
useEffect(() => {
if (loadState === LoadState.NotLoaded && !user) {
setLoadState(LoadState.Loading);
proxy({
key: ProxyMessages.FetchOrCreateMeetingUser,
})
.then(data => {
user = data;
setLoadState(LoadState.Idle);
})
.catch(err => {
setError(err);
setLoadState(LoadState.Failed);
});
}
}, [loadState]);
return { user, loadUserState: loadState, error, createUser, reload };
}

View File

@@ -1,121 +0,0 @@
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;
}
}
}

View File

@@ -1,58 +0,0 @@
import { useEffect, useState } from 'react';
import { usePostAsyncBackgroundMessage } from '../../../iframe/useBackgroundApp';
import LoadState, { LoadStateType } from '../../enums/loadState';
import { ProxyMessages } from '../../../iframe/integratedMessages';
export interface Meeting {
meetingsUserIds: number[];
name: string;
link: string;
}
export interface MeetingUser {
id: string;
}
let meetings: Meeting[] = [];
let meetingUsers: MeetingUser[] = [];
export default function useMeetingsFetch() {
const proxy = usePostAsyncBackgroundMessage();
const [loadState, setLoadState] = useState<LoadStateType>(
LoadState.NotLoaded
);
const [error, setError] = useState(null);
const reload = () => {
meetings = [];
setError(null);
setLoadState(LoadState.NotLoaded);
};
useEffect(() => {
if (loadState === LoadState.NotLoaded && meetings.length === 0) {
setLoadState(LoadState.Loading);
proxy({
key: ProxyMessages.FetchMeetingsAndUsers,
})
.then(data => {
setLoadState(LoadState.Loaded);
meetings = data && data.meetingLinks;
meetingUsers = data && data.meetingUsers;
})
.catch(e => {
setError(e);
setLoadState(LoadState.Failed);
});
}
}, [loadState]);
return {
meetings,
meetingUsers,
loadMeetingsState: loadState,
error,
reload,
};
}

View File

@@ -1,30 +0,0 @@
import $ from 'jquery';
import { useState, useEffect } from 'react';
import { meetingsScript } from '../../../constants/leadinConfig';
import Raven from '../../../lib/Raven';
let promise: Promise<any>;
function loadMeetingsScript() {
if (!promise) {
promise = new Promise((resolve, reject) =>
$.getScript(meetingsScript)
.done(resolve)
.fail(reject)
);
}
return promise;
}
export default function useMeetingsScript() {
const [ready, setReady] = useState(false);
useEffect(() => {
loadMeetingsScript()
.then(() => setReady(true))
.catch(error => Raven.captureException(error));
}, []);
return ready;
}