diff options
6 files changed, 95 insertions, 11 deletions
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("<div class='ReceiverSelector' data-username='" + receiversInfo.user_name + "' data-id='" + receiversInfo.id + "'><img class='Avatar' src='" + receiversInfo.avatar + "'/><div class='UsersFullName'>" + receiversInfo.full_name + "</div></div>"); + } + }); + }) + }, + 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 @@ <hr class="ChatHeaderDivider"> </div> <div class="MainInTab ChatWindow"> - <div id="ChatMessages" class="ChatMessages"> - <!-- Messages --> + <div class="SelectReceiver"> + + </div> + <div class="SelectedReceiver"> + <div id="ChatMessages" class="ChatMessages"> + <!-- Messages --> + </div> + <input title="{{ translate("CHAT_MESSAGES.JOIN_GROUP_PH") }}" + placeholder="{{ translate("CHAT_MESSAGES.JOIN_GROUP_PH") }}" + id="SubscribeTextInput" class="ChatInput" type="text" /> + <input title="{{ translate("CHAT_MESSAGES.WRITE_MESSAGE_PH") }}" + placeholder="{{ translate("CHAT_MESSAGES.WRITE_MESSAGE_PH") }}" + id="ChatTextInput" class="ChatInput" type="text" /> </div> - <input title="{{ translate("CHAT_MESSAGES.JOIN_GROUP_PH") }}" - placeholder="{{ translate("CHAT_MESSAGES.JOIN_GROUP_PH") }}" - id="SubscribeTextInput" class="ChatInput" type="text" /> - <input title="{{ translate("CHAT_MESSAGES.WRITE_MESSAGE_PH") }}" - placeholder="{{ translate("CHAT_MESSAGES.WRITE_MESSAGE_PH") }}" - id="ChatTextInput" class="ChatInput" type="text" /> </div> </div> |