Browse Source

Implements live update when adding credentials

Christopher Leggett 5 years ago
parent
commit
403cc36dcd

+ 42 - 0
app/Events/CredentialAdded.php

@@ -0,0 +1,42 @@
+<?php
+
+namespace App\Events;
+
+use Illuminate\Broadcasting\Channel;
+use Illuminate\Broadcasting\InteractsWithSockets;
+use Illuminate\Broadcasting\PresenceChannel;
+use Illuminate\Broadcasting\PrivateChannel;
+use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
+use Illuminate\Foundation\Events\Dispatchable;
+use Illuminate\Queue\SerializesModels;
+
+class CredentialAdded implements ShouldBroadcast
+{
+    use Dispatchable, InteractsWithSockets, SerializesModels;
+
+    public $credential;
+
+    /**
+     * Create a new event instance.
+     *
+     * @return void
+     */
+    public function __construct($credential)
+    {
+        $this->credential = $credential;
+    }
+
+    /**
+     * Get the channels the event should broadcast on.
+     *
+     * @return \Illuminate\Broadcasting\Channel|array
+     */
+    public function broadcastOn()
+    {
+        if ($this->credential->pcid != 0) {
+            return new Channel('credlist.pcid.'.$this->credential->pcid);
+        } else {
+            return new Channel('credlist.groupid.'.$this->credential->groupid);
+        }
+    }
+}

+ 1 - 0
app/Http/Controllers/Api/CredentialsController.php

@@ -42,6 +42,7 @@ class CredentialsController extends Controller
         $credential->credq = ' ';
         $credential->creda = ' ';
         $credential->save();
+        event(new \App\Events\CredentialAdded($credential));
         return response()->json($credential, 200);
     }
 

+ 4 - 0
public/js/app.js

@@ -2362,6 +2362,8 @@ __webpack_require__.r(__webpack_exports__);
         $('#credential' + deletedCred['credid'] + 'deleteModal').modal('hide');
 
         _this.deleteCred(index);
+      }).listen('CredentialAdded', function (e) {
+        _this.credentials.unshift(e.credential);
       });
     }
 
@@ -2376,6 +2378,8 @@ __webpack_require__.r(__webpack_exports__);
         $('#credential' + deletedCred['credid'] + 'deleteModal').modal('hide');
 
         _this.deleteCred(index);
+      }).listen('CredentialAdded', function (e) {
+        _this.credentials.unshift(e.credential);
       });
     }
   }

+ 6 - 0
resources/js/components/credential-list.vue

@@ -55,6 +55,9 @@ export default {
                     $('#credential'+deletedCred['credid']+'deleteModal').modal('hide');
                     this.deleteCred(index);
                 })
+                .listen('CredentialAdded', (e) => {
+                    this.credentials.unshift(e.credential)
+                })
         }
         if (this.groupid) {
             Echo.channel('credlist.groupid.'+this.groupid)
@@ -66,6 +69,9 @@ export default {
                     $('#credential'+deletedCred['credid']+'deleteModal').modal('hide');
                     this.deleteCred(index);
                 })
+                .listen('CredentialAdded', (e) => {
+                    this.credentials.unshift(e.credential)
+                })
         }
     }
 }