From 4347acdc88cc22a675abd96cd9e96315e59a7eb0 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Wed, 16 May 2018 23:57:12 +0200 Subject: Enhanced receiver select interface and backend --- .../admin/src/Controller/UserController.php | 8 ++++++ .../sprinkles/core/assets/SiteAssets/css/main.css | 33 ++++++++++++++++++++++ .../sprinkles/core/assets/SiteAssets/js/chat.js | 14 ++++++++- .../sprinkles/core/assets/SiteAssets/js/main.js | 28 +++++++++++++++++- .../php/Chatserver/src/ChatProcessor.php | 2 +- .../sprinkles/core/templates/pages/index.html.twig | 21 ++++++++------ 6 files changed, 95 insertions(+), 11 deletions(-) (limited to 'main/app/sprinkles') diff --git a/main/app/sprinkles/admin/src/Controller/UserController.php b/main/app/sprinkles/admin/src/Controller/UserController.php index 90ec941..b733d78 100644 --- a/main/app/sprinkles/admin/src/Controller/UserController.php +++ b/main/app/sprinkles/admin/src/Controller/UserController.php @@ -1129,6 +1129,14 @@ class UserController extends SimpleController $UsersFriends = Capsule::select("SELECT id FROM (SELECT user_id AS id FROM user_follow WHERE followed_by_id = $user->id UNION ALL SELECT followed_by_id FROM user_follow WHERE user_id = $user->id) t GROUP BY id HAVING COUNT(id) > 1"); + foreach ($UsersFriends as $Key => $UsersFriendId) { // NOT THAT EFFICIENT... + $UsersFriendInformation = Capsule::table('users') + ->where('id', "=", $UsersFriendId->id) + ->select("users.id", "users.user_name as username") + ->get(); + $UsersFriends[$Key] = $UsersFriendInformation[0]; + } + /* $UsersFriends = Capsule::table('user_follow as f1') ->select("u1.user_name as username", "u2.user_name as username") diff --git a/main/app/sprinkles/core/assets/SiteAssets/css/main.css b/main/app/sprinkles/core/assets/SiteAssets/css/main.css index f3a71cd..f649882 100644 --- a/main/app/sprinkles/core/assets/SiteAssets/css/main.css +++ b/main/app/sprinkles/core/assets/SiteAssets/css/main.css @@ -193,6 +193,39 @@ hr.ChatHeaderDivider { margin-bottom: 0.6em; /* cause of symmetry things */ } +/* receiver select window */ +.SelectReceiver .ReceiverSelector { + display: grid; + grid-template-columns: 10% 20% auto 10%; + overflow-y: auto; + max-height: 45%; + width: 100%; + z-index: 9999; +} + +.SelectReceiver .ReceiverSelector .Avatar { + grid-column-start: 2; + justify-self: center; + align-self: center; + height: 50px; + width: 50px; + -webkit-border-radius: 100%; + -moz-border-radius: 100%; + border-radius: 100%; +} + +.SelectReceiver .ReceiverSelector .UsersFullName { + grid-column-start: 3; + justify-self: center; /* OR start */ + align-self: center; +} + + +/* main chat */ +.SelectedReceiver { + display: none; +} + .ChatMessages { overflow-y: scroll; overflow-x: hidden; diff --git a/main/app/sprinkles/core/assets/SiteAssets/js/chat.js b/main/app/sprinkles/core/assets/SiteAssets/js/chat.js index 2125296..96f2791 100644 --- a/main/app/sprinkles/core/assets/SiteAssets/js/chat.js +++ b/main/app/sprinkles/core/assets/SiteAssets/js/chat.js @@ -1,7 +1,7 @@ /** * ENCRYPTION */ -var ReceiversUsername = ""; // HARD +var ReceiversUsername, ReceiversId; var openpgp = window.openpgp; var options, EncryptedMessage, DecryptedMessage; var PublicKey = []; @@ -287,6 +287,18 @@ function InitializeChatServer() { } } }); + + // SET RECEIVER + $(document).on("click", ".ReceiverSelector", function () { + ReceiversUsername = $(this).attr("data-username"); + ReceiversId = $(this).attr("data-id"); + ChatSocket.send(JSON.stringify({ + ClientMessageType: "ChatMessage", + MessageType: "Private", + EncryptedWithKey: ReceiversUsername, + Message: EncryptedMessage + })); + }); }; } diff --git a/main/app/sprinkles/core/assets/SiteAssets/js/main.js b/main/app/sprinkles/core/assets/SiteAssets/js/main.js index 5d35bae..9493644 100644 --- a/main/app/sprinkles/core/assets/SiteAssets/js/main.js +++ b/main/app/sprinkles/core/assets/SiteAssets/js/main.js @@ -4,6 +4,7 @@ var Navbar = $(".Navbar"); var NavbarLine = $(".NavbarLine"); var UserSearchBar = $("#UserSearchBar"); var SearchResults = $(".SearchResults"); +var SelectReceiver = $(".SelectReceiver"); var alerts = $("#alerts-page"); var ExploreData = $("#ExploreData"); @@ -182,4 +183,29 @@ UserSearchBar.keyup(function () { alerts.ufAlerts().ufAlerts('fetch'); } }); -}); \ No newline at end of file +}); + +/** + * SEVERAL API REQUESTS/REFRESHES + */ +// CHAT RECEIVERS -- more in chat.js +$(document).ready(function () { + $.ajax({ + url: site.uri.public + "/api/users/u/" + current_username + "/friends", + success: function (receivers) { + receivers.forEach(function (receiver) { + $.ajax({ // not that efficient... + url: site.uri.public + "/api/users/u/" + receiver.username, + success: function (receiversInfo) { + SelectReceiver.append("
" + receiversInfo.full_name + "
"); + } + }); + }) + }, + error: function () { + console.log("%c[SEARCH LOGGER] User " + RequestedUser + " was not found!", "color: red"); + + alerts.ufAlerts().ufAlerts('fetch'); + } + }); +}); diff --git a/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php b/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php index 5490b0a..cf1df91 100644 --- a/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php +++ b/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php @@ -103,7 +103,7 @@ class ChatProcessor implements MessageComponentInterface } break; case "SetReceiver": // USER CLICKED ON NEW CHAT - + $this->receiverID[$conn->resourceId] = $data->receiver; break; case "ChatMessage": // MESSAGE RECEIVED if (isset($this->channels[$conn->resourceId])) { diff --git a/main/app/sprinkles/core/templates/pages/index.html.twig b/main/app/sprinkles/core/templates/pages/index.html.twig index ca38372..765fa3b 100644 --- a/main/app/sprinkles/core/templates/pages/index.html.twig +++ b/main/app/sprinkles/core/templates/pages/index.html.twig @@ -64,15 +64,20 @@
-
- +
+ +
+
+
+ +
+ +
- -
-- cgit v1.2.3