/** * Bind data to the view. * * @param View $view */ public function compose(View $view) { Session::updateCurrent(); $sessions = Session::registered()->withUserMessages()->where('user_id', '<>', Auth::user()->id)->get(); $offlineUsers = User::getOfflineWithMessages(); $user = Auth::user(); $view->with(['sessions' => $sessions, 'user' => $user, 'offlineUsers' => $offlineUsers]); }
/** * Register any other events for your application. * * @param \Illuminate\Contracts\Events\Dispatcher $events */ public function boot(DispatcherContract $events) { parent::boot($events); $pusher = App::make('pusher'); $events->listen('auth.logout', function ($user) use($pusher) { Session::logoutCurrent(); $pusher->trigger('notifications', 'new-logout', $user); }); $events->listen('auth.login', function ($user, $remember) use($pusher) { $pusher->trigger('notifications', 'new-login', $user); }); }
public static function getOfflineWithMessages() { return self::whereNotIn('id', Session::getRegisteredUserIds())->withMessages()->get()->reject(function ($user) { return $user->getAllMessages()->isEmpty(); }); }