aboutsummaryrefslogtreecommitdiffhomepage
path: root/main/app/sprinkles/core/assets
diff options
context:
space:
mode:
authormarvin-borner@live.com2018-05-12 12:44:04 +0200
committermarvin-borner@live.com2018-05-12 12:44:04 +0200
commitd70be1a7a2b94cf1f30f6f4193a27eabcc84fe54 (patch)
treedb30654b695f5b6dd00fa296d0e9e1770e37bfe6 /main/app/sprinkles/core/assets
parent16014c5bbd25afbb445784c17646607c53cfe56b (diff)
parent1f05a05eec9fc88aca7d3e4e7d9e891ae31ba4eb (diff)
Merge branch 'master' of github.com:marvinborner/SocialNetwork
Diffstat (limited to 'main/app/sprinkles/core/assets')
-rw-r--r--main/app/sprinkles/core/assets/SiteAssets/css/main.css30
-rw-r--r--main/app/sprinkles/core/assets/SiteAssets/js/chat.js189
-rw-r--r--main/app/sprinkles/core/assets/SiteAssets/js/main.js119
-rw-r--r--main/app/sprinkles/core/assets/SiteAssets/js/push.js3
-rw-r--r--main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php6
5 files changed, 240 insertions, 107 deletions
diff --git a/main/app/sprinkles/core/assets/SiteAssets/css/main.css b/main/app/sprinkles/core/assets/SiteAssets/css/main.css
index 999bdaa..42e0af8 100644
--- a/main/app/sprinkles/core/assets/SiteAssets/css/main.css
+++ b/main/app/sprinkles/core/assets/SiteAssets/css/main.css
@@ -76,7 +76,6 @@ SWIPEABLE
HEADER
******/
.header {
- -js-display: flex;
display: flex;
flex-wrap: nowrap;
justify-content: space-between;
@@ -194,6 +193,7 @@ hr.ChatHeaderDivider {
.ChatMessages {
overflow-y: scroll;
+ overflow-x: hidden;
max-height: calc(100% - 215px); /* navbar + input + some margin*/
max-height: -moz-calc(100% - 215px);
max-height: -webkit-calc(100% - 215px);
@@ -323,18 +323,23 @@ hr.ChatHeaderDivider {
}
@-webkit-keyframes sk-bouncedelay {
- 0%, 80%, 100% { -webkit-transform: scale(0) }
- 40% { -webkit-transform: scale(1.0) }
+ 0%, 80%, 100% {
+ -webkit-transform: scale(0)
+ }
+ 40% {
+ -webkit-transform: scale(1.0)
+ }
}
@keyframes sk-bouncedelay {
0%, 80%, 100% {
-webkit-transform: scale(0);
transform: scale(0);
- } 40% {
- -webkit-transform: scale(1.0);
- transform: scale(1.0);
- }
+ }
+ 40% {
+ -webkit-transform: scale(1.0);
+ transform: scale(1.0);
+ }
}
/*********
@@ -371,7 +376,6 @@ FRIEND TAB
align-self: center;
}
-
/***********
PERSONAL TAB
***********/
@@ -382,7 +386,6 @@ PERSONAL TAB
}
.PersonalOverviewHeader {
- -js-display: flex;
display: flex;
justify-content: space-evenly;
align-items: flex-end;
@@ -421,7 +424,6 @@ PERSONAL TAB
NAVBAR
*****/
.Navbar {
- -js-display: flex;
display: flex;
flex-wrap: nowrap;
justify-content: center;
@@ -434,10 +436,18 @@ NAVBAR
}
.NavbarIconWrap {
+ width: calc(100vw / 5);
+ width: -moz-calc(100vw / 5);
+ width: -webkit-calc(100vw / 5);
+}
+
+.NavbarIconWrap {
margin: auto;
}
.NavbarIconWrap img {
+ display: block;
+ margin: 0 auto;
height: 30px;
width: 30px;
}
diff --git a/main/app/sprinkles/core/assets/SiteAssets/js/chat.js b/main/app/sprinkles/core/assets/SiteAssets/js/chat.js
index d9de95f..76e34db 100644
--- a/main/app/sprinkles/core/assets/SiteAssets/js/chat.js
+++ b/main/app/sprinkles/core/assets/SiteAssets/js/chat.js
@@ -1,4 +1,21 @@
/**
+ * ENCRYPTION
+ */
+var ReceiversUsername = ""; // HARD
+var openpgp = window.openpgp;
+var options, EncryptedMessage, DecryptedMessage;
+var PublicKey = [];
+openpgp.initWorker({path: '/assets-raw/core/assets/SiteAssets/js/openpgp.worker.js'});
+var privKeyObj = openpgp.key.readArmored(localStorage.getItem("PrivateKey").replace(/\r/, "")).keys[0];
+privKeyObj.decrypt(localStorage.getItem("🔒"));
+
+/**
+ * GLOBAL DECLARATIONS
+ */
+var LastMessage, Username;
+
+
+/**
* GENERAL CHAT
*/
function InitializeChatServer() {
@@ -18,16 +35,20 @@ function InitializeChatServer() {
// CONNECTION SUCCESSFUL!
console.log("%c[CHATSOCKET LOGGER] Chat connection established!", "color: darkorange");
// START VERIFICATION
- ChatSocket.send(JSON.stringify({ClientMessageType: "Verify", Cookie: document.cookie, UserID: current_user_id}));
+ ChatSocket.send(JSON.stringify({
+ ClientMessageType: "Verify",
+ Cookie: document.cookie,
+ UserID: current_user_id
+ }));
console.log("%c[CHATSOCKET LOGGER] Started chat verification process...", "color: grey");
// GOT MESSAGE
ChatSocket.onmessage = function (e) {
// DECLARATIONS
var TypingIndicatorMessage = $(".TypingIndicatorMessage").parent();
- var LastMessage = $(".MessageWrapper.Normal:last .ChatMessage");
+ LastMessage = $(".MessageWrapper.Normal:last .ChatMessage");
var MessageObject = JSON.parse(e.data);
- var Message = MessageObject.Message;
- var Username = MessageObject.Username;
+ var Message = MessageObject.Message; // ENCRYPTED MESSAGE (NOT ENCRYPTED ON SERVER MESSAGES)
+ Username = MessageObject.Username;
var Fullname = MessageObject.Fullname;
var Avatar = MessageObject.Avatar;
var GroupName = MessageObject.GroupName;
@@ -36,49 +57,62 @@ function InitializeChatServer() {
var WasHimself = MessageObject.WasHimself;
var ServerMessageType = MessageObject.ServerMessageType;
var Granted = MessageObject.Granted;
+ ReceiversUsername = MessageObject.Receiver;
- if (ServerMessage === false) { // NO SERVER MESSAGE -> SENT BY USER
- if (WasHimself === true) { // -> MESSAGE WAS FROM HIMSELF
- console.log("%c[CHATSOCKET LOGGER] You sent a message!", "color: darkorange");
- if (!LastMessage.hasClass("MessageSent")) { // CHECK IF PREVIOUS MESSAGE WAS FROM HIMSELF TOO -> IF NOT, CREATE NEW 'ALONE' MESSAGE
- ChatMessages.append("<div class='MessageWrapper Normal'><div class='ChatMessage MessageSent AloneMessage animated fadeInRight'>" + Message + "</div></div>");
- } else if (LastMessage.hasClass("MessageSent")) { // IF PREVIOUS MESSAGE WAS FROM HIMSELF TOO -> CREATE WITH CORRESPONDING CLASSES FOR DESIGN
- ChatMessages.append("<div class='MessageWrapper Normal'><div class='ChatMessage MessageSent BottomMessage animated fadeInRight'>" + Message + "</div></div>");
- if (LastMessage.hasClass("AloneMessage")) {
- LastMessage.removeClass("AloneMessage");
- LastMessage.addClass("TopMessage");
- } else if (LastMessage.hasClass("BottomMessage")) {
- LastMessage.removeClass("BottomMessage");
- LastMessage.addClass("MiddleMessage");
- }
+ // GET PUBLIC KEY IF NOT ALREADY DID
+ if (!(ReceiversUsername in PublicKey) && ReceiversUsername !== null && ReceiversUsername !== undefined) {
+ $.ajax({
+ type: 'GET',
+ url: site.uri.public + '/api/users/u/' + ReceiversUsername + '/publickey',
+ dataType: "json",
+ success: function (response) {
+ PublicKey[ReceiversUsername] = response.PublicKey;
+ console.log("%c[ENCRYPTION LOGGER] Publickey of " + ReceiversUsername + ": " + PublicKey[ReceiversUsername].substr(96).slice(0, -35), "color: #20c20e; background-color: black;")
}
- } else if (WasHimself === false) { // -> MESSAGE WAS FROM OTHER USER
- console.log("%c[CHATSOCKET LOGGER] You received a message!", "color: darkorange");
- NotifySound.play();
- Push.create(Fullname, { // CREATE NOTIFICATION
- body: Message,
- icon: Avatar,
- timeout: 5000,
- onClick: function () {
- window.focus();
- this.close();
- }
- });
- if (!LastMessage.hasClass("MessageReceived")) { // CHECK IF PREVIOUS MESSAGE WAS FROM OTHER USER TOO -> IF NOT, CREATE NEW 'ALONE' MESSAGE
- ChatMessages.append("<div class='MessageWrapper Normal'><div class='ChatMessage MessageReceived AloneMessage animated fadeInLeft'>" + Message + "</div></div>");
- } else if (LastMessage.hasClass("MessageReceived")) { // IF PREVIOUS MESSAGE WAS FROM OTHER USER TOO -> CREATE WITH CORRESPONDING CLASSES FOR DESIGN
- ChatMessages.append("<div class='MessageWrapper Normal'><div class='ChatMessage MessageReceived BottomMessage animated fadeInLeft'>" + Message + "</div></div>");
- if (LastMessage.hasClass("AloneMessage")) {
- LastMessage.removeClass("AloneMessage");
- LastMessage.addClass("TopMessage");
- } else if (LastMessage.hasClass("BottomMessage")) {
- LastMessage.removeClass("BottomMessage");
- LastMessage.addClass("MiddleMessage");
+ });
+ }
+
+ if (ServerMessage === false) { // NO SERVER MESSAGE -> SENT BY USER
+
+ // DECRYPT MESSAGE
+ options = {
+ message: openpgp.message.readArmored("-----BEGIN PGP MESSAGE-----\r\nVersion: OpenPGP.js v3.0.9\r\nComment: https://openpgpjs.org\r\n\r\n" + Message + "\r\n\-----END PGP MESSAGE-----\r\n"),
+ publicKeys: openpgp.key.readArmored(PublicKey[Username]).keys, // FOR VERIFICATION
+ privateKeys: [privKeyObj]
+ };
+ openpgp.decrypt(options).then(function(plaintext) {
+ DecryptedMessage = plaintext.data;
+ if (WasHimself === true) { // -> MESSAGE WAS FROM HIMSELF -> Don't write to chat, as its done directly (on enter function at the bottom, for performance)
+ console.log("%c[CHATSOCKET LOGGER] Message sending succeeded!", "color: darkorange");
+ } else if (WasHimself === false) { // -> MESSAGE WAS FROM OTHER USER
+ console.log("%c[CHATSOCKET LOGGER] You received a message!", "color: darkorange");
+ NotifySound.play();
+ Push.create(Fullname, { // CREATE NOTIFICATION
+ body: DecryptedMessage,
+ icon: Avatar,
+ timeout: 5000,
+ onClick: function () {
+ window.focus();
+ this.close();
+ }
+ });
+ if (!LastMessage.hasClass("MessageReceived")) { // CHECK IF PREVIOUS MESSAGE WAS FROM OTHER USER TOO -> IF NOT, CREATE NEW 'ALONE' MESSAGE
+ ChatMessages.append("<div class='MessageWrapper Normal'><div class='ChatMessage MessageReceived AloneMessage animated fadeInLeft'>" + DecryptedMessage + "</div></div>");
+ } else if (LastMessage.hasClass("MessageReceived")) { // IF PREVIOUS MESSAGE WAS FROM OTHER USER TOO -> CREATE WITH CORRESPONDING CLASSES FOR DESIGN
+ ChatMessages.append("<div class='MessageWrapper Normal'><div class='ChatMessage MessageReceived BottomMessage animated fadeInLeft'>" + DecryptedMessage + "</div></div>");
+ if (LastMessage.hasClass("AloneMessage")) {
+ LastMessage.removeClass("AloneMessage");
+ LastMessage.addClass("TopMessage");
+ } else if (LastMessage.hasClass("BottomMessage")) {
+ LastMessage.removeClass("BottomMessage");
+ LastMessage.addClass("MiddleMessage");
+ }
}
}
- }
+ });
+
// CONVERT LINKS TO LINKS
- $('.MessageReceived').linkify({
+ $('.ChatMessage').linkify({
target: "_blank"
});
} else if (ServerMessage === true) { // SERVER MESSAGE
@@ -115,15 +149,17 @@ function InitializeChatServer() {
}
}
} else if (ServerMessageType === "Verify") { // TYPE: SERVER CHECKED ACCESS -- MOSTLY HANDLED IN BACKEND
- if (Granted === true) {
- console.log("%c[CHATSOCKET LOGGER] Chat access granted!", "color: green");
- } else if (Granted === false) {
- console.log("%c[CHATSOCKET LOGGER] Chat access denied!", "color: red");
- }
+ if (Granted === true) {
+ console.log("%c[CHATSOCKET LOGGER] Chat access granted!", "color: green");
+ } else if (Granted === false) {
+ console.log("%c[CHATSOCKET LOGGER] Chat access denied!", "color: red");
+ }
}
}
// SCROLL TO BOTTOM ON NEW MESSAGE OF ANY KIND
- ChatMessages.animate({scrollTop: document.querySelector("#ChatMessages").scrollHeight}, "slow");
+ if ((ChatMessages.scrollTop() + ChatMessages.innerHeight() < ChatMessages[0].scrollHeight)) {
+ ChatMessages.animate({scrollTop: document.querySelector("#ChatMessages").scrollHeight});
+ }
};
@@ -181,14 +217,65 @@ function InitializeChatServer() {
// SEND MESSAGE FROM INPUT FIELD
ChatTextInput.keyup(function (e) {
if (e.keyCode === 13 && ChatTextInput.val().length > 0) {
+
+ var LastMessage = $(".MessageWrapper.Normal:last .ChatMessage");
+ if (!LastMessage.hasClass("MessageSent")) { // CHECK IF PREVIOUS MESSAGE WAS FROM HIMSELF TOO -> IF NOT, CREATE NEW 'ALONE' MESSAGE
+ ChatMessages.append("<div class='MessageWrapper Normal'><div class='ChatMessage MessageSent AloneMessage animated fadeInRight'>" + ChatTextInput.val() + "</div></div>");
+ } else if (LastMessage.hasClass("MessageSent")) { // IF PREVIOUS MESSAGE WAS FROM HIMSELF TOO -> CREATE WITH CORRESPONDING CLASSES FOR DESIGN
+ ChatMessages.append("<div class='MessageWrapper Normal'><div class='ChatMessage MessageSent BottomMessage animated fadeInRight'>" + ChatTextInput.val() + "</div></div>");
+ if (LastMessage.hasClass("AloneMessage")) {
+ LastMessage.removeClass("AloneMessage");
+ LastMessage.addClass("TopMessage");
+ } else if (LastMessage.hasClass("BottomMessage")) {
+ LastMessage.removeClass("BottomMessage");
+ LastMessage.addClass("MiddleMessage");
+ }
+ }
+
// USER USUALLY STOPS TYPING ON SENDING -> CHANGE STATE TO FALSE
sendTypingState(false);
isTyping = false;
clearTimeout(typingTimer);
- ChatSocket.send(JSON.stringify({ClientMessageType: "ChatMessage", MessageType: "Private", Message: ChatTextInput.val()}));
- ChatTextInput.val("");
- ChatTextInput.val("");
+ // ENCRYPT AND SEND MESSAGE WITH OWN PUBLIC KEY
+ options = {
+ data: ChatTextInput.val(),
+ publicKeys: openpgp.key.readArmored(PublicKey[ReceiversUsername]).keys,
+ privateKeys: [privKeyObj] // FOR SIGNING
+ };
+ openpgp.encrypt(options).then(function (Encrypted) {
+ EncryptedMessage = Encrypted.data.substr(91).slice(0,-29); // SLICING FOR DATABASE SAVING (LESS DATA)
+ console.log("%c[ENCRYPTION LOGGER] Encrypted message for sender: " + EncryptedMessage, "color: #20c20e; background-color: black;");
+
+ ChatSocket.send(JSON.stringify({
+ ClientMessageType: "ChatMessage",
+ MessageType: "Private",
+ EncryptedWithKey: ReceiversUsername,
+ Message: EncryptedMessage
+ }));
+ ChatTextInput.val("");
+ ChatTextInput.val("");
+ });
+
+ // ENCRYPT AND SEND MESSAGE WITH RECEIVERS PUBLIC KEY
+ options = {
+ data: ChatTextInput.val(),
+ publicKeys: openpgp.key.readArmored(PublicKey[ReceiversUsername]).keys,
+ privateKeys: [privKeyObj] // FOR SIGNING
+ };
+ openpgp.encrypt(options).then(function (Encrypted) {
+ EncryptedMessage = Encrypted.data.substr(91).slice(0,-29); // SLICING FOR DATABASE SAVING (LESS DATA)
+ console.log("%c[ENCRYPTION LOGGER] Encrypted message for receiver: " + EncryptedMessage, "color: #20c20e; background-color: black;");
+
+ ChatSocket.send(JSON.stringify({
+ ClientMessageType: "ChatMessage",
+ MessageType: "Private",
+ EncryptedWithKey: ReceiversUsername,
+ Message: EncryptedMessage
+ }));
+ ChatTextInput.val("");
+ ChatTextInput.val("");
+ });
}
});
};
diff --git a/main/app/sprinkles/core/assets/SiteAssets/js/main.js b/main/app/sprinkles/core/assets/SiteAssets/js/main.js
index 7dd6006..08d5888 100644
--- a/main/app/sprinkles/core/assets/SiteAssets/js/main.js
+++ b/main/app/sprinkles/core/assets/SiteAssets/js/main.js
@@ -12,8 +12,8 @@ var ExploreData = $("#ExploreData");
* CACHE IMAGES
* @type {*|jQueryImageCaching|jQuery}
*/
-var cachedNavbarIcons = $(".NavbarIconWrap img").imageCaching();
-var cashedAvatarIcons = $("img.Avatar").imageCaching();
+//var cachedNavbarIcons = $(".NavbarIconWrap img").imageCaching();
+//var cashedAvatarIcons = $("img.Avatar").imageCaching();
/**
* POPUPS
@@ -32,31 +32,59 @@ function triggerErrorPopup() {
/**
* ENCRYPTION
*/
-//encrypt
-var openpgp = window.openpgp;
+/*var openpgp = window.openpgp;
+var options, EncryptedText, DecryptedText, PrivateKey, PassPhrase, PrivateKeyObj;
+var PublicKey = [];
openpgp.initWorker({path: '/assets-raw/core/assets/SiteAssets/js/openpgp.worker.js'});
-var options, encrypted;
-options = {
- data: "LOL",
- passwords: ['password'],
- armor: false
-};
-openpgp.encrypt(options).then(function (ciphertext) {
- encrypted = ciphertext.message.packets.write();
+
+$.ajax({
+ type: 'GET',
+ url: site.uri.public + '/api/users/u/' + current_username + '/publickey',
+ dataType : "json",
+ success: function (response) {
+ if (response.user_id === current_user_id) {
+ PublicKey[current_username] = response.PublicKey;
+ PrivateKey = localStorage.getItem("PrivateKey");
+ PassPhrase = localStorage.getItem("🔒")
+ }
+ }
});
-// decrypt
-function decrypt() {
+function EncryptMessage(Message, Username) {
+ if (!Username in PublicKey) {
+ $.ajax({
+ type: 'GET',
+ url: site.uri.public + '/api/users/u/' + Username + '/publickey',
+ dataType : "json",
+ success: function (response) {
+ if (response.user_id === current_user_id) {
+ PublicKey[Username] = response.PublicKey;
+ }
+ }
+ });
+ }
options = {
- message: openpgp.message.read(encrypted),
- passwords: ['passwort']
- //format: 'binary'
+ data: Message,
+ publicKeys: openpgp.key.readArmored(PublicKey[Username]).keys
};
- openpgp.decrypt(options).then(function (plaintext) {
- console.log(plaintext.data)
- })
+ openpgp.encrypt(options).then(function (EncryptedText) {
+ EncryptedText = EncryptedText.data;
+ });
}
+function DecryptMessage(EncryptedText) {
+ PrivateKeyObj = openpgp.key.readArmored(PrivateKey).keys[0];
+ PrivateKeyObj.decrypt(PassPhrase);
+ options = {
+ message: openpgp.message.readArmored(EncryptedText),
+ privateKeys: [PrivateKeyObj]
+ };
+
+ openpgp.decrypt(options).then(function (DecryptedText) {
+ DecryptedText = DecryptedText.data;
+ });
+}*/
+
/**
* OLD BROWSER
* @type {boolean}
@@ -111,10 +139,13 @@ MainTabWindows.slick({
MainTabWindows.on('beforeChange', function (event, slick, currentSlide, nextSlide) {
currentSlide = $("#" + currentSlide);
nextSlide = $("#" + nextSlide);
- currentSlide.children().attr("data-src", (currentSlide.children().attr("data-src").split('.svg')[0].replace('Activated', '') + ".svg"));
- nextSlide.children().attr("data-caching-key", nextSlide.children().attr("data-src").split('.svg')[0].split('/').pop() + "Activated_nav_cached");
- nextSlide.children().attr("data-src", nextSlide.children().attr("data-src").split('.svg')[0] + "Activated.svg");
- cachedNavbarIcons.refresh();
+
+ currentSlide.children().attr("src", (currentSlide.children().attr("src").split('.svg')[0].replace('Activated', '') + ".svg"));
+ nextSlide.children().attr("src", nextSlide.children().attr("src").split('.svg')[0] + "Activated.svg");
+ //currentSlide.children().attr("data-src", (currentSlide.children().attr("data-src").split('.svg')[0].replace('Activated', '') + ".svg"));
+ //nextSlide.children().attr("data-caching-key", nextSlide.children().attr("data-src").split('.svg')[0].split('/').pop() + "Activated_nav_cached");
+ //nextSlide.children().attr("data-src", nextSlide.children().attr("data-src").split('.svg')[0] + "Activated.svg");
+ //cachedNavbarIcons.refresh();
$el = nextSlide;
$el.addClass("ActiveTab");
leftPos = $el.position().left;
@@ -131,24 +162,24 @@ UserSearchBar.keyup(function () {
SearchResults.empty();
var RequestedUser = UserSearchBar.val();
if (RequestedUser !== " " && RequestedUser !== "")
- $.ajax({
- url: site.uri.public + "/api/users/u/" + RequestedUser,
- success: function (answer) {
- console.log("%c[SEARCH LOGGER] User " + RequestedUser + " was found!", "color: green");
- //var GifUrls = ["https://media.giphy.com/media/xUPGcg01dIAot4zyZG/giphy.gif", "https://media.giphy.com/media/IS9LfP9oSLdcY/giphy.gif", "https://media.giphy.com/media/5wWf7H0WTquIU1DFY4g/giphy.gif"];
- //var RandomGif = Math.floor((Math.random() * GifUrls.length));
- //var RandomGifUrl = GifUrls[RandomGif];
- //console.image(RandomGifUrl, 0.5);
-
- alerts.ufAlerts().ufAlerts('fetch');
-
- SearchResults.append("<img class='Avatar' data-src='" + answer.avatar + "' data-caching-key='" + answer.user_name + "_avatar_cached'/><div class='UsersFullName'>" + answer.full_name + "</div>");
- $(".SearchResults .Avatar").imageCaching(); // refresh
- },
- error: function () {
- console.log("%c[SEARCH LOGGER] User " + RequestedUser + " was not found!", "color: red");
-
- alerts.ufAlerts().ufAlerts('fetch');
- }
- });
+ $.ajax({
+ url: site.uri.public + "/api/users/u/" + RequestedUser,
+ success: function (answer) {
+ console.log("%c[SEARCH LOGGER] User " + RequestedUser + " was found!", "color: green");
+ //var GifUrls = ["https://media.giphy.com/media/xUPGcg01dIAot4zyZG/giphy.gif", "https://media.giphy.com/media/IS9LfP9oSLdcY/giphy.gif", "https://media.giphy.com/media/5wWf7H0WTquIU1DFY4g/giphy.gif"];
+ //var RandomGif = Math.floor((Math.random() * GifUrls.length));
+ //var RandomGifUrl = GifUrls[RandomGif];
+ //console.image(RandomGifUrl, 0.5);
+
+ alerts.ufAlerts().ufAlerts('fetch');
+
+ SearchResults.append("<img class='Avatar' data-src='" + answer.avatar + "' data-caching-key='" + answer.user_name + "_avatar_cached'/><div class='UsersFullName'>" + answer.full_name + "</div>");
+ //$(".SearchResults .Avatar").imageCaching(); // refresh
+ },
+ error: function () {
+ console.log("%c[SEARCH LOGGER] User " + RequestedUser + " was not found!", "color: red");
+
+ alerts.ufAlerts().ufAlerts('fetch');
+ }
+ });
}); \ No newline at end of file
diff --git a/main/app/sprinkles/core/assets/SiteAssets/js/push.js b/main/app/sprinkles/core/assets/SiteAssets/js/push.js
index fcb350a..49a4467 100644
--- a/main/app/sprinkles/core/assets/SiteAssets/js/push.js
+++ b/main/app/sprinkles/core/assets/SiteAssets/js/push.js
@@ -709,5 +709,4 @@
e.exports = new i.default("undefined" != typeof window ? window : void 0)
}, {"./classes/Push": 3}]
}, {}, [11])(11)
-});
-//# sourceMappingURL=push.min.js.map \ No newline at end of file
+}); \ No newline at end of file
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 e4f7f30..1553468 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
@@ -51,6 +51,7 @@ class ChatProcessor implements MessageComponentInterface
$MessageObject->ServerMessage = TRUE;
$MessageObject->ServerMessageType = "Verify";
$MessageObject->Granted = TRUE;
+ $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name;
$this->verifiedUsers[$conn->resourceId] = TRUE;
$this->users[$conn->resourceId]->send(json_encode($MessageObject, TRUE));
} else {
@@ -58,6 +59,7 @@ class ChatProcessor implements MessageComponentInterface
$MessageObject->ServerMessage = TRUE;
$MessageObject->ServerMessageType = "Verify";
$MessageObject->Granted = FALSE;
+ $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name;
$this->verifiedUsers[$conn->resourceId] = FALSE;
$this->users[$conn->resourceId]->send(json_encode($MessageObject, TRUE));
$this->onClose($conn);
@@ -67,6 +69,7 @@ class ChatProcessor implements MessageComponentInterface
$MessageObject->ServerMessage = TRUE;
$MessageObject->ServerMessageType = "Verify";
$MessageObject->Granted = FALSE;
+ $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name;
$this->verifiedUsers[$conn->resourceId] = FALSE;
$this->users[$conn->resourceId]->send(json_encode($MessageObject, TRUE));
$this->onClose($conn);
@@ -84,6 +87,7 @@ class ChatProcessor implements MessageComponentInterface
$MessageObject->ServerMessage = TRUE;
$MessageObject->ServerMessageType = "GroupJoin";
$MessageObject->GroupName = $channel;
+ $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name;
$MessageObject->Username = $this->userInfo[$conn->resourceId]->user_name;
$MessageObject->Fullname = $this->userInfo[$conn->resourceId]->first_name . " " . $this->userInfo[$conn->resourceId]->last_name;
$MessageObject->Avatar = $this->userInfo[$conn->resourceId]->avatar;
@@ -105,6 +109,7 @@ class ChatProcessor implements MessageComponentInterface
$MessageObject = new \stdClass();
$MessageObject->ServerMessage = FALSE;
$MessageObject->GroupName = $channel;
+ $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$target]]->user_name;
$MessageObject->Username = $this->userInfo[$conn->resourceId]->user_name;
$MessageObject->Fullname = $this->userInfo[$conn->resourceId]->first_name . " " . $this->userInfo[$conn->resourceId]->last_name;
$MessageObject->Avatar = $this->userInfo[$conn->resourceId]->avatar;
@@ -136,6 +141,7 @@ class ChatProcessor implements MessageComponentInterface
$MessageObject->ServerMessage = TRUE;
$MessageObject->ServerMessageType = "TypingState";
$MessageObject->GroupName = $channel;
+ $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name;
$MessageObject->Username = $this->userInfo[$conn->resourceId]->user_name;
$MessageObject->Fullname = $this->userInfo[$conn->resourceId]->first_name . " " . $this->userInfo[$conn->resourceId]->last_name;
$MessageObject->Avatar = $this->userInfo[$conn->resourceId]->avatar;