//Integrated TL function mixtl(acct_id, tlid, type,delc,voice) { console.log(delc); localStorage.removeItem("morelock") localStorage.setItem("now", type); todo("Integrated TL Loading...(Local)"); //まずLocal var domain = localStorage.getItem("domain_" + acct_id); var at = localStorage.getItem("acct_"+ acct_id + "_at"); var start = "https://" + domain + "/api/v1/timelines/public?local=true"; fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, }).then(function(response) { return response.json(); }).catch(function(error) { todo(error); console.error(error); }).then(function(jsonL) { var start = "https://" + domain + "/api/v1/timelines/home"; fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, }).then(function(response) { return response.json(); }).catch(function(error) { todo(error); console.error(error); }).then(function(jsonH) { var homearr=[]; var timeline = jsonL.concat(jsonH); timeline.sort(function(a,b){ if(date(a.created_at,"unix")>=date(b.created_at,"unix")) return -1; if(date(a.created_at,"unix")<date(b.created_at,"unix")) return 1; return 0; }); if(type=="integrated"){ timeline.splice(20); } var templete=""; Object.keys(timeline).forEach(function(key) { var pkey=key*1+1; if(pkey<timeline.length){ if(date(timeline[key].created_at,"unix")!=date(timeline[pkey].created_at,"unix")){ if(localStorage.getItem("filter_"+ acct_id)!="undefined"){ var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"mix"); }else{ var mute=[]; } if(type=="integrated"){ templete = templete+parse([timeline[key]], '', acct_id, tlid, "", mute); }else if(type=="plus"){ if(timeline[key].account.acct==timeline[key].account.username){ templete = templete+parse([timeline[key]], '', acct_id, tlid, "", mute); } } } } }); $("#landing_" + tlid).hide(); $("#timeline_" + tlid).html(templete); mixre(acct_id, tlid, type, mute,delc,voice); additional(acct_id, tlid); jQuery("time.timeago").timeago(); todc(); }); }); } //Streamingに接続 function mixre(acct_id, tlid, TLtype, mute,delc,voice,mode) { var domain = localStorage.getItem("domain_" + acct_id); var at = localStorage.getItem("acct_"+ acct_id + "_at"); if(localStorage.getItem("streaming_" + acct_id)){ var wss=localStorage.getItem("streaming_" + acct_id) }else{ var wss="wss://"+domain } var startHome = wss+ "/api/v1/streaming/?stream=user&access_token=" + at; var startLocal = wss+ "/api/v1/streaming/?stream=public:local&access_token=" + at; var wshid = websocketHome.length; var wslid = websocketLocal.length; websocketHome[wshid] = new WebSocket(startHome); websocketLocal[wslid] = new WebSocket(startLocal); websocketHome[wshid].onopen = function(mess) { localStorage.setItem("wssH_" + tlid, wshid); console.log("Connect Streaming API(Integrated:Home)"); $("#notice_icon_" + tlid).removeClass("red-text"); } websocketLocal[wslid].onopen = function(mess) { localStorage.setItem("wssL_" + tlid, wslid); console.log("Connect Streaming API(Integrated:Local)"); $("#notice_icon_" + tlid).removeClass("red-text"); } websocketLocal[wslid].onmessage = function(mess) { console.log("Receive Streaming API:(Integrated:Local)"); var obj = JSON.parse(JSON.parse(mess.data).payload); console.log(obj); var type = JSON.parse(mess.data).event; if (type == "delete") { if(delc=="true"){ $("#timeline_"+tlid+" [toot-id=" + JSON.parse(mess.data).payload + "]").addClass("emphasized"); $("#timeline_"+tlid+" [toot-id=" + JSON.parse(mess.data).payload + "]").addClass("by_delcatch"); }else{ $("[toot-id=" + JSON.parse(mess.data).payload + "]").hide(); $("[toot-id=" + JSON.parse(mess.data).payload + "]").remove(); } } else if (type == "update") { var templete = parse([obj], '', acct_id, tlid,"",mute); if($("#timeline_" + tlid +" [toot-id=" + obj.id + "]").length < 1){ if(voice){ say(obj.content) } var templete = parse([obj], type, acct_id, tlid,"",mute); var pool = localStorage.getItem("pool_" + tlid); if (pool) { pool = templete + pool; } else { pool = templete } localStorage.setItem("pool_" + tlid, pool); scrollck(); additional(acct_id, tlid); jQuery("time.timeago").timeago(); }else{ todo("二重取得発生中"); } } } websocketHome[wshid].onmessage = function(mess) { console.log("Receive Streaming API:(Integrated:Home)"); var obj = JSON.parse(JSON.parse(mess.data).payload); console.log(obj); var type = JSON.parse(mess.data).event; if (type == "delete") { if(del>10){ reconnector(tlid,type,acct_id,data) }else{ localStorage.setItem("delete",del*1+1) } if(delc=="true"){ $("[toot-id=" + JSON.parse(mess.data).payload + "]").addClass("emphasized"); $("[toot-id=" + JSON.parse(mess.data).payload + "]").addClass("by_delcatch"); }else{ $("[toot-id=" + JSON.parse(mess.data).payload + "]").hide(); $("[toot-id=" + JSON.parse(mess.data).payload + "]").remove(); } } else if (type == "update") { localStorage.removeItem("delete"); if(TLtype=="integrated"){ var templete = parse([obj], '', acct_id, tlid); }else if(TLtype=="plus"){ if(obj.account.acct==obj.account.username){ var templete = parse([obj], '', acct_id, tlid,"",mute); }else{ var templete=""; } } if($("#timeline_" + tlid +" [toot-id=" + obj.id + "]").length < 1){ if(voice){ say(obj.content) } var templete = parse([obj], type, acct_id, tlid,"",mute); var pool = localStorage.getItem("pool_" + tlid); if (pool) { pool = templete + pool; } else { pool = templete } localStorage.setItem("pool_" + tlid, pool); scrollck(); additional(acct_id, tlid); jQuery("time.timeago").timeago(); }else{ todo("二重取得発生中"); } } } websocketLocal[wslid].onerror = function(error) { console.error('WebSocket Error ' + error); if(mode=="error"){ $("#notice_icon_" + tlid).addClass("red-text"); todo('WebSocket Error ' + error); }else{ reconnector(tlid,TLtype,acct_id,"","error"); } }; websocketLocal[wslid].onclose = function() { console.error('WebSocketLocal Closing by error:' + tlid); if(mode=="error"){ $("#notice_icon_" + tlid).addClass("red-text"); todo('WebSocket Closed'); }else{ reconnector(tlid,TLtype,acct_id,"","error"); } }; websocketHome[wshid].onerror = function(error) { console.error('WebSocket Error ' + error); if(mode=="error"){ $("#notice_icon_" + tlid).addClass("red-text"); todo('WebSocket Error ' + error); }else{ reconnector(tlid,TLtype,acct_id,"","error"); } }; websocketHome[wshid].onclose = function() { console.error('WebSocketHome Closing by error:' + tlid); if(mode=="error"){ $("#notice_icon_" + tlid).addClass("red-text"); todo('WebSocket Closed'); }else{ reconnector(tlid,TLtype,acct_id,"","error"); } }; } //ある程度のスクロールで発火 function mixmore(tlid,type) { var multi = localStorage.getItem("column"); var obj = JSON.parse(multi); var acct_id = obj[tlid].domain; todo("Integrated TL MoreLoading...(Local)"); var domain = localStorage.getItem("domain_" + acct_id); var at = localStorage.getItem("acct_"+ acct_id + "_at"); var sid = $("#timeline_" + tlid + " .cvo").last().attr("unique-id"); var start = "https://" + domain + "/api/v1/timelines/public?local=true&max_id="+sid; fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, }).then(function(response) { return response.json(); }).catch(function(error) { todo(error); console.error(error); }).then(function(jsonL) { var start = "https://" + domain + "/api/v1/timelines/home?max_id="+sid; fetch(start, { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + at }, }).then(function(response) { return response.json(); }).catch(function(error) { todo(error); console.error(error); }).then(function(jsonH) { var homearr=[]; var timeline = jsonL.concat(jsonH); timeline.sort(function(a,b){ if(date(a.created_at,"unix")>date(b.created_at,"unix")) return -1; if(date(a.created_at,"unix")<date(b.created_at,"unix")) return 1; return 0; }); timeline.splice(20); var templete=""; Object.keys(timeline).forEach(function(key) { var pkey=key*1+1; if(pkey<20){ if(date(timeline[key].created_at,"unix")!=date(timeline[pkey].created_at,"unix")){ if(localStorage.getItem("filter_"+ acct_id)!="undefined"){ var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"mix"); }else{ var mute=[]; } if(type=="integrated"){ templete = templete+parse([timeline[key]], '', acct_id, tlid,"",mute); }else if(type=="plus"){ if(timeline[key].account.acct==timeline[key].account.username){ templete = templete+parse([timeline[key]], '', acct_id, tlid,"",mute); } } } } }); $("#timeline_" + tlid).append(templete); mixre(acct_id, tlid); additional(acct_id, tlid); jQuery("time.timeago").timeago(); todc(); }); }); }