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

Тут уже вопрос как заранее сохранить substitutedUser
Попробую дополнить UserIndicatorImpl чтоб отправлять в ui событие схожее с UserSubstitutedEvent ибо оно отправляется не через UiEventPublisher. Вопрос как оно в таком случае приходит в UserChangedListener.