diff --git a/src/webparts/requestPortal/features/myRequests/myRequests.service.ts b/src/webparts/requestPortal/features/myRequests/myRequests.service.ts index 74ee956..9a89bde 100644 --- a/src/webparts/requestPortal/features/myRequests/myRequests.service.ts +++ b/src/webparts/requestPortal/features/myRequests/myRequests.service.ts @@ -23,6 +23,7 @@ import { siteOrigin, } from '../../shared/approval'; import { effectiveUserEmail } from '../../shared/impersonation'; +import { DATA_SITE_URL } from '../../shared/config'; import { IMyRequest } from './models/IMyRequest'; import { IMyRequestsTypeDebug } from './models/IMyRequestsDebug'; import { traceLinkedTypes, traceResultRows, traceSearchHits } from './searchTrace'; @@ -127,14 +128,27 @@ export function currentUserEmail(context: WebPartContext): string { return effectiveUserEmail(context).toLowerCase(); } +function normalizeSiteUrl(url: string): string { + return url.replace(/\/+$/, '').toLowerCase(); +} + // Типы заявок, у которых approval-route API уже отдал listId/siteUrl (готовы к чтению). +// +// Только типы НАШЕГО сайта данных: approval-route общий с ct-forms-portal +// (/sites/sed), и /api/request-types отдаёт его типы тоже. Search ищет по +// всему тенанту, поэтому без этого фильтра Path-условие по спискам sed +// притягивало в «Мои заявки» и очереди заявки CT (СТ ОМТС и т.п.), которые +// этот портал не умеет ни показать (нет RequestStatus), ни открыть (нет View). export async function getLinkedTypes(context: WebPartContext): Promise { // Кешированный вариант: getLinkedTypes зовут и счётчики меню, и каждая // таблица, и «Поиск» — на одно открытие портала это было 4-5 одинаковых // AAD-запросов к /api/request-types. Ответ меняется только когда админ // заводит тип заявки, то есть заведомо не в пределах загрузки страницы. const types = await getRequestTypesCached(context); - const linked = types.filter((t) => !!t.listId && !!t.siteUrl); + const ownSiteUrl = normalizeSiteUrl(DATA_SITE_URL); + const linked = types.filter( + (t) => !!t.listId && !!t.siteUrl && normalizeSiteUrl(t.siteUrl) === ownSiteUrl + ); traceLinkedTypes(types, linked); return linked; }