: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
import { useCallback } from 'react';
import { __ } from '@wordpress/i18n';
CURRENT_USER_CALENDAR_MISSING,
OTHER_USER_CALENDAR_MISSING,
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(
const [meetingOwnerId] = meeting.meetingsUserIds;
let result = __('Default', 'leadin');
meetingOwnerId !== currentUser.id &&
meetingUsers[meetingOwnerId]
const user = meetingUsers[meetingOwnerId];
result += ` (${user.userProfile.fullName})`;
function hasCalendarObject(user: any) {
user.meetingsUserBlob.calendarSettings &&
user.meetingsUserBlob.calendarSettings.email
export default function useMeetings() {
const proxy = usePostAsyncBackgroundMessage();
} = useCurrentUserFetch();
const reload = useCallback(() => {
}, [reloadUser, reloadMeetings]);
const connectCalendar = () => {
key: ProxyMessages.ConnectMeetingsCalendar,
mappedMeetings: meetings.map(meet => ({
meet.name || getDefaultMeetingName(meet, currentUser, meetingUsers),
error: meetingsError || (userError as any),
loadMeetingsState == LoadState.Loading ||
loadUserState === LoadState.Loading,
export function useSelectedMeeting(url: string) {
const { mappedMeetings: meetings } = useMeetings();
const option = meetings.find(({ value }) => value === url);
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 }), {});
const { meetingsUserIds } = meeting;
meetingsUserIds.includes(currentUser.id) &&
!hasCalendarObject(currentUser)
return CURRENT_USER_CALENDAR_MISSING;
.map(id => mappedMeetingUsersId[id])
.some((user: any) => !hasCalendarObject(user))
return OTHER_USER_CALENDAR_MISSING;