Здравствуйте, есть задача отправки события всем пользователям системы.
Использовал метод расписанный здесь, через GlobalUiEventPublisher
- оповещение приходит во все экраны. Проблема в том, что если в EventListener
попытаться получить информацию о пользователе, в частности currentUserSubstitution.authenticatedUser.username
и currentUserSubstitution.substitutedUser?.username
то они возвращают информацию того юзера, что событие отправил (то есть во всех экранах одно и то же значение). Не подскажите как это можно исправить?
Добрый день!
Можно не получать информацию о текущем пользователе внутри слушателя, а заранее сохранить текущего пользователя в каком-либо поле экрана, где у вас объявлен листенер. Внутри листенера уже обратиться к этому полю.
Да… спасибо. Но тогда есть еще связанная с этим проблема. Дело в том, что мы хотим сделать так, чтоб если для пользователя удаляли Замещение и данный пользователь в это время этим замещением пользуется, переключать пользователя на его настройки. То есть вызывать userSubstitutionManager.substituteUser(username)
и на этом этапе как раз применяется сессия юзера что вызвал событие.
Таким образом currentUserSubstitution.substitutedUser
возвращает null
. Ибо authentication
SystemAuthenticationToken
Тут уже вопрос как заранее сохранить substitutedUser
Попробую дополнить UserIndicatorImpl
чтоб отправлять в ui
событие схожее с UserSubstitutedEvent
ибо оно отправляется не через UiEventPublisher
. Вопрос как оно в таком случае приходит в UserChangedListener
.