Implemented the customer service requests view
This commit is contained in:
85
dist/chromium/background.js
vendored
85
dist/chromium/background.js
vendored
@@ -12,6 +12,7 @@ function createMessageTypes() {
|
||||
requestConsumerTokenService: "opportunitiesExtension.requestConsumerTokenService",
|
||||
requestAccountPlans: "opportunitiesExtension.requestAccountPlans",
|
||||
requestInstallBase: "opportunitiesExtension.requestInstallBase",
|
||||
requestCustomerServiceRequest: "opportunitiesExtension.requestCustomerServiceRequest",
|
||||
requestConsumptionTrend: "opportunitiesExtension.requestConsumptionTrend"
|
||||
});
|
||||
}
|
||||
@@ -158,7 +159,8 @@ function createAuthConsumerSession({
|
||||
authorizations: {
|
||||
accountSummary: accountSummaryAuthorization,
|
||||
accountPlans: accountPlansAuthorization,
|
||||
installBase: extractTokenServiceAuthorization(tokenResponse, "SAIB-TS", "")
|
||||
installBase: extractTokenServiceAuthorization(tokenResponse, "SAIB-TS", ""),
|
||||
customerServiceRequests: extractTokenServiceAuthorization(tokenResponse, "SPA-ORANGE", "")
|
||||
},
|
||||
debugRequests
|
||||
};
|
||||
@@ -502,6 +504,68 @@ function createSpaInstallBase({ ACCOUNT_SUMMARY_URL, fetchJson, findNestedObject
|
||||
return { requestInstallBase };
|
||||
}
|
||||
|
||||
// Source: src/services/spa/customer-service-requests.js
|
||||
function createSpaCustomerServiceRequests({ ACCOUNT_SUMMARY_URL, fetchJson, findAccountPlanId, normalizeMessageAuthorization }) {
|
||||
const endpoint = "https://spa.oracle.com/oalcrm/web/api/provider-proxy/g2m-custsr-provider/service/oscSr/";
|
||||
const filter = encodeURIComponent(JSON.stringify({ hierarchy: "single", status: "open" }));
|
||||
|
||||
async function requestCustomerServiceRequest(message) {
|
||||
const debugRequests = [];
|
||||
try {
|
||||
const partyNumber = String(message.partyNumber || "").trim();
|
||||
const summaryAuth = normalizeMessageAuthorization(message.authorizations?.accountSummary, "account-ti-authorization");
|
||||
const srAuth = normalizeMessageAuthorization(message.authorizations?.customerServiceRequests, "");
|
||||
if (!partyNumber) throw new Error("Customer Party Number is required.");
|
||||
if (!summaryAuth.value) throw new Error("ACCP-TS authorization is unavailable.");
|
||||
if (!srAuth.value) throw new Error("SPA-ORANGE uiaasHeader.value is unavailable.");
|
||||
|
||||
const summary = await fetchJson(ACCOUNT_SUMMARY_URL, {
|
||||
method: "POST", credentials: "include",
|
||||
headers: { Accept: "application/json", "Content-Type": "application/json", [summaryAuth.name]: summaryAuth.value },
|
||||
body: JSON.stringify([{ key: "regId", value: partyNumber }])
|
||||
}, "requestAccountSummary", debugRequests);
|
||||
const accountSummaryId = findAccountPlanId(summary);
|
||||
if ((typeof accountSummaryId !== "string" && typeof accountSummaryId !== "number") || !String(accountSummaryId).trim()) {
|
||||
throw new Error("Account id was not found in requestAccountSummary.");
|
||||
}
|
||||
|
||||
const items = [];
|
||||
let offset = 0;
|
||||
// This endpoint uses totalResults/count rather than hasMore.
|
||||
for (let page = 0; page < 1000; page += 1) {
|
||||
const url = `${endpoint}${encodeURIComponent(String(accountSummaryId))}?customerSRFilter=${filter}&orderBy=creationDate&orderByMode=desc&limit=40&offset=${offset}`;
|
||||
const result = await fetchJson(url, {
|
||||
method: "GET", credentials: "include",
|
||||
// SPA-ORANGE's label may be lead-auth; this provider requires custsr-auth.
|
||||
headers: { Accept: "application/json", "custsr-auth": srAuth.value }
|
||||
}, "requestCustomerServiceRequest", debugRequests);
|
||||
if (!result || !Array.isArray(result.objects)
|
||||
|| result.objects.some(item => !item || typeof item !== "object" || Array.isArray(item))
|
||||
|| !Number.isSafeInteger(result.totalResults) || result.totalResults < 0
|
||||
|| !Number.isSafeInteger(result.count) || result.count !== result.objects.length) {
|
||||
throw new Error("requestCustomerServiceRequest returned an invalid collection.");
|
||||
}
|
||||
if (result.offset !== offset) throw new Error("requestCustomerServiceRequest returned an unexpected offset.");
|
||||
items.push(...result.objects);
|
||||
offset += result.count;
|
||||
if (offset >= result.totalResults) return { ok: true, items, debugRequests };
|
||||
if (!result.count) throw new Error("requestCustomerServiceRequest pagination made no progress.");
|
||||
}
|
||||
throw new Error("requestCustomerServiceRequest pagination limit reached.");
|
||||
} catch (error) {
|
||||
error.debugRequests = debugRequests;
|
||||
throw error;
|
||||
} finally {
|
||||
for (const entry of debugRequests) {
|
||||
for (const key of Object.keys(entry.requestHeaders || {})) {
|
||||
if (!/^(accept|content-type)$/i.test(key)) entry.requestHeaders[key] = "(present)";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return { requestCustomerServiceRequest };
|
||||
}
|
||||
|
||||
// Source: src/services/spa/consumption.js
|
||||
function createSpaConsumption({
|
||||
CONSUMPTION_TREND_REQUESTS,
|
||||
@@ -1513,6 +1577,7 @@ function registerBackgroundMessages({
|
||||
refreshXsrfCookie,
|
||||
requestAccountPlans,
|
||||
requestInstallBase,
|
||||
requestCustomerServiceRequest,
|
||||
requestConsumerTokenService,
|
||||
requestConsumptionTrend,
|
||||
requestOpptyProducts,
|
||||
@@ -1592,6 +1657,14 @@ runtimeApi.runtime.onMessage.addListener((message, sender, sendResponse) => {
|
||||
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.",
|
||||
@@ -1675,6 +1748,12 @@ function createBackgroundApplication(overrides = {}) {
|
||||
findNestedObject: (...args) => spaResponseShapes.findNestedObject(...args),
|
||||
normalizeMessageAuthorization: (...args) => authSpaCredentials.normalizeMessageAuthorization(...args)
|
||||
});
|
||||
const spaCustomerServiceRequests = createSpaCustomerServiceRequests({
|
||||
ACCOUNT_SUMMARY_URL: contracts.ACCOUNT_SUMMARY_URL,
|
||||
fetchJson: (...args) => httpBackgroundJson.fetchJson(...args),
|
||||
findAccountPlanId: (...args) => spaResponseShapes.findAccountPlanId(...args),
|
||||
normalizeMessageAuthorization: (...args) => authSpaCredentials.normalizeMessageAuthorization(...args)
|
||||
});
|
||||
const spaConsumption = createSpaConsumption({
|
||||
CONSUMPTION_TREND_REQUESTS: contracts.CONSUMPTION_TREND_REQUESTS,
|
||||
CONSUMPTION_TREND_URL: contracts.CONSUMPTION_TREND_URL,
|
||||
@@ -1739,12 +1818,13 @@ function createBackgroundApplication(overrides = {}) {
|
||||
const refreshXsrfCookie = (...args) => authXsrfRecovery.refreshXsrfCookie(...args);
|
||||
const requestAccountPlans = (...args) => spaAccounts.requestAccountPlans(...args);
|
||||
const requestInstallBase = (...args) => spaInstallBase.requestInstallBase(...args);
|
||||
const requestCustomerServiceRequest = (...args) => spaCustomerServiceRequests.requestCustomerServiceRequest(...args);
|
||||
const requestConsumerTokenService = (...args) => authConsumerSession.requestConsumerTokenService(...args);
|
||||
const requestConsumptionTrend = (...args) => spaConsumption.requestConsumptionTrend(...args);
|
||||
const requestOpptyProducts = (...args) => productsBackgroundJobs.requestOpptyProducts(...args);
|
||||
const runtimeApi = environment.browser || environment.chrome;
|
||||
function start() {
|
||||
startBackgroundApplication({ messageTypes, getXsrfTokenCookie, refreshXsrfCookie, requestAccountPlans, requestInstallBase, requestConsumerTokenService, requestConsumptionTrend, requestOpptyProducts, runtimeApi });
|
||||
startBackgroundApplication({ messageTypes, getXsrfTokenCookie, refreshXsrfCookie, requestAccountPlans, requestInstallBase, requestCustomerServiceRequest, requestConsumerTokenService, requestConsumptionTrend, requestOpptyProducts, runtimeApi });
|
||||
}
|
||||
return {
|
||||
start, contracts,
|
||||
@@ -1753,6 +1833,7 @@ function createBackgroundApplication(overrides = {}) {
|
||||
authSpaCredentials,
|
||||
spaAccounts,
|
||||
spaInstallBase,
|
||||
spaCustomerServiceRequests,
|
||||
spaConsumption,
|
||||
spaResponseShapes,
|
||||
httpBackgroundJson,
|
||||
|
||||
Reference in New Issue
Block a user