// This file is part of Friendiqa // https://git.friendi.ca/lubuwest/Friendiqa // Copyright (C) 2020 Marco R. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // In addition, as a special exception, the copyright holders give // permission to link the code of portions of this program with the // OpenSSL library under certain conditions as described in each // individual source file, and distribute linked combinations including // the two. // // You must obey the GNU General Public License in all respects for all // of the code used other than OpenSSL. If you modify file(s) with this // exception, you may extend this exception to your version of the // file(s), but you are not obligated to do so. If you do not wish to do // so, delete this exception statement from your version. If you delete // this exception statement from all source files in the program, then // also delete it here. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . function findend (text, startpos) { var indexOf = text.substring(startpos || 0).search(/\s/); return (indexOf >= 0) ? (indexOf + (startpos || 0)) : text.length; } function beautify(newsitemobject,msg){ var forumname=""; try{ if (newsitemobject.messagetype==0&&newsitemobject.hasOwnProperty('friendica_author')&& ((newsitemobject.friendica_author.url)!=(newsitemobject.user.url))&&((newsitemobject.friendica_author.url)!=null)){ //print(" Friendica Author "+JSON.stringify(newsitemobject)); forumname=" via "+newsitemobject.user.name; newsitemobject.user=newsitemobject.friendica_author; } if (typeof(newsitemobject.friendica_activities_self)=="string"){ newsitemobject.friendica_activities_self=JSON.parse(newsitemobject.friendica_activities_self); } }catch(e){print("forum name "+e)} var 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} } var friendica_activities={self:self} var attachmentList=[]; var videoformats=["mp4", "avi", "webm","ogg","mp3"] try{if(newsitemobject.attachments){ var attachArray=newsitemobject.attachments; for (var image in attachArray){ var attachhelper={mimetype:attachArray[image].mimetype} var attachhelperstring=Qt.btoa(attachArray[image].url) var helperstringposition=newsitemobject.statusnet_html.indexOf(attachhelperstring); if (helperstringposition>-1){attachhelper.url=newsitemobject.statusnet_html.substring(newsitemobject.statusnet_html.lastIndexOf("http",helperstringposition),helperstringposition+attachhelperstring.length); if (attachArray[image].mimetype=="image/jpeg"){attachhelper.url=attachhelper.url+".jpg"} else if (attachArray[image].mimetype=="image/gif"){attachhelper.url=attachhelper.url+".gif"} else if (attachArray[image].mimetype=="image/png"){attachhelper.url=attachhelper.url+".png"} } else {attachhelper.url=attachArray[image].url} attachmentList.push(attachhelper) //print("Attachhelper "+attachhelper.url) newsitemobject.statusnet_html=newsitemobject.statusnet_html.replace(attachhelper.url,"") newsitemobject.statusnet_html=newsitemobject.statusnet_html.replace(attachhelper.url.substring(0,attachhelper.url.length-4)+".jpeg","") newsitemobject.statusnet_html=newsitemobject.statusnet_html.replace(attachhelper.url.substring(0,attachhelper.url.length-4),"") } } }catch(e){print("attachment "+e)} for (var format in videoformats){ if (newsitemobject.text.indexOf("."+videoformats[format])>-1){ var videohelper={mimetype:"video/"+videoformats[format]} var videotext=newsitemobject.text; while (videotext.indexOf("."+videoformats[format])>-1){ var videohelperstringposition=videotext.indexOf("."+videoformats[format]); videohelper.url=videotext.substring(videotext.lastIndexOf("http",videohelperstringposition),videohelperstringposition+4); videotext=videotext.substring(videohelperstringposition+4,videotext.length) if ((attachmentList.length==0) || (attachmentList[attachmentList.length-1].url!=videohelper.url)){attachmentList.push(videohelper)} } } } if (newsitemobject.text.indexOf("/videos/watch/")>-1){ var ptvideohelper={mimetype:"video/mp4"} var ptvideotext=newsitemobject.text; while (ptvideotext.indexOf("/videos/watch/")>-1){ var ptvideohelperstringposition=ptvideotext.indexOf("/videos/watch/"); var ptposend=findend(ptvideotext,ptvideohelperstringposition); if(ptposend==-1){ptposend=ptvideotext.length}; ptvideohelper.url=ptvideotext.substring(ptvideotext.lastIndexOf("http",ptvideohelperstringposition),ptposend)+"-480.mp4"; ptvideohelper.url=ptvideohelper.url.replace("/videos/watch","/static/webseed"); ptvideotext=ptvideotext.substring(ptposend,ptvideotext.length) if ((attachmentList.length==0) || (attachmentList[attachmentList.length-1].url!=ptvideohelper.url)){attachmentList.push(ptvideohelper)} } } if (newsitemobject.text.indexOf("youtube.com/watch?v")>-1){ var yttext=newsitemobject.text; while (yttext.indexOf("youtube.com/watch?v")>-1){ var ythelperstringposition=yttext.indexOf("watch?v="); var ytposend=findend(yttext,ythelperstringposition); var ythelper={mimetype:"video/youtube"} ythelper.url=yttext.substring(ythelperstringposition+8,ytposend); yttext=yttext.substring(ytposend,yttext.length); if ((attachmentList.length==0) || (attachmentList[attachmentList.length-1].url!=ythelper.url)){attachmentList.push(ythelper)} } } newsitemobject.attachmentList=attachmentList; if ((msg.options.hasOwnProperty("hide_nsfw"))&&(msg.options.hide_nsfw==1)&&(newsitemobject.text.indexOf("#nsfw")>-1)){ newsitemobject.nsfw=true } else{newsitemobject.nsfw=false} newsitemobject.dateDiff=(msg.currentTime-newsitemobject.created_at)/1000; newsitemobject.friendica_activities_view=friendica_activities; newsitemobject.forumname=forumname; return newsitemobject; } WorkerScript.onMessage = function(msg) { if(msg.deleteId!==undefined) {msg.model.remove(msg.deleteId); msg.model.sync() } else{ if(msg.method=="refresh" ||msg.method=="conversation"){msg.model.clear()}; msg.model.sync() for (var j=0;j1)){ newsitemobject.lastcomment=beautify(newsitemobject.currentconversation[newsitemobject.currentconversation.length-1],msg); //print("Currentconversation" + newsitemobject.currentconversation.length+JSON.stringify(newsitemobject.lastcomment)) } if (msg.method=="conversation"){ if (j==0){newsitemobject.indent=0}else{ for (var k=msg.model.count-1;k>-1;k--){ if (newsitemobject.in_reply_to_status_id==msg.model.get(k).newsitemobject.id){ newsitemobject.indent=msg.model.get(k).newsitemobject.indent+1; if (newsitemobject.indent>6){newsitemobject.indent=6}; break} } }} var data=({"newsitemobject": newsitemobject}) } if(msg.method=="append") { msg.model.insert(j, data)} else{ msg.model.append(data) } } if (j==msg.news.length){ msg.model.sync() } } }