Skip to content
This repository has been archived by the owner on Mar 26, 2022. It is now read-only.

Commit

Permalink
Merge 96619c1 into 9895d05
Browse files Browse the repository at this point in the history
  • Loading branch information
Alejandro Antuña Alonso committed Apr 29, 2019
2 parents 9895d05 + 96619c1 commit 2fe3b01
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 50 deletions.
59 changes: 39 additions & 20 deletions src/scripts/chatManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ async function sendMessage(text) {
//Define folders name
var solidChat = INFO.userURI + "public/SolidChat/";
var folder = solidChat + INFO.receiverName.replace(/ /g, "-") + "/";
var filename = folder + "/chat.txt";
var filename = folder + "chatld.jsonld";

//WritingMessage
if (ToLog)
Expand All @@ -51,12 +51,17 @@ async function sendMessage(text) {

await podUtils.deleteFile(filename);

var messages = JSON.parse(err3);
messages.push(new message(text, new Date().getTime()));
jsonString = JSON.stringify(messages);


ret = await podUtils.createFile(filename, jsonString, ToLog);
var chat = JSON.parse(err3);
var message={
"@Type": "message",
"sender": INFO.userURI,
"dateSent": new Date().getTime(),
"text": text
};
chat.messages.push(message);
jsonString = JSON.stringify(chat);

ret = await podUtils.writeMsgJsonld( folder + "chatld", jsonString, ToLog);
if (notify)
await notiMan.writeNotification(INFO.receiverURI, INFO.user);
} catch (error) {
Expand Down Expand Up @@ -98,12 +103,24 @@ async function sendMessage(text) {
}
if (ToLog)
console.log("Creating chat file");

var messages = [];
messages.push(new message(text, new Date().getTime()));
jsonString = JSON.stringify(messages);

//chat is the full chat component in jsonld
var chat={
"@context": "http://schema.org/",
"@type": "Conversation",
"messages":[
{
"@Type": "message",
"sender": INFO.userURI,
"dateSent": new Date().getTime(),
"text": text
}
]
};

jsonString = JSON.stringify(chat);

ret = await podUtils.createFile(filename, jsonString, ToLog);
ret = await podUtils.writeMsgJsonld( folder + "chatld", jsonString, ToLog);
if (notify)
await notiMan.writeNotification(INFO.receiverURI, INFO.user);

Expand All @@ -118,8 +135,8 @@ async function receiveMessages() {
//Define folders name
var uFolder = INFO.userURI + "public/SolidChat/" + INFO.receiverName.trim().replace(/ /g, "-") + "/";
var rFolder = INFO.receiverURI + "public/SolidChat/" + INFO.userName.trim().replace(/ /g, "-") + "/";
var uFile = uFolder + "chat.txt";
var rFile = rFolder + "chat.txt";
var uFile = uFolder + "chatld.jsonld";
var rFile = rFolder + "chatld.jsonld";

var userMessages;
var receiveMessages;
Expand All @@ -141,22 +158,24 @@ async function receiveMessages() {
receiveMessages = "[]";
}

var uParsed = JSON.parse(userMessages);
var rParsed = JSON.parse(receiveMessages);

var uParsed = JSON.parse(userMessages).messages;
var rParsed = JSON.parse(receiveMessages).messages;
if(uParsed){
uParsed.forEach(element => {
var date = new Date(Number(element.date));
var date = new Date(Number(element.dateSent));
var strDate = date.getDate() + "/" + (date.getMonth() + 1) + "/" + date.getFullYear() + " " +
date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
dict.push(new message("<div class=\"containerChatDarker\"><p id=\"noMarginMessge\">" + element.text + "</p><p id=\"username\">" + INFO.userName + " (you) " + strDate + "</p></div>", date));
});
}
if(rParsed){
rParsed.forEach(element => {
var date = new Date(Number(element.date));
var date = new Date(Number(element.dateSent));
var strDate = date.getDate() + "/" + (date.getMonth() + 1) + "/" + date.getFullYear() + " " +
date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
dict.push(new message("<div class=\"containerChat\"><p id=\"noMarginMessge\">" + element.text + "</p><p id=\"username\">" + INFO.receiverName + " " + strDate + "</p></div>", date));
});

}
dict.sort(function (a, b) {
return a.date > b.date ? 1 : a.date < b.date ? -1 : 0;
});
Expand Down
48 changes: 36 additions & 12 deletions src/scripts/podUtilities.js
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,28 @@ async function writeMessage(url, content, ToLog) {
});
}

async function writeMsgJson(url, content, ToLog) {
return await fileClient.createFile(url, content,"text/json").then(fileCreated => {
if (ToLog)
console.log(`Created file ${fileCreated}.`);
return true;
}, err => {
console.log(err);
return false;
});
}

async function writeMsgJsonld(url, content, ToLog) {
return await fileClient.createFile(url, content,"application/ld+json").then(fileCreated => {
if (ToLog)
console.log(`Created file ${fileCreated}.`);
return true;
}, err => {
console.log(err);
return false;
});
}

async function writeTurtle(url, content, ToLog) {
return await fileClient.createFile(url, content, "text/turtle").then(fileCreated => {
if (ToLog)
Expand Down Expand Up @@ -125,16 +147,18 @@ async function deleteMessage(url, ToLog) {
}

module.exports = {
login: login,
logout: logout,
loginNoPopup: loginNoPopup,
getSession: getSession,
createFolder: createChatFolder,
readFolder: readFolder,
deleteFolder: deleteFolder,
createFile: writeMessage,
readFile: readMessage,
deleteFile: deleteMessage,
writeTurtle: writeTurtle,
updateTurtle: updateTurtle
login: login,
logout: logout,
loginNoPopup: loginNoPopup,
getSession: getSession,
createFolder: createChatFolder,
readFolder: readFolder,
deleteFolder: deleteFolder,
createFile: writeMessage,
readFile: readMessage,
deleteFile: deleteMessage,
writeTurtle: writeTurtle,
updateTurtle: updateTurtle,
writeMsgJson:writeMsgJson,
writeMsgJsonld:writeMsgJsonld
}
22 changes: 4 additions & 18 deletions test/ChatTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -111,36 +111,22 @@ describe('Test Chat Manager', function() {
chatM.INFO.userURI = credentials.base + "/";
chatM.INFO.receiverURI = receiver.idp + "/";
chatM.INFO.receiverName = receiver.username;
const sendFolder = credentials.base + "/public/SolidChat/" + receiver.username + "/chat.txt";
const sendFolder = credentials.base + "/public/SolidChat/" + receiver.username + "/chatld.jsonld";

it('sendMessage', async function() {
this.timeout(4000);

var parsed;
var folder = await podUtils.readFile(sendFolder, true);
if (!folder) {
var length = 0;
} else {
parsed = JSON.parse(folder);
var length = parsed.length;
}
this.timeout(timeout);
assert.equal(await chatM.sendMessage("newMessage"), true);
folder = JSON.parse(await podUtils.readFile(sendFolder, true));
assert.equal(folder.length, length + 1);
assert.notEqual(await podUtils.readFile(sendFolder, true), null);
});

it('receiveMessage', async function() {
this.timeout(3000);
var messages = await chatM.receiveMessages();
assert.equal(messages.length, 10);
assert.equal(messages[9].includes("newMessage"), true);
assert.notEqual(messages[messages.length - 1].indexOf("newMessage"), -1);
});

it('logout', async function() {
this.timeout(timeout);
assert.equal(await podUtils.logout(), true);
});

it('sendMessage when there is no SolidChat folder', async function() {
this.timeout(10000);

Expand Down

0 comments on commit 2fe3b01

Please sign in to comment.