v0.6.4 contact search
This commit is contained in:
parent
66e5c33b00
commit
5032c78de1
57 changed files with 2218 additions and 2252 deletions
|
@ -45,7 +45,7 @@ function initDatabase(database) { // initialize the database object
|
|||
tx.executeSql('CREATE TABLE IF NOT EXISTS config(server TEXT, username TEXT, password TEXT, imagestore TEXT, maxnews INT, timerInterval INT, newsViewType TEXT,isActive INT, permissions TEXT,maxContactAge INT,APIVersion TEXT,layout TEXT, addons TEXT)');
|
||||
tx.executeSql('CREATE TABLE IF NOT EXISTS news(username TEXT, messagetype INT, text TEXT, created_at INT, in_reply_to_status_id INT, source TEXT, status_id INT, in_reply_to_user_id INT, geo TEXT,favorited TEXT, uid INT, statusnet_html TEXT, statusnet_conversation_id TEXT,friendica_activities TEXT, friendica_activities_self TEXT, attachments TEXT, friendica_owner TEXT)');
|
||||
tx.executeSql('CREATE TABLE IF NOT EXISTS contacts(username TEXT, id INT, name TEXT, screen_name TEXT, location TEXT,imageAge INT, profile_image_url TEXT, description TEXT, profile_image BLOB, url TEXT, protected TEXT, followers_count INT, friends_count INT, created_at INT, favourites_count TEXT, utc_offset TEXT, time_zone TEXT, statuses_count INT, following TEXT, verified TEXT, statusnet_blocking TEXT, notifications TEXT, statusnet_profile_url TEXT, cid INT, network TEXT, isFriend INT, timestamp INT)');
|
||||
// tx.executeSql('CREATE INDEX IF NOT EXISTS contact_id ON contacts(id)');
|
||||
// tx.executeSql('CREATE INDEX IF NOT EXISTS contact_id ON contacts(id)');
|
||||
tx.executeSql('CREATE TABLE IF NOT EXISTS profiles(username TEXT, id INT, profiledata TEXT)');
|
||||
tx.executeSql('CREATE TABLE IF NOT EXISTS groups(username TEXT, groupname TEXT, gid INT, members TEXT)');
|
||||
tx.executeSql('CREATE TABLE IF NOT EXISTS events(username TEXT, id INT, start INT, end INT, allday INT, title TEXT, j INT, d TEXT, isFirst INT, uid INT, cid INT, uri TEXT, created INT, edited INT, desc TEXT, location TEXT, type TEXT, nofinish TEXT, adjust INT, ignore INT, permissions TEXT, guid INT, itemid INT, plink TEXT, authorName TEXT, authorAvatar TEXT, authorLink TEXT, html TEXT)');
|
||||
|
@ -59,99 +59,99 @@ function initDatabase(database) { // initialize the database object
|
|||
function cleanPermissions(oldperms){
|
||||
var newperms=oldperms.replace("<","");newperms=newperms.replace(">","");newperms="["+newperms+"]";
|
||||
var newpermArray=JSON.parse(newperms);
|
||||
return (newpermArray)
|
||||
return (newpermArray)
|
||||
}
|
||||
|
||||
function getEvents(database,login,rootwindow,callback){
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
Helperjs.friendicaWebRequest(login.server+"/cal/"+login.username+"/json",rootwindow,function(obj){
|
||||
//Helperjs.friendicaRemoteAuthRequest(login,login.server+"/cal/"+login.username+"/json",login.server+"/profile/"+login.username,rootwindow,function(obj){
|
||||
var events = JSON.parse(obj);
|
||||
db.transaction( function(tx) {
|
||||
for (var i=0;i<events.length;i++){
|
||||
var permissions=[];
|
||||
permissions.push(cleanPermissions(events[i].item.allow_cid));
|
||||
permissions.push(cleanPermissions(events[i].item.allow_gid));
|
||||
permissions.push(cleanPermissions(events[i].item.deny_cid));
|
||||
permissions.push(cleanPermissions(events[i].item.deny_gid));
|
||||
var result = tx.executeSql('SELECT * from events where username="'+login.username+'" AND id = '+events[i].id); // check for news id
|
||||
if(result.rows.length === 1) {// use update
|
||||
result = tx.executeSql('UPDATE events SET username="'+login.username+'", start="'+Date.parse(events[i].start)+'", end="'+Date.parse(events[i].end)+'", allday="'+Number(events[i].allday)+'", title="'+events[i].title+'", j="'+events[i].j+'", d="'+events[i].d+ '", isFirst="'+Number(events[i].isFirst)+'", uid="'+events[i].item.uid+'", cid="'+events[i].item.cid+'", uri="'+events[i].item.uri+'", created="'+ Date.parse(events[i].item.created)+'", edited="'+ Date.parse(events[i].item.edited)+'", desc="'+events[i].item.desc+'", location="'+events[i].item.location+'", type="'+events[i].item.type+'", nofinish="'+events[i].item.nofinish+'", adjust ="'+events[i].item.adjust+'", ignore="'+events[i].item.ignore+'", permissions="'+ JSON.stringify(permissions)+'", guid="'+events[i].item.guid+'", itemid="'+events[i].item.itemid+ '", plink="'+events[i].item.plink+ '", authorName="'+events[i].item["author-name"]+ '", authorAvatar="'+events[i].item["author-avatar"]+ '", authorLink="'+events[i].item["author-link"]+ '", html="'+Qt.btoa(events[i].html)+'" where username="'+login.username+'" AND id='+events[i].id);
|
||||
} else {// use insert
|
||||
result = tx.executeSql('INSERT INTO events (username,id,start,end,allday,title,j,d,isFirst,uid,cid,uri,created,edited,desc,location,type,nofinish,adjust,ignore,permissions,guid,itemid,plink,authorName,authorAvatar,authorLink,html) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', [login.username, events[i].id, Date.parse(events[i].start), Date.parse(events[i].end), events[i].allday, events[i].title, events[i].j, events[i].d, events[i].isFirst, events[i].item.uid, events[i].item.cid, events[i].item.uri, Date.parse(events[i].item.created), Date.parse(events[i].item.edited), events[i].item.desc, events[i].item.location, events[i].item.type, events[i].item.nofinish, events[i].item.adjust, events[i].item.ignore, JSON.stringify(permissions), events[i].item.guid, events[i].item.itemid, events[i].item.plink, events[i].item["author-name"], events[i].item["author-avatar"], events[i].item["author-link"], Qt.btoa(events[i].html)])}
|
||||
callback()
|
||||
}
|
||||
})})}
|
||||
//Helperjs.friendicaRemoteAuthRequest(login,login.server+"/cal/"+login.username+"/json",login.server+"/profile/"+login.username,rootwindow,function(obj){
|
||||
var events = JSON.parse(obj);
|
||||
db.transaction( function(tx) {
|
||||
for (var i=0;i<events.length;i++){
|
||||
var permissions=[];
|
||||
permissions.push(cleanPermissions(events[i].item.allow_cid));
|
||||
permissions.push(cleanPermissions(events[i].item.allow_gid));
|
||||
permissions.push(cleanPermissions(events[i].item.deny_cid));
|
||||
permissions.push(cleanPermissions(events[i].item.deny_gid));
|
||||
var result = tx.executeSql('SELECT * from events where username="'+login.username+'" AND id = '+events[i].id); // check for news id
|
||||
if(result.rows.length === 1) {// use update
|
||||
result = tx.executeSql('UPDATE events SET username="'+login.username+'", start="'+Date.parse(events[i].start)+'", end="'+Date.parse(events[i].end)+'", allday="'+Number(events[i].allday)+'", title="'+events[i].title+'", j="'+events[i].j+'", d="'+events[i].d+ '", isFirst="'+Number(events[i].isFirst)+'", uid="'+events[i].item.uid+'", cid="'+events[i].item.cid+'", uri="'+events[i].item.uri+'", created="'+ Date.parse(events[i].item.created)+'", edited="'+ Date.parse(events[i].item.edited)+'", desc="'+events[i].item.desc+'", location="'+events[i].item.location+'", type="'+events[i].item.type+'", nofinish="'+events[i].item.nofinish+'", adjust ="'+events[i].item.adjust+'", ignore="'+events[i].item.ignore+'", permissions="'+ JSON.stringify(permissions)+'", guid="'+events[i].item.guid+'", itemid="'+events[i].item.itemid+ '", plink="'+events[i].item.plink+ '", authorName="'+events[i].item["author-name"]+ '", authorAvatar="'+events[i].item["author-avatar"]+ '", authorLink="'+events[i].item["author-link"]+ '", html="'+Qt.btoa(events[i].html)+'" where username="'+login.username+'" AND id='+events[i].id);
|
||||
} else {// use insert
|
||||
result = tx.executeSql('INSERT INTO events (username,id,start,end,allday,title,j,d,isFirst,uid,cid,uri,created,edited,desc,location,type,nofinish,adjust,ignore,permissions,guid,itemid,plink,authorName,authorAvatar,authorLink,html) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', [login.username, events[i].id, Date.parse(events[i].start), Date.parse(events[i].end), events[i].allday, events[i].title, events[i].j, events[i].d, events[i].isFirst, events[i].item.uid, events[i].item.cid, events[i].item.uri, Date.parse(events[i].item.created), Date.parse(events[i].item.edited), events[i].item.desc, events[i].item.location, events[i].item.type, events[i].item.nofinish, events[i].item.adjust, events[i].item.ignore, JSON.stringify(permissions), events[i].item.guid, events[i].item.itemid, events[i].item.plink, events[i].item["author-name"], events[i].item["author-avatar"], events[i].item["author-link"], Qt.btoa(events[i].html)])}
|
||||
callback()
|
||||
}
|
||||
})})}
|
||||
|
||||
function newscount(database, callback){
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
db.transaction( function(tx) {
|
||||
var newscountrs = tx.executeSql('SELECT COUNT(*) from news');
|
||||
var newscount = newscountrs.rows.item(0)["COUNT(*)"];
|
||||
callback(newscount)
|
||||
db.transaction( function(tx) {
|
||||
var newscountrs = tx.executeSql('SELECT COUNT(*) from news');
|
||||
var newscount = newscountrs.rows.item(0)["COUNT(*)"];
|
||||
callback(newscount)
|
||||
})
|
||||
}
|
||||
|
||||
function eventsfromdb(database, username,callback){
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
var allcontacts=[];
|
||||
allcontacts=Newsjs.getAllContacts(root.db,login.username);
|
||||
db.transaction( function(tx) {
|
||||
var eventrs=tx.executeSql('select * from events WHERE username="'+username+'" ORDER BY start ASC');
|
||||
var eventArray=[];
|
||||
var dayArray=[];
|
||||
for(var i = 0; i < eventrs.rows.length; i++) {
|
||||
eventArray.push(eventrs.rows.item(i));
|
||||
if (eventArray[i].cid!=0){eventArray[i]["eventOwner"]=Newsjs.objFromArray(allcontacts,"cid",eventArray[i].cid);}
|
||||
else{eventArray[i]["eventOwner"]=Newsjs.objFromArray(allcontacts,"isFriend",2);}
|
||||
var startday=Math.floor((eventArray[i].start-new Date(eventArray[i].start).getTimezoneOffset() * 60 * 1000)/86400000);
|
||||
var endday=Math.floor((eventArray[i].end-1-new Date(eventArray[i].end).getTimezoneOffset() * 60 * 1000)/86400000);if (endday<startday){endday=startday}
|
||||
eventArray[i]["startday"]=startday;eventArray[i]["endday"]=endday;
|
||||
dayArray.push(startday);
|
||||
if (endday>startday){
|
||||
for (var j=startday+1;j<endday+1;j++){dayArray.push(j)}
|
||||
var eventrs=tx.executeSql('select * from events WHERE username="'+username+'" ORDER BY start ASC');
|
||||
var eventArray=[];
|
||||
var dayArray=[];
|
||||
for(var i = 0; i < eventrs.rows.length; i++) {
|
||||
eventArray.push(eventrs.rows.item(i));
|
||||
if (eventArray[i].cid!=0){eventArray[i]["eventOwner"]=Newsjs.objFromArray(allcontacts,"cid",eventArray[i].cid);}
|
||||
else{eventArray[i]["eventOwner"]=Newsjs.objFromArray(allcontacts,"isFriend",2);}
|
||||
var startday=Math.floor((eventArray[i].start-new Date(eventArray[i].start).getTimezoneOffset() * 60 * 1000)/86400000);
|
||||
var endday=Math.floor((eventArray[i].end-1-new Date(eventArray[i].end).getTimezoneOffset() * 60 * 1000)/86400000);if (endday<startday){endday=startday}
|
||||
eventArray[i]["startday"]=startday;eventArray[i]["endday"]=endday;
|
||||
dayArray.push(startday);
|
||||
if (endday>startday){
|
||||
for (var j=startday+1;j<endday+1;j++){dayArray.push(j)}
|
||||
}
|
||||
}
|
||||
}
|
||||
callback(eventArray,dayArray)});
|
||||
callback(eventArray,dayArray)});
|
||||
}
|
||||
|
||||
function requestFriendsEvents(login,friend,rootwindow,callback){
|
||||
// get calendar JSON object of contact without user and password
|
||||
// get calendar JSON object of contact without user and password
|
||||
Helperjs.friendicaWebRequest(friend.replace("profile","cal")+"/json",rootwindow,function(calhtml){
|
||||
//print(calhtml);
|
||||
var eventarray=[];var eventdays=[];
|
||||
var events=JSON.parse(calhtml);
|
||||
for (var i=0;i<events.length;i++){
|
||||
var permissions=[];
|
||||
permissions.push(cleanPermissions(events[i].item.allow_cid));
|
||||
permissions.push(cleanPermissions(events[i].item.allow_gid));
|
||||
permissions.push(cleanPermissions(events[i].item.deny_cid));
|
||||
permissions.push(cleanPermissions(events[i].item.deny_gid));
|
||||
|
||||
var event ={}
|
||||
event.start=Date.parse(events[i].start);event.end=Date.parse(events[i].end);
|
||||
event.allday=events[i].allday; event.title=events[i].title; event.j=events[i].j;
|
||||
event.d=events[i].d; event.isFirst=events[i].isFirst; event.uid=events[i].item.uid;
|
||||
event.cid=events[i].item.cid; event.uri=events[i].item.uri;
|
||||
event.created=Date.parse(events[i].item.created); event.edited=Date.parse(events[i].item.edited);
|
||||
event.desc=events[i].item.desc; event.location=events[i].item.location; event.type=events[i].item.type;
|
||||
event.nofinish=events[i].item.nofinish; event.adjust =events[i].item.adjust; event.ignore=events[i].item.ignore;
|
||||
event.permissions=JSON.stringify(permissions); event.guid=events[i].item.guid;
|
||||
event.itemid=events[i].item.itemid; event.plink=events[i].plink; event.authorName=events[i].item["author-name"];
|
||||
event.authorAvatar=events[i].item["author-avatar"]; event. authorLink=events[i].item["author-link"];
|
||||
event.html=Qt.btoa(events[i].html);
|
||||
eventarray.push(event);
|
||||
// var offsetTime = new Date().getTimezoneOffset() * 60 * 1000;print(new Date(event.start).toLocaleString()+"Zeitverschiebung:"+offsetTime)
|
||||
// var time = event.start - offsetTime;
|
||||
eventdays.push(Math.floor(event.start/(24*60*60*1000)))
|
||||
}
|
||||
//print(JSON.stringify(eventarray));
|
||||
callback(eventarray,eventdays)
|
||||
})
|
||||
//print(calhtml);
|
||||
var eventarray=[];var eventdays=[];
|
||||
var events=JSON.parse(calhtml);
|
||||
for (var i=0;i<events.length;i++){
|
||||
var permissions=[];
|
||||
permissions.push(cleanPermissions(events[i].item.allow_cid));
|
||||
permissions.push(cleanPermissions(events[i].item.allow_gid));
|
||||
permissions.push(cleanPermissions(events[i].item.deny_cid));
|
||||
permissions.push(cleanPermissions(events[i].item.deny_gid));
|
||||
|
||||
var event ={}
|
||||
event.start=Date.parse(events[i].start);event.end=Date.parse(events[i].end);
|
||||
event.allday=events[i].allday; event.title=events[i].title; event.j=events[i].j;
|
||||
event.d=events[i].d; event.isFirst=events[i].isFirst; event.uid=events[i].item.uid;
|
||||
event.cid=events[i].item.cid; event.uri=events[i].item.uri;
|
||||
event.created=Date.parse(events[i].item.created); event.edited=Date.parse(events[i].item.edited);
|
||||
event.desc=events[i].item.desc; event.location=events[i].item.location; event.type=events[i].item.type;
|
||||
event.nofinish=events[i].item.nofinish; event.adjust =events[i].item.adjust; event.ignore=events[i].item.ignore;
|
||||
event.permissions=JSON.stringify(permissions); event.guid=events[i].item.guid;
|
||||
event.itemid=events[i].item.itemid; event.plink=events[i].plink; event.authorName=events[i].item["author-name"];
|
||||
event.authorAvatar=events[i].item["author-avatar"]; event. authorLink=events[i].item["author-link"];
|
||||
event.html=Qt.btoa(events[i].html);
|
||||
eventarray.push(event);
|
||||
// var offsetTime = new Date().getTimezoneOffset() * 60 * 1000;print(new Date(event.start).toLocaleString()+"Zeitverschiebung:"+offsetTime)
|
||||
// var time = event.start - offsetTime;
|
||||
eventdays.push(Math.floor(event.start/(24*60*60*1000)))
|
||||
}
|
||||
//print(JSON.stringify(eventarray));
|
||||
callback(eventarray,eventdays)
|
||||
})
|
||||
}
|
||||
|
||||
function newRequestFriendsEvents(login,friend,rootwindow,callback){
|
||||
// get calendar JSON object of contact with remoteAuth or without user and password
|
||||
// get calendar JSON object of contact with remoteAuth or without user and password
|
||||
if(friend.isFriend==1){
|
||||
Helperjs.friendicaRemoteAuthRequest(login,friend.url.replace("profile","cal")+"/json",friend.url,rootwindow,function(calhtml){
|
||||
getEventsFromHtml(calhtml,rootwindow,callback)})
|
||||
|
@ -185,8 +185,8 @@ function getEventsFromHtml(calhtml,rootwindow,callback){
|
|||
event.authorAvatar=events[i].item["author-avatar"]; event. authorLink=events[i].item["author-link"];
|
||||
event.html=Qt.btoa(events[i].html);
|
||||
eventarray.push(event);
|
||||
// var offsetTime = new Date().getTimezoneOffset() * 60 * 1000;print(new Date(event.start).toLocaleString()+"Zeitverschiebung:"+offsetTime)
|
||||
// var time = event.start - offsetTime;
|
||||
// var offsetTime = new Date().getTimezoneOffset() * 60 * 1000;print(new Date(event.start).toLocaleString()+"Zeitverschiebung:"+offsetTime)
|
||||
// var time = event.start - offsetTime;
|
||||
eventdays.push(Math.floor(event.start/(24*60*60*1000)))
|
||||
}
|
||||
//print(JSON.stringify(eventarray));
|
||||
|
@ -194,61 +194,60 @@ function getEventsFromHtml(calhtml,rootwindow,callback){
|
|||
}
|
||||
|
||||
function savePermissions(database,obj) { // stores config to DB
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
var permissions=JSON.stringify(obj)
|
||||
db.transaction( function(tx) {
|
||||
var result = tx.executeSql( 'UPDATE config SET permissions="'+permissions+'" WHERE username="'+obj.username +'"');
|
||||
})
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
var permissions=JSON.stringify(obj)
|
||||
db.transaction( function(tx) {
|
||||
var result = tx.executeSql( 'UPDATE config SET permissions="'+permissions+'" WHERE username="'+obj.username +'"');
|
||||
})
|
||||
}
|
||||
|
||||
function storeConfig(database,obj) { // stores config to DB
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
db.transaction( function(tx) {
|
||||
//print(JSON.stringify(obj));
|
||||
var result = tx.executeSql('SELECT * from config WHERE username="'+obj.username+'"');
|
||||
if(result.rows.length === 1) {// use update
|
||||
var result2 = tx.executeSql('UPDATE config SET server="'+obj.server+'",password="'+obj.password+'", imagestore="'+obj.imagestore+'", maxnews=0, timerInterval=0, newsViewType="'+obj.newsViewType+'", isActive=0 WHERE username="'+obj.username +'"');
|
||||
var result3 = tx.executeSql('UPDATE config SET isActive=1 WHERE username !="'+obj.username +'"');
|
||||
} else {// use insert print('... does not exists, create it')
|
||||
var result2 = tx.executeSql('INSERT INTO config VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)', [obj.server, obj.username, obj.password, obj.imagestore, 0, 0,obj.newsViewType,0,"[[],[],[],[]]",0,"","",""]);
|
||||
var result3 = tx.executeSql('UPDATE config SET isActive=1 WHERE username !="'+obj.username +'"');
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
db.transaction( function(tx) {
|
||||
//print(JSON.stringify(obj));
|
||||
var result = tx.executeSql('SELECT * from config WHERE username="'+obj.username+'"');
|
||||
if(result.rows.length === 1) {// use update
|
||||
var result2 = tx.executeSql('UPDATE config SET server="'+obj.server+'",password="'+obj.password+'", imagestore="'+obj.imagestore+'", maxnews="'+obj.accountId+'", timerInterval=0, newsViewType="'+obj.newsViewType+'", isActive=0 WHERE username="'+obj.username +'"');
|
||||
var result3 = tx.executeSql('UPDATE config SET isActive=1 WHERE username !="'+obj.username +'"');
|
||||
} else {// use insert print('... does not exists, create it')
|
||||
var result2 = tx.executeSql('INSERT INTO config VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)', [obj.server, obj.username, obj.password, obj.imagestore, obj.accountId, 0,obj.newsViewType,0,"[[],[],[],[]]",0,"","",""]);
|
||||
var result3 = tx.executeSql('UPDATE config SET isActive=1 WHERE username !="'+obj.username +'"');
|
||||
}
|
||||
})}
|
||||
|
||||
function showServerConfig(url,rootwindow,callback){//print(url);
|
||||
Helperjs.friendicaWebRequest(url+"/api/statusnet/config",rootwindow, function (obj){
|
||||
var serverconfig = JSON.parse(obj);
|
||||
var serverConfigString="import QtQuick 2.0; import QtQuick.Dialogs 1.2; MessageDialog{ visible: true; title:'Server';standardButtons: StandardButton.Ok;text: 'Name: "+serverconfig.site.name+"\nLanguage: "+serverconfig.site.language+
|
||||
"\nEmail: "+serverconfig.site.email+"\nTimezone: "+serverconfig.site.timezone+"\nClosed: "+serverconfig.site.closed+
|
||||
"\nText limit: "+serverconfig.site.textlimit+"\nShort Url length: "+serverconfig.site.shorturllength+
|
||||
"\nFriendica version: "+serverconfig.site.friendica.FRIENDICA_VERSION+"\nDFRN version: "+serverconfig.site.friendica.DFRN_PROTOCOL_VERSION +
|
||||
"\nDB Update version: "+serverconfig.site.friendica.DB_UPDATE_VERSION+"'}";
|
||||
callback(serverConfigString)
|
||||
})}
|
||||
|
||||
function checkLogin(login,rootwindow,callback){
|
||||
// check server with given credentials
|
||||
try {Helperjs.friendicaRequest(login,"/api/account/verify_credentials",rootwindow, function (obj){
|
||||
var account = JSON.parse(obj);
|
||||
callback(account)
|
||||
})}
|
||||
catch(e){}
|
||||
}
|
||||
|
||||
function showServerConfig(url,rootwindow,callback){
|
||||
Helperjs.friendicaWebRequest(url+"/api/statusnet/config",rootwindow, function (obj){
|
||||
var serverconfig = JSON.parse(obj);
|
||||
var serverConfigString="import QtQuick 2.0; import QtQuick.Dialogs 1.2; MessageDialog{ visible: true; title:'Server';standardButtons: StandardButton.Ok;text: 'Name: "+serverconfig.site.name+"\nLanguage: "+serverconfig.site.language+
|
||||
"\nEmail: "+serverconfig.site.email+"\nTimezone: "+serverconfig.site.timezone+"\nClosed: "+serverconfig.site.closed+
|
||||
"\nText limit: "+serverconfig.site.textlimit+"\nShort Url length: "+serverconfig.site.shorturllength+
|
||||
"\nFriendica version: "+serverconfig.site.friendica.FRIENDICA_VERSION+"\nDFRN version: "+serverconfig.site.friendica.DFRN_PROTOCOL_VERSION +
|
||||
"\nDB Update version: "+serverconfig.site.friendica.DB_UPDATE_VERSION+"'}";
|
||||
callback(serverConfigString)
|
||||
})}
|
||||
|
||||
//function checkLogin(login,rootwindow,callback){
|
||||
// // check server with given credentials
|
||||
// try {Helperjs.friendicaRequest(login,"/api/account/verify_credentials",rootwindow, function (obj){
|
||||
// var account = JSON.parse(obj);
|
||||
// callback(account)
|
||||
// })}
|
||||
// catch(e){}
|
||||
//}
|
||||
|
||||
function requestProfile(login,database,rootwindow,callback){
|
||||
// return profile data
|
||||
// return profile data
|
||||
Helperjs.friendicaRequest(login,"/api/friendica/profile/show", rootwindow,function (obj){
|
||||
var profiledata=JSON.parse(obj);
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
for (var i=0;i<profiledata.profiles.length;i++){
|
||||
//print('store profile data for '+JSON.stringify(profiledata.profiles[i]));
|
||||
db.transaction( function(tx) {
|
||||
var result = tx.executeSql('SELECT * from profiles where username="'+login.username+'" AND id = '+profiledata.profiles[i].profile_id); // check for profile id
|
||||
if(result.rows.length === 1) {// use update
|
||||
result = tx.executeSql('UPDATE profiles SET profiledata="'+ Qt.btoa(JSON.stringify(profiledata.profiles[i]))+'" WHERE username="'+login.username+'" AND id='+parseInt(profiledata.profiles[i].profile_id));
|
||||
} else {// use insert
|
||||
result = tx.executeSql('INSERT INTO profiles (username,id,profiledata) VALUES (?,?,?)', [login.username,profiledata.profiles[i].profile_id,Qt.btoa(JSON.stringify(profiledata.profiles[i]))])}
|
||||
});
|
||||
var result = tx.executeSql('SELECT * from profiles where username="'+login.username+'" AND id = '+profiledata.profiles[i].profile_id); // check for profile id
|
||||
if(result.rows.length === 1) {// use update
|
||||
result = tx.executeSql('UPDATE profiles SET profiledata="'+ Qt.btoa(JSON.stringify(profiledata.profiles[i]))+'" WHERE username="'+login.username+'" AND id='+parseInt(profiledata.profiles[i].profile_id));
|
||||
} else {// use insert
|
||||
result = tx.executeSql('INSERT INTO profiles (username,id,profiledata) VALUES (?,?,?)', [login.username,profiledata.profiles[i].profile_id,Qt.btoa(JSON.stringify(profiledata.profiles[i]))])}
|
||||
});
|
||||
}
|
||||
var profile=profiledata.friendica_owner;
|
||||
profile.isFriend=2;
|
||||
|
@ -258,22 +257,22 @@ function requestProfile(login,database,rootwindow,callback){
|
|||
}
|
||||
|
||||
function getServerConfig(database,login,rootwindow,callback){
|
||||
// check server with given credentials
|
||||
try {Helperjs.friendicaRequest(login,"/api/statusnet/config",rootwindow, function (obj){
|
||||
var serverconfig = JSON.parse(obj);
|
||||
var serverconfigString="import QtQuick 2.0; import QtQuick.Dialogs 1.2; MessageDialog{ visible: true; title:'Server';standardButtons: StandardButton.Ok;text: 'SUCCESS! \nName: "+serverconfig.site.name+"\nLanguage: "+serverconfig.site.language+
|
||||
"\nEmail: "+serverconfig.site.email+"\nTimezone: "+serverconfig.site.timezone+"\nClosed: "+serverconfig.site.closed+
|
||||
"\nText limit: "+serverconfig.site.textlimit+"\nShort Url length: "+serverconfig.site.shorturllength+
|
||||
"\nFriendica version: "+serverconfig.site.friendica.FRIENDICA_VERSION+"\nDFRN version: "+serverconfig.site.friendica.DFRN_PROTOCOL_VERSION +
|
||||
"\nDB Update version: "+serverconfig.site.friendica.DB_UPDATE_VERSION+"'}";
|
||||
// check server with given credentials
|
||||
try {Helperjs.friendicaRequest(login,"/api/statusnet/config",rootwindow, function (obj){
|
||||
var serverconfig = JSON.parse(obj);
|
||||
var serverconfigString="import QtQuick 2.0; import QtQuick.Dialogs 1.2; MessageDialog{ visible: true; title:'Server';standardButtons: StandardButton.Ok;text: 'SUCCESS! \nName: "+serverconfig.site.name+"\nLanguage: "+serverconfig.site.language+
|
||||
"\nEmail: "+serverconfig.site.email+"\nTimezone: "+serverconfig.site.timezone+"\nClosed: "+serverconfig.site.closed+
|
||||
"\nText limit: "+serverconfig.site.textlimit+"\nShort Url length: "+serverconfig.site.shorturllength+
|
||||
"\nFriendica version: "+serverconfig.site.friendica.FRIENDICA_VERSION+"\nDFRN version: "+serverconfig.site.friendica.DFRN_PROTOCOL_VERSION +
|
||||
"\nDB Update version: "+serverconfig.site.friendica.DB_UPDATE_VERSION+"'}";
|
||||
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
db.transaction( function(tx) {
|
||||
var result = tx.executeSql('UPDATE config SET APIVersion="'+ serverconfig.site.friendica.FRIENDICA_VERSION+'" WHERE username="'+login.username +'"')})
|
||||
callback(serverconfigString);
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
db.transaction( function(tx) {
|
||||
var result = tx.executeSql('UPDATE config SET APIVersion="'+ serverconfig.site.friendica.FRIENDICA_VERSION+'" WHERE username="'+login.username +'"')})
|
||||
callback(serverconfigString);
|
||||
})}
|
||||
catch (e){callback (e);
|
||||
}}
|
||||
}}
|
||||
|
||||
function readConfig(database,callback,filter,filtervalue) { // reads config
|
||||
if (filter){var where = " WHERE "+ filter +" = '" + filtervalue+"'"} else { var where=""}
|
||||
|
@ -283,16 +282,16 @@ function readConfig(database,callback,filter,filtervalue) { // reads config
|
|||
var tables = tx.executeSql("SELECT * FROM sqlite_master WHERE type='table'");
|
||||
if (tables.rows.length==0){print("no database");callback("")} else {
|
||||
|
||||
var rs = tx.executeSql('select * from config'+where);
|
||||
var rsArray=[];
|
||||
if (rs.rows.length>0){
|
||||
for(var i = 0; i < rs.rows.length; i++) {
|
||||
rsArray.push(rs.rows.item(i))
|
||||
}
|
||||
var rsObject={server:rsArray[0].server,username:rsArray[0].username, password:rsArray[0].password,imagestore:rsArray[0].imagestore,isActive:rsArray[0].isActive, newsViewType:rsArray[0].newsViewType,permissions:JSON.parse(rsArray[0].permissions),maxContactAge:rsArray[0].maxContactAge,APIVersion:rsArray[0].APIVersion,addons:rsArray[0].addons};
|
||||
if (rsObject.newsViewType!="" && rsObject.newsViewType!=null){updateNewsviewtype(database,rsObject.newsViewType)}
|
||||
} else {var rsObject=""}
|
||||
callback(rsObject)}}
|
||||
var rs = tx.executeSql('select * from config'+where);
|
||||
var rsArray=[];
|
||||
if (rs.rows.length>0){
|
||||
for(var i = 0; i < rs.rows.length; i++) {
|
||||
rsArray.push(rs.rows.item(i))
|
||||
}
|
||||
var rsObject={server:rsArray[0].server,username:rsArray[0].username, password:rsArray[0].password,imagestore:rsArray[0].imagestore,isActive:rsArray[0].isActive, newsViewType:rsArray[0].newsViewType,accountId:rsArray[0].maxnews,permissions:JSON.parse(rsArray[0].permissions),maxContactAge:rsArray[0].maxContactAge,APIVersion:rsArray[0].APIVersion,addons:rsArray[0].addons};
|
||||
if (rsObject.newsViewType!="" && rsObject.newsViewType!=null &&!typeof(rsObject.newsViewType)=='undefined'){updateNewsviewtype(database,rsObject.newsViewType)}
|
||||
} else {var rsObject=""}
|
||||
callback(rsObject)}}
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -315,9 +314,9 @@ function readAllLogins(database,callback) { // reads config
|
|||
}
|
||||
|
||||
function readActiveConfig(database){
|
||||
var obj="";
|
||||
readConfig(database,function(config){obj=config},"isActive", 0);
|
||||
return obj;
|
||||
var obj="";
|
||||
readConfig(database,function(config){obj=config},"isActive", 0);
|
||||
return obj;
|
||||
}
|
||||
|
||||
function setDefaultOptions(database){
|
||||
|
@ -332,7 +331,7 @@ function readGlobaloptions(database,callback){
|
|||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
var go=({});
|
||||
db.transaction( function(tx) {
|
||||
var rs = tx.executeSql('select * from globaloptions');
|
||||
var rs = tx.executeSql('select * from globaloptions');
|
||||
for (var r=0; r<rs.rows.length; r++){
|
||||
go[rs.rows.item(r).k]=rs.rows.item(r).v
|
||||
}
|
||||
|
@ -341,7 +340,7 @@ function readGlobaloptions(database,callback){
|
|||
}
|
||||
|
||||
function readGO(database){
|
||||
var obj;
|
||||
var obj;
|
||||
readGlobaloptions(database,function(go){obj=go});
|
||||
return obj
|
||||
}
|
||||
|
@ -353,11 +352,11 @@ function updateglobaloptions(database,key,value){
|
|||
if(result.rows.length > 0) {// use update
|
||||
result = tx.executeSql('UPDATE globaloptions SET v="'+value+'" WHERE k="'+key+'"')
|
||||
} else {// use insert
|
||||
result = tx.executeSql('INSERT INTO globaloptions (k,v) VALUES (?,?)', [key,value])
|
||||
result = tx.executeSql('INSERT INTO globaloptions (k,v) VALUES (?,?)', [key,value])
|
||||
}
|
||||
})
|
||||
root.globaloptions[key]=value;
|
||||
}
|
||||
}
|
||||
|
||||
function deleteConfig(database,userobj,callback) { // delete user data from DB
|
||||
if (userobj){var where = " WHERE username='"+ userobj.username+"' and server='"+userobj.server+"'";} else { return "no user selected!";}
|
||||
|
@ -370,7 +369,7 @@ function deleteConfig(database,userobj,callback) { // delete user data from DB
|
|||
var rs4 = tx.executeSql("delete from imageData WHERE username='"+ userobj.username+"'");
|
||||
var rs5 = tx.executeSql("delete from groups WHERE username='"+ userobj.username+"'");
|
||||
var rs5 = tx.executeSql("delete from events WHERE username='"+ userobj.username+"'");
|
||||
callback();
|
||||
callback();
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -386,33 +385,31 @@ function updateNewsviewtype(database, newsViewtype){
|
|||
|
||||
|
||||
function cleanNews(database,callback){
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
db.transaction( function(tx) {
|
||||
var maxnewsrs = tx.executeSql("SELECT v FROM globaloptions WHERE k='max_news'");
|
||||
var maxnews=1000; if(maxnewsrs.rows.length>0){ maxnews=maxnewsrs.rows.item(0).v};
|
||||
for (var i=0; i<6;i++){
|
||||
if (i!=0){var maxnewsa=maxnews/5}else{maxnewsa=maxnews}
|
||||
var newscountrs = tx.executeSql('SELECT COUNT(*) from news WHERE messagetype='+i);
|
||||
var newscount = 0;
|
||||
if (newscountrs.rows.length>0){newscount=newscountrs.rows.item(0)["COUNT(*)"]};//print(i+" "+maxnewsa+" newscount "+newscount)
|
||||
if (newscount>maxnewsa){
|
||||
var lastvalidtimers= tx.executeSql('SELECT DISTINCT created_at FROM news WHERE messagetype='+i+' ORDER BY created_at ASC LIMIT ' +(newscount-maxnewsa));
|
||||
var lastvalidtime=lastvalidtimers.rows.item(newscount-maxnewsa-1).created_at;
|
||||
var deleters = tx.executeSql('DELETE from news WHERE messagetype='+i+' AND created_at<='+lastvalidtime)}
|
||||
}
|
||||
callback()
|
||||
})
|
||||
}
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
db.transaction( function(tx) {
|
||||
var maxnewsrs = tx.executeSql("SELECT v FROM globaloptions WHERE k='max_news'");
|
||||
var maxnews=1000; if(maxnewsrs.rows.length>0){ maxnews=maxnewsrs.rows.item(0).v};
|
||||
for (var i=0; i<6;i++){
|
||||
if (i!=0){var maxnewsa=maxnews/5}else{maxnewsa=maxnews}
|
||||
var newscountrs = tx.executeSql('SELECT COUNT(*) from news WHERE messagetype='+i);
|
||||
var newscount = 0;
|
||||
if (newscountrs.rows.length>0){newscount=newscountrs.rows.item(0)["COUNT(*)"]};
|
||||
if (newscount>maxnewsa){
|
||||
var lastvalidtimers= tx.executeSql('SELECT DISTINCT created_at FROM news WHERE messagetype='+i+' ORDER BY created_at ASC LIMIT ' +(newscount-maxnewsa));
|
||||
var lastvalidtime=lastvalidtimers.rows.item(newscount-maxnewsa-1).created_at;
|
||||
var deleters = tx.executeSql('DELETE from news WHERE messagetype='+i+' AND created_at<='+lastvalidtime)}
|
||||
}
|
||||
callback()
|
||||
})
|
||||
}
|
||||
|
||||
function cleanContacts(login,database,callback){
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
db.transaction( function(tx) {
|
||||
var oldestnewsrs= tx.executeSql('SELECT created_at FROM news WHERE username="'+login.username+'" AND messagetype=0 ORDER BY created_at ASC LIMIT 1');
|
||||
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++){//print("rm "+result.rows.item(i).profile_image)
|
||||
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+'"');
|
||||
}
|
||||
|
@ -421,59 +418,64 @@ function cleanContacts(login,database,callback){
|
|||
}
|
||||
|
||||
function cleanHashtags(database,callback){
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
db.transaction( function(tx) {
|
||||
var tagcountrs = tx.executeSql('SELECT COUNT(*) from hashtags');
|
||||
var tagcount = 0;
|
||||
if (tagcountrs.rows.length>0){tagcount=tagcountrs.rows.item(0)["COUNT(*)"]};
|
||||
if (tagcount>50){
|
||||
var lastvaliddaters= tx.executeSql('SELECT DISTINCT date FROM hashtags ORDER BY date ASC LIMIT ' +(tagcount-50));
|
||||
var lastvaliddate=lastvaliddaters.rows.item(tagcount-49).date;
|
||||
var deleters = tx.executeSql('DELETE from hashtags WHERE date<='+lastvaliddate)}
|
||||
callback()
|
||||
})
|
||||
}
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
db.transaction( function(tx) {
|
||||
var tagcountrs = tx.executeSql('SELECT COUNT(*) from hashtags');
|
||||
var tagcount = 0;
|
||||
if (tagcountrs.rows.length>0){tagcount=tagcountrs.rows.item(0)["COUNT(*)"]};
|
||||
if (tagcount>50){
|
||||
var lastvaliddaters= tx.executeSql('SELECT DISTINCT date FROM hashtags ORDER BY date ASC LIMIT ' +(tagcount-50));
|
||||
var lastvaliddate=lastvaliddaters.rows.item(tagcount-49).date;
|
||||
var deleters = tx.executeSql('DELETE from hashtags WHERE date<='+lastvaliddate)}
|
||||
callback()
|
||||
})
|
||||
}
|
||||
|
||||
function updateContactInDB(login,database,isFriend,contact){// for newstab and friendstab
|
||||
var currentTime=Date.now();
|
||||
var image_timestamp=0;
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
db.transaction( function(tx) {
|
||||
var imagename_helper=[];
|
||||
imagename_helper=contact.profile_image_url.split('?');//print("substring: "+JSON.stringify(imagename_helper)+imagename_helper[0].substring(imagename_helper[0].lastIndexOf("/")+1, imagename_helper[0].length))
|
||||
try {parseInt(image_timestamp=imagename_helper[1].substring(imagename_helper[1].indexOf("ts=")+3,imagename_helper[1].length))} catch(e){};
|
||||
var db=Sql.LocalStorage.openDatabaseSync(database[0],database[1],database[2],database[3]);
|
||||
db.transaction( function(tx) {
|
||||
var imagename_helper=[];
|
||||
imagename_helper=contact.profile_image_url.split('?');
|
||||
try {parseInt(image_timestamp=imagename_helper[1].substring(imagename_helper[1].indexOf("ts=")+3,imagename_helper[1].length))} catch(e){};
|
||||
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="'+ 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,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){newsBusy.running=false;};
|
||||
try{var newslist=JSON.parse(data)} catch(e){print("processnews "+e+ " api "+ api + " data "+data);newsBusy.running=false;};
|
||||
if (api=="/api/users/show"){
|
||||
var usermessages=[];
|
||||
usermessages.push(newslist.status);
|
||||
newslist=usermessages;
|
||||
}
|
||||
if (data==""){}
|
||||
if (data==""){newsBusy.running=false}
|
||||
else if (typeof(newslist)=='undefined'){
|
||||
Helperjs.showMessage(qsTr("Undefined Array Error"),"API:\n" +login.server+api+"\n Return: \n"+data,root)
|
||||
}
|
||||
Helperjs.showMessage(qsTr("Undefined Array Error"),"API:\n" +login.server+api+"\n Return: \n"+data,root)
|
||||
}
|
||||
else if (newslist.hasOwnProperty('status')){
|
||||
Helperjs.showMessage(qsTr("JSON status 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" || api=="/api/direct_messages/conversation"){
|
||||
|
||||
if (!(Array.isArray(newslist)) && (typeof(newslist)==='object')){//answers return object, not array
|
||||
newslist=[];newslist.push(JSON.parse(data));
|
||||
}
|
||||
|
||||
if (api=="/api/direct_messages/all" || api=="/api/direct_messages/conversation" ||api=="/api/direct_messages/new"){
|
||||
for (var n in newslist){
|
||||
newslist[n].created_at=Date.parse(Newsjs.cleanDate(newslist[n].created_at));
|
||||
try{newslist[n].created_at=Date.parse(Newsjs.cleanDate(newslist[n].created_at));}catch(e){
|
||||
newslist[n].created_at=Date.parse(newslist[n].created_at)
|
||||
}
|
||||
newslist[n].messagetype=1;
|
||||
newslist[n].source=" Friendica";
|
||||
newslist[n].status_id=newslist[n].id;
|
||||
|
@ -486,7 +488,7 @@ function processNews(api,data){
|
|||
newslist[n].in_reply_to_user_id=newslist[n].recipient_id
|
||||
if(newslist[n].in_reply_to_user_id){newslist[n].reply_user=Newsjs.objFromArray(allcontacts,"id",newslist[n].in_reply_to_user_id)}
|
||||
}}
|
||||
else if (api=="/api/friendica/notifications"){
|
||||
else if (api=="/api/friendica/notification"){
|
||||
for (var n in newslist){
|
||||
newslist[n].created_at=Date.parse(newslist[n].date);
|
||||
newslist[n].messagetype=2;
|
||||
|
@ -502,38 +504,42 @@ function processNews(api,data){
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
else {//if(api!="/api/statuses/user_timeline"){
|
||||
var chatlist=[];
|
||||
var chatlistclean=[];
|
||||
var conversationIds=[];
|
||||
var commentCount=[];
|
||||
|
||||
for (var n in newslist){
|
||||
if (newslist[n]!=null){
|
||||
newslist[n].created_at=Date.parse(Newsjs.cleanDate(newslist[n].created_at));
|
||||
newslist[n].messagetype=5;
|
||||
newslist[n].status_id=newslist[n].id;
|
||||
if (api=="/api/statuses/replies"){newslist[n].messagetype=3}else{newslist[n].messagetype=0;}
|
||||
newslist[n].friendica_author=cleanUser(newslist[n].friendica_author);
|
||||
newslist[n].user=cleanUser(newslist[n].user);
|
||||
if (newslist[n].friendica_title!="") {newslist[n].statusnet_html="<b>"+newslist[n].friendica_title +"</b><br><br>"+newslist[n].friendica_html;}
|
||||
else{newslist[n].statusnet_html=newslist[n].friendica_html}
|
||||
//if (newslist[n].friendica_title!="") {newslist[n].statusnet_html="<b>"+newslist[n].friendica_title +"</b><br><br>"+newslist[n].friendica_html;}
|
||||
//else{ //friendica_title also included in html
|
||||
newslist[n].statusnet_html=newslist[n].friendica_html
|
||||
//}
|
||||
|
||||
if(newslist[n].in_reply_to_user_id){newslist[n].reply_user=Newsjs.objFromArray(allcontacts,"id",newslist[n].in_reply_to_user_id)}
|
||||
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]);
|
||||
}
|
||||
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]);
|
||||
}
|
||||
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]);
|
||||
}
|
||||
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]);
|
||||
}
|
||||
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]);
|
||||
}
|
||||
newslist[n].friendica_activities.attendmaybe[r]=cleanUser(newslist[n].friendica_activities.attendmaybe[r]);
|
||||
}
|
||||
}
|
||||
if(!(newslist[n].hasOwnProperty('friendica_author'))){
|
||||
newslist[n].friendica_author=newslist[n].user
|
||||
|
@ -542,29 +548,50 @@ function processNews(api,data){
|
|||
|
||||
//fill chatlist
|
||||
if (conversationindex==-1){
|
||||
chatlist.push(newslist[n]);
|
||||
let conversation=[];conversation.push(newslist[n]);
|
||||
let firstmessage={currentconversation:conversation};
|
||||
chatlist.push(firstmessage);
|
||||
conversationIds.push(newslist[n].statusnet_conversation_id);
|
||||
commentCount.push(1);
|
||||
} else{
|
||||
commentCount[conversationindex]=commentCount[conversationindex]+1;
|
||||
chatlist[conversationindex]=newslist[n];
|
||||
chatlist[conversationindex].currentconversation.push(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)}
|
||||
if ((newstab.newstabstatus=="Conversations")&&!(api=="/api/conversation/show"|| api=="/api/direct_messages/conversation")){
|
||||
//enrich chatlist with old entries
|
||||
for (var count in chatlist){
|
||||
chatlist[count].currentconversation.reverse();
|
||||
if (chatlist[count].currentconversation[0].id_str!==chatlist[count].currentconversation[0].statusnet_conversation_id){
|
||||
try{
|
||||
Newsjs.oldchatfromdb(db,login.username,chatlist[count].currentconversation[0].statusnet_conversation_id,chatlist[count].currentconversation[0].id,allcontacts,function(oldpost,oldcount){
|
||||
let completeChat=oldpost.currentconversation.concat(chatlist[count].currentconversation);
|
||||
let newChat=completeChat[0];
|
||||
newChat.currentconversation=[];
|
||||
for (let c in completeChat){
|
||||
if (completeChat[c].status_id!=newChat.status_id){
|
||||
newChat["currentconversation"].push(completeChat[c])
|
||||
}
|
||||
}
|
||||
newChat.newscount=oldcount+commentCount[count];
|
||||
chatlistclean.push(newChat);
|
||||
})
|
||||
}catch(e){print(e)}
|
||||
}
|
||||
else{
|
||||
let newChat=chatlist[count].currentconversation[0];
|
||||
newChat["currentconversation"]=[];
|
||||
for (let c in chatlist[count].currentconversation){
|
||||
if (chatlist[count].currentconversation[c].status_id!=newChat.status_id){
|
||||
newChat["currentconversation"].push(chatlist[count].currentconversation[c])
|
||||
}
|
||||
}
|
||||
newChat.newscount=commentCount[count];
|
||||
chatlistclean.push(newChat);
|
||||
}
|
||||
}
|
||||
else{chatlist[count].newscount=commentCount[count]}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -575,8 +602,8 @@ function processNews(api,data){
|
|||
else if (api=="/api/statuses/user_timeline" || api=="/api/users/show"){
|
||||
root.contactposts=newslist
|
||||
}
|
||||
else if ((api!="/api/direct_messages/all")&&(api!="/api/friendica/notifications")&&(newstab.newstabstatus==="Conversations")){
|
||||
showNews(chatlist);root.news=newslist
|
||||
else if ((api!="/api/direct_messages/all")&&(api!="/api/friendica/notification")&&(api!="/api/direct_messages/new")&&(newstab.newstabstatus==="Conversations")){
|
||||
showNews(chatlistclean);root.news=newslist
|
||||
}
|
||||
else {
|
||||
showNews(newslist);root.news=newslist
|
||||
|
@ -585,7 +612,6 @@ function processNews(api,data){
|
|||
var newstabarray=["Conversations","Favorites","Timeline","DirectMessage","Replies"];
|
||||
if (newstabarray.indexOf(newstab.newstabstatus)>-1){contacttimer.start()}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -603,70 +629,70 @@ function updateView(viewtype){
|
|||
//newsBusy.running=true;
|
||||
//downloadNotice.text="xhr start "+Date.now()
|
||||
switch(viewtype){
|
||||
case "Conversations":
|
||||
Newsjs.getLastNews(login,db,function(lastnews){
|
||||
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,function(lastnews){
|
||||
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":
|
||||
case "Conversations":
|
||||
Newsjs.getLastNews(login,db,function(lastnews){
|
||||
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.setApi("/api/statuses/friends_timeline");
|
||||
xhr.clearParams();
|
||||
break;
|
||||
case "Direct Messages":
|
||||
xhr.setParam("since_id",lastnews);
|
||||
xhr.setParam("count",50)});
|
||||
break;
|
||||
case "Timeline":
|
||||
var lastnews=Newsjs.getLastNews(login,db,function(lastnews){
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setApi("/api/direct_messages/all");
|
||||
xhr.setApi("/api/statuses/friends_timeline");
|
||||
xhr.clearParams();
|
||||
break;
|
||||
case "Public Timeline":
|
||||
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/notification");
|
||||
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;
|
||||
case "Replies":
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setApi("/api/statuses/replies");
|
||||
xhr.clearParams();
|
||||
break;
|
||||
default:
|
||||
Newsjs.getLastNews(login,db,function(lastnews){
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setApi("/api/statuses/public_timeline");
|
||||
xhr.setApi("/api/statuses/friends_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;
|
||||
case "Replies":
|
||||
xhr.setLogin(login.username+":"+Qt.atob(login.password));
|
||||
xhr.setUrl(login.server);
|
||||
xhr.setApi("/api/statuses/replies");
|
||||
xhr.clearParams();
|
||||
break;
|
||||
default:
|
||||
Newsjs.getLastNews(login,db,function(lastnews){
|
||||
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.setParam("since_id",lastnews);
|
||||
xhr.setParam("count",50)
|
||||
newstab.newstabstatus="Conversations";
|
||||
});
|
||||
}
|
||||
|
||||
xhr.get();
|
||||
|
@ -682,12 +708,12 @@ function updateView(viewtype){
|
|||
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 2.12; import 'qrc:/js/service.js' as Service; Menu {"+groupitems+"}";
|
||||
var grouplistObject=Qt.createQmlObject(menuString,newsStack,"groupmenuOutput");
|
||||
grouplistObject.popup()
|
||||
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 2.12; import 'qrc:/js/service.js' as Service; Menu {"+groupitems+"}";
|
||||
var grouplistObject=Qt.createQmlObject(menuString,newsStack,"groupmenuOutput");
|
||||
grouplistObject.popup()
|
||||
})
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue