//  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
//  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 <http://www.gnu.org/licenses/>.

WorkerScript.onMessage = function(msg) {
if(msg.deleteId!==undefined)
    {msg.model.remove(msg.deleteId);
     msg.model.sync()
}
else{
 if(msg.appendnews!==true){msg.model.clear()};
        msg.model.sync()
 for (var j=0;j<msg.news.length;j++){
    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))){
            //print(newsitemobject.friendica_owner+" Friendica Owner "+JSON.stringify(newsitemobject));
            forumname=" via "+Qt.atob(newsitemobject.friendica_owner_object.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.")}
           }
           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.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.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.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.")}
           }
           //var friendica_activities_self=JSON.parse(newsitemobject.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)}
        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));
            for (var image in attachArray){if(attachArray[image].mimetype=="image/gif"){
                attachmentList.push(attachArray[image])
                }
            }
        }}catch(e){print("attachment "+e)}
        newsitemobject.attachmentList=attachmentList;
        var seconds=(msg.currentTime-newsitemobject.created_at)/1000;
        var timestring="";
        if (seconds<60) {timestring=seconds+" "+qsTr("seconds") +" "+qsTr("ago");}
        else if (seconds<90){timestring=Math.round(seconds/60)+" "+qsTr("minute") +" "+qsTr("ago");}
        else if (seconds<3600){timestring=Math.round(seconds/60)+" "+qsTr("minutes") +" "+qsTr("ago");}
        else if (seconds<5400){timestring=Math.round(seconds/3600)+" "+qsTr("hour") +" "+qsTr("ago");}
        else if (seconds<86400){timestring=Math.round(seconds/3600)+" "+qsTr("hours") +" "+qsTr("ago");}
        else if (seconds<129600){timestring=Math.round(seconds/86400)+" "+qsTr("day") +" "+qsTr("ago");}
        else if (seconds<3888000){timestring=Math.round(seconds/86400)+" "+qsTr("days") +" "+qsTr("ago");}
        else if (seconds<5832000){timestring=Math.round(seconds/3888000)+" "+qsTr("month") +" "+qsTr("ago");}
        else if (seconds<69984000){timestring=Math.round(seconds/3888000)+" "+qsTr("months") +" "+qsTr("ago");}
        else {timestring=Math.round(seconds/46656000)+" "+qsTr("years") +" "+qsTr("ago");}

        var data=({"newsitemobject": newsitemobject,"dateDiff":timestring,"friendica_activities":friendica_activities,"forumname":forumname})}
        //print("News:"+j+msg.news.length+JSON.stringify(data));
        msg.model.append(data)
    }
    
    if (j==msg.news.length){
        //print("j: "+j+" msg.model.count: "+msg.model.count);
        msg.model.sync()
}
}
}