DownloadLaravel Chat [ WIP ]
Simple Laravel Group Chat Module 
 
  
Installation
Install using composer:  composer require php-junior/laravel-chat
 
Once installed, in your project's config/app.php file replace the following entry from the providers array: 
 PhpJunior\LaravelChat\LaravelChatServiceProvider::class,
 And   php artisan vendor:publish --provider="PhpJunior\LaravelChat\LaravelChatServiceProvider"
 php artisan queue:table
 php artisan queue:failed-table
 php artisan migrate
 
Uncomment App\Providers\BroadcastServiceProvider in the providers array of your config/app.php configuration file 
Configuration
 BROADCAST_DRIVER=pusher
 PUSHER_APP_ID=your-pusher-app-id
 PUSHER_APP_KEY=your-pusher-app-key
 PUSHER_APP_SECRET=your-pusher-app-secret
 PUSHER_APP_CLUSTER=your-pusher-app-cluster
 
Add the PhpJunior\LaravelChat\Models\UserGroup trait to your User model 
Install the JavaScript dependencies:  npm install
 npm install --save laravel-echo pusher-js vue-timeago
 
At the bottom of resources/assets/js/bootstrap.js file:  import Echo from "laravel-echo"
 window.Pusher = require('pusher-js');
 
 window.Echo = new Echo({
     broadcaster: 'pusher',
     key: 'your-pusher-app-key',
     cluster: 'your-pusher-app-cluster',
     encrypted: true
 });
 
In resources/assets/js/app.js file:  import VueTimeago from 'vue-timeago';
 window.Bus = new Vue();
 
 Vue.component('groups', require('./components/laravel-chat/Groups.vue'));
 Vue.component('create-group', require('./components/laravel-chat/CreateGroup.vue'));
 Vue.component('group-chat', require('./components/laravel-chat/GroupChat.vue'));
 
 Vue.use(VueTimeago, {
     name: 'timeago', // component name, `timeago` by default
     locale: 'en-US',
     locales: {
         // you will need json-loader in webpack 1
         'en-US': require('vue-timeago/locales/en-US.json')
     }
 })
 
Run npm run dev to recompile your assets. 
Usage
 $groups = auth()->user()->groups;
 $users = User::where('id', '<>', auth()->user()->id)->get();
 $user = auth()->user();
 return view('home', [ 'groups' => $groups , 'users' => $users , 'user' => $user ]); 
 
In your templates 
 <create-group :initial-users="{{ $users }}" :current-user="{{ $user }}"></create-group>
 <groups :initial-groups="{{ $groups }}" :user="{{ $user }}"></groups>
 
License
The MIT License (MIT). Please see License File for more information. 
Do not forget to run the queue listener to broadcast the events
 |