aboutsummaryrefslogtreecommitdiffhomepage
path: root/main
diff options
context:
space:
mode:
Diffstat (limited to 'main')
-rw-r--r--main/app/sprinkles/admin/src/Controller/UserController.php8
-rw-r--r--main/app/sprinkles/core/assets/SiteAssets/css/main.css33
-rw-r--r--main/app/sprinkles/core/assets/SiteAssets/js/chat.js14
-rw-r--r--main/app/sprinkles/core/assets/SiteAssets/js/main.js28
-rw-r--r--main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php2
-rw-r--r--main/app/sprinkles/core/templates/pages/index.html.twig21
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>