Friendiqa v0.3
This commit is contained in:
parent
585e329bcb
commit
bda2d9f7b5
63 changed files with 2746 additions and 1357 deletions
|
@ -37,7 +37,7 @@ function friendicaRequest(login,api,rootwindow,callback) {
|
|||
xhrequest.onreadystatechange = function() {
|
||||
if(xhrequest.readyState === XMLHttpRequest.DONE) {
|
||||
try{
|
||||
if (xhrequest.status=200){
|
||||
if (xhrequest.status==200){
|
||||
callback(xhrequest.responseText)
|
||||
}else{
|
||||
showMessage("Error","API:\n" +login.server+api+"\n NO RESPONSE"+xhrequest.statusText,rootwindow);
|
||||
|
@ -65,7 +65,7 @@ function friendicaPostRequest(login,api,data,method,rootwindow,callback) {
|
|||
callback(xhrequest.responseText)
|
||||
}
|
||||
}
|
||||
catch (e){showMessage("Error", "API:\n" + +api+" "+e+"\n Return:"+xhrequest.responseText,rootwindow)}
|
||||
catch (e){showMessage("Error", "API:\n" + api+" "+e+"\n Return:"+xhrequest.responseText,rootwindow)}
|
||||
}
|
||||
}
|
||||
xhrequest.open(method, login.server+api,true,login.username,Qt.atob(login.password));
|
||||
|
@ -151,7 +151,7 @@ var where = " AND "+ filter +" = '" + filtervalue+"'";
|
|||
});
|
||||
}
|
||||
|
||||
function showMessage(header,message,rootwindow){//print("message: "+message);
|
||||
function showMessage(header,message,rootwindow){print("message: "+message);
|
||||
var cleanmessage=message.replace(/"/g,"-"); //print(cleanmessage);
|
||||
if(cleanmessage.length>200){cleanmessage=cleanmessage.slice(0,200)+'...'}
|
||||
var messageString='import QtQuick 2.0; import QtQuick.Dialogs 1.2; MessageDialog{ visible: true; title:"'+header+'";standardButtons: StandardButton.Ok; text:" '+cleanmessage+'"}';
|
||||
|
|
|
@ -38,7 +38,7 @@ function requestFriends(login,database,rootwindow,callback){
|
|||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
db.transaction( function(tx) {
|
||||
var result = tx.executeSql('UPDATE contacts SET isFriend=0 where username="'+login.username+'"')}); // clean old friends
|
||||
Helperjs.friendicaRequest(login,"/api/statuses/friends?count=9999", rootwindow,function (obj){
|
||||
Helperjs.friendicaRequest(login,"/api/statuses/friends?count=9999", rootwindow,function (obj){
|
||||
var friends=JSON.parse(obj);
|
||||
for (var i=0;i<friends.length;i++){ friends[i].isFriend=1}
|
||||
//try{requestProfile(login,friends,rootwindow,function(friends_profile){callback(friends_profile)})}
|
||||
|
@ -47,8 +47,6 @@ function requestFriends(login,database,rootwindow,callback){
|
|||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
function requestGroups(login,database,rootwindow,callback){
|
||||
// retrieve, save and return groups. Other features currently not implemented
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
|
@ -87,23 +85,34 @@ function deleteGroup(login,database,rootwindow,group, callback){
|
|||
});
|
||||
}})}
|
||||
|
||||
function getLastNews(login,database){
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
var lastnewsid=0;
|
||||
db.transaction( function(tx) {
|
||||
var result = tx.executeSql('SELECT status_id from news WHERE username="'+login.username+'" AND messagetype=0 ORDER BY status_id DESC LIMIT 1');
|
||||
try{lastnewsid=result.rows.item(0).status_id;}catch(e){};
|
||||
return lastnewsid
|
||||
})
|
||||
}
|
||||
|
||||
function getFriendsTimeline(login,database,contacts,onlynew,rootwindow,callback){
|
||||
// retrieve and return timeline since last news, return contacts which are not friends and older than 2 days for update (friends can be updated in Contactstab)
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
var parameter = "?count=50";
|
||||
if(onlynew){db.transaction( function(tx) {
|
||||
var result = tx.executeSql('SELECT status_id from news WHERE username="'+login.username+'" AND messagetype=0 ORDER BY status_id DESC LIMIT 1'); // check for last news id
|
||||
try{parameter=parameter+"&since_id="+result.rows.item(0).status_id;}catch(e){};})}
|
||||
var newContacts=[];
|
||||
Helperjs.friendicaRequest(login,"/api/statuses/friends_timeline"+parameter, rootwindow,function (obj){
|
||||
var news=JSON.parse(obj);
|
||||
if (news.hasOwnProperty('status')){
|
||||
Helperjs.showMessage(qsTr("Error"),"API:\n" +login.server+"/api/statuses/friends_timeline"+parameter+"\n Return: \n"+obj,rootwindow)
|
||||
}
|
||||
var newContacts=findNewContacts(news,contacts);
|
||||
callback(news,newContacts)
|
||||
})}
|
||||
|
||||
|
||||
//function getFriendsTimeline(login,database,contacts,onlynew,rootwindow,callback){
|
||||
// // retrieve and return timeline since last news, return contacts which are not friends and older than 2 days for update (friends can be updated in Contactstab)
|
||||
// var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
// var parameter = "?count=50";
|
||||
// if(onlynew){db.transaction( function(tx) {
|
||||
// var result = tx.executeSql('SELECT status_id from news WHERE username="'+login.username+'" AND messagetype=0 ORDER BY status_id DESC LIMIT 1'); // check for last news id
|
||||
// try{parameter=parameter+"&since_id="+result.rows.item(0).status_id;}catch(e){};})}
|
||||
// var newContacts=[];
|
||||
// Helperjs.friendicaRequest(login,"/api/statuses/friends_timeline"+parameter, rootwindow,function (obj){
|
||||
// var news=JSON.parse(obj);
|
||||
// if (news.hasOwnProperty('status')){
|
||||
// Helperjs.showMessage(qsTr("Error"),"API:\n" +login.server+"/api/statuses/friends_timeline"+parameter+"\n Return: \n"+obj,rootwindow)
|
||||
// }
|
||||
// var newContacts=findNewContacts(news,contacts);
|
||||
// callback(news,newContacts)
|
||||
//})}
|
||||
|
||||
function getCurrentContacts(login,database,callback){
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
|
@ -121,7 +130,7 @@ function getCurrentContacts(login,database,callback){
|
|||
contactlist.push(result2.rows.item(j).url )
|
||||
}
|
||||
})
|
||||
callback(contactlist)
|
||||
callback(contactlist)
|
||||
}
|
||||
|
||||
function findNewContacts(news,contacts){
|
||||
|
@ -132,7 +141,7 @@ function findNewContacts(news,contacts){
|
|||
news[i].user.isFriend=0;
|
||||
newContacts.push(news[i].user);
|
||||
}
|
||||
if (news[i].friendica_activities.like.length>0){
|
||||
if (news[i].hasOwnProperty('friendica_activities') && news[i].friendica_activities.like.length>0){
|
||||
for (var j=0;j<news[i].friendica_activities.like.length;j++){
|
||||
var like_url=news[i].friendica_activities.like[j].url;
|
||||
if(contacts.indexOf(like_url)==-1 && !(inArray(newContacts,"url",like_url))){
|
||||
|
@ -141,7 +150,7 @@ function findNewContacts(news,contacts){
|
|||
}
|
||||
}
|
||||
}
|
||||
if (news[i].friendica_activities.dislike.length>0){
|
||||
if (news[i].hasOwnProperty('friendica_activities') && news[i].friendica_activities.dislike.length>0){
|
||||
for (var k=0;j<news[k].friendica_activities.dislike.length;k++){
|
||||
var dislike_url=news[i].friendica_activities.dislike[k].url;
|
||||
if(contacts.indexOf(dislike_url)==-1 && !(inArray(newContacts,"url",dislike_url))){
|
||||
|
@ -151,118 +160,123 @@ function findNewContacts(news,contacts){
|
|||
}
|
||||
}
|
||||
|
||||
var owner_url=news[i].friendica_owner.url;
|
||||
if(contacts.indexOf(owner_url)==-1 && !(inArray(newContacts,"url",owner_url))){
|
||||
news[i].friendica_owner.isFriend=0;
|
||||
newContacts.push(news[i].friendica_owner);
|
||||
}
|
||||
if(news[i].hasOwnProperty('friendica_owner')){
|
||||
var owner_url=news[i].friendica_owner.url;
|
||||
if(contacts.indexOf(owner_url)==-1 && !(inArray(newContacts,"url",owner_url))){
|
||||
news[i].friendica_owner.isFriend=0;
|
||||
newContacts.push(news[i].friendica_owner);
|
||||
}
|
||||
}
|
||||
}
|
||||
return newContacts
|
||||
}
|
||||
|
||||
function storeNews(login,database,news,rootwindow,callback){
|
||||
function storeNews(login,database,news,rootwindow){
|
||||
// save news after contacts download, call next function
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
for (var i=0;i<news.length;i++){
|
||||
//print('store news data for ' + news[i].id+JSON.stringify(news[i].friendica_activities));
|
||||
//var ausdruck=news[i];
|
||||
var likearray=[]; for (var user in news[i].friendica_activities.like){likearray.push(news[i].friendica_activities.like[user].url)}
|
||||
var dislikearray=[]; for (var user in news[i].friendica_activities.dislike){dislikearray.push(news[i].friendica_activities.dislike[user].url)}
|
||||
var attendyesarray=[]; for (var user in news[i].friendica_activities.attendyes){attendyesarray.push(news[i].friendica_activities.attendyes[user].url)}
|
||||
var attendnoarray=[]; for (var user in news[i].friendica_activities.attendno){attendnoarray.push(news[i].friendica_activities.attendno[user].url)}
|
||||
var attendmaybearray=[]; for (var user in news[i].friendica_activities.attendmaybe){attendmaybearray.push(news[i].friendica_activities.attendmaybe[user].url)}
|
||||
var likearray=[];var dislikearray=[];var attendyesarray=[];var attendnoarray=[];var attendmaybearray=[];
|
||||
if(news[i].hasOwnProperty('friendica_activities')){
|
||||
for (var user in news[i].friendica_activities.like){likearray.push(news[i].friendica_activities.like[user].url)}
|
||||
for (var user in news[i].friendica_activities.dislike){dislikearray.push(news[i].friendica_activities.dislike[user].url)}
|
||||
for (var user in news[i].friendica_activities.attendyes){attendyesarray.push(news[i].friendica_activities.attendyes[user].url)}
|
||||
for (var user in news[i].friendica_activities.attendno){attendnoarray.push(news[i].friendica_activities.attendno[user].url)}
|
||||
for (var user in news[i].friendica_activities.attendmaybe){attendmaybearray.push(news[i].friendica_activities.attendmaybe[user].url)}
|
||||
}
|
||||
var friendica_activities=[likearray,dislikearray,attendyesarray,attendnoarray,attendmaybearray]
|
||||
var attachments="";if (news[i].attachments){attachments=Qt.btoa(JSON.stringify(news[i].attachments))}
|
||||
db.transaction( function(tx) {
|
||||
var result = tx.executeSql('SELECT * from news where username="'+login.username+'" AND status_id = "'+news[i].id+'" AND messagetype=0'); // check for news id
|
||||
if(result.rows.length === 1) {// use update
|
||||
//print(news[i].id +' news exists, update it'+'UPDATE news SET username="'+login.username+'", messagetype=0, text="'+Qt.btoa(news[i].text)+'", created_at="'+Date.parse(cleanDate(news[i].created_at))+'", in_reply_to_status_id="'+news[i].in_reply_to_status_id+'", source="'+news[i].source+'", status_id="'+news[i].id+'", in_reply_to_user_id="'+news[i].in_reply_to_user_id+'", geo="'+news[i].geo+'", favorited="'+news[i].favorited+'", uid="'+news[i].user.id+'", statusnet_html="'+Qt.btoa(news[i].status_html)+'", statusnet_conversation_id="'+news[i].statusnet_conversation_id+'",friendica_activities="'+Qt.btoa(JSON.stringify(friendica_activities))+'",attachments="'+attachments+'",friendica_owner="'+news[i].friendica_owner.url+'" where username="'+login.username+'" AND status_id="'+news[i].status_id+'" AND messagetype=0')
|
||||
result = tx.executeSql('UPDATE news SET username="'+login.username+'", messagetype=0, text="'+Qt.btoa(news[i].text)+'", created_at="'+Date.parse(cleanDate(news[i].created_at))+'", in_reply_to_status_id="'+news[i].in_reply_to_status_id+'", source="'+news[i].source+'", status_id="'+news[i].id+'", in_reply_to_user_id="'+news[i].in_reply_to_user_id+'", geo="'+news[i].geo+'", favorited="'+news[i].favorited+'", uid="'+news[i].user.id+'", statusnet_html="'+Qt.btoa(news[i].status_html)+'", statusnet_conversation_id="'+news[i].statusnet_conversation_id+'",friendica_activities="'+Qt.btoa(JSON.stringify(friendica_activities))+'",attachments="'+attachments+'",friendica_owner="'+news[i].friendica_owner.url+'" where username="'+login.username+'" AND status_id="'+news[i].status_id+'" AND messagetype=0');
|
||||
result = tx.executeSql('UPDATE news SET username="'+login.username+'", messagetype=0, text="'+Qt.btoa(news[i].text)+'", created_at="'+news[i].created_at+'", in_reply_to_status_id="'+news[i].in_reply_to_status_id+'", source="'+news[i].source+'", status_id="'+news[i].id+'", in_reply_to_user_id="'+news[i].in_reply_to_user_id+'", geo="'+news[i].geo+'", favorited="'+news[i].favorited+'", uid="'+news[i].user.id+'", statusnet_html="'+Qt.btoa(news[i].status_html)+'", statusnet_conversation_id="'+news[i].statusnet_conversation_id+'",friendica_activities="'+Qt.btoa(JSON.stringify(friendica_activities))+'",attachments="'+attachments+'",friendica_owner="'+news[i].friendica_owner.url+'" where username="'+login.username+'" AND status_id="'+news[i].status_id+'" AND messagetype=0');
|
||||
} else {// use insert
|
||||
result = tx.executeSql('INSERT INTO news (username,messagetype,text,created_at,in_reply_to_status_id,source,status_id,in_reply_to_user_id,geo,favorited,uid,statusnet_html,statusnet_conversation_id,friendica_activities,friendica_activities_self,attachments,friendica_owner) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', [login.username,0,Qt.btoa(news[i].text),Date.parse(cleanDate(news[i].created_at)), news[i].in_reply_to_status_id, news[i].source, news[i].id,news[i].in_reply_to_user_id,news[i].geo,news[i].favorited, news[i].user.id,Qt.btoa(news[i].statusnet_html),news[i].statusnet_conversation_id, Qt.btoa(JSON.stringify(friendica_activities)),"[]",attachments,news[i].friendica_owner.url])}})
|
||||
result = tx.executeSql('INSERT INTO news (username,messagetype,text,created_at,in_reply_to_status_id,source,status_id,in_reply_to_user_id,geo,favorited,uid,statusnet_html,statusnet_conversation_id,friendica_activities,friendica_activities_self,attachments,friendica_owner) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', [login.username,0,Qt.btoa(news[i].text),news[i].created_at, news[i].in_reply_to_status_id, news[i].source, news[i].id,news[i].in_reply_to_user_id,news[i].geo,news[i].favorited, news[i].user.id,Qt.btoa(news[i].statusnet_html),news[i].statusnet_conversation_id, Qt.btoa(JSON.stringify(friendica_activities)),"[]",attachments,news[i].friendica_owner.url])}})
|
||||
}
|
||||
getDirectMessage(login,database,rootwindow,callback)
|
||||
// getDirectMessage(login,database,rootwindow,callback)
|
||||
}
|
||||
|
||||
function getDirectMessage(login,database,rootwindow,callback){
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
var parameter = "";
|
||||
db.transaction( function(tx) {
|
||||
var result = tx.executeSql('SELECT status_id from news WHERE username="'+login.username+'" AND messagetype=1 ORDER BY status_id DESC LIMIT 1'); // check for last news id
|
||||
try{parameter="&since_id="+result.rows.item(0).status_id;}catch(e){};})
|
||||
Helperjs.friendicaRequest(login,"/api/direct_messages/all"+parameter,rootwindow, function (obj){
|
||||
var messages=JSON.parse(obj);
|
||||
for (var i=0;i<messages.length;i++){
|
||||
//print('store message data for '+JSON.stringify(messages[i]));
|
||||
db.transaction( function(tx) {
|
||||
var result = tx.executeSql('SELECT * from news where username= "'+login.username+'" AND status_id = "'+messages[i].id+'" AND messagetype=1'); // check for news id
|
||||
if(result.rows.length === 1) {// use update
|
||||
print(messages[i].id +' directmessage exists, update it')
|
||||
result = tx.executeSql('UPDATE news SET username="'+login.username+'", messagetype=1, text="'+Qt.btoa(messages[i].text)+'", created_at="'+Date.parse(cleanDate(messages[i].created_at))+'", source="Friendica", status_id="'+messages[i].id+'", uid="'+messages[i].sender.id+'", statusnet_html="'+Qt.btoa(messages[i].text)+'", statusnet_conversation_id="'+messages[i].friendica_parent_uri+'" where username="'+login.username+'" AND status_id="'+messages[i].status_id+'" AND messagetype=1');
|
||||
} else {// use insert
|
||||
result = tx.executeSql('INSERT INTO news (username,messagetype,text,created_at,source,status_id,uid,statusnet_html,statusnet_conversation_id) VALUES (?,?,?,?,?,?,?,?,?)', [login.username,1,Qt.btoa(messages[i].text),Date.parse(cleanDate(messages[i].created_at)), "Friendica", messages[i].id, messages[i].sender.id,Qt.btoa(messages[i].text),messages[i].friendica_parent_uri])}
|
||||
});
|
||||
}
|
||||
})
|
||||
callback()
|
||||
// if(login.newsViewType=="Timeline"){newsfromdb(database,login.username,callback)}
|
||||
// else{chatsfromdb(database,login.username,callback)}
|
||||
}
|
||||
//function getDirectMessage(login,database,rootwindow,callback){
|
||||
// var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
// var parameter = "";
|
||||
// db.transaction( function(tx) {
|
||||
// var result = tx.executeSql('SELECT status_id from news WHERE username="'+login.username+'" AND messagetype=1 ORDER BY status_id DESC LIMIT 1'); // check for last news id
|
||||
// try{parameter="&since_id="+result.rows.item(0).status_id;}catch(e){};})
|
||||
// Helperjs.friendicaRequest(login,"/api/direct_messages/all"+parameter,rootwindow, function (obj){
|
||||
// var messages=JSON.parse(obj);
|
||||
// for (var i=0;i<messages.length;i++){
|
||||
// //print('store message data for '+JSON.stringify(messages[i]));
|
||||
// db.transaction( function(tx) {
|
||||
// var result = tx.executeSql('SELECT * from news where username= "'+login.username+'" AND status_id = "'+messages[i].id+'" AND messagetype=1'); // check for news id
|
||||
// if(result.rows.length === 1) {// use update
|
||||
// print(messages[i].id +' directmessage exists, update it')
|
||||
// result = tx.executeSql('UPDATE news SET username="'+login.username+'", messagetype=1, text="'+Qt.btoa(messages[i].text)+'", created_at="'+Date.parse(cleanDate(messages[i].created_at))+'", source="Friendica", status_id="'+messages[i].id+'", uid="'+messages[i].sender.id+'", statusnet_html="'+Qt.btoa(messages[i].text)+'", statusnet_conversation_id="'+messages[i].friendica_parent_uri+'" where username="'+login.username+'" AND status_id="'+messages[i].status_id+'" AND messagetype=1');
|
||||
// } else {// use insert
|
||||
// result = tx.executeSql('INSERT INTO news (username,messagetype,text,created_at,source,status_id,uid,statusnet_html,statusnet_conversation_id) VALUES (?,?,?,?,?,?,?,?,?)', [login.username,1,Qt.btoa(messages[i].text),Date.parse(cleanDate(messages[i].created_at)), "Friendica", messages[i].id, messages[i].sender.id,Qt.btoa(messages[i].text),messages[i].friendica_parent_uri])}
|
||||
// });
|
||||
// }
|
||||
// })
|
||||
// callback()
|
||||
//// if(login.newsViewType=="Timeline"){newsfromdb(database,login.username,callback)}
|
||||
//// else{chatsfromdb(database,login.username,callback)}
|
||||
//}
|
||||
|
||||
function getNotifications(login,database,rootwindow,callback){
|
||||
Helperjs.friendicaRequest(login,"/api/friendica/notifications", rootwindow,function (obj){
|
||||
var messages=JSON.parse(obj);
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
for (var i=0;i<messages.length;i++){
|
||||
//print('store message data for '+JSON.stringify(messages[i]));
|
||||
db.transaction( function(tx) {
|
||||
var result = tx.executeSql('SELECT * from news where username="'+login.username+'" AND status_id = "'+messages[i].id+'" AND messagetype=2'); // check for news id
|
||||
if(result.rows.length === 1) {// use update
|
||||
print(messages[i].id +' Notification exists, update it')
|
||||
result = tx.executeSql('UPDATE news SET username="'+login.username+'", messagetype=2, text="'+Qt.btoa(messages[i].msg_html)+'", created_at="'+Date.parse(messages[i].date)+'", source="Friendica", status_id="'+messages[i].id+'", uid="'+messages[i].uid+'", statusnet_html="'+Qt.btoa(messages[i].msg_html)+'", statusnet_conversation_id="'+messages[i].parent+'" where username="'+login.username+'" AND status_id="'+messages[i].id+'" AND messagetype=2');
|
||||
} else {// use insert
|
||||
result = tx.executeSql('INSERT INTO news (username,messagetype,text,created_at,source,status_id, uid,statusnet_html,statusnet_conversation_id) VALUES (?,?,?,?,?,?,?,?,?)', [login.username,2,Qt.btoa(messages[i].msg_html),Date.parse(messages[i].date),"Friendica", messages[i].id, messages[i].uid,Qt.btoa(messages[i].msg_html),messages[i].parent])}
|
||||
});
|
||||
}
|
||||
db.transaction( function(tx) {
|
||||
var newsrs=tx.executeSql('select * from news WHERE username="'+login.username+'" AND messagetype=2 ORDER BY status_id DESC LIMIT 20');
|
||||
var newsArray=[];
|
||||
for(var j = 0; j < newsrs.rows.length; j++) {
|
||||
newsArray.push(newsrs.rows.item(j));
|
||||
callback(newsArray);
|
||||
}
|
||||
})
|
||||
})}
|
||||
|
||||
function getActivitiesUserData(database,username,allcontacts,userUrlArray){//print(JSON.stringify(userUrlArray));
|
||||
//function getNotifications(login,database,rootwindow,callback){
|
||||
// Helperjs.friendicaRequest(login,"/api/friendica/notifications", rootwindow,function (obj){
|
||||
// var messages=JSON.parse(obj);
|
||||
// var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
// for (var i=0;i<messages.length;i++){
|
||||
// //print('store message data for '+JSON.stringify(messages[i]));
|
||||
// db.transaction( function(tx) {
|
||||
// var result = tx.executeSql('SELECT * from news where username="'+login.username+'" AND status_id = "'+messages[i].id+'" AND messagetype=2'); // check for news id
|
||||
// if(result.rows.length === 1) {// use update
|
||||
// print(messages[i].id +' Notification exists, update it')
|
||||
// result = tx.executeSql('UPDATE news SET username="'+login.username+'", messagetype=2, text="'+Qt.btoa(messages[i].msg_html)+'", created_at="'+Date.parse(messages[i].date)+'", source="Friendica", status_id="'+messages[i].id+'", uid="'+messages[i].uid+'", statusnet_html="'+Qt.btoa(messages[i].msg_html)+'", statusnet_conversation_id="'+messages[i].parent+'" where username="'+login.username+'" AND status_id="'+messages[i].id+'" AND messagetype=2');
|
||||
// } else {// use insert
|
||||
// result = tx.executeSql('INSERT INTO news (username,messagetype,text,created_at,source,status_id, uid,statusnet_html,statusnet_conversation_id) VALUES (?,?,?,?,?,?,?,?,?)', [login.username,2,Qt.btoa(messages[i].msg_html),Date.parse(messages[i].date),"Friendica", messages[i].id, messages[i].uid,Qt.btoa(messages[i].msg_html),messages[i].parent])}
|
||||
// });
|
||||
// }
|
||||
// db.transaction( function(tx) {
|
||||
// var newsrs=tx.executeSql('select * from news WHERE username="'+login.username+'" AND messagetype=2 ORDER BY status_id DESC LIMIT 20');
|
||||
// var newsArray=[];
|
||||
// for(var j = 0; j < newsrs.rows.length; j++) {
|
||||
// newsArray.push(newsrs.rows.item(j));
|
||||
// newsArray[j].statusnet_html=Qt.atob(newsArray[j].statusnet_html);
|
||||
// callback(newsArray);
|
||||
// }
|
||||
// })
|
||||
//})}
|
||||
|
||||
function getActivitiesUserData(allcontacts,userUrlArray){//print(JSON.stringify(userUrlArray));
|
||||
var helpArray=[];
|
||||
for (var i=0;i<userUrlArray.length;i++){
|
||||
helpArray.push(objFromArray(allcontacts,"url",userUrlArray[i]));
|
||||
// Helperjs.readData(database,"contacts",username,function(userdata){
|
||||
// helpArray.push(userdata[0]);
|
||||
// },"url",userUrlArray[i]);
|
||||
}
|
||||
return helpArray
|
||||
}
|
||||
|
||||
function newsfromdb(database,username,callback,contact,stop_time){
|
||||
function newsfromdb(database,user,callback,contact,stop_time){
|
||||
// return news before stop_time (used by More button), in brackets of 20 entries, or by specified contact
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
db.transaction( function(tx) {
|
||||
if (!stop_time){var stop="";
|
||||
try{var rs = tx.executeSql('select created_at from news WHERE username="'+username+'" ORDER BY created_at DESC LIMIT 1');
|
||||
try{var rs = tx.executeSql('select created_at from news WHERE username="'+user+'" ORDER BY created_at DESC LIMIT 1');
|
||||
stop="<="+rs.rows.item(0).created_at}catch(e){stop="<99999999999999"}}
|
||||
else{var stop="<"+stop_time}
|
||||
var contactfilter="";if(contact){contactfilter=" AND (uid='"+contact+"' OR friendica_owner='"+contact+"')"}
|
||||
//print('select * from news WHERE username="'+username+'" AND created_at'+stop+contactfilter+' ORDER BY created_at DESC LIMIT 20');
|
||||
var newsrs=tx.executeSql('select * from news WHERE username="'+username+'" AND created_at'+stop+contactfilter+' ORDER BY created_at DESC LIMIT 20');
|
||||
var newsrs=tx.executeSql('select * from news WHERE username="'+user+'" AND created_at'+stop+contactfilter+' ORDER BY created_at DESC LIMIT 20');
|
||||
var newsArray=[];
|
||||
var allcontacts=[];
|
||||
Helperjs.readData(database,"contacts",username,function(obj){allcontacts=obj});
|
||||
var allcontacts=getAllContacts(database,user);
|
||||
for(var i = 0; i < newsrs.rows.length; i++) {
|
||||
newsArray.push(newsrs.rows.item(i));
|
||||
newsArray[i]=fetchUsersForNews(database,username,newsArray[i],allcontacts)
|
||||
newsArray[i].statusnet_html=Qt.atob(newsArray[i].statusnet_html);
|
||||
newsArray[i].text=Qt.atob(newsArray[i].text);
|
||||
newsArray[i].id=newsArray[i].status_id;
|
||||
newsArray[i]=fetchUsersForNews(database,user,newsArray[i],allcontacts);
|
||||
if (newsArray[i].attachments!==null){newsArray[i].attachments=JSON.parse(Qt.atob(newsArray[i].attachments))};
|
||||
}
|
||||
callback(newsArray)});
|
||||
}
|
||||
|
@ -270,33 +284,21 @@ function newsfromdb(database,username,callback,contact,stop_time){
|
|||
function fetchUsersForNews(database,username,news,allcontacts){//print(JSON.stringify(news))
|
||||
news.user=objFromArray(allcontacts,"id",news.uid);
|
||||
if(news.in_reply_to_user_id){news.reply_user=objFromArray(allcontacts,"id",news.in_reply_to_user_id)}
|
||||
news.friendica_owner_object=objFromArray(allcontacts,"url",news.friendica_owner);
|
||||
// Helperjs.readData(database,"contacts",username,function(userdata){
|
||||
// news.user=userdata[0];
|
||||
// //print("Fetch user"+JSON.stringify(news.user));
|
||||
// },"id",news.uid);
|
||||
// if(news.in_reply_to_user_id){
|
||||
// Helperjs.readData(database,"contacts",username,function(replytodata){
|
||||
// news.reply_user=replytodata[0];
|
||||
// //print("Fetch reply to"+JSON.stringify(news.reply_user));
|
||||
// },"id",news.in_reply_to_user_id);
|
||||
// }
|
||||
if (news.messagetype==0){
|
||||
for(var j=0;j<news.friendica_activities.length;j++)
|
||||
{var friendicaArray=JSON.parse(Qt.atob(news.friendica_activities));
|
||||
// print("Array: "+friendicaArray[1]);
|
||||
news.like=getActivitiesUserData(database,username,allcontacts,friendicaArray[0]);
|
||||
news.dislike=getActivitiesUserData(database,username,allcontacts,friendicaArray[1]);
|
||||
news.attendyes=getActivitiesUserData(database,username,allcontacts,friendicaArray[2]);
|
||||
news.attendno=getActivitiesUserData(database,username,allcontacts,friendicaArray[3]);
|
||||
news.attendmaybe=getActivitiesUserData(database,username,allcontacts,friendicaArray[4]);
|
||||
}
|
||||
// Helperjs.readData(database,"contacts",username,function(friendica_owner_data){
|
||||
// news.friendica_owner_object=friendica_owner_data[0];
|
||||
// //print("Fetch friendica_owner"+JSON.stringify(news.friendica_owner));
|
||||
// },"url",news.friendica_owner);
|
||||
}
|
||||
return news
|
||||
//news.friendica_owner_object=objFromArray(allcontacts,"url",news.friendica_owner);
|
||||
news.friendica_owner=objFromArray(allcontacts,"url",news.friendica_owner);
|
||||
if (news.messagetype==0){
|
||||
var friendicaArray=JSON.parse(Qt.atob(news.friendica_activities));
|
||||
delete news.friendica_activities;
|
||||
news.friendica_activities={};
|
||||
//for(var j=0;j<friendicaArray.length;j++){
|
||||
news.friendica_activities.like=getActivitiesUserData(allcontacts,friendicaArray[0]);
|
||||
news.friendica_activities.dislike=getActivitiesUserData(allcontacts,friendicaArray[1]);
|
||||
news.friendica_activities.attendyes=getActivitiesUserData(allcontacts,friendicaArray[2]);
|
||||
news.friendica_activities.attendno=getActivitiesUserData(allcontacts,friendicaArray[3]);
|
||||
news.friendica_activities.attendmaybe=getActivitiesUserData(allcontacts,friendicaArray[4]);
|
||||
//}
|
||||
}
|
||||
return news
|
||||
}
|
||||
|
||||
function deleteNews(login,database,newsid,messagetype,rootwindow,callback){
|
||||
|
@ -401,11 +403,14 @@ function conversationfromdb(database,user,conversationId,callback){
|
|||
db.transaction( function(tx) {
|
||||
var newsrs=tx.executeSql('select * from news WHERE username="'+user+'" AND statusnet_conversation_id="'+conversationId+'" ORDER BY created_at ASC');
|
||||
var newsArray=[];
|
||||
var allcontacts=[];
|
||||
Helperjs.readData(database,"contacts",user,function(obj){allcontacts=obj});
|
||||
var allcontacts=getAllContacts(database,user);
|
||||
for(var i = 0; i < newsrs.rows.length; i++) {
|
||||
newsArray.push(newsrs.rows.item(i));
|
||||
newsArray[i]=fetchUsersForNews(database,user,newsArray[i],allcontacts)
|
||||
newsArray[i].statusnet_html=Qt.atob(newsArray[i].statusnet_html);
|
||||
newsArray[i].text=Qt.atob(newsArray[i].text);
|
||||
newsArray[i].id=newsArray[i].status_id;
|
||||
newsArray[i]=fetchUsersForNews(database,user,newsArray[i],allcontacts);
|
||||
if (newsArray[i].attachments!==null){newsArray[i].attachments=JSON.parse(Qt.atob(newsArray[i].attachments))};
|
||||
}
|
||||
callback(newsArray)})
|
||||
}
|
||||
|
@ -419,19 +424,21 @@ function requestFavorites(login,database,contacts,rootwindow,callback){
|
|||
callback(news,newContacts)
|
||||
})}
|
||||
|
||||
function favoritesfromdb(database,user,callback){
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
db.transaction( function(tx) {
|
||||
//print('select * from news WHERE username="'+user+'" AND favorited=1 ORDER BY status_id DESC');
|
||||
var newsrs=tx.executeSql('select * from news WHERE username="'+user+'" AND favorited=1 ORDER BY status_id DESC');
|
||||
var newsArray=[];
|
||||
var allcontacts=[];
|
||||
Helperjs.readData(database,"contacts",user,function(obj){allcontacts=obj});
|
||||
for(var i = 0; i < newsrs.rows.length; i++) {
|
||||
newsArray.push(newsrs.rows.item(i));
|
||||
newsArray[i]=fetchUsersForNews(database,user,newsArray[i],allcontacts);
|
||||
callback(newsArray);
|
||||
}})}
|
||||
//function favoritesfromdb(database,user,callback){
|
||||
// var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
// db.transaction( function(tx) {
|
||||
// //print('select * from news WHERE username="'+user+'" AND favorited=1 ORDER BY status_id DESC');
|
||||
// var newsrs=tx.executeSql('select * from news WHERE username="'+user+'" AND favorited=1 ORDER BY status_id DESC');
|
||||
// var newsArray=[];
|
||||
// var allcontacts=getAllContacts(database,user);
|
||||
// for(var i = 0; i < newsrs.rows.length; i++) {
|
||||
// newsArray.push(newsrs.rows.item(i));
|
||||
// newsArray[i].statusnet_html=Qt.atob(newsArray[i].statusnet_html);
|
||||
// newsArray[i].id=newsArray[i].status_id;
|
||||
// newsArray[i]=fetchUsersForNews(database,user,newsArray[i],allcontacts);
|
||||
// if (newsArray[i].attachments!==null){newsArray[i].attachments=JSON.parse(Qt.atob(newsArray[i].attachments))};
|
||||
// callback(newsArray);
|
||||
// }})}
|
||||
|
||||
function chatsfromdb(database,user,callback,stop_time){
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
|
@ -446,25 +453,91 @@ function chatsfromdb(database,user,callback,stop_time){
|
|||
conversations.push(conversationsrs.rows.item(i).statusnet_conversation_id);
|
||||
}
|
||||
var newsArray=[];
|
||||
var allcontacts=[];
|
||||
Helperjs.readData(database,"contacts",user,function(obj){allcontacts=obj});
|
||||
var allcontacts=getAllContacts(database,user);
|
||||
for(var j = 0; j< conversations.length; j++) {
|
||||
var newsrs=tx.executeSql('select * from news WHERE username="'+user+'" AND statusnet_conversation_id="'+conversations[j] +'" ORDER BY created_at ASC');
|
||||
var helpernews=newsrs.rows.item(0);
|
||||
helpernews.newscount=newsrs.rows.length;
|
||||
helpernews=fetchUsersForNews(database,user,helpernews,allcontacts);
|
||||
//var chatArray=[];
|
||||
// for (var k=0;k<newsrs.rows.length;k++){
|
||||
// var helperchat=newsrs.rows.item(k);
|
||||
// helperchat=fetchUsersForNews(database,user,helperchat);
|
||||
// chatArray.push(helperchat)
|
||||
//}
|
||||
//helpernews.chatArray=chatArray;
|
||||
helpernews.statusnet_html=Qt.atob(helpernews.statusnet_html);
|
||||
helpernews.text=Qt.atob(helpernews.text);
|
||||
helpernews.id=helpernews.status_id;
|
||||
if (helpernews.attachments!==null){helpernews.attachments=JSON.parse(Qt.atob(helpernews.attachments))};
|
||||
newsArray.push(helpernews);
|
||||
}
|
||||
callback(newsArray);
|
||||
})}
|
||||
|
||||
|
||||
function allchatsfromdb(database,user,callback){
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
db.transaction( function(tx) {
|
||||
// if (!stop_time){var stop="";
|
||||
// try{var rs = tx.executeSql('select created_at from news WHERE username="'+username+'" ORDER BY created_at DESC LIMIT 1');
|
||||
// stop="<="+rs.rows.item(0).created_at}catch(e){stop="<99999999999999"}}
|
||||
// else{var stop="<"+stop_time}
|
||||
var conversationsrs=tx.executeSql('select DISTINCT statusnet_conversation_id from news WHERE username="'+user+'" ORDER BY created_at DESC'); //+' ORDER BY created_at DESC LIMIT 20');
|
||||
var conversationIds=[];
|
||||
for(var i = 0; i < conversationsrs.rows.length; i++) {
|
||||
conversationIds.push(conversationsrs.rows.item(i).statusnet_conversation_id);
|
||||
}
|
||||
var newsArray=[];
|
||||
var countArray=[];
|
||||
var allcontacts=getAllContacts(database,user);
|
||||
for(var j = 0; j< conversationIds.length; j++) {
|
||||
var newsrs=tx.executeSql('select * from news WHERE username="'+user+'" AND statusnet_conversation_id="'+conversationIds[j] +'" ORDER BY created_at ASC');
|
||||
var helpernews=newsrs.rows.item(0);
|
||||
//helpernews.newscount=newsrs.rows.length;
|
||||
helpernews=fetchUsersForNews(database,user,helpernews,allcontacts);
|
||||
helpernews.statusnet_html=Qt.atob(helpernews.statusnet_html);
|
||||
helpernews.text=Qt.atob(helpernews.text);
|
||||
helpernews.id=helpernews.status_id;
|
||||
if (helpernews.attachments!==null){helpernews.attachments=JSON.parse(Qt.atob(helpernews.attachments))};
|
||||
newsArray.push(helpernews);
|
||||
countArray.push(newsrs.rows.length)
|
||||
}
|
||||
var conversationsobject=({});
|
||||
|
||||
conversationsobject.conversationIds=conversationIds;
|
||||
conversationsobject.newsArray=newsArray;
|
||||
conversationsobject.countArray=countArray;
|
||||
callback(conversationsobject);
|
||||
})}
|
||||
|
||||
function oldchatfromdb(database,user,conversationId,lastpost,allcontacts,callback){
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
db.transaction( function(tx) {
|
||||
// var newsArray=[];
|
||||
// var countArray=[];
|
||||
//var allcontacts=getAllContacts(database,user);
|
||||
var newsrs=tx.executeSql('select * from news WHERE username="'+user+'" AND statusnet_conversation_id="'+conversationId +'" AND status_id<'+lastpost+' ORDER BY created_at ASC');
|
||||
if(newsrs.rows.length>0){var helpernews=newsrs.rows.item(0);
|
||||
var newscount=newsrs.rows.length;
|
||||
helpernews=fetchUsersForNews(database,user,helpernews,allcontacts);
|
||||
helpernews.statusnet_html=Qt.atob(helpernews.statusnet_html);
|
||||
helpernews.text=Qt.atob(helpernews.text);
|
||||
helpernews.id=helpernews.status_id;
|
||||
if (helpernews.attachments!==null){helpernews.attachments=JSON.parse(Qt.atob(helpernews.attachments))};
|
||||
callback(helpernews,newscount);}
|
||||
// var conversationobject={news:helpernews,newscount:newscount};
|
||||
// return conversationobject;
|
||||
})}
|
||||
|
||||
|
||||
|
||||
|
||||
function getAllContacts(database,user){
|
||||
var allcontacts=[];
|
||||
Helperjs.readData(database,"contacts",user,function(obj){
|
||||
allcontacts=obj;
|
||||
for (var n in allcontacts){
|
||||
allcontacts[n].name=Qt.atob(allcontacts[n].name);
|
||||
allcontacts[n].description=Qt.atob(allcontacts[n].description)
|
||||
}
|
||||
});
|
||||
return allcontacts;
|
||||
}
|
||||
|
||||
function inArray(list, prop, val) {
|
||||
if (list.length > 0 ) {
|
||||
for (var i in list) {if (list[i][prop] == val) {
|
||||
|
|
|
@ -41,49 +41,50 @@ else{
|
|||
if (msg.news[j]) {
|
||||
var newsitemobject=msg.news[j];
|
||||
//print("Newsitem"+JSON.stringify(newsitemobject.friendica_owner+" userid: "+newsitemobject.user.id));
|
||||
if (newsitemobject.messagetype==2){
|
||||
newsitemobject.user={};
|
||||
newsitemobject.user.profile_image="";
|
||||
newsitemobject.user.profile_image_url="";
|
||||
newsitemobject.user.name="";
|
||||
}
|
||||
var forumname="";try{if (newsitemobject.messagetype==0&&((newsitemobject.friendica_owner)!=(newsitemobject.user.url))){
|
||||
// if (newsitemobject.messagetype==2){
|
||||
// newsitemobject.user={};
|
||||
// newsitemobject.user.profile_image="";
|
||||
// newsitemobject.user.profile_image_url="";
|
||||
// newsitemobject.user.name="";
|
||||
// }
|
||||
var forumname="";try{if (newsitemobject.messagetype==0&&newsitemobject.hasOwnProperty('friendica_owner')&&((newsitemobject.friendica_owner.url)!=(newsitemobject.user.url))){
|
||||
//print(newsitemobject.friendica_owner+" Friendica Owner "+JSON.stringify(newsitemobject));
|
||||
forumname=" via "+Qt.atob(newsitemobject.friendica_owner_object.name)
|
||||
forumname=" via "+newsitemobject.friendica_owner.name
|
||||
}}catch(e){print("forum name "+e)}
|
||||
var likeText="";var dislikeText="";var attendyesText="";var attendnoText="";var attendmaybeText=""; var self={};
|
||||
try{if (newsitemobject.messagetype==0){
|
||||
if (newsitemobject.like.length>0){
|
||||
if (newsitemobject.like.length==1){likeText= Qt.atob(newsitemobject.like[0].name)+" "+ qsTr("likes this.")}
|
||||
else {likeText= newsitemobject.like.length+" "+ qsTr("like this.")}
|
||||
try{if (newsitemobject.messagetype==0&&newsitemobject.hasOwnProperty('friendica_activities')){
|
||||
if (newsitemobject.friendica_activities.like.length>0){
|
||||
if (newsitemobject.friendica_activities.like.length==1){likeText= newsitemobject.friendica_activities.like[0].name+" "+ qsTr("likes this.")}
|
||||
else {likeText= newsitemobject.friendica_activities.like.length+" "+ qsTr("like this.")}
|
||||
}
|
||||
if (newsitemobject.dislike.length>0){
|
||||
if (newsitemobject.dislike.length==1){dislikeText= Qt.atob(newsitemobject.dislike[0].name)+" "+ qsTr("doesn't like this.")}
|
||||
else {dislikeText= newsitemobject.dislike.length+" "+ qsTr("don't like this.")}
|
||||
if (newsitemobject.friendica_activities.dislike.length>0){
|
||||
if (newsitemobject.friendica_activities.dislike.length==1){dislikeText= newsitemobject.friendica_activities.dislike[0].name+" "+ qsTr("doesn't like this.")}
|
||||
else {dislikeText= newsitemobject.friendica_activities.dislike.length+" "+ qsTr("don't like this.")}
|
||||
}
|
||||
if (newsitemobject.attendyes.length>0){
|
||||
if (newsitemobject.attendyes.length==1){attendyesText= Qt.atob(newsitemobject.attendyes[0].name)+" "+ qsTr("will attend.")}
|
||||
else {attendyesText= newsitemobject.attendyes.length+" "+ qsTr("persons will attend.")}
|
||||
if (newsitemobject.friendica_activities.attendyes.length>0){
|
||||
if (newsitemobject.friendica_activities.attendyes.length==1){attendyesText=newsitemobject.friendica_activities.attendyes[0].name+" "+ qsTr("will attend.")}
|
||||
else {attendyesText= newsitemobject.friendica_activities.attendyes.length+" "+ qsTr("persons will attend.")}
|
||||
}
|
||||
if (newsitemobject.attendno.length>0){
|
||||
if (newsitemobject.attendno.length==1){attendnoText= Qt.atob(newsitemobject.attendno[0].name)+" "+ qsTr("will not attend.")}
|
||||
else {attendnoText= newsitemobject.attendno.length+" "+ qsTr("persons will not attend.")}
|
||||
if (newsitemobject.friendica_activities.attendno.length>0){
|
||||
if (newsitemobject.friendica_activities.attendno.length==1){attendnoText= newsitemobject.friendica_activities.attendno[0].name+" "+ qsTr("will not attend.")}
|
||||
else {attendnoText= newsitemobject.friendica_activities.attendno.length+" "+ qsTr("persons will not attend.")}
|
||||
}
|
||||
if (newsitemobject.attendmaybe.length>0){
|
||||
if (newsitemobject.attendmaybe.length==1){attendmaybeText= Qt.atob(newsitemobject.attendmaybe[0].name)+" "+ qsTr("may attend.")}
|
||||
else {attendmaybeText= newsitemobject.attendmaybe.length+" "+ qsTr("persons may attend.")}
|
||||
if (newsitemobject.friendica_activities.attendmaybe.length>0){
|
||||
if (newsitemobject.friendica_activities.attendmaybe.length==1){attendmaybeText= newsitemobject.friendica_activities.attendmaybe[0].name+" "+ qsTr("may attend.")}
|
||||
else {attendmaybeText= newsitemobject.friendica_activities.attendmaybe.length+" "+ qsTr("persons may attend.")}
|
||||
}
|
||||
//var friendica_activities_self=JSON.parse(newsitemobject.friendica_activities_self);
|
||||
if (newsitemobject.hasOwnProperty("friendica_activities_self")){
|
||||
if (newsitemobject.friendica_activities_self.indexOf(3)!=-1){self.attending=qsTr("yes")}
|
||||
if (newsitemobject.friendica_activities_self.indexOf(4)!=-1){self.attending=qsTr("no")}
|
||||
if (newsitemobject.friendica_activities_self.indexOf(5)!=-1){self.attending=qsTr("maybe")}
|
||||
if (newsitemobject.friendica_activities_self.indexOf(1)!=-1){self.liked=1}
|
||||
if (newsitemobject.friendica_activities_self.indexOf(2)!=-1){self.disliked=1}
|
||||
}} catch(e){print("Activities "+e)}
|
||||
}}} catch(e){print("Activities "+e+ " "+JSON.stringify(newsitemobject.friendica_activities))}
|
||||
var friendica_activities={likeText:likeText,dislikeText:dislikeText,attendyesText:attendyesText,attendnoText:attendnoText,attendmaybeText:attendmaybeText,self:self}
|
||||
|
||||
var attachmentList=[];try{if(newsitemobject.attachments){
|
||||
var attachArray=JSON.parse(Qt.atob(newsitemobject.attachments));
|
||||
var attachArray=newsitemobject.attachments;
|
||||
for (var image in attachArray){if(attachArray[image].mimetype=="image/gif"){
|
||||
attachmentList.push(attachArray[image])
|
||||
}
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
// This file is part of Friendiqa
|
||||
// https://github.com/lubuwest/Friendiqa
|
||||
// This file is part of Friendiqa // https://github.com/lubuwest/Friendiqa
|
||||
// Copyright (C) 2017 Marco R. <thomasschmidt45@gmx.net>
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
|
@ -314,7 +313,7 @@ function cleanNews(database,callback){
|
|||
var maxnewsrs = tx.executeSql("SELECT DISTINCT maxnews FROM config");
|
||||
var maxnews=maxnewsrs.rows.item(0).maxnews;
|
||||
var newscountrs = tx.executeSql('SELECT COUNT(*) from news');
|
||||
var newscount = newscountrs.rows.item(0)["COUNT(*)"];
|
||||
var newscount = newscountrs.rows.item(0)["COUNT(*)"];//print("newscount "+newscount)
|
||||
if (newscount>maxnews){
|
||||
var lastvalidtimers= tx.executeSql('SELECT DISTINCT created_at FROM news ORDER BY created_at ASC LIMIT ' +(newscount-maxnews));
|
||||
var lastvalidtime=lastvalidtimers.rows.item(newscount-maxnews-1).created_at;
|
||||
|
@ -330,6 +329,7 @@ function cleanContacts(login,database,callback){
|
|||
if (oldestnewsrs.rows.length>0){ var oldestnewsTime=oldestnewsrs.rows.item(0).created_at- 604800000;} else{var oldestnewsTime=0} //contacts can be 7 days old
|
||||
//print(login.username+" älteste news: "+ oldestnewsTime);
|
||||
var result = tx.executeSql('SELECT * from contacts WHERE username="'+login.username+'" AND isFriend=0 AND imageAge<'+oldestnewsTime); // check for friends
|
||||
//print ("Contact result length: "+ result.rows.length)
|
||||
for (var i=0;i<result.rows.length;i++){
|
||||
filesystem.rmFile(result.rows.item(i).profile_image);
|
||||
var deleters = tx.executeSql('DELETE from contacts WHERE username="'+login.username+'" AND url="'+result.rows.item(i).url+'"');
|
||||
|
@ -338,50 +338,6 @@ function cleanContacts(login,database,callback){
|
|||
})
|
||||
}
|
||||
|
||||
function processNews(callback){
|
||||
if (contactLoadType=="news"){
|
||||
if(root.news.length==0){}
|
||||
else{// show news
|
||||
Newsjs.storeNews(login,db,news,root,function(dbnews){
|
||||
if(login.newsViewType=="Timeline"){
|
||||
Newsjs.newsfromdb(db,login.username,function(dbnews){
|
||||
root.newsSignal(dbnews);
|
||||
newstab.newstabstatus=login.newsViewType})
|
||||
}
|
||||
else{
|
||||
Newsjs.chatsfromdb(db,login.username,function(dbnews){
|
||||
root.newsSignal(dbnews);
|
||||
newstab.newstabstatus=login.newsViewType})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
else if (contactLoadType=="friends"){// show friends
|
||||
root.friendsSignal(login.username);
|
||||
Newsjs.getCurrentContacts(login,db,function(contacts){
|
||||
contactlist=contacts;
|
||||
})}
|
||||
|
||||
else if (contactLoadType=="conversation"){
|
||||
var conversationid=news[0].statusnet_conversation_id
|
||||
if (!isNaN(parseInt(conversationid))){//no directmessage conversation
|
||||
Newsjs.storeNews(root.login,root.db,news,root,function(){
|
||||
Newsjs.conversationfromdb(db,root.login.username,conversationid, function(newsarray){
|
||||
newstab.conversation=newsarray;
|
||||
})
|
||||
})}
|
||||
else {newstab.conversation=news}//only DM conversations from database
|
||||
}
|
||||
else if (contactLoadType=="favorites"){//show favorited news
|
||||
Newsjs.storeNews(root.login,root.db,news,root,function(){
|
||||
Newsjs.favoritesfromdb(db,login.username,function(newsarray){
|
||||
root.newsSignal(newsarray);
|
||||
newstab.newstabstatus="Favorites";
|
||||
})
|
||||
})}
|
||||
callback()
|
||||
}
|
||||
|
||||
function updateContactInDB(login,database,isFriend,contact){// for newstab and friendstab
|
||||
var currentTime=Date.now();
|
||||
var image_timestamp=0;
|
||||
|
@ -393,8 +349,218 @@ function updateContactInDB(login,database,isFriend,contact){// for newstab and f
|
|||
var result;
|
||||
result = tx.executeSql('SELECT * from contacts where username="'+login.username+'" AND url = "'+contact.url+'"'); // check for news url
|
||||
if(result.rows.length === 1) {// use update
|
||||
result = tx.executeSql('UPDATE contacts SET id='+contact.id+', name="'+Qt.btoa(contact.name)+'", screen_name="'+contact.screen_name+'", location="'+contact.location+'",imageAge='+currentTime+', profile_image_url="'+contact.profile_image_url+'", description="'+Qt.btoa(contact.description)+'", protected="'+contact.protected+'", followers_count='+contact.followers_count+', friends_count='+contact.friends_count+', created_at="'+ Date.parse(Newsjs.cleanDate(contact.created_at))+'", favourites_count="'+contact.favorites_count+'", utc_offset="'+contact.utc_offset+'", time_zone="'+contact.time_zone+'", statuses_count='+contact.statuses_count+', following="'+contact.following+'", verified ="'+contact.verified+'", statusnet_blocking="'+contact.statusnet_blocking+'", notifications="'+contact.notifictions+'", statusnet_profile_url="'+contact.statusnet_profile_url+'", cid='+contact.cid+', network="'+contact.network+'", isFriend='+isFriend+', timestamp='+ currentTime+' where username="'+login.username+'" AND url="'+contact.url+'"');
|
||||
result = tx.executeSql('UPDATE contacts SET id='+contact.id+', name="'+Qt.btoa(contact.name)+'", screen_name="'+contact.screen_name+'", location="'+contact.location+'",imageAge='+currentTime+', profile_image_url="'+contact.profile_image_url+'", description="'+Qt.btoa(contact.description)+'", protected="'+contact.protected+'", followers_count='+contact.followers_count+', friends_count='+contact.friends_count+', created_at="'+ contact.created_at+'", favourites_count="'+contact.favorites_count+'", utc_offset="'+contact.utc_offset+'", time_zone="'+contact.time_zone+'", statuses_count='+contact.statuses_count+', following="'+contact.following+'", verified ="'+contact.verified+'", statusnet_blocking="'+contact.statusnet_blocking+'", notifications="'+contact.notifictions+'", statusnet_profile_url="'+contact.statusnet_profile_url+'", cid='+contact.cid+', network="'+contact.network+'", isFriend='+isFriend+', timestamp='+ currentTime+' where username="'+login.username+'" AND url="'+contact.url+'"');
|
||||
} else {// use insert
|
||||
result = tx.executeSql('INSERT INTO contacts VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', [login.username,contact.id,Qt.btoa(contact.name),contact.screen_name,contact.location,currentTime,contact.profile_image_url, Qt.btoa(contact.description),"",contact.url,contact.protected,contact.followers_count, contact.friends_count,Date.parse(Newsjs.cleanDate(contact.created_at)),contact.favorites_count,contact.utc_offset,contact.time_zone,contact.statuses_count,contact.following,contact.verfied,contact.statusnet_blocking,contact.notifications,contact.statusnet_profile_url,contact.cid,contact.network,isFriend,image_timestamp]);}
|
||||
result = tx.executeSql('INSERT INTO contacts VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', [login.username,contact.id,Qt.btoa(contact.name),contact.screen_name,contact.location,currentTime,contact.profile_image_url, Qt.btoa(contact.description),"",contact.url,contact.protected,contact.followers_count, contact.friends_count,contact.created_at,contact.favorites_count,contact.utc_offset,contact.time_zone,contact.statuses_count,contact.following,contact.verfied,contact.statusnet_blocking,contact.notifications,contact.statusnet_profile_url,contact.cid,contact.network,isFriend,image_timestamp]);}
|
||||
});
|
||||
}
|
||||
|
||||
function processNews(api,data){
|
||||
try{var newslist=JSON.parse(data);
|
||||
} catch(e){
|
||||
Helperjs.showMessage(qsTr("Error"),"API:\n" +login.server+api+"\n Return: \n"+data,root)};
|
||||
if (typeof(newslist)=='undefined'){
|
||||
Helperjs.showMessage(qsTr("Error"),"API:\n" +login.server+api+"\n Return: \n"+data,root)
|
||||
}
|
||||
else if (newslist.hasOwnProperty('status')){
|
||||
Helperjs.showMessage(qsTr("Error"),"API:\n" +login.server+api+"\n Return: \n"+data,root)
|
||||
} else if (!(Array.isArray(newslist))){
|
||||
replytimer.restart()
|
||||
} else {
|
||||
var allcontacts=[];
|
||||
allcontacts=Newsjs.getAllContacts(db,login.username);
|
||||
if (api=="/api/direct_messages/all"){
|
||||
for (var n in newslist){
|
||||
newslist[n].created_at=Date.parse(Newsjs.cleanDate(newslist[n].created_at));
|
||||
newslist[n].messagetype=1;
|
||||
newslist[n].source=" Friendica";
|
||||
newslist[n].status_id=newslist[n].id;
|
||||
newslist[n].uid=newslist[n].sender.id;
|
||||
newslist[n].statusnet_conversation_id=newslist[n].friendica_parent_uri;
|
||||
newslist[n].user=cleanUser(newslist[n].sender);
|
||||
newslist[n].statusnet_html=newslist[n].text;
|
||||
}}
|
||||
else if (api=="/api/friendica/notifications"){
|
||||
for (var n in newslist){
|
||||
newslist[n].created_at=Date.parse(newslist[n].date);
|
||||
newslist[n].messagetype=2;
|
||||
newslist[n].user=Newsjs.objFromArray(allcontacts,"url",newslist[n].url)
|
||||
if (newslist[n].user==false){
|
||||
newslist[n].user={"profile_image_url": newslist[n].photo,"name": newslist[n].name," url":newslist[n].url, "created_at":newslist[n].date};
|
||||
newslist[n].user=cleanUser(newslist[n].user);
|
||||
}
|
||||
newslist[n].statusnet_html=newslist[n].msg_html;
|
||||
}
|
||||
} else {
|
||||
var chatlist=[];
|
||||
var conversationIds=[];
|
||||
var commentCount=[];
|
||||
for (var n in newslist){
|
||||
newslist[n].created_at=Date.parse(Newsjs.cleanDate(newslist[n].created_at));
|
||||
newslist[n].messagetype=0;
|
||||
newslist[n].user=cleanUser(newslist[n].user)
|
||||
if(newslist[n].in_reply_to_user_id){newslist[n].reply_user=Newsjs.objFromArray(allcontacts,"id",newslist[n].in_reply_to_user_id)}
|
||||
//print (JSON.stringify(newslist[n].user))
|
||||
if(newslist[n].hasOwnProperty('friendica_activities')){
|
||||
for (var m in newslist[n].friendica_activities.like){
|
||||
newslist[n].friendica_activities.like[m]=cleanUser(newslist[n].friendica_activities.like[m]);
|
||||
}
|
||||
for (var o in newslist[n].friendica_activities.dislike){
|
||||
newslist[n].friendica_activities.dislike[o]=cleanUser(newslist[n].friendica_activities.dislike[o]);
|
||||
}
|
||||
for (var p in newslist[n].friendica_activities.attendyes){
|
||||
newslist[n].friendica_activities.attendyes[p]=cleanUser(newslist[n].friendica_activities.attendyes[p]);
|
||||
}
|
||||
for (var q in newslist[n].friendica_activities.attendno){
|
||||
newslist[n].friendica_activities.attendno[q]=cleanUser(newslist[n].friendica_activities.attendno[q]);
|
||||
}
|
||||
for (var r in newslist[n].friendica_activities.attendmaybe){
|
||||
newslist[n].friendica_activities.attendmaybe[r]=cleanUser(newslist[n].friendica_activities.attendmaybe[r]);
|
||||
}
|
||||
}
|
||||
if(!(newslist[n].hasOwnProperty('friendica_owner'))){
|
||||
newslist[n].friendica_owner=newslist[n].user
|
||||
}
|
||||
var conversationindex=conversationIds.indexOf(newslist[n].statusnet_conversation_id);
|
||||
|
||||
//fill chatlist
|
||||
if (conversationindex==-1){
|
||||
chatlist.push(newslist[n]);
|
||||
conversationIds.push(newslist[n].statusnet_conversation_id);
|
||||
commentCount.push(1);
|
||||
} else{
|
||||
commentCount[conversationindex]=commentCount[conversationindex]+1;
|
||||
chatlist[conversationindex]=newslist[n];
|
||||
}
|
||||
}
|
||||
//enrich chatlist with old entries
|
||||
|
||||
for (var count in chatlist){ //print("chat "+JSON.stringify(chatlist[count])+" count: "+commentCount[count])
|
||||
//chatlist[count].newscount=commentCount[count]
|
||||
if (chatlist[count].id_str!==chatlist[count].statusnet_conversation_id){
|
||||
try{
|
||||
Newsjs.oldchatfromdb(db,login.username,chatlist[count].statusnet_conversation_id,chatlist[count].id,allcontacts,function(oldpost,oldcount){
|
||||
chatlist[count]=oldpost;
|
||||
chatlist[count].newscount=oldcount+commentCount[count];
|
||||
//print("JSON "+chatlist[count].statusnet_conversation_id+" "+chatlist[count].id+JSON.stringify(oldpost))
|
||||
})
|
||||
}catch(e){print(e)}
|
||||
}
|
||||
else{chatlist[count].newscount=commentCount[count]}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (api=="/api/conversation/show"){
|
||||
newslist.reverse();
|
||||
newstab.conversation=newslist
|
||||
}
|
||||
else if (newstab.newstabstatus==="Conversations"){
|
||||
showNews(chatlist);root.news=newslist}
|
||||
else {showNews(newslist);root.news=newslist};
|
||||
|
||||
var newstabarray=["Conversations","Favorites","Timeline","DirectMessage"];
|
||||
if (newstabarray.indexOf(newstab.newstabstatus)>-1){contacttimer.start()}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function cleanUser(user){
|
||||
user.created_at=Date.parse(Newsjs.cleanDate(user.created_at));
|
||||
var imagehelper1=user.profile_image_url.split("?");
|
||||
var imagehelper2=imagehelper1[0].substring(imagehelper1[0].lastIndexOf("/")+1,imagehelper1[0].length);
|
||||
var imagehelper3=login.imagestore+"contacts/"+user.screen_name+"-"+imagehelper2
|
||||
if(filesystem.fileexist(imagehelper3)){user.profile_image=imagehelper3}else {user.profile_image=""}
|
||||
return user
|
||||
}
|
||||
|
||||
function updateView(viewtype){
|
||||
newsBusy.running=true;
|
||||
//downloadNotice.text="xhr start "+Date.now()
|
||||
switch(viewtype){
|
||||
case "Conversations":
|
||||
var lastnews=Newsjs.getLastNews(login,db);
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setApi("/api/statuses/friends_timeline");
|
||||
xhr.clearParams();
|
||||
xhr.setParam("since_id",lastnews);
|
||||
xhr.setParam("count",50)
|
||||
break;
|
||||
case "Timeline":
|
||||
var lastnews=Newsjs.getLastNews(login,db);
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setApi("/api/statuses/friends_timeline");
|
||||
xhr.clearParams();
|
||||
xhr.setParam("since_id",lastnews);
|
||||
xhr.setParam("count",50)
|
||||
break;
|
||||
case "Search":
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setApi("/api/search");
|
||||
break;
|
||||
case "Notifications":
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setApi("/api/friendica/notifications");
|
||||
xhr.clearParams();
|
||||
break;
|
||||
case "Direct Messages":
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setApi("/api/direct_messages/all");
|
||||
xhr.clearParams();
|
||||
break;
|
||||
case "Public Timeline":
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setApi("/api/statuses/public_timeline");
|
||||
xhr.clearParams();
|
||||
break;
|
||||
case "Favorites":
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setApi("/api/favorites");
|
||||
xhr.clearParams();
|
||||
break;
|
||||
default:
|
||||
var lastnews=Newsjs.getLastNews(login,db);
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setApi("/api/statuses/friends_timeline");
|
||||
xhr.clearParams();
|
||||
xhr.setParam("since_id",lastnews);
|
||||
xhr.setParam("count",50)
|
||||
newstab.newstabstatus="Conversations";
|
||||
}
|
||||
xhr.get();
|
||||
|
||||
if (viewtype==="Conversations"){Newsjs.allchatsfromdb(db,login.username,function(temp){
|
||||
newsStack.allchats=temp
|
||||
})}
|
||||
}
|
||||
|
||||
function showGroups(){
|
||||
Helperjs.readData(db,"groups",login.username,function(groups){
|
||||
var groupitems="";
|
||||
for (var i=0;i<groups.length;i++){
|
||||
groupitems=groupitems+"MenuItem{text:'"+groups[i].groupname+"'; onTriggered: Service.getGroupnews("+groups[i].gid+")}"
|
||||
}
|
||||
var menuString="import QtQuick.Controls 1.4; import 'qrc:/js/service.js' as Service; Menu {"+groupitems+"}";
|
||||
var grouplistObject=Qt.createQmlObject(menuString,newsStack,"groupmenuOutput");
|
||||
grouplistObject.popup()
|
||||
})
|
||||
}
|
||||
|
||||
function getGroupnews(list){
|
||||
newstab.newstabstatus="Group news";
|
||||
newsBusy.running=true;
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setApi("/api/lists/statuses");
|
||||
xhr.clearParams();
|
||||
xhr.setParam("list_id",list)
|
||||
xhr.get();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue