269 lines
11 KiB
JavaScript
269 lines
11 KiB
JavaScript
/** Register synchronously; replies retain the WebExtension sendResponse contract. */
|
|
function registerBackgroundMessages({
|
|
messageTypes,
|
|
requestWeekDetails,
|
|
requestTimeEntries,
|
|
requestTimeEntriesSave,
|
|
requestTimeEntriesDelete,
|
|
requestLookupTaskType,
|
|
requestServiceRequestExpand,
|
|
requestResourceUser,
|
|
requestActiveServiceRequests,
|
|
invalidateProductsCache,
|
|
invalidateResourceUser = async () => {},
|
|
getXsrfTokenCookie,
|
|
refreshXsrfCookie,
|
|
requestAccountPlans,
|
|
requestInstallBase,
|
|
requestCustomerServiceRequest,
|
|
requestWlActions,
|
|
requestWorkloads,
|
|
requestWorkloadForecastUpdate,
|
|
invalidateWorkloadsCache,
|
|
requestActionTeamMembers,
|
|
requestActionFindLookup,
|
|
requestMgmtAction,
|
|
requestPostServiceRequest,
|
|
requestPostInternalServiceRequest,
|
|
requestInternalServiceRequest,
|
|
requestSrLookupPrimaryPillar,
|
|
requestSrLookupWithSession,
|
|
prepareSrSession,
|
|
requestSrLookupLanguage,
|
|
requestSrLookupTechPlatform,
|
|
requestLookupTypePlatform,
|
|
requestInternalSrServices,
|
|
requestSrLookupOpportunityBusiness,
|
|
requestCurrentUser,
|
|
requestConsumerTokenService,
|
|
requestConsumptionTrend,
|
|
requestConsumptionPlanDetail,
|
|
requestRatecardByPlan,
|
|
requestOpptyProducts,
|
|
runtimeApi
|
|
}) {
|
|
runtimeApi.runtime.onMessage.addListener((message, sender, sendResponse) => {
|
|
if (!message || !message.type) {
|
|
return false;
|
|
}
|
|
if (message.type === messageTypes.requestLookupTaskType) {
|
|
requestLookupTaskType().then(sendResponse).catch(error => sendResponse({ ok: false,
|
|
error: error.message, httpStatus: error.httpStatus, debugRequests: error.debugRequests || [] }));
|
|
return true;
|
|
}
|
|
if (message.type === messageTypes.requestTimeEntriesSave) {
|
|
requestTimeEntriesSave(message).then(sendResponse).catch(error => sendResponse({ ok: false,
|
|
error: error.message, httpStatus: error.httpStatus, debugRequests: error.debugRequests || [] }));
|
|
return true;
|
|
}
|
|
if (message.type === messageTypes.requestTimeEntriesDelete) {
|
|
requestTimeEntriesDelete(message).then(sendResponse).catch(error => sendResponse({ ok: false,
|
|
error: error.message, httpStatus: error.httpStatus, debugRequests: error.debugRequests || [] }));
|
|
return true;
|
|
}
|
|
if ([messageTypes.requestTimeEntries, messageTypes.requestServiceRequestExpand, messageTypes.requestWeekDetails, messageTypes.requestResourceUser, messageTypes.requestActiveServiceRequests].includes(message.type)) {
|
|
const request = message.type === messageTypes.requestTimeEntries ? requestTimeEntries : message.type === messageTypes.requestServiceRequestExpand ? requestServiceRequestExpand : message.type === messageTypes.requestWeekDetails ? requestWeekDetails : message.type === messageTypes.requestResourceUser ? requestResourceUser : requestActiveServiceRequests;
|
|
request(message).then(sendResponse).catch(error => sendResponse({ ok: false,
|
|
error: error.message, httpStatus: error.httpStatus, debugRequests: error.debugRequests || [] }));
|
|
return true;
|
|
}
|
|
if (message.type === messageTypes.requestPostInternalServiceRequest) {
|
|
requestPostInternalServiceRequest(message).then(sendResponse).catch(error => sendResponse({ ok: false,
|
|
error: error.message, debugRequests: error.debugRequests || [] }));
|
|
return true;
|
|
}
|
|
if (message.type === messageTypes.requestPostServiceRequest) {
|
|
requestPostServiceRequest(message).then(sendResponse).catch(error => sendResponse({ ok: false,
|
|
error: error.message, debugRequests: error.debugRequests || [] }));
|
|
return true;
|
|
}
|
|
if (message.type === messageTypes.prepareSrSession) {
|
|
prepareSrSession(sender).then(sendResponse).catch(error => sendResponse({ ok: false,
|
|
error: error.message, debugRequests: error.debugRequests || [] }));
|
|
return true;
|
|
}
|
|
const srLookups = {
|
|
[messageTypes.requestLookupTypePlatform]: requestLookupTypePlatform,
|
|
[messageTypes.requestInternalSrServices]: requestInternalSrServices,
|
|
[messageTypes.requestSrLookupPrimaryPillar]: requestSrLookupPrimaryPillar,
|
|
[messageTypes.requestSrLookupLanguage]: requestSrLookupLanguage,
|
|
[messageTypes.requestSrLookupTechPlatform]: requestSrLookupTechPlatform,
|
|
[messageTypes.requestSrLookupOpportunityBusiness]: requestSrLookupOpportunityBusiness
|
|
};
|
|
if (Object.hasOwn(srLookups, message.type)) {
|
|
requestSrLookupWithSession(srLookups[message.type], message, sender).then(sendResponse).catch(error => sendResponse({ ok: false,
|
|
httpStatus: error.httpStatus, error: error.message, debugRequests: error.debugRequests || [] }));
|
|
return true;
|
|
}
|
|
|
|
if (message.type === messageTypes.invalidateProductsCache) {
|
|
Promise.all([invalidateProductsCache(), invalidateWorkloadsCache()]).then(() => invalidateResourceUser()).then(() => sendResponse({ ok: true })).catch(error => sendResponse({ ok: false, error: error.message || "Unable to clear products cache." }));
|
|
return true;
|
|
}
|
|
if (message.type === messageTypes.getXsrfToken) {
|
|
getXsrfTokenCookie()
|
|
.then((result) => {
|
|
sendResponse({
|
|
ok: true,
|
|
cookieName: result.cookie ? result.cookie.name : "",
|
|
token: result.cookie ? result.cookie.value : "",
|
|
matchedCookieNames: result.matchedCookieNames,
|
|
lookupDetails: result.lookupDetails
|
|
});
|
|
})
|
|
.catch((error) => {
|
|
sendResponse({
|
|
ok: false,
|
|
cookieName: "",
|
|
token: "",
|
|
matchedCookieNames: [],
|
|
lookupDetails: [],
|
|
error: error.message || "Unable to read cookies."
|
|
});
|
|
});
|
|
|
|
return true;
|
|
}
|
|
|
|
if (message.type === messageTypes.refreshXsrfCookie) {
|
|
refreshXsrfCookie(sender)
|
|
.then(sendResponse)
|
|
.catch((error) => {
|
|
sendResponse({
|
|
ok: false,
|
|
refreshed: false,
|
|
cookieName: "",
|
|
durationMs: 0,
|
|
error: error.message || "Unable to refresh XSRF cookie."
|
|
});
|
|
});
|
|
|
|
return true;
|
|
}
|
|
|
|
if (message.type === messageTypes.requestOpptyProducts) {
|
|
requestOpptyProducts(message, sender)
|
|
.then(sendResponse)
|
|
.catch((error) => {
|
|
sendResponse({
|
|
ok: false,
|
|
requestId: message.requestId || "",
|
|
error: error.message || "Unable to load opportunity products."
|
|
});
|
|
});
|
|
|
|
return true;
|
|
}
|
|
|
|
if (message.type === messageTypes.requestConsumerTokenService) {
|
|
requestConsumerTokenService(sender)
|
|
.then(sendResponse)
|
|
.catch((error) => {
|
|
sendResponse({
|
|
ok: false,
|
|
error: error.message || "Unable to load consumer token service.",
|
|
debugRequests: Array.isArray(error.debugRequests) ? error.debugRequests : []
|
|
});
|
|
});
|
|
|
|
return true;
|
|
}
|
|
|
|
if (message.type === messageTypes.requestCurrentUser) {
|
|
requestCurrentUser().then(sendResponse).catch(error => sendResponse({
|
|
ok: false, error: error.message || "Unable to load current user.",
|
|
debugRequests: Array.isArray(error.debugRequests) ? error.debugRequests : []
|
|
}));
|
|
return true;
|
|
}
|
|
|
|
if ([messageTypes.requestActionTeamMembers, messageTypes.requestActionFindLookup, messageTypes.requestMgmtAction, messageTypes.requestInternalServiceRequest].includes(message.type)) {
|
|
const request = message.type === messageTypes.requestInternalServiceRequest ? requestInternalServiceRequest : message.type === messageTypes.requestMgmtAction ? requestMgmtAction : message.type === messageTypes.requestActionTeamMembers ? requestActionTeamMembers : requestActionFindLookup;
|
|
request(message, sender).then(sendResponse).catch(error => sendResponse({
|
|
ok: false, httpStatus: error.httpStatus, error: error.message || "Unable to complete request.",
|
|
debugRequests: Array.isArray(error.debugRequests) ? error.debugRequests : []
|
|
}));
|
|
return true;
|
|
}
|
|
|
|
if ([messageTypes.requestWorkloads, messageTypes.requestWorkloadForecastUpdate].includes(message.type)) {
|
|
const request = message.type === messageTypes.requestWorkloads ? requestWorkloads : requestWorkloadForecastUpdate;
|
|
request(message).then(sendResponse).catch(error => sendResponse({
|
|
ok: false, error: error.message || "Unable to load workloads.", httpStatus: error.httpStatus,
|
|
debugRequests: Array.isArray(error.debugRequests) ? error.debugRequests : []
|
|
}));
|
|
return true;
|
|
}
|
|
|
|
if (message.type === messageTypes.requestWlActions) {
|
|
requestWlActions(message).then(sendResponse).catch(error => sendResponse({
|
|
ok: false, error: error.message || "Unable to load workload actions.",
|
|
debugRequests: Array.isArray(error.debugRequests) ? error.debugRequests : []
|
|
}));
|
|
return true;
|
|
}
|
|
|
|
if (message.type === messageTypes.requestCustomerServiceRequest) {
|
|
requestCustomerServiceRequest(message).then(sendResponse).catch(error => sendResponse({
|
|
ok: false, error: error.message || "Unable to load service requests.",
|
|
debugRequests: Array.isArray(error.debugRequests) ? error.debugRequests : []
|
|
}));
|
|
return true;
|
|
}
|
|
|
|
if (message.type === messageTypes.requestInstallBase) {
|
|
requestInstallBase(message).then(sendResponse).catch(error => sendResponse({
|
|
ok: false, error: error.message || "Unable to load installed base.",
|
|
debugRequests: Array.isArray(error.debugRequests) ? error.debugRequests : []
|
|
}));
|
|
return true;
|
|
}
|
|
|
|
if (message.type === messageTypes.requestAccountPlans) {
|
|
requestAccountPlans(message)
|
|
.then(sendResponse)
|
|
.catch((error) => {
|
|
sendResponse({
|
|
ok: false,
|
|
error: error.message || "Unable to load account plans.",
|
|
debugRequests: Array.isArray(error.debugRequests) ? error.debugRequests : []
|
|
});
|
|
});
|
|
|
|
return true;
|
|
}
|
|
|
|
if (message.type === messageTypes.requestRatecardByPlan) {
|
|
requestRatecardByPlan(message).then(sendResponse).catch(error => sendResponse({
|
|
ok: false, error: error.message || "Unable to load rate card.",
|
|
debugRequests: Array.isArray(error.debugRequests) ? error.debugRequests : []
|
|
}));
|
|
return true;
|
|
}
|
|
|
|
if (message.type === messageTypes.requestConsumptionPlanDetail) {
|
|
requestConsumptionPlanDetail(message).then(sendResponse).catch(error => sendResponse({
|
|
ok: false, error: error.message || "Unable to load consumption plan details.",
|
|
debugRequests: Array.isArray(error.debugRequests) ? error.debugRequests : []
|
|
}));
|
|
return true;
|
|
}
|
|
|
|
if (message.type === messageTypes.requestConsumptionTrend) {
|
|
requestConsumptionTrend(message)
|
|
.then(sendResponse)
|
|
.catch((error) => {
|
|
sendResponse({
|
|
ok: false,
|
|
error: error.message || "Unable to load consumption trend.",
|
|
debugRequests: Array.isArray(error.debugRequests) ? error.debugRequests : []
|
|
});
|
|
});
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
});
|
|
}
|