// const FeedApi = pConnect => { // const { invokeRestApi, getCancelTokenSource, isRequestCanceled } = PCore.getRestClient(); // const appName = PCore.getEnvironmentInfo().getApplicationName(); // let mentionsTagsCancelTokenSource: any = []; // const getPulseContext = pulseContext => { // if (pulseContext && pulseContext.indexOf('DATA-PORTAL') !== -1) { // pulseContext = `DATA-PORTAL $${appName}`; // } // return pulseContext; // }; // const fetchMessages = (pulseContext, feedID, feedClass, feedFilters, fetchMessagesCancelTokenSource) => { // pulseContext = getPulseContext(pulseContext); // let filterBy = ''; // if (feedFilters) { // feedFilters.forEach(feedFilter => { // if (feedFilter.on) filterBy = `${filterBy}${feedFilter.id},`; // }); // if (filterBy === '') filterBy = 'ClearFilters'; // } // const queryPayload = { // filterForContext: pulseContext, // feedID, // feedClass, // filterBy // }; // for (let i = 0; i < fetchMessagesCancelTokenSource.length; i += 1) { // fetchMessagesCancelTokenSource[i].cancel(); // } // const newCancelTokenSource = getCancelTokenSource(); // fetchMessagesCancelTokenSource.push(newCancelTokenSource); // return invokeRestApi( // 'getFeedMessages', // // @ts-ignore - PCore.getRestClient().invokeRestApi(): 2nd parameter missing the following properties from type 'RestApiOptionsObject': body, headers // { // queryPayload, // cancelTokenSource: newCancelTokenSource // }, // pConnect.getContextName() // ) // .then(response => { // if (response.status === 200 && response.data) { // fetchMessagesCancelTokenSource.pop(); // const respMessageIDs: string[] = []; // const respMessages = {}; // const feedViewResponse = response.data; // if (response.data) { // if (response.data.data.FeedList) { // const feedItemList = response.data.data.FeedList.pxResults; // if (Array.isArray(feedItemList)) { // feedItemList.forEach(message => { // message.ID = message.pzInsKey; // respMessageIDs.push(message.ID); // respMessages[message.ID] = message; // }); // } // } // if (!feedFilters) { // feedFilters = [{ id: 'All', label: 'All', on: 'true', disabled: false }]; // if (response.data.data.FeedFilters) { // const feedFiltersList = response.data.data.FeedFilters.pxResults; // let allFilter: any = 'true'; // if (Array.isArray(feedFiltersList)) { // feedFiltersList.forEach(feedFilter => { // const feedFilterItem = { // id: feedFilter.pyFeedSourceReference, // label: feedFilter.pyLabel, // disabled: false, // on: feedFilter.pySelected // }; // if (!feedFilterItem.on) allFilter = false; // feedFilters.push(feedFilterItem); // }); // feedFilters.find(feedItem => feedItem.id === 'All').on = allFilter; // } // } // } // } // // if filters appllied, need to reset store // if (filterBy !== '' || !pConnect.getValue(`pulse.messageIDs`)) // pConnect.updateState({ // pulse: { // messages: respMessages, // messageIDs: respMessageIDs, // feedViewResponse // } // }); // else // pConnect.updateState({ // pulse: { // messages: { // ...pConnect.getValue(`pulse.messages`), // ...respMessages // }, // messageIDs: [...pConnect.getValue(`pulse.messageIDs`), ...respMessageIDs], // feedViewResponse // } // }); // return feedFilters; // } // pConnect.reportError(`fetchMessages call failed ${response.status}`, response.data); // return ''; // }) // .catch(error => { // if (!isRequestCanceled(error)) { // pConnect.reportError(': Error ocurred during ajax call at fetchMessages API : ', error.response); // } // }); // }; // const postMessage = (pulseContext, message, attachmentIDs, isReply = false) => { // pulseContext = getPulseContext(pulseContext); // const reqBody = JSON.stringify({ // context: pulseContext, // message, // attachments: attachmentIDs // }); // // @ts-ignore - Type 'string' is not assignable to type 'object': The expected type comes from property 'body' which is declared here on type 'RestApiOptionsObject' // invokeRestApi('postFeedMessages', { body: reqBody }, pConnect.getContextName()) // .then(response => { // if (response.status === 201 && response.data) { // const messageData = response.data; // const messageObject = { // ID: messageData.ID, // pzInsKey: messageData.ID, // pyFeed: { // pyPostedOn: messageData.postedTime, // pyFeedTitle: messageData.postedByUser.name, // pyCommentContext: 'pzInsKey', // pyIconType: 'user', // pyIconReference: 'pi pi-case' // }, // postedByUser: messageData.postedByUser, // pyMessage: messageData.message, // mentions: messageData.mentions || [], // pyMessageViewReference: 'pzPostDetails', // pxIcon: 'globe', // pxResults: [], // tags: messageData.tags || [] // }; // if (isReply) { // let pxResults = pConnect.getValue('.pxResults'); // if (!pxResults) pxResults = []; // pConnect.setValue('.pxResults', [...pxResults, messageObject]); // } else { // messageObject.pxResults = []; // if (pConnect.getValue(`pulse.messageIDs`)) { // const messageIDs = pConnect.getValue(`pulse.messageIDs`); // const messages = pConnect.getValue(`pulse.messages`); // pConnect.updateState({ // pulse: { // messages: { ...messages, [messageObject.ID]: messageObject }, // messageIDs: [messageObject.ID, ...messageIDs] // } // }); // } else { // pConnect.updateState({ // pulse: { // messages: { [messageObject.ID]: messageObject }, // messageIDs: [messageObject.ID] // } // }); // } // } // } else { // pConnect.reportError(`postMessage call failed with status ${response.status}`, response); // } // }) // .catch(error => { // pConnect.reportError(': Error ocurred during ajax call at postMessage API : ', error.response); // }); // }; // const likeMessage = ({ pulseContext, likedBy: unLiked, messageID, isReply }) => { // pulseContext = getPulseContext(pulseContext); // const routeKey = unLiked ? 'unlikeFeedMessages' : 'likeFeedMessages'; // const body = JSON.stringify({ // ContextClass: pulseContext // }); // const queryPayload = { // pulseContext // }; // // @ts-ignore - Type 'string' is not assignable to type 'object': The expected type comes from property 'body' which is declared here on type 'RestApiOptionsObject' // invokeRestApi(routeKey, { body, queryPayload }, pConnect.getContextName()) // .then(response => { // if (response.status === 200) { // if (isReply) { // const msg = pConnect.getValue(`pulse.messages.${messageID}`); // const pxResults = msg.pxResults.map(reply => { // reply = { ...reply }; // if (reply.pzInsKey === pulseContext) { // let updatedLikeCount = 0; // let updatedLikedFlag = false; // const likeCount = reply.pyLikes ? reply.pyLikes.pxLikeCount : 0; // if (unLiked) { // updatedLikeCount = likeCount - 1; // updatedLikedFlag = false; // } else { // updatedLikeCount = likeCount + 1; // updatedLikedFlag = true; // } // reply.pyLikes = { // pxLikeCount: updatedLikeCount, // pxIsLiked: updatedLikedFlag // }; // } // return reply; // }); // pConnect.updateState({ // pulse: { // messages: { // [messageID]: { // pxResults // } // } // } // }); // } else { // const msg = { ...pConnect.getValue(`pulse.messages.${messageID}`) }; // const likeCount = msg.pyLikes ? msg.pyLikes.pxLikeCount : 0; // let updatedLikeCount = 0; // let updatedLikedFlag = false; // if (unLiked) { // updatedLikeCount = likeCount - 1; // updatedLikedFlag = false; // } else { // updatedLikeCount = likeCount + 1; // updatedLikedFlag = true; // } // msg.pyLikes = { // pxLikeCount: updatedLikeCount, // pxIsLiked: updatedLikedFlag // }; // pConnect.updateState({ // pulse: { // messages: { // [pulseContext]: msg // } // } // }); // } // } else { // pConnect.reportError(`likeMessage call failed with status ${response.status}`, response); // } // }) // .catch(error => { // pConnect.reportError(': Error ocurred during ajax call at likeMessage API : ', error.response.data); // }); // }; // const deleteMessage = (messageID, isReply, replyID) => { // let messageKey = messageID; // if (isReply) { // messageKey = replyID; // } // const queryPayload = { // messageID: messageKey // }; // // @ts-ignore - PCore.getRestClient().invokeRestApi(): 2nd parameter missing the following properties from type 'RestApiOptionsObject': body, headers, cancelTokenSource // invokeRestApi('deleteFeedMessage', { queryPayload }, pConnect.getContextName()) // .then(response => { // if (response.status === 200) { // if (isReply) { // const msg = pConnect.getValue(`pulse.messages.${messageID}`); // const pxResults = msg.pxResults.filter(reply => reply.pzInsKey !== replyID); // pConnect.updateState({ // pulse: { // messages: { // [messageID]: { // pxResults // } // } // } // }); // } else { // const msgIDs = pConnect.getValue(`pulse.messageIDs`); // const newMsgIDs = msgIDs.filter(msgID => msgID !== messageID); // const msgs = { ...pConnect.getValue(`pulse.messages`) }; // delete msgs[messageID]; // pConnect.updateState({ // pulse: { // messageIDs: newMsgIDs, // messages: msgs // } // }); // } // } else { // pConnect.reportError(`deleteMessage call failed with status ${response.status}`, response); // } // }) // .catch(error => { // pConnect.reportError(': Error ocurred during ajax call at deleteMessage API : ', error.response); // }); // }; // const getMentionSuggestions = mentionProps => { // const { searchFor, mentionsType = 'Users', listSize = 5 } = mentionProps; // const pulseContext = getPulseContext(mentionProps.pulseContext); // const queryPayload = { // pulseContext, // searchFor, // mentionsType, // listSize // }; // for (let i = 0; i < mentionsTagsCancelTokenSource.length; i += 1) { // mentionsTagsCancelTokenSource[i].cancel(); // } // const newCancelTokenSource = getCancelTokenSource(); // mentionsTagsCancelTokenSource.push(newCancelTokenSource); // return invokeRestApi( // 'getMentionSuggestions', // // @ts-ignore - PCore.getRestClient().invokeRestApi(): 2nd parameter missing the following properties from type 'RestApiOptionsObject': body, headers // { // queryPayload, // cancelTokenSource: newCancelTokenSource // }, // pConnect.getContextName() // ) // .then(response => { // mentionsTagsCancelTokenSource = []; // let mentionSuggestions = []; // if (response.status === 200 && response.data) { // mentionSuggestions = response.data.map(mentionSuggestion => { // return { // fullname: mentionSuggestion.caption, // id: mentionSuggestion.mentionsID // }; // }); // } else { // pConnect.reportError(`Get mention suggestions call failed ${response.status}`, response.data); // } // return mentionSuggestions; // }) // .catch(err => { // if (!isRequestCanceled(err)) { // pConnect.reportError(': Error ocurred during ajax call at getMentionSuggestions API : ', err.response.data); // } // }); // }; // const getTagSuggestions = mentionProps => { // const { searchFor, listSize = 5 } = mentionProps; // const queryPayload = { // searchFor, // listSize // }; // for (let i = 0; i < mentionsTagsCancelTokenSource.length; i += 1) { // mentionsTagsCancelTokenSource[i].cancel(); // } // const newCancelTokenSource = getCancelTokenSource(); // mentionsTagsCancelTokenSource.push(newCancelTokenSource); // return invokeRestApi( // 'getTagSuggestions', // // @ts-ignore - PCore.getRestClient().invokeRestApi(): 2nd parameter missing the following properties from type 'RestApiOptionsObject': body, headers // { // queryPayload, // cancelTokenSource: newCancelTokenSource // }, // pConnect.getContextName() // ) // .then(response => { // mentionsTagsCancelTokenSource = []; // let tagSuggestions = []; // if (response.status === 200 && response.data) { // tagSuggestions = response.data.tags.map(tag => `#${tag}`); // } else { // pConnect.reportError(`Get tag suggestions call failed ${response.status}`, response.data); // } // return tagSuggestions; // }) // .catch(err => { // if (!isRequestCanceled(err)) { // pConnect.reportError(': Error ocurred during ajax call at getTagSuggestions API : ', err.response.data); // } // }); // }; // return { // // fetchMessages, // postMessage, // // likeMessage, // deleteMessage, // getMentionSuggestions, // getTagSuggestions // }; // }; // export default FeedApi;