2016-10-19 21:37:26 +02:00
. pragma library
. import QtQuick . LocalStorage 2.0 as Sql
. import "qrc:/js/helper.js" as Helperjs
function requestFriends ( login , database , rootwindow , callback ) {
// return array of friends
Helperjs . friendicaRequest ( login , "/api/statuses/friends" , rootwindow , function ( obj ) {
var friends = JSON . parse ( obj ) ;
for ( var i = 0 ; i < friends . length ; i ++ ) { friends [ i ] . isFriend = 1 }
callback ( friends )
} ) ;
}
function requestGroups ( login , database , rootwindow , callback ) {
// retrieve, save and return groups, currently not implemented
var db = Sql . LocalStorage . openDatabaseSync ( database [ 0 ] , database [ 1 ] , database [ 2 ] , database [ 3 ] ) ;
Helperjs . friendicaRequest ( login , "/api/friendica/group_show" , rootwindow , function ( obj ) {
var groups = JSON . parse ( obj ) ;
for ( var i = 0 ; i < groups . length ; i ++ ) {
var memberarray = [ ] ; for ( var user in groups [ i ] . user ) { memberarray . push ( parseInt ( groups [ i ] . user [ user ] . id ) ) }
//print("Members: "+groups[i].user)
//updateGroupInDB(login,database,groups[i])
db . transaction ( function ( tx ) {
var result = tx . executeSql ( 'SELECT * from groups where username="' + login . username + '" AND gid = "' + groups [ i ] . gid + '"' ) ; // check for group id
if ( result . rows . length === 1 ) { // use update
print ( groups [ i ] . gid + ' exists, update it' )
result = tx . executeSql ( 'UPDATE groups SET username="' + login . username + '", groupname="' + groups [ i ] . name + '", members="' + JSON . stringify ( memberarray ) + '"' ) ;
} else { // use insert
result = tx . executeSql ( 'INSERT INTO groups VALUES (?,?,?,?)' , [ login . username , groups [ i ] . name , groups [ i ] . gid , JSON . stringify ( memberarray ) ] ) }
} ) ;
}
//Helperjs.readData(database,"groups",login.username,callback)
callback ( )
} ) ; }
function getFriendsTimeline ( login , database , contacts , rootwindow , callback ) { // retrieve and return timeline since last news, return contacts which are not friends for update (friends can be updated in Friendstab)
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 + '" ORDER BY status_id DESC LIMIT 1' ) ; // check for last news id
try { parameter = "&since_id=" + result . rows . item ( 0 ) . status _id ; } catch ( e ) { } ; } )
var newContacts = [ ] ;
2016-11-14 13:28:23 +01:00
//print(JSON.stringify("Contacts "+contacts));
2016-10-19 21:37:26 +02:00
Helperjs . friendicaRequest ( login , "/api/statuses/friends_timeline" + parameter , rootwindow , function ( obj ) {
var news = JSON . parse ( obj ) ;
2016-11-14 13:28:23 +01:00
var newContacts = findNewContacts ( news , contacts ) ;
2016-12-04 18:28:52 +01:00
callback ( news , newContacts )
2016-11-14 13:28:23 +01:00
} ) }
function findNewContacts ( news , contacts ) {
var newContacts = [ ] ;
for ( var i = 0 ; i < news . length ; i ++ ) {
if ( contacts . indexOf ( news [ i ] . user . id ) == - 1 && ! ( inArray ( newContacts , "id" , news [ i ] . user . id ) ) ) {
news [ i ] . user . isFriend = 0 ;
newContacts . push ( news [ i ] . user ) ;
}
if ( news [ i ] . friendica _activities . like . length > 0 ) {
// print("Like Contact"+JSON.stringify(news[i].friendica_activities.like));
for ( var j = 0 ; j < news [ i ] . friendica _activities . like . length ; j ++ ) {
if ( contacts . indexOf ( news [ i ] . friendica _activities . like [ j ] . id ) == - 1 && ! ( inArray ( newContacts , "id" , news [ i ] . friendica _activities . like [ j ] . id ) ) ) {
news [ i ] . friendica _activities . like [ j ] . isFriend = 0 ;
newContacts . push ( news [ i ] . friendica _activities . like [ j ] ) ;
2016-10-19 21:37:26 +02:00
}
}
2016-11-14 13:28:23 +01:00
}
if ( news [ i ] . friendica _activities . dislike . length > 0 ) {
//print("DisLike Contact"+JSON.stringify(news[i].friendica_activities.dislike));
for ( var k = 0 ; j < news [ k ] . friendica _activities . dislike . length ; k ++ ) {
if ( contacts . indexOf ( news [ i ] . friendica _activities . dislike [ k ] . id ) == - 1 && ! ( inArray ( newContacts , "id" , news [ i ] . friendica _activties . dislike [ k ] . id ) ) ) {
news [ i ] . friendica _activities . dislike [ k ] . isFriend = 0 ;
newContacts . push ( news [ i ] . friendica _activities . dislike [ k ] ) ;
2016-10-19 21:37:26 +02:00
}
}
2016-11-14 13:28:23 +01:00
}
}
return newContacts
}
2016-10-19 21:37:26 +02:00
function storeNews ( login , database , news , rootwindow , callback ) {
// 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 ++ ) {
2016-12-04 18:28:52 +01:00
//print('store news data for ' + news[i].id+JSON.stringify(news[i].friendica_activities));
2016-10-19 21:37:26 +02:00
var ausdruck = news [ i ] ;
var likearray = [ ] ; for ( var user in news [ i ] . friendica _activities . like ) { likearray . push ( parseInt ( news [ i ] . friendica _activities . like [ user ] . id ) ) }
var dislikearray = [ ] ; for ( var user in news [ i ] . friendica _activities . dislike ) { parseInt ( news [ i ] . friendica _activities . dislike [ user ] . id ) }
var attendyesarray = [ ] ; for ( var user in news [ i ] . friendica _activities . attendyes ) { attendyesarray . push ( parseInt ( news [ i ] . friendica _activities . attendyes [ user ] . id ) ) }
var attendnoarray = [ ] ; for ( var user in news [ i ] . friendica _activities . attendno ) { attendnoarray . push ( parseInt ( news [ i ] . friendica _activities . attendno [ user ] . id ) ) }
var attendmaybearray = [ ] ; for ( var user in news [ i ] . friendica _activities . attendmaybe ) { attendmaybearray . push ( parseInt ( news [ i ] . friendica _activities . attendmaybe [ user ] . id ) ) }
2016-11-14 13:28:23 +01:00
var friendica _activities = [ likearray , dislikearray , attendyesarray , attendnoarray , attendmaybearray ]
2016-10-19 21:37:26 +02:00
db . transaction ( function ( tx ) {
2016-12-04 18:28:52 +01:00
var result = tx . executeSql ( 'SELECT * from news where username="' + login . username + '" AND status_id = "' + news [ i ] . id + '" AND messagetype=0' ) ; // check for news id
2016-10-19 21:37:26 +02:00
if ( result . rows . length === 1 ) { // use update
print ( news [ i ] . id + ' exists, update it' )
2016-12-04 18:28:52 +01:00
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="' + JSON . stringify ( friendica _activities ) + '" where username="' + login . username + '" AND status_id="' + news [ i ] . status _id + '" AND messagetype=0' ) ;
2016-10-19 21:37:26 +02:00
} else { // use insert
2016-11-14 13:28:23 +01:00
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) 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 , JSON . stringify ( friendica _activities ) , "[]" ] ) } } )
2016-10-19 21:37:26 +02:00
}
getDirectMessage ( login , database , rootwindow , callback )
}
function getDirectMessage ( login , database , rootwindow , callback ) {
var db = Sql . LocalStorage . openDatabaseSync ( database [ 0 ] , database [ 1 ] , database [ 2 ] , database [ 3 ] ) ;
Helperjs . friendicaRequest ( login , "/api/direct_messages/all" , rootwindow , function ( obj ) {
var messages = JSON . parse ( obj ) ;
for ( var i = 0 ; i < messages . length ; i ++ ) {
2016-12-04 18:28:52 +01:00
//print('store message data for '+JSON.stringify(messages[i]));
2016-10-19 21:37:26 +02:00
db . transaction ( function ( tx ) {
2016-12-04 18:28:52 +01:00
var result = tx . executeSql ( 'SELECT * from news where username= "' + login . username + '" AND status_id = "' + messages [ i ] . id + '" AND messagetype=1' ) ; // check for news id
2016-10-19 21:37:26 +02:00
if ( result . rows . length === 1 ) { // use update
print ( messages [ i ] . id + ' exists, update it' )
2016-12-04 18:28:52 +01:00
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 ) + '" where username="' + login . username + '" AND status_id="' + messages [ i ] . status _id + '" AND messagetype=1' ) ;
2016-10-19 21:37:26 +02:00
} else { // use insert
2016-12-04 18:28:52 +01:00
result = tx . executeSql ( 'INSERT INTO news (username,messagetype,text,created_at,source,status_id,uid,statusnet_html) 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 ) ] ) }
2016-10-19 21:37:26 +02:00
} ) ;
}
} )
getNotifications ( login , database , rootwindow , callback )
}
function getNotifications ( login , database , rootwindow , callback ) {
Helperjs . friendicaRequest ( login , "/api/friendica/notifications" , rootwindow , function ( obj ) {
var messages = JSON . parse ( obj ) ;
for ( var i = 0 ; i < messages . length ; i ++ ) {
var db = Sql . LocalStorage . openDatabaseSync ( database [ 0 ] , database [ 1 ] , database [ 2 ] , database [ 3 ] ) ;
//print('store message data for '+JSON.stringify(messages[i]));
db . transaction ( function ( tx ) {
2016-12-04 18:28:52 +01:00
var result = tx . executeSql ( 'SELECT * from news where username="' + login . username + '" AND status_id = "' + messages [ i ] . id + '" AND messagetype=2' ) ; // check for news id
2016-10-19 21:37:26 +02:00
if ( result . rows . length === 1 ) { // use update
print ( messages [ i ] . id + ' exists, update it' )
2016-12-04 18:28:52 +01:00
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' ) ;
2016-10-19 21:37:26 +02:00
} else { // use insert
2016-11-14 13:28:23 +01:00
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 ] ) }
2016-10-19 21:37:26 +02:00
} ) ;
}
} )
newsfromdb ( database , login . username , callback )
}
2016-11-14 13:28:23 +01:00
function getActivitiesUserData ( database , username , useridArray ) {
var helpArray = [ ] ;
for ( var i = 0 ; i < useridArray . length ; i ++ ) {
Helperjs . readData ( database , "contacts" , username , function ( userdata ) {
helpArray . push ( userdata [ 0 ] ) ;
} , "id" , useridArray [ i ] ) ;
}
return helpArray
}
2016-10-19 21:37:26 +02:00
function newsfromdb ( database , username , 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' ) ;
stop = "<=" + rs . rows . item ( 0 ) . created _at } catch ( e ) { stop = "<99999999999999" } }
else { var stop = "<" + stop _time }
var contactfilter = "" ; if ( contact ) { contactfilter = " AND uid='" + contact + "'" }
2016-11-14 13:28:23 +01:00
print ( 'select * from news WHERE username="' + username + '" AND created_at' + stop + contactfilter + ' ORDER BY created_at DESC LIMIT 20' ) ;
2016-10-19 21:37:26 +02:00
var newsrs = tx . executeSql ( 'select * from news WHERE username="' + username + '" AND created_at' + stop + contactfilter + ' ORDER BY created_at DESC LIMIT 20' ) ;
var newsArray = [ ] ;
for ( var i = 0 ; i < newsrs . rows . length ; i ++ ) {
newsArray . push ( newsrs . rows . item ( i ) ) ;
Helperjs . readData ( database , "contacts" , username , function ( userdata ) {
newsArray [ i ] . user = userdata [ 0 ] ;
} , "id" , newsArray [ i ] . uid ) ;
if ( newsArray [ i ] . in _reply _to _user _id ) {
Helperjs . readData ( database , "contacts" , username , function ( replytodata ) {
newsArray [ i ] . reply _user = replytodata [ 0 ] ;
} , "id" , newsArray [ i ] . in _reply _to _user _id ) ;
}
if ( newsArray [ i ] . messagetype == 0 ) {
2016-11-14 13:28:23 +01:00
for ( var j = 0 ; j < newsArray [ i ] . friendica _activities . length ; j ++ )
{ var friendicaArray = JSON . parse ( newsArray [ i ] . friendica _activities ) ;
// print("Array: "+friendicaArray[1]);
newsArray [ i ] . like = getActivitiesUserData ( database , username , friendicaArray [ 0 ] ) ;
newsArray [ i ] . dislike = getActivitiesUserData ( database , username , friendicaArray [ 1 ] ) ;
newsArray [ i ] . attendyes = getActivitiesUserData ( database , username , friendicaArray [ 2 ] ) ;
newsArray [ i ] . attendno = getActivitiesUserData ( database , username , friendicaArray [ 3 ] ) ;
newsArray [ i ] . attendmaybe = getActivitiesUserData ( database , username , friendicaArray [ 4 ] ) ;
}
2016-10-19 21:37:26 +02:00
}
}
callback ( newsArray ) } ) ;
}
2016-11-14 13:28:23 +01:00
function fetchUsersForNews ( database , username , news ) {
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 ( news . friendica _activities ) ;
// print("Array: "+friendicaArray[1]);
news . like = getActivitiesUserData ( database , username , friendicaArray [ 0 ] ) ;
news . dislike = getActivitiesUserData ( database , username , friendicaArray [ 1 ] ) ;
news . attendyes = getActivitiesUserData ( database , username , friendicaArray [ 2 ] ) ;
news . attendno = getActivitiesUserData ( database , username , friendicaArray [ 3 ] ) ;
news . attendmaybe = getActivitiesUserData ( database , username , friendicaArray [ 4 ] ) ;
}
}
return news
}
2016-12-04 18:28:52 +01:00
function deleteNews ( login , database , newsid , messagetype , rootwindow , callback ) {
var api = "" ;
if ( messagetype == 0 ) { api = "/api/statuses/destroy?id=" }
else if ( messagetype == 1 ) { api = "/api/direct_messages/destroy?id=" }
else if ( messagetype == 2 ) { api = "/api/friendica/notifications/seen?id=" }
Helperjs . friendicaPostRequest ( login , api + newsid , rootwindow , function ( obj ) {
2016-10-19 21:37:26 +02:00
print ( "Delete " + obj ) ;
var db = Sql . LocalStorage . openDatabaseSync ( database [ 0 ] , database [ 1 ] , database [ 2 ] , database [ 3 ] ) ;
print ( 'delete news data for ' + newsid ) ;
2016-12-04 18:28:52 +01:00
db . transaction ( function ( tx ) { var result = tx . executeSql ( 'DELETE from news where username="' + login . username + '" AND messagetype=' + messagetype + ' AND status_id =' + newsid ) ; // delete news id
Helperjs . showMessage ( "Delete" , obj , rootwindow ) ;
callback ( obj )
} ) ;
} ) }
2016-10-19 21:37:26 +02:00
function retweetNews ( login , database , newsid , rootwindow , callback ) {
Helperjs . friendicaRequest ( login , "/api/statuses/retweet?id=" + newsid , rootwindow , function ( obj ) {
var answer = JSON . parse ( obj ) ;
Helperjs . showMessage ( "Repost" , answer , rootwindow ) ;
} ) }
function favorite ( login , favorite , newsid , rootwindow ) {
// toggle favorites
if ( favorite ) { Helperjs . friendicaPostRequest ( login , "/api/favorites/create?id=" + newsid , rootwindow , function ( obj ) {
print ( "Favorite " + obj ) ;
} ) }
else { Helperjs . friendicaPostRequest ( login , "/api/favorites/destroy?id=" + newsid , rootwindow , function ( obj ) {
print ( "Favorite destroyed " + obj ) ;
} ) }
}
2016-11-14 13:28:23 +01:00
function likerequest ( login , database , verb , newsid , rootwindow ) {
2016-10-19 21:37:26 +02:00
Helperjs . friendicaPostRequest ( login , "/api/friendica/activity/" + verb + "?id=" + newsid , rootwindow , function ( obj ) {
if ( obj == '"ok"' ) {
var db = Sql . LocalStorage . openDatabaseSync ( database [ 0 ] , database [ 1 ] , database [ 2 ] , database [ 3 ] ) ;
2016-11-14 13:28:23 +01:00
db . transaction ( function ( tx ) {
var currentActivities _rs = tx . executeSql ( 'select friendica_activities_self from news WHERE username="' + login . username + '" AND status_id=' + newsid ) ;
var currentActivities = JSON . parse ( currentActivities _rs . rows . item ( 0 ) . friendica _activities _self ) ;
//print("currentActivities "+JSON.stringify(currentActivities));
if ( ( verb == "like" ) && ( currentActivities . indexOf ( 1 ) == - 1 ) ) { currentActivities . push ( 1 ) ;
currentActivities . splice ( currentActivities . indexOf ( 2 ) , 1 )
}
if ( ( verb == "dislike" ) && ( currentActivities . indexOf ( 2 ) == - 1 ) ) { currentActivities . push ( 2 ) ;
currentActivities . splice ( currentActivities . indexOf ( 1 ) , 1 )
}
if ( verb == "unlike" ) { try { currentActivities . splice ( currentActivities . indexOf ( 1 ) , 1 ) } catch ( e ) { } }
if ( verb == "undislike" ) { try { currentActivities . splice ( currentActivities . indexOf ( 2 ) , 1 ) } catch ( e ) { } }
var result = tx . executeSql ( 'UPDATE news SET friendica_activities_self ="' + JSON . stringify ( currentActivities ) + '" where username="' + login . username + '" AND status_id =' + newsid ) ;
} ) }
else { print ( "likerequest" + obj ) } } )
2016-10-19 21:37:26 +02:00
}
function like ( login , database , toggle , verb , newsid , rootwindow ) {
2016-11-14 13:28:23 +01:00
if ( verb == "like" && toggle == 1 ) { likerequest ( login , database , "like" , newsid , rootwindow ) ;
}
if ( verb == "dislike" && toggle == 1 ) { likerequest ( login , database , "dislike" , newsid , rootwindow ) ;
}
if ( toggle == 0 ) {
likerequest ( login , database , "un" + verb , newsid , rootwindow ) ; }
2016-10-19 21:37:26 +02:00
}
function attend ( login , database , attend , newsid , rootwindow , callback ) {
2016-11-14 13:28:23 +01:00
Helperjs . friendicaPostRequest ( login , "/api/friendica/activity/attend" + attend + "?id=" + newsid , rootwindow , function ( obj ) {
var attendReturn = JSON . parse ( obj ) ;
// print("attend: "+obj);
if ( attendReturn == "OK" )
{ var db = Sql . LocalStorage . openDatabaseSync ( database [ 0 ] , database [ 1 ] , database [ 2 ] , database [ 3 ] ) ;
db . transaction ( function ( tx ) {
var currentActivities _rs = tx . executeSql ( 'select friendica_activities_self from news WHERE username="' + login . username + '" AND status_id=' + newsid ) ;
var currentActivities = JSON . parse ( currentActivities _rs . rows . item ( 0 ) ) ;
print ( "currentActivities " + JSON . stringify ( currentActivities ) ) ;
if ( ( attend == "attendyes" ) && ( currentActivities . indexOf ( 3 ) == - 1 ) ) {
currentActivities . push ( 3 ) ;
currentActivities . splice ( currentActivities . indexOf ( 4 ) , 1 )
currentActivities . splice ( currentActivities . indexOf ( 5 ) , 1 )
}
if ( ( attend == "attendno" ) && ( currentActivities . indexOf ( 4 ) == - 1 ) ) {
currentActivities . push ( 4 ) ;
currentActivities . splice ( currentActivities . indexOf ( 3 ) , 1 )
currentActivities . splice ( currentActivities . indexOf ( 5 ) , 1 )
}
if ( ( attend == "attendmaybe" ) && ( currentActivities . indexOf ( 5 ) == - 1 ) ) {
currentActivities . push ( 5 ) ;
currentActivities . splice ( currentActivities . indexOf ( 3 ) , 1 )
currentActivities . splice ( currentActivities . indexOf ( 4 ) , 1 )
}
var result = tx . executeSql ( 'UPDATE news SET friendica_activities_self ="' + JSON . stringify ( currentActivities ) + '" where username="' + login . username + '" AND status_id =' + newsid ) ;
callback ( ) ;
2016-10-19 21:37:26 +02:00
} ) } } ) }
2016-11-14 13:28:23 +01:00
function requestConversation ( login , database , newsid , contacts , rootwindow , callback ) {
2016-10-19 21:37:26 +02:00
Helperjs . friendicaRequest ( login , "/api/conversation/show?id=" + newsid , rootwindow , function ( obj ) {
var news = JSON . parse ( obj ) ;
2016-11-14 13:28:23 +01:00
var newContacts = findNewContacts ( news , contacts ) ;
// storeNews(login,database,news,rootwindow,callback)
callback ( news , newContacts )
} ) }
2016-10-19 21:37:26 +02:00
function conversationfromdb ( database , user , conversationId , callback ) {
2016-11-14 13:28:23 +01:00
var db = Sql . LocalStorage . openDatabaseSync ( database [ 0 ] , database [ 1 ] , database [ 2 ] , database [ 3 ] ) ;
db . transaction ( function ( tx ) {
2016-10-19 21:37:26 +02:00
print ( 'select * from news WHERE statusnet_conversation_id=' + conversationId + ' ORDER BY status_id DESC' ) ;
2016-12-04 18:28:52 +01:00
var newsrs = tx . executeSql ( 'select * from news WHERE username="' + user + '" AND statusnet_conversation_id=' + conversationId + ' ORDER BY status_id DESC' ) ;
2016-11-14 13:28:23 +01:00
var newsArray = [ ] ;
for ( var i = 0 ; i < newsrs . rows . length ; i ++ ) {
newsArray . push ( newsrs . rows . item ( i ) ) ;
newsArray [ i ] = fetchUsersForNews ( database , user , newsArray [ i ] ) ;
2016-10-19 21:37:26 +02:00
callback ( newsArray ) ;
2016-11-14 13:28:23 +01:00
} } ) }
function requestFavorites ( login , database , rootwindow , callback ) {
Helperjs . friendicaRequest ( login , "/api/favorites" , rootwindow , function ( obj ) {
//print(obj+JSON.stringify(obj));
var news = JSON . parse ( obj ) ;
// storeNews(login,database,news,rootwindow,callback)
callback ( news )
} ) }
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 = [ ] ;
for ( var i = 0 ; i < newsrs . rows . length ; i ++ ) {
newsArray . push ( newsrs . rows . item ( i ) ) ;
newsArray [ i ] = fetchUsersForNews ( database , user , newsArray [ i ] ) ;
callback ( newsArray ) ;
} } ) }
2016-10-19 21:37:26 +02:00
function inArray ( list , prop , val ) {
if ( list . length > 0 ) {
for ( var i in list ) { if ( list [ i ] [ prop ] === val ) {
return true ;
}
}
} return false ;
}
function cleanDate ( date ) {
var cleanedDate = date . slice ( 0 , 3 ) + ", " + date . slice ( 8 , 11 ) + date . slice ( 4 , 7 ) + date . slice ( 25 , 30 ) + date . slice ( 10 , 25 ) ;
return cleanedDate
}