Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz> Reviewed-on: http://git.tnsu.kz/timur.gorodetskiy/request-portal/pulls/8
This commit was merged in pull request #8.
This commit is contained in:
@@ -4,12 +4,21 @@
|
||||
// достаточно для нечастых событий (сохранение формы, решение согласующего).
|
||||
const EVENT_NAME = 'rp-requests-changed';
|
||||
|
||||
export function emitRequestsChanged(): void {
|
||||
window.dispatchEvent(new Event(EVENT_NAME));
|
||||
/**
|
||||
* force=true — повторный клик по УЖЕ открытому пункту меню (см. goto в
|
||||
* RequestPortal.tsx): пользователь явно просит обновить список, поэтому таблица
|
||||
* прячет прежние строки и показывает «Загрузка…», пока не придёт свежий ответ.
|
||||
* force=false/не задан — фоновые обновления (создание заявки, решение
|
||||
* согласующего, десятиминутный автообновление): строки остаются на экране, чтобы
|
||||
* не моргать, если данные не изменились.
|
||||
*/
|
||||
export function emitRequestsChanged(force?: boolean): void {
|
||||
window.dispatchEvent(new CustomEvent<{ force?: boolean }>(EVENT_NAME, { detail: { force } }));
|
||||
}
|
||||
|
||||
/** Подписка на изменения. Возвращает функцию отписки (вызвать в cleanup эффекта). */
|
||||
export function onRequestsChanged(handler: () => void): () => void {
|
||||
window.addEventListener(EVENT_NAME, handler);
|
||||
return () => window.removeEventListener(EVENT_NAME, handler);
|
||||
export function onRequestsChanged(handler: (force?: boolean) => void): () => void {
|
||||
const listener = (e: Event): void => handler((e as CustomEvent<{ force?: boolean }>).detail?.force);
|
||||
window.addEventListener(EVENT_NAME, listener);
|
||||
return () => window.removeEventListener(EVENT_NAME, listener);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user