Skip to content

Commit fa4d55d

Browse files
committed
notifications
1 parent ca45407 commit fa4d55d

File tree

3 files changed

+41
-30
lines changed

3 files changed

+41
-30
lines changed

client/app/css/cryptoip.css

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,8 @@ body, html {
196196
}
197197

198198
.channel-button {
199-
display: block;
199+
display: flex;
200+
justify-content: space-between;
200201
cursor: pointer;
201202
padding-top: 5px;
202203
padding-bottom: 5px;
@@ -210,7 +211,13 @@ body, html {
210211
overflow: hidden;
211212
transition: 0.2s;
212213
}
213-
214+
.notif {
215+
background: #931621;
216+
border-radius: 50%;
217+
width: 24px;
218+
height: 24px;
219+
text-align: center;
220+
}
214221
.channel-button:hover {
215222
-webkit-box-shadow: 2px 0px 0px 0px rgba(147, 22, 33, 1);
216223
-moz-box-shadow: 2px 0px 0px 0px rgba(147, 22, 33, 1);

client/app/js/app.js

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -234,18 +234,18 @@ $(document).on("click", ".connectToServer-btn", function () {
234234
var clientListDecrypt = JSON.parse(decrypt(clientList, secureKey));
235235
console.log(clientListDecrypt);
236236
channels = [];
237-
channels.push({ name: "main", socketId: "none", messages: [], publicKey: [], clientKey: mainKey });
237+
channels.push({ name: "main", socketId: "none", messages: [], publicKey: [], clientKey: mainKey, unread: 0 });
238238
clientListDecrypt.forEach(function (client) {
239-
channels.push({ name: client.username, socketId: client.socketId, messages: [], publicKey: client.publicKey, clientKey: client.clientKey });
239+
channels.push({ name: client.username, socketId: client.socketId, messages: [], publicKey: client.publicKey, clientKey: client.clientKey, unread: 0 });
240240
});
241241
$(".users").empty();
242242
channels.forEach(function (channel) {
243243
if (channel.name == "main") {
244244
currentChannel = channel;
245-
$(".users").append($("<a class='channel-button' channel-name='" + channel.name + "'>#" + channel.name + "</a>"));
245+
$(".users").append($("<a class='channel-button' channel-name='" + channel.name + "'>#" + channel.name + "<p class='notif notif-"+channel.name+"'>9+</p></a>"));
246246
} else {
247247
if (channel.name != username) {
248-
$(".users").append($("<a class='channel-button' channel-name='" + channel.name + "'>@" + channel.name + "</a>"));
248+
$(".users").append($("<a class='channel-button' channel-name='" + channel.name + "'>@" + channel.name + "<p class='notif notif-"+channel.name+"'>2</p></a>"));
249249
}
250250
}
251251
});
@@ -302,28 +302,24 @@ $(document).on("click", ".connectToServer-btn", function () {
302302
});
303303
socket.on("message", function (messageData, secureKey) {
304304
var messageDataDecrypt = JSON.parse(decrypt(messageData, secureKey));
305-
if (messageDataDecrypt.isMain) {
306-
currentChannel.messages.push({ author: messageDataDecrypt.author, content: decrypt(messageDataDecrypt.message, currentChannel.clientKey), signature: messageDataDecrypt.signature, isMain: messageDataDecrypt.isMain, checked: verify(decrypt(messageDataDecrypt.message, currentChannel.clientKey), messageDataDecrypt.signature, messageDataDecrypt.publicKey) });
307-
//var messageData = JSON.parse(decrypt(fs.readFileSync(path.join(process.env.APPDATA, "cryptoip", "data.bin")).toString(), keyHash));
308-
/*if (messageData[currentServer].findIndex(p => p.name == messageDataDecrypt.author) != -1) {
309-
messageData[currentServer][messageData[currentServer].findIndex(p => p.name == messageDataDecrypt.author)].messages.push({ author: messageDataDecrypt.author, content: decrypt(messageDataDecrypt.message, currentChannel.clientKey), signature: messageDataDecrypt.signature, isMain: messageDataDecrypt.isMain, checked: verify(decrypt(messageDataDecrypt.message, currentChannel.clientKey), messageDataDecrypt.signature, messageDataDecrypt.publicKey) });
310-
} else {
311-
messageData[currentServer].push(channels[0]);
312-
}
313-
fs.writeFileSync(path.join(process.env.APPDATA, "cryptoip", "data.bin"), encrypt(JSON.stringify(messageData), keyHash));*/
314-
} else {
315-
for (var i = 0; i < channels.length; i++) {
316-
if (channels[i].name == messageDataDecrypt.author) {
317-
channels[i].messages.push({ author: messageDataDecrypt.author, content: decrypt(messageDataDecrypt.message, channels[i].clientKey), signature: messageDataDecrypt.signature, isMain: messageDataDecrypt.isMain, checked: verify(decrypt(messageDataDecrypt.message, channels[i].clientKey), messageDataDecrypt.signature, channels[i].publicKey) });
318-
/*var messageData = JSON.parse(decrypt(fs.readFileSync(path.join(process.env.APPDATA, "cryptoip", "data.bin")).toString(), keyHash));
319-
if (messageData[currentServer].findIndex(p => p.name == channels[i].name) != -1) {
320-
messageData[currentServer][messageData[currentServer].findIndex(p => p.name == channels[i].name)].messages.push({ author: messageDataDecrypt.author, content: decrypt(messageDataDecrypt.message, channels[i].clientKey), signature: messageDataDecrypt.signature, isMain: messageDataDecrypt.isMain, checked: verify(decrypt(messageDataDecrypt.message, channels[i].clientKey), messageDataDecrypt.signature, channels[i].publicKey) });
321-
} else {
322-
messageData[currentServer].push(channels[i]);
323-
}
324-
fs.writeFileSync(path.join(process.env.APPDATA, "cryptoip", "data.bin"), encrypt(JSON.stringify(messageData), keyHash));*/
325-
}
326-
}
305+
// if (messageDataDecrypt.isMain) {
306+
// currentChannel.messages.push({ author: messageDataDecrypt.author, content: decrypt(messageDataDecrypt.message, currentChannel.clientKey), signature: messageDataDecrypt.signature, isMain: messageDataDecrypt.isMain, checked: verify(decrypt(messageDataDecrypt.message, currentChannel.clientKey), messageDataDecrypt.signature, messageDataDecrypt.publicKey) });
307+
// //var messageData = JSON.parse(decrypt(fs.readFileSync(path.join(process.env.APPDATA, "cryptoip", "data.bin")).toString(), keyHash));
308+
// /*if (messageData[currentServer].findIndex(p => p.name == messageDataDecrypt.author) != -1) {
309+
// messageData[currentServer][messageData[currentServer].findIndex(p => p.name == messageDataDecrypt.author)].messages.push({ author: messageDataDecrypt.author, content: decrypt(messageDataDecrypt.message, currentChannel.clientKey), signature: messageDataDecrypt.signature, isMain: messageDataDecrypt.isMain, checked: verify(decrypt(messageDataDecrypt.message, currentChannel.clientKey), messageDataDecrypt.signature, messageDataDecrypt.publicKey) });
310+
// } else {
311+
// messageData[currentServer].push(channels[0]);
312+
// }
313+
// fs.writeFileSync(path.join(process.env.APPDATA, "cryptoip", "data.bin"), encrypt(JSON.stringify(messageData), keyHash));*/
314+
// } else {
315+
// channels[channels.findIndex(p => p.name == messageDataDecrypt.author)].messages.push({ author: messageDataDecrypt.author, content: decrypt(messageDataDecrypt.message, channels[channels.findIndex(p => p.name == messageDataDecrypt.author)].clientKey), signature: messageDataDecrypt.signature, isMain: messageDataDecrypt.isMain, checked: verify(decrypt(messageDataDecrypt.message, channels[channels.findIndex(p => p.name == messageDataDecrypt.author)].clientKey), messageDataDecrypt.signature, channels[channels.findIndex(p => p.name == messageDataDecrypt.author)].publicKey) });
316+
// channels[channels.findIndex(p => p.name == messageDataDecrypt.author)].unread++;
317+
// }
318+
var tofind = messageDataDecrypt.isMain ? "main" : messageDataDecrypt.author;
319+
channels[channels.findIndex(p => p.name == tofind)].messages.push({ author: messageDataDecrypt.author, content: decrypt(messageDataDecrypt.message, channels[channels.findIndex(p => p.name == tofind)].clientKey), signature: messageDataDecrypt.signature, isMain: messageDataDecrypt.isMain, checked: messageDataDecrypt.isMain ? verify(decrypt(messageDataDecrypt.message, channels[channels.findIndex(p => p.name == tofind)].clientKey), messageDataDecrypt.signature, messageDataDecrypt.publicKey) : verify(decrypt(messageDataDecrypt.message, channels[channels.findIndex(p => p.name == tofind)].clientKey), messageDataDecrypt.signature, channels[channels.findIndex(p => p.name == tofind)].publicKey) });
320+
if(currentChannel.name != channels[channels.findIndex(p => p.name == tofind)].name) {
321+
channels[channels.findIndex(p => p.name == tofind)].unread++;
322+
$(".notif-"+channels[channels.findIndex(p => p.name == tofind)].name).text(channels[channels.findIndex(p => p.name == tofind)].unread > 8 ? "9+" : channels[channels.findIndex(p => p.name == tofind)].unread);
327323
}
328324
$(".messages").empty();
329325

@@ -383,6 +379,7 @@ function switchChannel(channel) {
383379
$(".currentChannel-name").text(element.name);
384380
$(".message-send").attr('placeholder', 'Message to ' + element.name);
385381
currentChannel = element;
382+
$(".notif-"+element.name).text("0");
386383
$(".messages").empty();
387384
currentChannel.messages.forEach((message) => {
388385
var color = message.checked ? '#19b019' : '#b02819';
@@ -398,7 +395,14 @@ function switchChannel(channel) {
398395
}
399396
});
400397
}
401-
398+
setInterval(() => {
399+
$('.notif').each(function(index) {
400+
if(this.textContent == "0")
401+
$(this).css("display", "none");
402+
else
403+
$(this).css("display", "block");
404+
});
405+
})
402406
function clearCallButtons() {
403407
$(".mute-btn").css("display", "none");
404408
$(".muted-btn").css("display", "none");

client/main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ function createWindow () {
1212
contextIsolation: false
1313
}
1414
});
15-
//mainWindow.removeMenu();
15+
mainWindow.removeMenu();
1616
mainWindow.loadFile('index.html');
1717
}
1818

0 commit comments

Comments
 (0)