19 private const METHODS_REQUIRING_PREFILTER = [
22 'loadincontext' =>
true,
26 UpdateState::class => [
27 'getstatedata' =>
true,
29 Chat\Message::class => [
39 $this->updateStatus();
42 private function updateStatus(): void
44 if (!$this->shouldUpdateByAction())
49 $userId = (int)CurrentUser::get()->getId();
55 \CIMContactList::SetOnline(
$userId);
58 if (
$context->isMobile() && Loader::includeModule(
'mobile'))
60 \Bitrix\Mobile\User::setOnline(
$userId);
65 \CIMStatus::Set(
$userId, Array(
'IDLE' =>
null));
70 \CIMMessenger::SetDesktopStatusOnline(
$userId);
74 private function shouldUpdateByAction(): bool
76 $className = $this->
getAction()->getController()::class;
79 return isset(self::METHODS_REQUIRING_PREFILTER[$className][$methodName]);