From a853b58f4823e08ff5d1e277c6a903a4fd7fc3b8 Mon Sep 17 00:00:00 2001 From: kusowl Date: Thu, 12 Feb 2026 12:37:59 +0530 Subject: [PATCH] wip live chat - add individual user chat view - add routes - wip: action to check and get inbox --- app/Actions/CreateOrGetInbox.php | 22 +++++++++++ app/Http/Controllers/ChatController.php | 22 +++++++++++ .../components/chat/message-box.blade.php | 14 +++++++ .../components/chat/sidebar-item.blade.php | 4 +- .../views/dashboards/user/chat.blade.php | 16 ++++++++ .../dashboards/user/chat/index.blade.php | 39 ------------------- routes/web.php | 16 +------- routes/web/chat.php | 6 +++ routes/web/customer.php | 1 - 9 files changed, 84 insertions(+), 56 deletions(-) create mode 100644 app/Actions/CreateOrGetInbox.php create mode 100644 app/Http/Controllers/ChatController.php create mode 100644 resources/views/components/chat/message-box.blade.php create mode 100644 resources/views/dashboards/user/chat.blade.php delete mode 100644 resources/views/dashboards/user/chat/index.blade.php create mode 100644 routes/web/chat.php diff --git a/app/Actions/CreateOrGetInbox.php b/app/Actions/CreateOrGetInbox.php new file mode 100644 index 0000000..3c459b2 --- /dev/null +++ b/app/Actions/CreateOrGetInbox.php @@ -0,0 +1,22 @@ + + */ + public function execute(User $recipient, User $sender): array + { + $chatExists = DB::table('inbox_user as sender') + ->join('inbox_user as recipient', 'sender.inbox_id', '=', 'recipient.inbox_id') + ->where('sender.user_id', $sender->id) + ->where('recipient.user_id', $recipient->id) + ->get(); + + } +} diff --git a/app/Http/Controllers/ChatController.php b/app/Http/Controllers/ChatController.php new file mode 100644 index 0000000..21ead6a --- /dev/null +++ b/app/Http/Controllers/ChatController.php @@ -0,0 +1,22 @@ +with('recipient', $recipient); + } +} diff --git a/resources/views/components/chat/message-box.blade.php b/resources/views/components/chat/message-box.blade.php new file mode 100644 index 0000000..a37d70d --- /dev/null +++ b/resources/views/components/chat/message-box.blade.php @@ -0,0 +1,14 @@ +@props(['recipient', 'chats' => []]) + +
+
+ @forelse($chats as $chat) + {{$chat->text}} + @empty +
+

No Messages Found!

+
+ @endforelse +
+ +
diff --git a/resources/views/components/chat/sidebar-item.blade.php b/resources/views/components/chat/sidebar-item.blade.php index 791c47d..6f78c4f 100644 --- a/resources/views/components/chat/sidebar-item.blade.php +++ b/resources/views/components/chat/sidebar-item.blade.php @@ -1,5 +1,5 @@ -@props(['avatar', 'name', 'status' => 'inactive', 'message' => '']) - +@props(['avatar', 'name', 'status' => 'inactive', 'message' => '', 'link' => '']) + {{$avatar}}
diff --git a/resources/views/dashboards/user/chat.blade.php b/resources/views/dashboards/user/chat.blade.php new file mode 100644 index 0000000..11295a2 --- /dev/null +++ b/resources/views/dashboards/user/chat.blade.php @@ -0,0 +1,16 @@ + + + + + + + + @if(isset($recipient)) + + @else +
+

Start a chat !

+
+ @endif + +
diff --git a/resources/views/dashboards/user/chat/index.blade.php b/resources/views/dashboards/user/chat/index.blade.php deleted file mode 100644 index fbb8fb8..0000000 --- a/resources/views/dashboards/user/chat/index.blade.php +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - -
-
- Hi - Hello ! - Hi - Hi - Hello ! - Hello ! - Hi - Hello ! - Hi - Hello ! - Hi - Hello ! - Hi - Hello ! - Hi - Hello ! - Hi - Hello ! - Hi - Hello ! - Hi - Hello ! - Hi - Hello ! - Hi - Hello ! -
- -
-
diff --git a/routes/web.php b/routes/web.php index 76e227c..3457b10 100644 --- a/routes/web.php +++ b/routes/web.php @@ -10,26 +10,14 @@ require __DIR__.'/web/interaction.php'; require __DIR__.'/web/customer.php'; require __DIR__.'/web/admin.php'; +require __DIR__.'/web/chat.php'; Route::get('/', HomeController::class)->name('home'); Route::get('/explore', ExplorePageController::class)->name('explore'); Route::post('/contact', ContactController::class)->name('contact'); -Route::get('/test-openssl', function () { - $res = openssl_pkey_new([ - 'curve_name' => 'prime256v1', - 'private_key_type' => OPENSSL_KEYTYPE_EC, - ]); - - if ($res === false) { - return 'ERROR: '.openssl_error_string(); // likely "error:02001003:system library:fopen:No such process" - } - - return 'SUCCESS: OpenSSL is configured correctly.'; -}); - /** - * This routes are accessed by JS XHR requests, and is loaded here cause + * This route is accessed by JS XHR requests, and is loaded here cause * we do not want to use sanctum for web requests */ // ------------- API Routes ------------ diff --git a/routes/web/chat.php b/routes/web/chat.php new file mode 100644 index 0000000..4f38a4c --- /dev/null +++ b/routes/web/chat.php @@ -0,0 +1,6 @@ +name('chat'); +Route::get('/chat/{recipient}', [ChatController::class, 'show'])->name('chat.show'); diff --git a/routes/web/customer.php b/routes/web/customer.php index 2fdd155..db1c309 100644 --- a/routes/web/customer.php +++ b/routes/web/customer.php @@ -9,5 +9,4 @@ ->middleware([HasRole::class.':'.UserTypes::User->value, 'auth']) ->group(function () { Route::resource('profile', UserProfileController::class)->except('index', 'store', 'create'); - Route::get('/chat', fn () => view('dashboards.user.chat.index')); });