diff --git a/app/js/tl/directory.js b/app/js/tl/directory.js index 73679e1d..deab97c1 100644 --- a/app/js/tl/directory.js +++ b/app/js/tl/directory.js @@ -1,78 +1,96 @@ //ディレクトリ //ディレクトリトグル function dirMenu() { - $("#dir-contents").html("") - directory() - $("#left-menu a").removeClass("active") - $("#dirMenu").addClass("active") - $(".menu-content").addClass("hide") - $("#dir-box").removeClass("hide") + $('#dir-contents').html('') + directory('directory') + $('#left-menu a').removeClass('active') + $('#dirMenu').addClass('active') + $('.menu-content').addClass('hide') + $('#dir-box').removeClass('hide') } + function dirselCk() { - var acct = $("#dir-acct-sel").val() - if (acct == "noauth") { - $("#dirNoAuth").removeClass("hide") - } else { - $("#dirNoAuth").addClass("hide") - directory() - } + var acct = $('#dir-acct-sel').val() + if (acct == 'noauth') { + $('#dirNoAuth').removeClass('hide') + } else { + $('#dirNoAuth').addClass('hide') + directory('check') + } } -function directory(isMore) { - var order = $("[name=sort]:checked").val() - if (!order) { - order = "active" - } - var local_only = $("#local_only:checked").val() - if (local_only) { - local_only = "true" - } else { - local_only = "false" - } - var acct_id = $("#dir-acct-sel").val() - if (acct_id == "noauth") { - var domain = $("#dirNoAuth-url").val() - var at = "" - } else { - var domain = localStorage.getItem("domain_" + acct_id) - var at = localStorage.getItem("acct_" + acct_id + "_at") - } - if (isMore) { - var addOffset = $("#dir-contents .cvo").length - $("#dir-contents").append(`
`) - } else { - var addOffset = 0 - $("#dir-contents").html(`
`) - } - var start = "https://" + domain + "/api/v1/directory?order=" + order + "&local=" + local_only + "&offset=" + addOffset - console.log(start) - fetch(start, { - method: "GET", - headers: { - "content-type": "application/json", - Authorization: "Bearer " + at - } - }) - .then(function (response) { - $("#dir-contents .progress").remove() - if (!response.ok) { - response.text().then(function (text) { - setLog(response.url, response.status, text) - }) - } - return response.json() - }) - .catch(function (error) { - setLog(start, "JSON", error) - console.error(error) - }) - .then(function (json) { - if (json) { - $("#moreDir").removeClass("disabled") - var html = userparse(json, null, acct_id, "dir", null) - $("#dir-contents").append(html) - jQuery("time.timeago").timeago() - } else { - $("#moreDir").addClass("disabled") - } - }) + +function dirChange(mode) { + if (mode === 'directory') $('#directoryConfig').removeClass('hide') + if (mode === 'suggest') $('#directoryConfig').addClass('hide') + directory(mode) } + +function directory(modeRaw, isMore) { + const mode = modeRaw === 'check' ? $('[name=dirsug]:checked').val() : modeRaw + var order = $('[name=sort]:checked').val() + if (!order) { + order = 'active' + } + var local_only = $('#local_only:checked').val() + if (local_only) { + local_only = 'true' + } else { + local_only = 'false' + } + var acct_id = $('#dir-acct-sel').val() + if (acct_id == 'noauth') { + var domain = $('#dirNoAuth-url').val() + var at = '' + } else { + var domain = localStorage.getItem('domain_' + acct_id) + var at = localStorage.getItem('acct_' + acct_id + '_at') + } + if (isMore) { + var addOffset = $('#dir-contents .cvo').length + $('#dir-contents').append(`
`) + } else { + var addOffset = 0 + $('#dir-contents').html(`
`) + } + let start = `https://${domain}/api/v1/directory?order=${order}&local=${local_only}&offset=${addOffset}` + if (mode === 'suggest') start = `https://${domain}/api/v2/suggestions` + console.log(start) + fetch(start, { + method: 'GET', + headers: { + 'content-type': 'application/json', + Authorization: 'Bearer ' + at, + }, + }) + .then(function(response) { + $('#dir-contents .progress').remove() + if (!response.ok) { + $('#dir-contents').html(`v2 follow suggestion is supported by Mastodon 3.4.0 or above.`) + response.text().then(function(text) { + setLog(response.url, response.status, text) + }) + } + return response.json() + }) + .catch(function(error) { + setLog(start, 'JSON', error) + console.error(error) + }) + .then(function(json) { + if (json) { + $('#moreDir').removeClass('disabled') + let obj = [] + if (mode === 'suggest') { + $('#moreDir').addClass('disabled') + for (const suggest of json) obj.push(suggest.account) + } else { + obj = json + } + var html = userparse(obj, null, acct_id, 'dir', null) + $('#dir-contents').append(html) + jQuery('time.timeago').timeago() + } else { + $('#moreDir').addClass('disabled') + } + }) +} \ No newline at end of file diff --git a/app/js/tl/tl.js b/app/js/tl/tl.js index 63cbc24c..958d96a9 100644 --- a/app/js/tl/tl.js +++ b/app/js/tl/tl.js @@ -1,1491 +1,1497 @@ //TL取得 moreloading = false var errorct = 0 + function tl(type, data, acct_id, tlid, delc, voice, mode) { - scrollevent() - $('#unread_' + tlid + ' .material-icons').removeClass('teal-text') - localStorage.removeItem('pool') - var domain = localStorage.getItem('domain_' + acct_id) - //タグとかの場合はカラム追加して描画 - if (tlid == 'add') { - console.log('add new column') - var newtab = $('.box').length - if (type == 'tag') { - data = { - name: data, - any: [], - all: [], - none: [], - } - } - var add = { - domain: acct_id, - type: type, - data: data, - } - var multi = localStorage.getItem('column') - var obj = JSON.parse(multi) - localStorage.setItem('card_' + obj.length, 'true') - obj.push(add) - var json = JSON.stringify(obj) - localStorage.setItem('column', json) - parseColumn('add') - return - } + scrollevent() + $('#unread_' + tlid + ' .material-icons').removeClass('teal-text') + localStorage.removeItem('pool') + var domain = localStorage.getItem('domain_' + acct_id) + //タグとかの場合はカラム追加して描画 + if (tlid == 'add') { + console.log('add new column') + var newtab = $('.box').length + if (type == 'tag') { + data = { + name: data, + any: [], + all: [], + none: [], + } + } + var add = { + domain: acct_id, + type: type, + data: data, + } + var multi = localStorage.getItem('column') + var obj = JSON.parse(multi) + localStorage.setItem('card_' + obj.length, 'true') + obj.push(add) + var json = JSON.stringify(obj) + localStorage.setItem('column', json) + parseColumn('add') + return + } - if (!type) { - var type = localStorage.getItem('now') - if (!type) { - //デフォルト - var type = 'local' - } - } - if (type == 'mix' && localStorage.getItem('mode_' + domain) != 'misskey') { - //Integratedなら飛ばす - $('#notice_' + tlid).text( - 'Integrated TL(' + - localStorage.getItem('user_' + acct_id) + - '@' + - domain + - ')' - ) - $('#notice_icon_' + tlid).text('merge_type') - mixtl(acct_id, tlid, 'integrated', delc, voice) - return - } else if (type == 'plus') { - //Local+なら飛ばす - $('#notice_' + tlid).text( - 'Local+ TL(' + - localStorage.getItem('user_' + acct_id) + - '@' + - domain + - ')' - ) - $('#notice_icon_' + tlid).text('people_outline') - mixtl(acct_id, tlid, 'plus', delc, voice) - return - } else if (type == 'notf') { - //通知なら飛ばす - notf(acct_id, tlid, 'direct') - $('#notice_' + tlid).text( - cap(type, data, acct_id) + - '(' + - localStorage.getItem('user_' + acct_id) + - '@' + - domain + - ')' - ) - $('#notice_icon_' + tlid).text('notifications') - return - } else if (type == 'bookmark') { - //ブックマークなら飛ばす - getBookmark(acct_id, tlid) - $('#notice_' + tlid).text( - cap(type, data, acct_id) + - '(' + - localStorage.getItem('user_' + acct_id) + - '@' + - domain + - ')' - ) - $('#notice_icon_' + tlid).text('bookmark') - return - } else if (type == 'utl') { - //UTLなら飛ばす - getUtl(acct_id, tlid, data, false) - $('#notice_' + tlid).text( - cap(type, data, acct_id) + - '(' + - localStorage.getItem('user_' + acct_id) + - '@' + - domain + - ')' - ) - $('#notice_icon_' + tlid).text('person') - return - } else if (type == 'home') { - //ホームならお知らせ「も」取りに行く - announ(acct_id, tlid) - } - localStorage.setItem('now', type) - todo(cap(type) + ' TL Loading...') - var at = localStorage.getItem('acct_' + acct_id + '_at') - if (type != 'noauth') { - var hdr = { - 'content-type': 'application/json', - Authorization: 'Bearer ' + at, - } - $('#notice_' + tlid).text( - cap(type, data, acct_id) + - '(' + - localStorage.getItem('user_' + acct_id) + - '@' + - domain + - ')' - ) - } else { - var hdr = { - 'content-type': 'application/json', - } - domain = acct_id - $('#notice_' + tlid).text('Glance TL(' + domain + ')') - } - $('#notice_icon_' + tlid).text(icon(type)) - if (localStorage.getItem('mode_' + domain) == 'misskey') { - var misskey = true - var url = misskeycom(type, data) - var start = 'https://' + domain + '/api/notes/' + url - var method = 'POST' - var req = {} - if (type != 'noauth') { - req.i = at - } + if (!type) { + var type = localStorage.getItem('now') + if (!type) { + //デフォルト + var type = 'local' + } + } + if (type == 'mix' && localStorage.getItem('mode_' + domain) != 'misskey') { + //Integratedなら飛ばす + $('#notice_' + tlid).text( + 'Integrated TL(' + + localStorage.getItem('user_' + acct_id) + + '@' + + domain + + ')' + ) + $('#notice_icon_' + tlid).text('merge_type') + mixtl(acct_id, tlid, 'integrated', delc, voice) + return + } else if (type == 'plus') { + //Local+なら飛ばす + $('#notice_' + tlid).text( + 'Local+ TL(' + + localStorage.getItem('user_' + acct_id) + + '@' + + domain + + ')' + ) + $('#notice_icon_' + tlid).text('people_outline') + mixtl(acct_id, tlid, 'plus', delc, voice) + return + } else if (type == 'notf') { + //通知なら飛ばす + notf(acct_id, tlid, 'direct') + $('#notice_' + tlid).text( + cap(type, data, acct_id) + + '(' + + localStorage.getItem('user_' + acct_id) + + '@' + + domain + + ')' + ) + $('#notice_icon_' + tlid).text('notifications') + return + } else if (type == 'bookmark') { + //ブックマークなら飛ばす + getBookmark(acct_id, tlid) + $('#notice_' + tlid).text( + cap(type, data, acct_id) + + '(' + + localStorage.getItem('user_' + acct_id) + + '@' + + domain + + ')' + ) + $('#notice_icon_' + tlid).text('bookmark') + return + } else if (type == 'utl') { + //UTLなら飛ばす + getUtl(acct_id, tlid, data, false) + $('#notice_' + tlid).text( + cap(type, data, acct_id) + + '(' + + localStorage.getItem('user_' + acct_id) + + '@' + + domain + + ')' + ) + $('#notice_icon_' + tlid).text('person') + return + } else if (type == 'home') { + //ホームならお知らせ「も」取りに行く + announ(acct_id, tlid) + } + localStorage.setItem('now', type) + todo(cap(type) + ' TL Loading...') + var at = localStorage.getItem('acct_' + acct_id + '_at') + if (type != 'noauth') { + var hdr = { + 'content-type': 'application/json', + Authorization: 'Bearer ' + at, + } + $('#notice_' + tlid).text( + cap(type, data, acct_id) + + '(' + + localStorage.getItem('user_' + acct_id) + + '@' + + domain + + ')' + ) + } else { + var hdr = { + 'content-type': 'application/json', + } + domain = acct_id + $('#notice_' + tlid).text('Glance TL(' + domain + ')') + } + $('#notice_icon_' + tlid).text(icon(type)) + if (localStorage.getItem('mode_' + domain) == 'misskey') { + var misskey = true + var url = misskeycom(type, data) + var start = 'https://' + domain + '/api/notes/' + url + var method = 'POST' + var req = {} + if (type != 'noauth') { + req.i = at + } - if (type == 'local-media' || type == 'pub-media') { - req.mediaOnly = true - } - if (type == 'tag') { - req.tag = data - } - if (type == 'list') { - req.listId = data - } - req.limit = 20 - var i = { - method: method, - headers: hdr, - body: JSON.stringify(req), - } - } else { - var misskey = false - var url = com(type, data, tlid) - if (type == 'tag') { - var tag = localStorage.getItem('tag-range') - if (tag == 'local') { - url = url + 'local=true' - } - } - if (type == 'dm') { - var start = 'https://' + domain + '/api/v1/conversations' - } else { - var start = 'https://' + domain + '/api/v1/timelines/' + url - } - var method = 'GET' - var i = { - method: method, - headers: hdr, - } - } + if (type == 'local-media' || type == 'pub-media') { + req.mediaOnly = true + } + if (type == 'tag') { + req.tag = data + } + if (type == 'list') { + req.listId = data + } + req.limit = 20 + var i = { + method: method, + headers: hdr, + body: JSON.stringify(req), + } + } else { + var misskey = false + var url = com(type, data, tlid) + if (type == 'tag') { + var tag = localStorage.getItem('tag-range') + if (tag == 'local') { + url = url + 'local=true' + } + } + if (type == 'dm') { + var start = 'https://' + domain + '/api/v1/conversations' + } else { + var start = 'https://' + domain + '/api/v1/timelines/' + url + } + var method = 'GET' + var i = { + method: method, + headers: hdr, + } + } - console.log(['Try to get timeline of ' + tlid, start]) - fetch(start, i) - .then(function (response) { - if (!response.ok) { - response.text().then(function (text) { - $('#landing_' + tlid).append(`
${response.status}
${escapeHTML(text)}`) - setLog(response.url, response.status, text) - }) - } - return response.json() - }) - .catch(function (error) { - todo(error) - setLog(start, 'JSON', error) - console.error(error) - }) - .then(function (json) { - if(!json) return true - console.log(['Result of getting timeline of ' + tlid, json]) - $('#landing_' + tlid).hide() - var mute = getFilterTypeByAcct(acct_id, type) - if (misskey) { - var templete = misskeyParse(json, type, acct_id, tlid, '', mute) - } else { - var templete = parse(json, type, acct_id, tlid, '', mute, type) - localStorage.setItem('lastobj_' + tlid, json[0].id) - } - $('#timeline_' + tlid).html(templete) - additional(acct_id, tlid) - jQuery('time.timeago').timeago() - todc() - reload(type, 'from timeline to reload', acct_id, tlid, data, mute, delc, voice) - if (type == 'home' || type == 'notf') { - //Markers - var markers = localStorage.getItem('markers') - if (markers == 'yes') { - markers = true - } else { - markers = false - } - if (markers) { - getMarker(tlid, type, acct_id) - } - } - $(window).scrollTop(0) - }) + console.log(['Try to get timeline of ' + tlid, start]) + fetch(start, i) + .then(function(response) { + if (!response.ok) { + response.text().then(function(text) { + $('#landing_' + tlid).append(`
${response.status}
${$.strip_tags(text)}`) + setLog(response.url, response.status, text) + }) + } + return response.json() + }) + .catch(function(error) { + todo(error) + setLog(start, 'JSON', error) + console.error(error) + }) + .then(function(json) { + if (!json) return true + console.log(['Result of getting timeline of ' + tlid, json]) + $('#landing_' + tlid).hide() + var mute = getFilterTypeByAcct(acct_id, type) + if (misskey) { + var templete = misskeyParse(json, type, acct_id, tlid, '', mute) + } else { + var templete = parse(json, type, acct_id, tlid, '', mute, type) + localStorage.setItem('lastobj_' + tlid, json[0].id) + } + $('#timeline_' + tlid).html(templete) + additional(acct_id, tlid) + jQuery('time.timeago').timeago() + todc() + reload(type, 'from timeline to reload', acct_id, tlid, data, mute, delc, voice) + if (type == 'home' || type == 'notf') { + //Markers + var markers = localStorage.getItem('markers') + if (markers == 'yes') { + markers = true + } else { + markers = false + } + if (markers) { + getMarker(tlid, type, acct_id) + } + } + $(window).scrollTop(0) + }) } //Streaming接続 function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) { - if (!type) { - var type = localStorage.getItem('now') - } - var domain = localStorage.getItem('domain_' + acct_id) - var at = localStorage.getItem('acct_' + acct_id + '_at') - localStorage.setItem('now', type) - if (localStorage.getItem('mode_' + domain) == 'misskey') { - var misskey = true - var key = localStorage.getItem('misskey_wss_' + acct_id) - var send = - '{"type":"connect","body":{"channel":"' + - typePs(type) + - '","id":"' + - tlid + - '"}}' - var mskyset = setInterval(function () { - if (misskeywsstate[key]) { - misskeyws[key].send(send) - clearInterval(mskyset) - } - }, 100) - } else { - var domain = localStorage.getItem('domain_' + acct_id) - if (mastodonBaseWsStatus[domain] == 'cannotuse') { - oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode) - } else if (mastodonBaseWsStatus[domain] == 'undetected' || mastodonBaseWsStatus[domain] == 'connecting') { - const mbws = setInterval(function () { - if (mastodonBaseWsStatus[domain] == 'cannotuse') { - oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode) - clearInterval(mbws) - } else if (mastodonBaseWsStatus[domain] == 'available') { - $('#notice_icon_' + tlid).removeClass('red-text') - stremaingSubscribe(type, acct_id, data) - clearInterval(mbws) - } - }, 1000) - } else if (mastodonBaseWsStatus[domain] == 'available') { - $('#notice_icon_' + tlid).removeClass('red-text') - stremaingSubscribe(type, acct_id, data) - } - } + if (!type) { + var type = localStorage.getItem('now') + } + var domain = localStorage.getItem('domain_' + acct_id) + var at = localStorage.getItem('acct_' + acct_id + '_at') + localStorage.setItem('now', type) + if (localStorage.getItem('mode_' + domain) == 'misskey') { + var misskey = true + var key = localStorage.getItem('misskey_wss_' + acct_id) + var send = + '{"type":"connect","body":{"channel":"' + + typePs(type) + + '","id":"' + + tlid + + '"}}' + var mskyset = setInterval(function() { + if (misskeywsstate[key]) { + misskeyws[key].send(send) + clearInterval(mskyset) + } + }, 100) + } else { + var domain = localStorage.getItem('domain_' + acct_id) + if (mastodonBaseWsStatus[domain] == 'cannotuse') { + oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode) + } else if (mastodonBaseWsStatus[domain] == 'undetected' || mastodonBaseWsStatus[domain] == 'connecting') { + const mbws = setInterval(function() { + if (mastodonBaseWsStatus[domain] == 'cannotuse') { + oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode) + clearInterval(mbws) + } else if (mastodonBaseWsStatus[domain] == 'available') { + $('#notice_icon_' + tlid).removeClass('red-text') + stremaingSubscribe(type, acct_id, data) + clearInterval(mbws) + } + }, 1000) + } else if (mastodonBaseWsStatus[domain] == 'available') { + $('#notice_icon_' + tlid).removeClass('red-text') + stremaingSubscribe(type, acct_id, data) + } + } } -function stremaingSubscribe(type, acct_id, data, unsubscribe) { - let command = 'subscribe' - if (unsubscribe) command = 'unsubscribe' - let stream - const domain = localStorage.getItem('domain_' + acct_id) - if(type == 'home') return false - if (type === 'local' || type === 'mix') { stream = 'public:local' } - else if (type === 'local-media') { stream = 'public:local:media' } - else if (type === 'pub') { stream = 'public' } - else if (type === 'pub-media') { stream = 'public:media' } - else if (type === 'list') { - mastodonBaseWs[domain].send(JSON.stringify({type: command, stream: 'list', list: data})) - return true - } else if (type === 'tag') { - let arr = [] - let name = data - if (data.name) name = data.name - arr.push(name) - if (data.any) arr = arr.concat(data.any.split(',')) - if (data.all) arr = arr.concat(data.all.split(',')) - for (const tag of arr) { - mastodonBaseWs[domain].send(JSON.stringify({type: command, stream: 'hashtag', tag: tag})) - } - return true - } - mastodonBaseWs[domain].send(JSON.stringify({type: command, stream: stream})) -} -function oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode) { - var misskey = false - const 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).replace('https://', 'wss://') - } else { - var wss = 'wss://' + domain - } - if (type == 'home') { - var start = wss + '/api/v1/streaming/?stream=user&access_token=' + at - } else if (type == 'pub') { - var add = '' - if (remoteOnlyCk(tlid)) { - add = '&remote=true' - } - var start = wss + '/api/v1/streaming/?stream=public&access_token=' + at + add - } else if (type == 'pub-media') { - var add = '' - if (remoteOnlyCk(tlid)) { - add = '&remote=true' - } var start = - wss + '/api/v1/streaming/?stream=public:media&access_token=' + at + add - } else if (type == 'local') { - var start = - wss + '/api/v1/streaming/?stream=public:local&access_token=' + at - } else if (type == 'local-media') { - var start = - wss + - '/api/v1/streaming/?stream=public:local:media&only_media=true&access_token=' + - at - } else if (type == 'tag') { - var tag = localStorage.getItem('tag-range') - if (tag == 'local') { - data = data + '&local=true' - } - if (data.name) { - data = data.name - } - var start = - wss + - '/api/v1/streaming/?stream=hashtag&tag=' + - data + - '&access_token=' + - at + add - } else if (type == 'noauth') { - var start = 'wss://' + acct_id + '/api/v1/streaming/?stream=public:local' - } else if (type == 'list') { - var start = - wss + - '/api/v1/streaming/?stream=list&list=' + - data + - '&access_token=' + - at - } else if (type == 'dm') { - var start = wss + '/api/v1/streaming/?stream=direct&access_token=' + at - } - var wsid = websocket.length - localStorage.setItem('wss_' + tlid, wsid) - websocket[wsid] = new WebSocket(start) - websocket[wsid].onopen = function (mess) { - console.table({ - tlid: tlid, - type: 'Connect Streaming API' + type, - domain: domain, - message: [mess], - }) - errorct = 0 - $('#notice_icon_' + tlid).removeClass('red-text') - } - websocket[wsid].onmessage = function (mess) { - console.log([tlid + ':Receive Streaming API:', JSON.parse(mess.data)]) - if (misskey) { - if (JSON.parse(mess.data).type == 'note') { - var obj = JSON.parse(mess.data).body - if (voice) { - say(obj.text) - } - websocketNotf[acct_id].send( - JSON.stringify({ - type: 'capture', - id: obj.id, - }) - ) - var templete = misskeyParse([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() - jQuery('time.timeago').timeago() - } - } else { - var typeA = JSON.parse(mess.data).event - if (typeA == 'delete') { - var obj = JSON.parse(mess.data).payload - if (delc == 'true') { - $( - '#timeline_' + - tlid + - ' [unique-id=' + - JSON.parse(mess.data).payload + - ']' - ).addClass('emphasized') - $( - '#timeline_' + - tlid + - ' [unique-id=' + - JSON.parse(mess.data).payload + - ']' - ).addClass('by_delcatch') - } else { - $('[unique-id=' + JSON.parse(mess.data).payload + ']').hide() - $('[unique-id=' + JSON.parse(mess.data).payload + ']').remove() - } - } else if (typeA == 'update' || typeA == 'conversation') { - if ( - !$('#unread_' + tlid + ' .material-icons').hasClass('teal-text') - ) { - //markers show中はダメ - var obj = JSON.parse(JSON.parse(mess.data).payload) - if ( - $('#timeline_' + tlid + ' [toot-id=' + obj.id + ']').length < 1 - ) { - if (voice) { - say(obj.content) - } - var templete = parse([obj], type, acct_id, tlid, '', mute, type) - if ( - $('timeline_box_' + tlid + '_box .tl-box').scrollTop() === 0 - ) { - $('#timeline_' + tlid).prepend(templete) - } else { - 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('二重取得発生中') - } - todc() - } - } else if (typeA == 'filters_changed') { - filterUpdate(acct_id) - } else if (~typeA.indexOf('announcement')) { - announ(acct_id, tlid) - } - } - } - websocket[wsid].onerror = function (error) { - console.error('Error closing') - console.error(error) - if (mode == 'error') { - $('#notice_icon_' + tlid).addClass('red-text') - todo('WebSocket Error ' + error) - } else { - errorct++ - console.log(errorct) - if (errorct < 3) { - reconnector(tlid, type, acct_id, data, 'error') - } - } - return false - } - websocket[wsid].onclose = function () { - console.warn('Closing ' + tlid) - if (mode == 'error') { - $('#notice_icon_' + tlid).addClass('red-text') - todo('WebSocket Closed') - } else { - errorct++ - console.log(errorct) - if (errorct < 3) { - reconnector(tlid, type, acct_id, data, 'error') - } - } - return false - } +function stremaingSubscribe(type, acct_id, data, unsubscribe) { + let command = 'subscribe' + if (unsubscribe) command = 'unsubscribe' + let stream + const domain = localStorage.getItem('domain_' + acct_id) + if (type == 'home') return false + if (type === 'local' || type === 'mix') { stream = 'public:local' } else if (type === 'local-media') { stream = 'public:local:media' } else if (type === 'pub') { stream = 'public' } else if (type === 'pub-media') { stream = 'public:media' } else if (type === 'list') { + mastodonBaseWs[domain].send(JSON.stringify({ type: command, stream: 'list', list: data })) + return true + } else if (type === 'tag') { + let arr = [] + let name = data + if (data.name) name = data.name + arr.push(name) + if (data.any) arr = arr.concat(data.any.split(',')) + if (data.all) arr = arr.concat(data.all.split(',')) + for (const tag of arr) { + mastodonBaseWs[domain].send(JSON.stringify({ type: command, stream: 'hashtag', tag: tag })) + } + return true + } + mastodonBaseWs[domain].send(JSON.stringify({ type: command, stream: stream })) +} + +function oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode) { + var misskey = false + const 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).replace('https://', 'wss://') + } else { + var wss = 'wss://' + domain + } + if (type == 'home') { + var start = wss + '/api/v1/streaming/?stream=user&access_token=' + at + } else if (type == 'pub') { + var add = '' + if (remoteOnlyCk(tlid)) { + add = '&remote=true' + } + var start = wss + '/api/v1/streaming/?stream=public&access_token=' + at + add + } else if (type == 'pub-media') { + var add = '' + if (remoteOnlyCk(tlid)) { + add = '&remote=true' + } + var start = + wss + '/api/v1/streaming/?stream=public:media&access_token=' + at + add + } else if (type == 'local') { + var start = + wss + '/api/v1/streaming/?stream=public:local&access_token=' + at + } else if (type == 'local-media') { + var start = + wss + + '/api/v1/streaming/?stream=public:local:media&only_media=true&access_token=' + + at + } else if (type == 'tag') { + var tag = localStorage.getItem('tag-range') + if (tag == 'local') { + data = data + '&local=true' + } + if (data.name) { + data = data.name + } + var start = + wss + + '/api/v1/streaming/?stream=hashtag&tag=' + + data + + '&access_token=' + + at + add + } else if (type == 'noauth') { + var start = 'wss://' + acct_id + '/api/v1/streaming/?stream=public:local' + } else if (type == 'list') { + var start = + wss + + '/api/v1/streaming/?stream=list&list=' + + data + + '&access_token=' + + at + } else if (type == 'dm') { + var start = wss + '/api/v1/streaming/?stream=direct&access_token=' + at + } + var wsid = websocket.length + localStorage.setItem('wss_' + tlid, wsid) + websocket[wsid] = new WebSocket(start) + websocket[wsid].onopen = function(mess) { + console.table({ + tlid: tlid, + type: 'Connect Streaming API' + type, + domain: domain, + message: [mess], + }) + errorct = 0 + $('#notice_icon_' + tlid).removeClass('red-text') + } + websocket[wsid].onmessage = function(mess) { + console.log([tlid + ':Receive Streaming API:', JSON.parse(mess.data)]) + if (misskey) { + if (JSON.parse(mess.data).type == 'note') { + var obj = JSON.parse(mess.data).body + if (voice) { + say(obj.text) + } + websocketNotf[acct_id].send( + JSON.stringify({ + type: 'capture', + id: obj.id, + }) + ) + var templete = misskeyParse([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() + jQuery('time.timeago').timeago() + } + } else { + var typeA = JSON.parse(mess.data).event + if (typeA == 'delete') { + var obj = JSON.parse(mess.data).payload + if (delc == 'true') { + $( + '#timeline_' + + tlid + + ' [unique-id=' + + JSON.parse(mess.data).payload + + ']' + ).addClass('emphasized') + $( + '#timeline_' + + tlid + + ' [unique-id=' + + JSON.parse(mess.data).payload + + ']' + ).addClass('by_delcatch') + } else { + $('[unique-id=' + JSON.parse(mess.data).payload + ']').hide() + $('[unique-id=' + JSON.parse(mess.data).payload + ']').remove() + } + } else if (typeA == 'update' || typeA == 'conversation') { + if (!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')) { + //markers show中はダメ + var obj = JSON.parse(JSON.parse(mess.data).payload) + if ( + $('#timeline_' + tlid + ' [toot-id=' + obj.id + ']').length < 1 + ) { + if (voice) { + say(obj.content) + } + var templete = parse([obj], type, acct_id, tlid, '', mute, type) + if ( + $('timeline_box_' + tlid + '_box .tl-box').scrollTop() === 0 + ) { + $('#timeline_' + tlid).prepend(templete) + } else { + 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('二重取得発生中') + } + + todc() + } + } else if (typeA == 'filters_changed') { + filterUpdate(acct_id) + } else if (~typeA.indexOf('announcement')) { + announ(acct_id, tlid) + } + } + } + websocket[wsid].onerror = function(error) { + console.error('Error closing') + console.error(error) + if (mode == 'error') { + $('#notice_icon_' + tlid).addClass('red-text') + todo('WebSocket Error ' + error) + } else { + errorct++ + console.log(errorct) + if (errorct < 3) { + reconnector(tlid, type, acct_id, data, 'error') + } + } + return false + } + websocket[wsid].onclose = function() { + console.warn('Closing ' + tlid) + if (mode == 'error') { + $('#notice_icon_' + tlid).addClass('red-text') + todo('WebSocket Closed') + } else { + errorct++ + console.log(errorct) + if (errorct < 3) { + reconnector(tlid, type, acct_id, data, 'error') + } + } + return false + } } //一定のスクロールで発火 function moreload(type, tlid) { - var multi = localStorage.getItem('column') - var obj = JSON.parse(multi) - var acct_id = obj[tlid].domain - if (!type) { - var type = obj[tlid].type - } else { - var data - } - if (type == 'tag') { - var data = obj[tlid].data - var tag = localStorage.getItem('tag-range') - if (tag == 'local') { - data = data + '&local=true' - } - } else if (type == 'list') { - var data = obj[tlid].data - } - var sid = $('#timeline_' + tlid + ' .cvo') - .last() - .attr('unique-id') - if (sid && !moreloading) { - if ( - type == 'mix' && - localStorage.getItem( - 'mode_' + localStorage.getItem('domain_' + acct_id) - ) != 'misskey' - ) { - mixmore(tlid, 'integrated') - return - } else if ( - type == 'plus' && - localStorage.getItem( - 'mode_' + localStorage.getItem('domain_' + acct_id) - ) != 'misskey' - ) { - mixmore(tlid, 'plus') - return - } else if (type == 'notf') { - notfmore(tlid) - return - } else if (type == 'tootsearch') { - var data = obj[tlid].data - moreTs(tlid, data) - return - } else if (type == 'bookmark') { - getBookmark(acct_id, tlid, true) - return - } else if (type == 'utl') { - var data = obj[tlid].data - getUtl(acct_id, tlid, data, true) - return - } - moreloading = true - localStorage.setItem('now', type) - todo(cap(type) + ' TL MoreLoading') - if (type != 'noauth') { - var at = localStorage.getItem('acct_' + acct_id + '_at') - var hdr = { - 'content-type': 'application/json', - Authorization: 'Bearer ' + at, - } - var domain = localStorage.getItem('domain_' + acct_id) - } else { - var hdr = { - 'content-type': 'application/json', - } - domain = acct_id - } - if (localStorage.getItem('mode_' + domain) == 'misskey') { - var misskey = true - hdr = { - 'content-type': 'application/json', - } - var url = misskeycom(type, data) - var start = 'https://' + domain + '/api/notes/' + url - var method = 'POST' - var req = {} - if (type != 'noauth') { - req.i = at - } - if (type == 'local-media' || type == 'pub-media') { - req.mediaOnly = true - } - if (type == 'tag') { - req.tag = data - } - if (type == 'list') { - req.listId = data - } - req.untilId = sid - req.limit = 20 - var i = { - method: method, - headers: hdr, - body: JSON.stringify(req), - } - } else { - var misskey = false - var start = - 'https://' + - domain + - '/api/v1/timelines/' + - com(type, data, tlid) + - 'max_id=' + - sid - if (type == 'dm') { - var start = - 'https://' + domain + '/api/v1/conversations?' + 'max_id=' + sid - } - var method = 'GET' - var i = { - method: method, - headers: hdr, - } - } - fetch(start, i) - .then(function (response) { - if (!response.ok) { - response.text().then(function (text) { - setLog(response.url, response.status, text) - }) - } - return response.json() - }) - .catch(function (error) { - todo(error) - setLog(start, 'JSON', error) - console.error(error) - }) - .then(function (json) { - var mute = getFilterTypeByAcct(acct_id, type) - if (misskey) { - var templete = misskeyParse(json, '', acct_id, tlid, '', mute) - } else { - var templete = parse(json, '', acct_id, tlid, '', mute, type) - } - $('#timeline_' + tlid).append(templete) - additional(acct_id, tlid) - jQuery('time.timeago').timeago() - moreloading = false - todc() - }) - } + var multi = localStorage.getItem('column') + var obj = JSON.parse(multi) + var acct_id = obj[tlid].domain + if (!type) { + var type = obj[tlid].type + } else { + var data + } + if (type == 'tag') { + var data = obj[tlid].data + var tag = localStorage.getItem('tag-range') + if (tag == 'local') { + data = data + '&local=true' + } + } else if (type == 'list') { + var data = obj[tlid].data + } + var sid = $('#timeline_' + tlid + ' .cvo') + .last() + .attr('unique-id') + if (sid && !moreloading) { + if ( + type == 'mix' && + localStorage.getItem( + 'mode_' + localStorage.getItem('domain_' + acct_id) + ) != 'misskey' + ) { + mixmore(tlid, 'integrated') + return + } else if ( + type == 'plus' && + localStorage.getItem( + 'mode_' + localStorage.getItem('domain_' + acct_id) + ) != 'misskey' + ) { + mixmore(tlid, 'plus') + return + } else if (type == 'notf') { + notfmore(tlid) + return + } else if (type == 'tootsearch') { + var data = obj[tlid].data + moreTs(tlid, data) + return + } else if (type == 'bookmark') { + getBookmark(acct_id, tlid, true) + return + } else if (type == 'utl') { + var data = obj[tlid].data + getUtl(acct_id, tlid, data, true) + return + } + moreloading = true + localStorage.setItem('now', type) + todo(cap(type) + ' TL MoreLoading') + if (type != 'noauth') { + var at = localStorage.getItem('acct_' + acct_id + '_at') + var hdr = { + 'content-type': 'application/json', + Authorization: 'Bearer ' + at, + } + var domain = localStorage.getItem('domain_' + acct_id) + } else { + var hdr = { + 'content-type': 'application/json', + } + domain = acct_id + } + if (localStorage.getItem('mode_' + domain) == 'misskey') { + var misskey = true + hdr = { + 'content-type': 'application/json', + } + var url = misskeycom(type, data) + var start = 'https://' + domain + '/api/notes/' + url + var method = 'POST' + var req = {} + if (type != 'noauth') { + req.i = at + } + if (type == 'local-media' || type == 'pub-media') { + req.mediaOnly = true + } + if (type == 'tag') { + req.tag = data + } + if (type == 'list') { + req.listId = data + } + req.untilId = sid + req.limit = 20 + var i = { + method: method, + headers: hdr, + body: JSON.stringify(req), + } + } else { + var misskey = false + var start = + 'https://' + + domain + + '/api/v1/timelines/' + + com(type, data, tlid) + + 'max_id=' + + sid + if (type == 'dm') { + var start = + 'https://' + domain + '/api/v1/conversations?' + 'max_id=' + sid + } + var method = 'GET' + var i = { + method: method, + headers: hdr, + } + } + fetch(start, i) + .then(function(response) { + if (!response.ok) { + response.text().then(function(text) { + setLog(response.url, response.status, text) + }) + } + return response.json() + }) + .catch(function(error) { + todo(error) + setLog(start, 'JSON', error) + console.error(error) + }) + .then(function(json) { + var mute = getFilterTypeByAcct(acct_id, type) + if (misskey) { + var templete = misskeyParse(json, '', acct_id, tlid, '', mute) + } else { + var templete = parse(json, '', acct_id, tlid, '', mute, type) + } + $('#timeline_' + tlid).append(templete) + additional(acct_id, tlid) + jQuery('time.timeago').timeago() + moreloading = false + todc() + }) + } } //TL差分取得 function tlDiff(type, data, acct_id, tlid, delc, voice, mode) { - console.log('Get diff of TL' + tlid) - var multi = localStorage.getItem('column') - var obj = JSON.parse(multi) - var acct_id = obj[tlid].domain - if (!type) { - var type = obj[tlid].type - } else { - var data - } - if (type == 'tag') { - var data = obj[tlid].data - var tag = localStorage.getItem('tag-range') - if (tag == 'local') { - data = data + '&local=true' - } - } else if (type == 'list') { - var data = obj[tlid].data - } - var sid = $('#timeline_' + tlid + ' .cvo') - .first() - .attr('unique-id') - if (sid && !moreloading) { - if ( - type == 'mix' && - localStorage.getItem( - 'mode_' + localStorage.getItem('domain_' + acct_id) - ) != 'misskey' - ) { - return - } else if ( - type == 'plus' && - localStorage.getItem( - 'mode_' + localStorage.getItem('domain_' + acct_id) - ) != 'misskey' - ) { - return - } else if (type == 'notf') { - return - } - moreloading = true - localStorage.setItem('now', type) - todo(cap(type) + ' TL MoreLoading') - if (type != 'noauth') { - var at = localStorage.getItem('acct_' + acct_id + '_at') - var hdr = { - 'content-type': 'application/json', - Authorization: 'Bearer ' + at, - } - var domain = localStorage.getItem('domain_' + acct_id) - } else { - var hdr = { - 'content-type': 'application/json', - } - domain = acct_id - } - if (localStorage.getItem('mode_' + domain) == 'misskey') { - var misskey = true - hdr = { - 'content-type': 'application/json', - } - var url = misskeycom(type, data) - var start = 'https://' + domain + '/api/notes/' + url - var method = 'POST' - var req = {} - if (type != 'noauth') { - req.i = at - } - if (type == 'local-media' || type == 'pub-media') { - req.mediaOnly = true - } - if (type == 'tag') { - req.tag = data - } - if (type == 'list') { - req.listId = data - } - req.sinceId = sid - req.limit = 20 - var i = { - method: method, - headers: hdr, - body: JSON.stringify(req), - } - } else { - var misskey = false - var start = - 'https://' + - domain + - '/api/v1/timelines/' + - com(type, data, tlid) + - 'since_id=' + - sid - if (type == 'dm') { - var start = - 'https://' + domain + '/api/v1/conversations?' + 'since_id=' + sid - } - var method = 'GET' - var i = { - method: method, - headers: hdr, - } - } + console.log('Get diff of TL' + tlid) + var multi = localStorage.getItem('column') + var obj = JSON.parse(multi) + var acct_id = obj[tlid].domain + if (!type) { + var type = obj[tlid].type + } else { + var data + } + if (type == 'tag') { + var data = obj[tlid].data + var tag = localStorage.getItem('tag-range') + if (tag == 'local') { + data = data + '&local=true' + } + } else if (type == 'list') { + var data = obj[tlid].data + } + var sid = $('#timeline_' + tlid + ' .cvo') + .first() + .attr('unique-id') + if (sid && !moreloading) { + if ( + type == 'mix' && + localStorage.getItem( + 'mode_' + localStorage.getItem('domain_' + acct_id) + ) != 'misskey' + ) { + return + } else if ( + type == 'plus' && + localStorage.getItem( + 'mode_' + localStorage.getItem('domain_' + acct_id) + ) != 'misskey' + ) { + return + } else if (type == 'notf') { + return + } + moreloading = true + localStorage.setItem('now', type) + todo(cap(type) + ' TL MoreLoading') + if (type != 'noauth') { + var at = localStorage.getItem('acct_' + acct_id + '_at') + var hdr = { + 'content-type': 'application/json', + Authorization: 'Bearer ' + at, + } + var domain = localStorage.getItem('domain_' + acct_id) + } else { + var hdr = { + 'content-type': 'application/json', + } + domain = acct_id + } + if (localStorage.getItem('mode_' + domain) == 'misskey') { + var misskey = true + hdr = { + 'content-type': 'application/json', + } + var url = misskeycom(type, data) + var start = 'https://' + domain + '/api/notes/' + url + var method = 'POST' + var req = {} + if (type != 'noauth') { + req.i = at + } + if (type == 'local-media' || type == 'pub-media') { + req.mediaOnly = true + } + if (type == 'tag') { + req.tag = data + } + if (type == 'list') { + req.listId = data + } + req.sinceId = sid + req.limit = 20 + var i = { + method: method, + headers: hdr, + body: JSON.stringify(req), + } + } else { + var misskey = false + var start = + 'https://' + + domain + + '/api/v1/timelines/' + + com(type, data, tlid) + + 'since_id=' + + sid + if (type == 'dm') { + var start = + 'https://' + domain + '/api/v1/conversations?' + 'since_id=' + sid + } + var method = 'GET' + var i = { + method: method, + headers: hdr, + } + } - fetch(start, i) - .then(function (response) { - if (!response.ok) { - response.text().then(function (text) { - setLog(response.url, response.status, text) - }) - } - return response.json() - }) - .catch(function (error) { - todo(error) - setLog(start, 'JSON', error) - console.error(error) - }) - .then(function (json) { - console.log(['Result diff of TL' + tlid, json]) - if (misskey) { - var templete = misskeyParse(json, '', acct_id, tlid, '', mute) - } else { - var templete = parse(json, '', acct_id, tlid, '', mute, type) - } - $('#timeline_' + tlid).prepend(templete) - additional(acct_id, tlid) - jQuery('time.timeago').timeago() - moreloading = false - todc() - }) - } + fetch(start, i) + .then(function(response) { + if (!response.ok) { + response.text().then(function(text) { + setLog(response.url, response.status, text) + }) + } + return response.json() + }) + .catch(function(error) { + todo(error) + setLog(start, 'JSON', error) + console.error(error) + }) + .then(function(json) { + console.log(['Result diff of TL' + tlid, json]) + if (misskey) { + var templete = misskeyParse(json, '', acct_id, tlid, '', mute) + } else { + var templete = parse(json, '', acct_id, tlid, '', mute, type) + } + $('#timeline_' + tlid).prepend(templete) + additional(acct_id, tlid) + jQuery('time.timeago').timeago() + moreloading = false + todc() + }) + } } //TL再取得 function reloadTL(type, data, acct_id, key, delc, voice) { - tl(type, data, acct_id, key, delc, voice, '') + tl(type, data, acct_id, key, delc, voice, '') } //WebSocket切断 function tlCloser() { - Object.keys(websocket).forEach(function (tlid) { - if (websocketOld[tlid]) { - websocketOld[tlid].close() - console.log('%c Close Streaming API: Old' + tlid, 'color:blue') - } - if (websocket[0]) { - console.log(websocket[0]) - websocket[tlid].close() - console.log('%c Close Streaming API:' + tlid, 'color:blue') - } - }) - websocket = [] - Object.keys(wsHome).forEach(function (tlid) { - if (wsHome[tlid]) { - wsHome[tlid].close() - console.log('%c Close Streaming API:Integrated Home' + tlid, 'color:blue') - } - }) - wsHome = [] - Object.keys(wsLocal).forEach(function (tlid) { - if (wsLocal[tlid]) { - wsLocal[tlid].close() - console.log( - '%c Close Streaming API:Integrated Local' + tlid, - 'color:blue' - ) - } - }) - wsLocal = [] - Object.keys(websocketNotf).forEach(function (tlid) { - if (websocketNotf[tlid]) { - websocketNotf[tlid].close() - console.log('%c Close Streaming API:Notf' + tlid, 'color:blue') - } - }) - Object.keys(misskeyws).forEach(function (tlid) { - if (misskeyws[tlid]) { - misskeyws[tlid].close() - console.log('%c Close Streaming API:Misskey' + tlid, 'color:blue') - } - }) - misskeyws = {} + Object.keys(websocket).forEach(function(tlid) { + if (websocketOld[tlid]) { + websocketOld[tlid].close() + console.log('%c Close Streaming API: Old' + tlid, 'color:blue') + } + if (websocket[0]) { + console.log(websocket[0]) + websocket[tlid].close() + console.log('%c Close Streaming API:' + tlid, 'color:blue') + } + }) + websocket = [] + Object.keys(wsHome).forEach(function(tlid) { + if (wsHome[tlid]) { + wsHome[tlid].close() + console.log('%c Close Streaming API:Integrated Home' + tlid, 'color:blue') + } + }) + wsHome = [] + Object.keys(wsLocal).forEach(function(tlid) { + if (wsLocal[tlid]) { + wsLocal[tlid].close() + console.log( + '%c Close Streaming API:Integrated Local' + tlid, + 'color:blue' + ) + } + }) + wsLocal = [] + Object.keys(websocketNotf).forEach(function(tlid) { + if (websocketNotf[tlid]) { + websocketNotf[tlid].close() + console.log('%c Close Streaming API:Notf' + tlid, 'color:blue') + } + }) + Object.keys(misskeyws).forEach(function(tlid) { + if (misskeyws[tlid]) { + misskeyws[tlid].close() + console.log('%c Close Streaming API:Misskey' + tlid, 'color:blue') + } + }) + misskeyws = {} } //TLのタイトル function cap(type, data, acct_id) { - //独自ロケール - var locale = localStorage.getItem('locale') - if (locale == 'yes') { - var locale = false - } - if (type == 'home') { - if (localStorage.getItem('home_' + acct_id) && !locale) { - var response = localStorage.getItem('home_' + acct_id) - } else { - var response = 'Home TL' - } - } else if (type == 'local') { - if (localStorage.getItem('local_' + acct_id) && !locale) { - var response = localStorage.getItem('local_' + acct_id) - } else { - var response = 'Local TL' - } - } else if (type == 'local-media') { - if (localStorage.getItem('local_' + acct_id) && !locale) { - var response = - localStorage.getItem('local_' + acct_id) + - '(' + - lang.lang_tl_media + - ')' - } else { - var response = 'Local TL(Media)' - } - } else if (type == 'pub') { - if (localStorage.getItem('public_' + acct_id) && !locale) { - var response = localStorage.getItem('public_' + acct_id) - } else { - var response = 'Federated TL' - } - } else if (type == 'pub-media') { - if (localStorage.getItem('public_' + acct_id) && !locale) { - var response = - localStorage.getItem('public_' + acct_id) + - '(' + - lang.lang_tl_media + - ')' - } else { - var response = 'Federated TL(Media)' - } - } else if (type == 'tag') { - if (data) { - if (data.name) { - var response = '#' + escapeHTML(data.name) - } else { - var response = '#' + escapeHTML(data) - } - } - } else if (type == 'list') { - var ltitle = localStorage.getItem('list_' + data + '_' + acct_id) - var response = 'List(' + ltitle + ')' - } else if (type == 'notf') { - if (localStorage.getItem('notification_' + acct_id) && !locale) { - var response = localStorage.getItem('notification_' + acct_id) - } else { - var response = 'Notification TL' - } - } else if (type == 'noauth') { - var response = 'Glance TL' - } else if (type == 'dm') { - var response = 'DM' - } else if (type == 'mix') { - if ( - localStorage.getItem( - 'mode_' + localStorage.getItem('domain_' + acct_id) - ) == 'misskey' - ) { - var response = 'Social TL' - } else { - var response = 'Integrated' - } - } else if (type == 'plus') { - var response = 'Local+' - } else if (type == 'webview') { - var response = 'Twitter' - } else if (type == 'tootsearch') { - var response = 'tootsearch(' + escapeHTML(data) + ')' - } else if (type == 'bookmark') { - var response = 'Bookmarks' - } else if (type == 'utl') { - var response = 'User TL(' + escapeHTML(data.acct) + ')' - } - return response + //独自ロケール + var locale = localStorage.getItem('locale') + if (locale == 'yes') { + var locale = false + } + if (type == 'home') { + if (localStorage.getItem('home_' + acct_id) && !locale) { + var response = localStorage.getItem('home_' + acct_id) + } else { + var response = 'Home TL' + } + } else if (type == 'local') { + if (localStorage.getItem('local_' + acct_id) && !locale) { + var response = localStorage.getItem('local_' + acct_id) + } else { + var response = 'Local TL' + } + } else if (type == 'local-media') { + if (localStorage.getItem('local_' + acct_id) && !locale) { + var response = + localStorage.getItem('local_' + acct_id) + + '(' + + lang.lang_tl_media + + ')' + } else { + var response = 'Local TL(Media)' + } + } else if (type == 'pub') { + if (localStorage.getItem('public_' + acct_id) && !locale) { + var response = localStorage.getItem('public_' + acct_id) + } else { + var response = 'Federated TL' + } + } else if (type == 'pub-media') { + if (localStorage.getItem('public_' + acct_id) && !locale) { + var response = + localStorage.getItem('public_' + acct_id) + + '(' + + lang.lang_tl_media + + ')' + } else { + var response = 'Federated TL(Media)' + } + } else if (type == 'tag') { + if (data) { + if (data.name) { + var response = '#' + escapeHTML(data.name) + } else { + var response = '#' + escapeHTML(data) + } + } + } else if (type == 'list') { + var ltitle = localStorage.getItem('list_' + data + '_' + acct_id) + var response = 'List(' + ltitle + ')' + } else if (type == 'notf') { + if (localStorage.getItem('notification_' + acct_id) && !locale) { + var response = localStorage.getItem('notification_' + acct_id) + } else { + var response = 'Notification TL' + } + } else if (type == 'noauth') { + var response = 'Glance TL' + } else if (type == 'dm') { + var response = 'DM' + } else if (type == 'mix') { + if ( + localStorage.getItem( + 'mode_' + localStorage.getItem('domain_' + acct_id) + ) == 'misskey' + ) { + var response = 'Social TL' + } else { + var response = 'Integrated' + } + } else if (type == 'plus') { + var response = 'Local+' + } else if (type == 'webview') { + var response = 'Twitter' + } else if (type == 'tootsearch') { + var response = 'tootsearch(' + escapeHTML(data) + ')' + } else if (type == 'bookmark') { + var response = 'Bookmarks' + } else if (type == 'utl') { + var response = 'User TL(' + escapeHTML(data.acct) + ')' + } + return response } //TLのURL function com(type, data, tlid) { - if (type == 'home') { - return 'home?' - } else if (type == 'local' || type == 'noauth') { - return 'public?local=true&' - } else if (type == 'local-media') { - return 'public?local=true&only_media=true&' - } else if (type == 'pub') { - var add = '' - if (remoteOnlyCk(tlid)) { - add = 'remote=true&' - } - return 'public?' + add - } else if (type == 'pub-media') { - var add = '' - if (remoteOnlyCk(tlid)) { - add = 'remote=true&' - } - return 'public?only_media=true&' + add - } else if (type == 'tag') { - if (data.name) { - var name = data.name - var all = data.all - var any = data.any - var none = data.none - } else { - var name = data - var all = '' - var any = '' - var none = '' - } - return `tag/${name}?${buildQuery('all', all)}${buildQuery( + if (type == 'home') { + return 'home?' + } else if (type == 'local' || type == 'noauth') { + return 'public?local=true&' + } else if (type == 'local-media') { + return 'public?local=true&only_media=true&' + } else if (type == 'pub') { + var add = '' + if (remoteOnlyCk(tlid)) { + add = 'remote=true&' + } + return 'public?' + add + } else if (type == 'pub-media') { + var add = '' + if (remoteOnlyCk(tlid)) { + add = 'remote=true&' + } + return 'public?only_media=true&' + add + } else if (type == 'tag') { + if (data.name) { + var name = data.name + var all = data.all + var any = data.any + var none = data.none + } else { + var name = data + var all = '' + var any = '' + var none = '' + } + return `tag/${name}?${buildQuery('all', all)}${buildQuery( 'any', any )}${buildQuery('none', none)}`.slice(0, -1) - } else if (type == 'list') { - return 'list/' + data + '?' - } else if (type == 'dm') { - return 'direct?' - } else if (type == 'bookmark') { - return 'bookmarks?' - } + } else if (type == 'list') { + return 'list/' + data + '?' + } else if (type == 'dm') { + return 'direct?' + } else if (type == 'bookmark') { + return 'bookmarks?' + } } //Misskey function typePs(type) { - if (type == 'home') { - return 'homeTimeline' - } else if (type == 'local' || type == 'noauth') { - return 'localTimeline' - } else if (type == 'local-media') { - return 'localTimeline' - } else if (type == 'pub') { - return 'globalTimeline' - } else if (type == 'mix') { - return 'hybridTimeline' - } else if (type == 'tag') { - return 'hashtag' - } else if (type == 'list') { - return 'userList' - } + if (type == 'home') { + return 'homeTimeline' + } else if (type == 'local' || type == 'noauth') { + return 'localTimeline' + } else if (type == 'local-media') { + return 'localTimeline' + } else if (type == 'pub') { + return 'globalTimeline' + } else if (type == 'mix') { + return 'hybridTimeline' + } else if (type == 'tag') { + return 'hashtag' + } else if (type == 'list') { + return 'userList' + } } + function misskeycom(type, data) { - if (type == 'home') { - return 'timeline' - } else if (type == 'mix') { - return 'hybrid-timeline' - } else if (type == 'local' || type == 'noauth') { - return 'local-timeline' - } else if (type == 'local-media') { - return 'local-timeline' - } else if (type == 'pub') { - return 'global-timeline' - } else if (type == 'pub-media') { - return 'global-timeline' - } else if (type == 'tag') { - return 'search_by_tag' - } else if (type == 'list') { - return 'user-list-timeline' - } + if (type == 'home') { + return 'timeline' + } else if (type == 'mix') { + return 'hybrid-timeline' + } else if (type == 'local' || type == 'noauth') { + return 'local-timeline' + } else if (type == 'local-media') { + return 'local-timeline' + } else if (type == 'pub') { + return 'global-timeline' + } else if (type == 'pub-media') { + return 'global-timeline' + } else if (type == 'tag') { + return 'search_by_tag' + } else if (type == 'list') { + return 'user-list-timeline' + } } //TLのアイコン function icon(type) { - if (type == 'home') { - var response = 'home' - } else if (type == 'local') { - var response = 'people_outline' - } else if (type == 'local-media') { - var response = 'people_outline' - } else if (type == 'pub') { - var response = 'language' - } else if (type == 'pub-media') { - var response = 'language' - } else if (type == 'tag') { - var response = 'whatshot' - } else if (type == 'list') { - var response = 'view_headline' - } else if (type == 'notf') { - var response = 'notifications' - } else if (type == 'noauth') { - var response = 'people_outline' - } else if (type == 'dm') { - var response = 'mail_outline' - } else if (type == 'mix') { - var response = 'merge_type' - } else if (type == 'plus') { - var response = 'merge_type' - } else if (type == 'webview') { - var response = 'language' - } else if (type == 'tootsearch') { - var response = 'search' - } else if (type == 'bookmark') { - var response = 'bookmark' - } - return response + if (type == 'home') { + var response = 'home' + } else if (type == 'local') { + var response = 'people_outline' + } else if (type == 'local-media') { + var response = 'people_outline' + } else if (type == 'pub') { + var response = 'language' + } else if (type == 'pub-media') { + var response = 'language' + } else if (type == 'tag') { + var response = 'whatshot' + } else if (type == 'list') { + var response = 'view_headline' + } else if (type == 'notf') { + var response = 'notifications' + } else if (type == 'noauth') { + var response = 'people_outline' + } else if (type == 'dm') { + var response = 'mail_outline' + } else if (type == 'mix') { + var response = 'merge_type' + } else if (type == 'plus') { + var response = 'merge_type' + } else if (type == 'webview') { + var response = 'language' + } else if (type == 'tootsearch') { + var response = 'search' + } else if (type == 'bookmark') { + var response = 'bookmark' + } + return response } -function reconnector(tlid, type, acct_id, data, mode) { - console.log('%c Reconnector:' + mode + '(timeline' + tlid + ')', 'color:pink') - if (type == 'mix' || type == 'integrated' || type == 'plus') { - if (localStorage.getItem('voice_' + tlid)) { - var voice = true - } else { - var voice = false - } - var mute = getFilterTypeByAcct(acct_id, type) - var wssh = localStorage.getItem('wssH_' + tlid) - wsHome[wssh].close() - var wssl = localStorage.getItem('wssL_' + tlid) - wsLocal[wssl].close() - mixre(acct_id, tlid, type, mute, '', voice, mode) - } else if (type == 'notf') { - notfColumn(acct_id, tlid, '') - } else { - var wss = localStorage.getItem('wss_' + tlid) - websocket[wss].close() - if (localStorage.getItem('voice_' + tlid)) { - var voice = true - } else { - var voice = false - } - var mute = getFilterTypeByAcct(acct_id, type) - var domain = localStorage.getItem('domain_' + acct_id) - } - M.toast({ html: lang.lang_tl_reconnect, displayLength: 2000 }) -} -function columnReload(tlid, type) { - $('#notice_icon_' + tlid).addClass('red-text') - $('#unread_' + tlid + ' .material-icons').removeClass('teal-text') - var multi = localStorage.getItem('column') - var obj = JSON.parse(multi) - var acct_id = obj[tlid].domain - var domain = localStorage.getItem('domain_' + acct_id) - if (mastodonBaseWsStatus[domain] == 'available') { - stremaingSubscribe(type, acct_id, obj[tlid].data, true) - parseColumn(tlid, true) - return true - } - if (type == 'mix' || type == 'integrated' || type == 'plus') { - if (localStorage.getItem('voice_' + tlid)) { - var voice = true - } else { - var voice = false - } - var mute = getFilterTypeByAcct(acct_id, type) - var wssh = localStorage.getItem('wssH_' + tlid) - wsHome[wssh].close() - var wssl = localStorage.getItem('wssL_' + tlid) - wsLocal[wssl].close() - parseColumn(tlid) - } else if (type == 'notf') { - $('#notice_icon_' + tlid).removeClass('red-text') - notfColumn(acct_id, tlid, '') - } else if (type == 'bookmark') { - $('#notice_icon_' + tlid).removeClass('red-text') - getBookmark(acct_id, tlid, false) - } else { - var wss = localStorage.getItem('wss_' + tlid) - websocket[wss].close() - parseColumn(tlid, false) - } +function reconnector(tlid, type, acct_id, data, mode) { + console.log('%c Reconnector:' + mode + '(timeline' + tlid + ')', 'color:pink') + if (type == 'mix' || type == 'integrated' || type == 'plus') { + if (localStorage.getItem('voice_' + tlid)) { + var voice = true + } else { + var voice = false + } + var mute = getFilterTypeByAcct(acct_id, type) + var wssh = localStorage.getItem('wssH_' + tlid) + wsHome[wssh].close() + var wssl = localStorage.getItem('wssL_' + tlid) + wsLocal[wssl].close() + mixre(acct_id, tlid, type, mute, '', voice, mode) + } else if (type == 'notf') { + notfColumn(acct_id, tlid, '') + } else { + var wss = localStorage.getItem('wss_' + tlid) + websocket[wss].close() + if (localStorage.getItem('voice_' + tlid)) { + var voice = true + } else { + var voice = false + } + var mute = getFilterTypeByAcct(acct_id, type) + var domain = localStorage.getItem('domain_' + acct_id) + } + M.toast({ html: lang.lang_tl_reconnect, displayLength: 2000 }) +} + +function columnReload(tlid, type) { + $('#notice_icon_' + tlid).addClass('red-text') + $('#unread_' + tlid + ' .material-icons').removeClass('teal-text') + var multi = localStorage.getItem('column') + var obj = JSON.parse(multi) + var acct_id = obj[tlid].domain + var domain = localStorage.getItem('domain_' + acct_id) + if (mastodonBaseWsStatus[domain] == 'available') { + stremaingSubscribe(type, acct_id, obj[tlid].data, true) + parseColumn(tlid, true) + return true + } + if (type == 'mix' || type == 'integrated' || type == 'plus') { + if (localStorage.getItem('voice_' + tlid)) { + var voice = true + } else { + var voice = false + } + var mute = getFilterTypeByAcct(acct_id, type) + var wssh = localStorage.getItem('wssH_' + tlid) + wsHome[wssh].close() + var wssl = localStorage.getItem('wssL_' + tlid) + wsLocal[wssl].close() + parseColumn(tlid) + } else if (type == 'notf') { + $('#notice_icon_' + tlid).removeClass('red-text') + notfColumn(acct_id, tlid, '') + } else if (type == 'bookmark') { + $('#notice_icon_' + tlid).removeClass('red-text') + getBookmark(acct_id, tlid, false) + } else { + + var wss = localStorage.getItem('wss_' + tlid) + websocket[wss].close() + parseColumn(tlid, false) + } } //Markers function getMarker(tlid, type, acct_id) { - var domain = localStorage.getItem('domain_' + acct_id) - var at = localStorage.getItem('acct_' + acct_id + '_at') - if (type == 'home') { - var add = 'home' - } else if (type == 'notf') { - var add = 'notifications' - } - var start = 'https://' + domain + '/api/v1/markers?timeline=' + add - fetch(start, { - method: 'GET', - headers: { - 'content-type': 'application/json', - Authorization: 'Bearer ' + at, - }, - }) - .then(function (response) { - if (!response.ok) { - response.text().then(function (text) { - setLog(response.url, response.status, text) - }) - } - return response.json() - }) - .catch(function (error) { - $('#unread_' + tlid).attr( - 'title', - lang.lang_layout_unread + ':' + lang.lang_nothing - ) - $('#unread_' + tlid).attr('data-id', '') - return false - }) - .then(function (json) { - if (json) { - if (json[add]) { - json = json[add] - $('#unread_' + tlid).attr( - 'title', - lang.lang_layout_unread + - ':' + - json.updated_at + - ' v' + - json.version - ) - $('#unread_' + tlid).attr('data-id', json.last_read_id) - } else { - $('#unread_' + tlid).attr( - 'title', - lang.lang_layout_unread + ':' + lang.lang_nothing - ) - $('#unread_' + tlid).attr('data-id', '') - } - } else { - $('#unread_' + tlid).attr( - 'title', - lang.lang_layout_unread + ':' + lang.lang_nothing - ) - $('#unread_' + tlid).attr('data-id', '') - } - }) + var domain = localStorage.getItem('domain_' + acct_id) + var at = localStorage.getItem('acct_' + acct_id + '_at') + if (type == 'home') { + var add = 'home' + } else if (type == 'notf') { + var add = 'notifications' + } + var start = 'https://' + domain + '/api/v1/markers?timeline=' + add + fetch(start, { + method: 'GET', + headers: { + 'content-type': 'application/json', + Authorization: 'Bearer ' + at, + }, + }) + .then(function(response) { + if (!response.ok) { + response.text().then(function(text) { + setLog(response.url, response.status, text) + }) + } + return response.json() + }) + .catch(function(error) { + $('#unread_' + tlid).attr( + 'title', + lang.lang_layout_unread + ':' + lang.lang_nothing + ) + $('#unread_' + tlid).attr('data-id', '') + return false + }) + .then(function(json) { + if (json) { + if (json[add]) { + json = json[add] + $('#unread_' + tlid).attr( + 'title', + lang.lang_layout_unread + + ':' + + json.updated_at + + ' v' + + json.version + ) + $('#unread_' + tlid).attr('data-id', json.last_read_id) + } else { + $('#unread_' + tlid).attr( + 'title', + lang.lang_layout_unread + ':' + lang.lang_nothing + ) + $('#unread_' + tlid).attr('data-id', '') + } + } else { + $('#unread_' + tlid).attr( + 'title', + lang.lang_layout_unread + ':' + lang.lang_nothing + ) + $('#unread_' + tlid).attr('data-id', '') + } + }) } + function showUnread(tlid, type, acct_id) { - if ($('#unread_' + tlid + ' .material-icons').hasClass('teal-text')) { - goTop(tlid) - return - } - $('#unread_' + tlid + ' .material-icons').addClass('teal-text') - var domain = localStorage.getItem('domain_' + acct_id) - var at = localStorage.getItem('acct_' + acct_id + '_at') - var id = $('#unread_' + tlid).attr('data-id') - if (type == 'home') { - var add = 'timelines/home?min_id=' + id - } else if (type == 'notf') { - var add = 'notifications?min_id=' + id - } - var start = 'https://' + domain + '/api/v1/' + add - fetch(start, { - method: 'GET', - headers: { - 'content-type': 'application/json', - Authorization: 'Bearer ' + at, - }, - }) - .then(function (response) { - if (!response.ok) { - response.text().then(function (text) { - setLog(response.url, response.status, text) - }) - } - return response.json() - }) - .catch(function (error) { - todo(error) - setLog(start, 'JSON', error) - console.error(error) - }) - .then(function (json) { - if (!json || !json.length) { - columnReload(tlid, type) - } - var mute = getFilterTypeByAcct(acct_id, type) - var templete = parse(json, type, acct_id, tlid, '', mute, type) - var len = json.length - 1 - $('#timeline_' + tlid).html(templete) - if ($('#timeline_' + tlid + ' .cvo:eq(' + len + ')').length) { - var to = $('#timeline_' + tlid + ' .cvo:eq(' + len + ')').offset().top - $('#timeline_box_' + tlid + '_box .tl-box').scrollTop(to) - } - additional(acct_id, tlid) - jQuery('time.timeago').timeago() - todc() - }) + if ($('#unread_' + tlid + ' .material-icons').hasClass('teal-text')) { + goTop(tlid) + return + } + $('#unread_' + tlid + ' .material-icons').addClass('teal-text') + var domain = localStorage.getItem('domain_' + acct_id) + var at = localStorage.getItem('acct_' + acct_id + '_at') + var id = $('#unread_' + tlid).attr('data-id') + if (type == 'home') { + var add = 'timelines/home?min_id=' + id + } else if (type == 'notf') { + var add = 'notifications?min_id=' + id + } + var start = 'https://' + domain + '/api/v1/' + add + fetch(start, { + method: 'GET', + headers: { + 'content-type': 'application/json', + Authorization: 'Bearer ' + at, + }, + }) + .then(function(response) { + if (!response.ok) { + response.text().then(function(text) { + setLog(response.url, response.status, text) + }) + } + return response.json() + }) + .catch(function(error) { + todo(error) + setLog(start, 'JSON', error) + console.error(error) + }) + .then(function(json) { + if (!json || !json.length) { + columnReload(tlid, type) + } + var mute = getFilterTypeByAcct(acct_id, type) + var templete = parse(json, type, acct_id, tlid, '', mute, type) + var len = json.length - 1 + $('#timeline_' + tlid).html(templete) + if ($('#timeline_' + tlid + ' .cvo:eq(' + len + ')').length) { + var to = $('#timeline_' + tlid + ' .cvo:eq(' + len + ')').offset().top + $('#timeline_box_' + tlid + '_box .tl-box').scrollTop(to) + } + additional(acct_id, tlid) + jQuery('time.timeago').timeago() + todc() + }) } var ueloadlock = false -function ueload(tlid) { - if (ueloadlock) { - return false - } - ueloadlock = true - var multi = localStorage.getItem('column') - var obj = JSON.parse(multi) - var acct_id = obj[tlid * 1].domain - var type = obj[tlid * 1].type - var domain = localStorage.getItem('domain_' + acct_id) - var at = localStorage.getItem('acct_' + acct_id + '_at') - var id = $('#timeline_' + tlid + ' .cvo:eq(0)').attr('unique-id') - if (type == 'home') { - var add = 'timelines/home?min_id=' + id - } else if (type == 'notf') { - var add = 'notifications?min_id=' + id - } - var start = 'https://' + domain + '/api/v1/' + add - fetch(start, { - method: 'GET', - headers: { - 'content-type': 'application/json', - Authorization: 'Bearer ' + at, - }, - }) - .then(function (response) { - if (!response.ok) { - response.text().then(function (text) { - setLog(response.url, response.status, text) - }) - } - return response.json() - }) - .catch(function (error) { - todo(error) - setLog(start, 'JSON', error) - console.error(error) - }) - .then(function (json) { - if (!json) { - columnReload(tlid, type) - } - var mute = getFilterTypeByAcct(acct_id, type) - var templete = parse(json, '', acct_id, tlid, '', mute, type) - var len = json.length - 1 - $('#timeline_' + tlid).prepend(templete) - if ($('#timeline_' + tlid + ' .cvo:eq(' + len + ')').length) { - var to = $('#timeline_' + tlid + ' .cvo:eq(' + len + ')').offset().top - $('#timeline_box_' + tlid + '_box .tl-box').scrollTop(to) - } - additional(acct_id, tlid) - jQuery('time.timeago').timeago() - todc() - ueloadlock = false - }) -} -function asRead(callback) { - //Markers - var markers = localStorage.getItem('markers') - if (markers == 'no') { - markers = false - } else { - markers = true - } - if (markers) { - var multi = localStorage.getItem('column') - var obj = JSON.parse(multi) - var obl = obj.length - ct = 0 - for (var i = 0; i < obl; i++) { - var acct_id = obj[i].domain - var type = obj[i].type - if (type == 'home' || type == 'notf') { - if (type == 'home') { - var id = $('#timeline_' + i + ' .cvo:eq(0)').attr('unique-id') - var poster = { - home: { - last_read_id: id, - }, - } - } else { - var id = $('#timeline_' + i + ' .cvo:eq(0)').attr('data-notf') - var poster = { - notifications: { - last_read_id: id, - }, - } - } - var domain = localStorage.getItem('domain_' + acct_id) - var at = localStorage.getItem('acct_' + acct_id + '_at') - var httpreq = new XMLHttpRequest() - var start = 'https://' + domain + '/api/v1/markers' - httpreq.open('POST', start, true) - httpreq.setRequestHeader('Content-Type', 'application/json') - httpreq.setRequestHeader('Authorization', 'Bearer ' + at) - httpreq.responseType = 'json' - httpreq.send(JSON.stringify(poster)) - httpreq.onreadystatechange = function () { - if (httpreq.readyState === 4) { - var json = httpreq.response - if (this.status !== 200) { - setLog(start, this.status, this.response) - } - console.log(json) - ct++ - if (ct == obl && callback) { - postMessage(['asReadComp', ''], '*') - } - } - } - } - } - } +function ueload(tlid) { + if (ueloadlock) { + return false + } + ueloadlock = true + var multi = localStorage.getItem('column') + var obj = JSON.parse(multi) + var acct_id = obj[tlid * 1].domain + var type = obj[tlid * 1].type + var domain = localStorage.getItem('domain_' + acct_id) + var at = localStorage.getItem('acct_' + acct_id + '_at') + var id = $('#timeline_' + tlid + ' .cvo:eq(0)').attr('unique-id') + if (type == 'home') { + var add = 'timelines/home?min_id=' + id + } else if (type == 'notf') { + var add = 'notifications?min_id=' + id + } + var start = 'https://' + domain + '/api/v1/' + add + fetch(start, { + method: 'GET', + headers: { + 'content-type': 'application/json', + Authorization: 'Bearer ' + at, + }, + }) + .then(function(response) { + if (!response.ok) { + response.text().then(function(text) { + setLog(response.url, response.status, text) + }) + } + return response.json() + }) + .catch(function(error) { + todo(error) + setLog(start, 'JSON', error) + console.error(error) + }) + .then(function(json) { + if (!json) { + columnReload(tlid, type) + } + var mute = getFilterTypeByAcct(acct_id, type) + var templete = parse(json, '', acct_id, tlid, '', mute, type) + var len = json.length - 1 + $('#timeline_' + tlid).prepend(templete) + if ($('#timeline_' + tlid + ' .cvo:eq(' + len + ')').length) { + var to = $('#timeline_' + tlid + ' .cvo:eq(' + len + ')').offset().top + $('#timeline_box_' + tlid + '_box .tl-box').scrollTop(to) + } + additional(acct_id, tlid) + jQuery('time.timeago').timeago() + todc() + ueloadlock = false + }) } + +function asRead(callback) { + //Markers + var markers = localStorage.getItem('markers') + if (markers == 'no') { + markers = false + } else { + markers = true + } + if (markers) { + var multi = localStorage.getItem('column') + var obj = JSON.parse(multi) + var obl = obj.length + ct = 0 + for (var i = 0; i < obl; i++) { + var acct_id = obj[i].domain + var type = obj[i].type + if (type == 'home' || type == 'notf') { + if (type == 'home') { + var id = $('#timeline_' + i + ' .cvo:eq(0)').attr('unique-id') + var poster = { + home: { + last_read_id: id, + }, + } + } else { + var id = $('#timeline_' + i + ' .cvo:eq(0)').attr('data-notf') + var poster = { + notifications: { + last_read_id: id, + }, + } + } + + var domain = localStorage.getItem('domain_' + acct_id) + var at = localStorage.getItem('acct_' + acct_id + '_at') + var httpreq = new XMLHttpRequest() + var start = 'https://' + domain + '/api/v1/markers' + httpreq.open('POST', start, true) + httpreq.setRequestHeader('Content-Type', 'application/json') + httpreq.setRequestHeader('Authorization', 'Bearer ' + at) + httpreq.responseType = 'json' + httpreq.send(JSON.stringify(poster)) + httpreq.onreadystatechange = function() { + if (httpreq.readyState === 4) { + var json = httpreq.response + if (this.status !== 200) { + setLog(start, this.status, this.response) + } + console.log(json) + ct++ + if (ct == obl && callback) { + postMessage(['asReadComp', ''], '*') + } + } + } + } + } + } +} + function asReadEnd() { - //Markers - var markers = localStorage.getItem('markers') - if (markers == 'no') { - markers = false - } else { - markers = true - } - if (markers) { - asRead(true) - Swal.fire({ - title: lang.lang_tl_postmarkers_title, - html: lang.lang_tl_postmarkers, - showConfirmButton: false, - timer: 3000, - onBeforeOpen: () => { - Swal.showLoading() - }, - onClose: () => { }, - }).then((result) => { }) - } else { - postMessage(['asReadComp', ''], '*') - } + //Markers + var markers = localStorage.getItem('markers') + if (markers == 'no') { + markers = false + } else { + markers = true + } + if (markers) { + asRead(true) + Swal.fire({ + title: lang.lang_tl_postmarkers_title, + html: lang.lang_tl_postmarkers, + showConfirmButton: false, + timer: 3000, + onBeforeOpen: () => { + Swal.showLoading() + }, + onClose: () => {}, + }).then((result) => {}) + } else { + postMessage(['asReadComp', ''], '*') + } } //ブックマーク function getBookmark(acct_id, tlid, more) { - moreloading = true - console.log(acct_id, tlid, more) - if (more) { - var sid = $('#timeline_' + tlid + ' .notif-marker') - .last() - .attr('data-maxid') - var ad = '?max_id=' + sid - } else { - var ad = '' - } - var at = localStorage.getItem('acct_' + acct_id + '_at') - var domain = localStorage.getItem('domain_' + acct_id) - var start = 'https://' + domain + '/api/v1/bookmarks' + ad - var httpreq = new XMLHttpRequest() - httpreq.open('GET', start, true) - httpreq.setRequestHeader('Content-Type', 'application/json') - httpreq.setRequestHeader('Authorization', 'Bearer ' + at) - httpreq.responseType = 'json' - httpreq.send() - httpreq.onreadystatechange = function () { - if (httpreq.readyState === 4) { - var json = httpreq.response - if (this.status !== 200) { - setLog(start, this.status, this.response) - } - var max_ids = httpreq.getResponseHeader('link') - var max_id = 0 - if (max_ids) { - max_ids = max_ids.match(/[?&]{1}max_id=([0-9]+)/) - if (max_ids) { - max_id = max_ids[1] - } - } - var templete = parse(json, 'bookmark', acct_id, tlid, -1, null) - templete = - templete + - '
' - if (more) { - $('#timeline_' + tlid).append(templete) - } else { - $('#timeline_' + tlid).html(templete) - } - $('#landing_' + tlid).hide() - jQuery('time.timeago').timeago() - moreloading = false - todc() - } - } + moreloading = true + console.log(acct_id, tlid, more) + if (more) { + var sid = $('#timeline_' + tlid + ' .notif-marker') + .last() + .attr('data-maxid') + var ad = '?max_id=' + sid + } else { + var ad = '' + } + var at = localStorage.getItem('acct_' + acct_id + '_at') + var domain = localStorage.getItem('domain_' + acct_id) + var start = 'https://' + domain + '/api/v1/bookmarks' + ad + var httpreq = new XMLHttpRequest() + httpreq.open('GET', start, true) + httpreq.setRequestHeader('Content-Type', 'application/json') + httpreq.setRequestHeader('Authorization', 'Bearer ' + at) + httpreq.responseType = 'json' + httpreq.send() + httpreq.onreadystatechange = function() { + if (httpreq.readyState === 4) { + var json = httpreq.response + if (this.status !== 200) { + setLog(start, this.status, this.response) + } + var max_ids = httpreq.getResponseHeader('link') + var max_id = 0 + if (max_ids) { + max_ids = max_ids.match(/[?&]{1}max_id=([0-9]+)/) + if (max_ids) { + max_id = max_ids[1] + } + } + var templete = parse(json, 'bookmark', acct_id, tlid, -1, null) + templete = + templete + + '
' + if (more) { + $('#timeline_' + tlid).append(templete) + } else { + $('#timeline_' + tlid).html(templete) + } + $('#landing_' + tlid).hide() + jQuery('time.timeago').timeago() + moreloading = false + todc() + } + } } + function getUtl(acct_id, tlid, data, more) { - moreloading = true - if (more) { - var sid = $('#timeline_' + tlid + ' .cvo') - .last() - .attr('unique-id') - var ad = '?max_id=' + sid - } else { - var ad = '' - } - var at = localStorage.getItem('acct_' + acct_id + '_at') - var domain = localStorage.getItem('domain_' + acct_id) - var start = "https://" + domain + "/api/v1/accounts/" + data.id + "/statuses" + ad - var httpreq = new XMLHttpRequest() - httpreq.open('GET', start, true) - httpreq.setRequestHeader('Content-Type', 'application/json') - httpreq.setRequestHeader('Authorization', 'Bearer ' + at) - httpreq.responseType = 'json' - httpreq.send() - httpreq.onreadystatechange = function () { - if (httpreq.readyState === 4) { - var json = httpreq.response - if (this.status !== 200) { - setLog(start, this.status, this.response) - } - var templete = parse(json, 'bookmark', acct_id, tlid, -1, null) - templete = - templete - if (more) { - $('#timeline_' + tlid).append(templete) - } else { - $('#timeline_' + tlid).html(templete) - } - $('#landing_' + tlid).hide() - jQuery('time.timeago').timeago() - moreloading = false - todc() - } - } + moreloading = true + if (more) { + var sid = $('#timeline_' + tlid + ' .cvo') + .last() + .attr('unique-id') + var ad = '?max_id=' + sid + } else { + var ad = '' + } + var at = localStorage.getItem('acct_' + acct_id + '_at') + var domain = localStorage.getItem('domain_' + acct_id) + var start = "https://" + domain + "/api/v1/accounts/" + data.id + "/statuses" + ad + var httpreq = new XMLHttpRequest() + httpreq.open('GET', start, true) + httpreq.setRequestHeader('Content-Type', 'application/json') + httpreq.setRequestHeader('Authorization', 'Bearer ' + at) + httpreq.responseType = 'json' + httpreq.send() + httpreq.onreadystatechange = function() { + if (httpreq.readyState === 4) { + var json = httpreq.response + if (this.status !== 200) { + setLog(start, this.status, this.response) + } + var templete = parse(json, 'bookmark', acct_id, tlid, -1, null) + templete = + templete + if (more) { + $('#timeline_' + tlid).append(templete) + } else { + $('#timeline_' + tlid).html(templete) + } + $('#landing_' + tlid).hide() + jQuery('time.timeago').timeago() + moreloading = false + todc() + } + } } //Announcement function announ(acct_id, tlid) { - var at = localStorage.getItem('acct_' + acct_id + '_at') - var domain = localStorage.getItem('domain_' + acct_id) - var start = 'https://' + domain + '/api/v1/announcements' - var httpreq = new XMLHttpRequest() - httpreq.open('GET', start, true) - httpreq.setRequestHeader('Content-Type', 'application/json') - httpreq.setRequestHeader('Authorization', 'Bearer ' + at) - httpreq.responseType = 'json' - httpreq.send() - httpreq.onreadystatechange = function () { - if (httpreq.readyState === 4) { - var json = httpreq.response - if (this.status !== 200) { - setLog(start, this.status, this.response) - } - if (json.length > 0) { - $('.notf-announ_' + acct_id).removeClass('hide') - var ct = 0 - for (var i = 0; i < json.length; i++) { - if (localStorage.getItem('announ_' + acct_id) == json[i].id) { - break - } - ct++ - } - if (ct > 0) { - $('.notf-announ_' + acct_id + '_ct').text(ct) - } - - localStorage.setItem('announ_' + acct_id, json[0].id) - } else { - $('.notf-announ_' + acct_id).addClass('hide') - } - var templete = announParse(json, acct_id, tlid) - $('.announce_' + acct_id).html(templete) - jQuery('time.timeago').timeago() - todc() - } - } + var at = localStorage.getItem('acct_' + acct_id + '_at') + var domain = localStorage.getItem('domain_' + acct_id) + var start = 'https://' + domain + '/api/v1/announcements' + var httpreq = new XMLHttpRequest() + httpreq.open('GET', start, true) + httpreq.setRequestHeader('Content-Type', 'application/json') + httpreq.setRequestHeader('Authorization', 'Bearer ' + at) + httpreq.responseType = 'json' + httpreq.send() + httpreq.onreadystatechange = function() { + if (httpreq.readyState === 4) { + var json = httpreq.response + if (this.status !== 200) { + setLog(start, this.status, this.response) + } + if (json.length > 0) { + $('.notf-announ_' + acct_id).removeClass('hide') + var ct = 0 + for (var i = 0; i < json.length; i++) { + if (localStorage.getItem('announ_' + acct_id) == json[i].id) { + break + } + ct++ + } + if (ct > 0) { + $('.notf-announ_' + acct_id + '_ct').text(ct) + } + + localStorage.setItem('announ_' + acct_id, json[0].id) + } else { + $('.notf-announ_' + acct_id).addClass('hide') + } + var templete = announParse(json, acct_id, tlid) + $('.announce_' + acct_id).html(templete) + jQuery('time.timeago').timeago() + todc() + } + } } //buildQuery function buildQuery(name, data) { - if (!data || data == '') return '' - var arr = data.split(',') - var str = '' - for (var i = 0; i < arr.length; i++) { - str = str + `${name}[]=${arr[i]}&` - } - return str -} + if (!data || data == '') return '' + var arr = data.split(',') + var str = '' + for (var i = 0; i < arr.length; i++) { + str = str + `${name}[]=${arr[i]}&` + } + return str +} \ No newline at end of file diff --git a/app/view/make/index.sample.html b/app/view/make/index.sample.html index beb3cf9e..71f6c629 100644 --- a/app/view/make/index.sample.html +++ b/app/view/make/index.sample.html @@ -2,1307 +2,1118 @@ - - - - - - - - - - - - - - @@comment-start@@ - - - @@comment-end@@ @@pwa@@ @@store@@ + + + + + + + + + + + + + @@comment-start@@ + + + @@comment-end@@ @@pwa@@ @@store@@ - - - -
-
-
@@webSrc@@
-
@@tsSrc@@
-
@@copy@@
-
@@toot@@
-
-
- - - - Feature -
-
- @@nowOffline@@ -
-
- @@reOnline@@ -
-
- - -
-
-

@@demoBottomBtns@@

- @@lookAtBottom@@ - -
- account_circle: @@acctMan@@
- @@acctManDesc@@ -
- settings: @@setting@@
- @@settingDesc@@ -
- remove_from_queue: TheDesk Nano @@nanoDes@@
- @@nanoDescPlus@@ -
- apps: @@menu@@
- @@menuDesc@@
-
- -
-
- -
-
- @@draghere@@ -
- -
-
-
-
-
- @@post-new@@Reaction -
- -
-
-
- - - -
-
- -
- - cancel - - -
-
-
- format_bold - format_italic - format_underlined - strikethrough_s - format_quote - short_text - code - format_list_bulleted - format_list_numbered - - - autorenew - flare - swap_vert - swap_horiz - - Markdownエディタを隠す + + + +
+
+
@@webSrc@@
+
@@tsSrc@@
+
@@copy@@
+
@@toot@@
+
+
+ + + + Feature +
+
@@nowOffline@@
+
@@reOnline@@
+
+ + +
+
+

@@demoBottomBtns@@

+ @@lookAtBottom@@ + +
+ account_circle: @@acctMan@@
@@acctManDesc@@ +
+ settings: @@setting@@
@@settingDesc@@ +
+ remove_from_queue: TheDesk Nano @@nanoDes@@
@@nanoDescPlus@@ +
+ apps: @@menu@@
@@menuDesc@@ +
+
+ +
+
+ +
+
+ @@draghere@@ +
+ +
+
+
+
+
@@post-new@@Reaction
+ +
+
+
+ + + +
+
+ +
+ + cancel + + +
+
+
+ format_bold + format_italic + format_underlined + strikethrough_s + format_quote + short_text + code + format_list_bulleted + format_list_numbered + + + autorenew + flare + swap_vert + swap_horiz + + Markdownエディタを隠す + +
+ format_size + px + color_lens + +
+ link +   + +
+ image +   + +
+
+
+
+ + Edit -
- format_size - px - color_lens - -
- link -   - -
- image -   - -
-
-
-
- - Edit - -
-
- +
+
+ -
- -
- - Preview - - - Markdownエディタを表示 - -
-
- visibility_off - public - CW - photo_library - tag_faces - more_vert - clear -
-
-
-
- @@replyMode@@: @@no@@/@@temp@@: - @@nothing@@ - @@stamp@@: Off - /@@poll@@:@@no@@ - public - -
- -
- @@postat@@
@@scheduleWarn@@Expire - mode(beta)
- -
-
-
- - - - - - - - - - -
-
- - -
-
-
-
- -
- @@emojiWarn@@ - @@refreshEmoji@@ -
-
-
-
-
+
+ visibility_off + public + CW + photo_library + tag_faces + more_vert + clear +
+
+
+
+ @@replyMode@@: @@no@@/@@temp@@: + @@nothing@@ + @@stamp@@: Off /@@poll@@: + @@no@@ + public + +
+ +
+ @@postat@@
@@scheduleWarn@@Expire mode(beta)
+ +
+
+
+ + + + + + + + + + +
+
+ + - / - -
+
+
+
+ +
+ @@emojiWarn@@ + @@refreshEmoji@@ +
+
+
+
+ + / + + +
+ +
+ +
+
+ + + + + + + @@days@@ + @@hours@@ + @@mins@@ +
+
+
+
+ + -
- - - - + + - -
- -
-
-
ご支援いただけませんか?
- (これは支援の有無に関わらず定期的に出ます。過去のバージョン等で何度も表示される等のバグを確認しております。)
- あなたのMastodon, Misskeyライフを邪魔してしまって申し訳ありません。
- 乞食のようなマネをしてご支援をお願いするのもどうかと思いますが、少々お時間をください。
-
- TheDeskになぜ金銭が発生するかについて: - 詳細は省きますが、開発者から緊急の連絡をしたりするのに使われます。
- 全てのユーザーが安心してTheDeskを使っていただける環境のためにも、ぜひご支援をご検討ください。ご支援いただけなくても使用不可能になることは全くありません。
- @@TheDeskDes@@ -
-
-
Support me
- It may disturb your Mastodon life, but your support is required to keep TheDesk awesome!
- @@TheDeskDes@@ -
- -
-
@@once@@
- - @@AWLSupport@@ - -
- @@SendAmazonGift1@@web-pro@cutls.com@@SendAmazonGift2@@
- Kyash
-
-
-
- -
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + close + +
+
+ + + + + +
+ chevron_right + expand_less + close +
+
+ + +
+ +
+
+ + +
+
+
+ + + +
+
+
ご支援いただけませんか?
+ (これは支援の有無に関わらず定期的に出ます。過去のバージョン等で何度も表示される等のバグを確認しております。)
あなたのMastodon, Misskeyライフを邪魔してしまって申し訳ありません。
乞食のようなマネをしてご支援をお願いするのもどうかと思いますが、少々お時間をください。 +
+
TheDeskになぜ金銭が発生するかについて: 詳細は省きますが、開発者から緊急の連絡をしたりするのに使われます。 +
+ 全てのユーザーが安心してTheDeskを使っていただける環境のためにも、ぜひご支援をご検討ください。ご支援いただけなくても使用不可能になることは全くありません。
+ @@TheDeskDes@@ +
+
+
Support me
+ It may disturb your Mastodon life, but your support is required to keep TheDesk awesome!
+ @@TheDeskDes@@ +
+ +
+
@@once@@
+ @@AWLSupport@@ +
@@SendAmazonGift1@@ web-pro@cutls.com@@SendAmazonGift2@@
Kyash +
+
+
+
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/view/make/language/en/index.json b/app/view/make/language/en/index.json index 738deca6..cb5e6326 100644 --- a/app/view/make/language/en/index.json +++ b/app/view/make/language/en/index.json @@ -1,184 +1,185 @@ { - "draghere":"Drag here to upload", - "nowOffline":"OFFLINE: all of your post is in the draft box and you should reload after re-connect to the Internet", - "reOnline":"Now we are in the Internet, you should reload...", - "close":"Close", + "draghere": "Drag here to upload", + "nowOffline": "OFFLINE: all of your post is in the draft box and you should reload after re-connect to the Internet", + "reOnline": "Now we are in the Internet, you should reload...", + "close": "Close", "webSrc": "Search on Web", "tsSrc": "Search on tootsearch", - "showSelectProf":"Show profile of the selecting account", - "closethisbox":"Close this box", - "toot":"Toot", - "post-new":"Post new", - "nsfwDes":"Mark media as sensitive", - "cwDes":"Hide text behind warning", - "selfile":"Attach..", - "insertEmoji":"Emojis", - "schedule":"Scheduled toot", - "postat":"Post at", - "scheduleWarn":"2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)", - "clearToot":"Clear toot box", - "replyMode":"Reply", - "no":"No", - "yes":"Yes", - "temp":"Attaching files", - "nothing":"None", + "showSelectProf": "Show profile of the selecting account", + "closethisbox": "Close this box", + "toot": "Toot", + "post-new": "Post new", + "nsfwDes": "Mark media as sensitive", + "cwDes": "Hide text behind warning", + "selfile": "Attach..", + "insertEmoji": "Emojis", + "schedule": "Scheduled toot", + "postat": "Post at", + "scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)", + "clearToot": "Clear toot box", + "replyMode": "Reply", + "no": "No", + "yes": "Yes", + "temp": "Attaching files", + "nothing": "None", "stamp": "Stamp", "stampWarn": "Your acct(aa@bb.cc) is printed on the right-bottom of the uploaded image", - "vis":"Adjust status privacy", - "cwtext":"Warning text", - "selectVis":"Adjust status privacy", - "publicJP":"", - "unlistedJP":"", - "privateJP":"", - "localJP":"Local only", - "sectoot":"Secondary Toot", - "directJP":"", - "emojiWarn":"", - "emojiInsertWarn":"Some emojis are not able to be inserted.", - "refreshEmoji":"Refresh emojis list", - "closeThisBox":"Close this box", - "showThisEmoji":" are shown.", - "customEmoji":"Custom emojis", - "peopleEmoji":"Emojis of people", - "natureEmoji":"Emojis of nature", - "foodEmoji":"Emojis of foods", - "activityEmoji":"Emojis of activities", - "placeEmoji":"Emojis of places", - "thingsEmoji":"Emojis of tools", - "symbolEmoji":"Emojis of symbols", - "flagsEmoji":"Emojis of flags", + "vis": "Adjust status privacy", + "cwtext": "Warning text", + "selectVis": "Adjust status privacy", + "publicJP": "", + "unlistedJP": "", + "privateJP": "", + "localJP": "Local only", + "sectoot": "Secondary Toot", + "directJP": "", + "emojiWarn": "", + "emojiInsertWarn": "Some emojis are not able to be inserted.", + "refreshEmoji": "Refresh emojis list", + "closeThisBox": "Close this box", + "showThisEmoji": " are shown.", + "customEmoji": "Custom emojis", + "peopleEmoji": "Emojis of people", + "natureEmoji": "Emojis of nature", + "foodEmoji": "Emojis of foods", + "activityEmoji": "Emojis of activities", + "placeEmoji": "Emojis of places", + "thingsEmoji": "Emojis of tools", + "symbolEmoji": "Emojis of symbols", + "flagsEmoji": "Emojis of flags", "draft": "Draft", - "poll":"Poll", - "pollDdisabled":"Polls: Disabled", - "pollProvider":"Provider of Poll", - "polluntil":"Hide 'votes' count until people vote it.", - "choice":"Choice", - "pollmulti":"Multiple select", - "expires_in":"Expires in...(sec)", - "contextBefore":"Context before this toot", - "thisToot":"This toot", - "contextAfter":"Context after this toot", - "beforeLTL":"Local TL before this toot", - "beforeUTL":"User TL before this toot", - "afterLTL":"Local TL after this toot)", - "afterUTL":"User TL before this toot", - "afterFTL":"Federated TL after this toot", - "favedPeople":"People who favourited it", - "btedPeople":"People who boosted it", - "useOtherAcct1":"Use other account", - "useOtherAcct2":":unfav and unBT are disabled.", + "poll": "Poll", + "pollDdisabled": "Polls: Disabled", + "pollProvider": "Provider of Poll", + "polluntil": "Hide 'votes' count until people vote it.", + "choice": "Choice", + "pollmulti": "Multiple select", + "expires_in": "Expires in...(sec)", + "contextBefore": "Context before this toot", + "thisToot": "This toot", + "contextAfter": "Context after this toot", + "beforeLTL": "Local TL before this toot", + "beforeUTL": "User TL before this toot", + "afterLTL": "Local TL after this toot)", + "afterUTL": "User TL before this toot", + "afterFTL": "Federated TL after this toot", + "favedPeople": "People who favourited it", + "btedPeople": "People who boosted it", + "useOtherAcct1": "Use other account", + "useOtherAcct2": ":unfav and unBT are disabled.", "btWithVis": "Boost with visibility", - "reply":"Reply", - "bt":"Boost", - "favRegist":"Favourite", - "openBrowser":"Open in browser", - "screenshot":"Take a screenshot", - "copyURL":"Copy the URL", - "copy":"Copy", - "embed":"Embed", - "toots":"Toots", - "follow":"Follow", - "follower":"Follower", - "utlColumn":"Show as a column", - "timeline":"Timeline", - "operateOtherAcct":"Cross-account", - "list":"List", - "makeNew":"Save", - "blocks":"Blocks", - "mutes":"Mutes", - "block":"Block", - "mute":"Mute", - "domainBlock":"Domain block", - "editProf":"Edit profile", - "change":"Save", - "followReq":"Follow requests", - "likeHimOrHer":"Resembling", - "endorse":"Feature on profile", - "openinbrowser":"Open in browser", - "mainacct":"Set it an main account", - "frc":"Suggest", - "more":"More", - "revoverJP":" to ", - "warnUseOtherAcct":"(Unable to unfollow)", - "revoverJPde":"", - "or":"or", - "openProf":"Show profile", - "warnListRegist":"Follow to add this user to lists.", - "blockDomain":"Add blocking domain", - "name":"Display name", - "note":"Note", - "editProfImg":"Change avataor", - "editHeader":"Change header image", - "blocked":"You are blocked. Why?", - "likeUserDes":"Get people resembling this user.", - "get":"Get", - "historyBack":"Back", - "empUser":"Emphasize this user", - "supportme":"Support TheDesk!", - "TheDeskDes":"TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support!", - "PatreonSupport":"Support on Patreon", - "PixivSupport":"Support on Pixiv FANBOX", - "AWLSupport":"Amazon Wish List", - "SendAmazonGift1":"Give me Amazon Gift Card:", - "SendAmazonGift2":"", - "monthly":"Monthly", - "once":"Once", - "local":"Local", - "localMedia":"Local(Media)", - "home":"Home", - "fed":"Federated", - "fedMedia":"Federated(Media)", - "dm":"Direct Message", - "integratedTLDes":"Integrated(Local/Home)", - "localPlusDes":"LTL+Reply+BT", - "notf":"Notifications", + "reply": "Reply", + "bt": "Boost", + "favRegist": "Favourite", + "openBrowser": "Open in browser", + "screenshot": "Take a screenshot", + "copyURL": "Copy the URL", + "copy": "Copy", + "embed": "Embed", + "toots": "Toots", + "follow": "Follow", + "follower": "Follower", + "utlColumn": "Show as a column", + "timeline": "Timeline", + "operateOtherAcct": "Cross-account", + "list": "List", + "makeNew": "Save", + "blocks": "Blocks", + "mutes": "Mutes", + "block": "Block", + "mute": "Mute", + "domainBlock": "Domain block", + "editProf": "Edit profile", + "change": "Save", + "followReq": "Follow requests", + "likeHimOrHer": "Resembling", + "endorse": "Feature on profile", + "openinbrowser": "Open in browser", + "mainacct": "Set it an main account", + "frc": "Suggest", + "more": "More", + "revoverJP": " to ", + "warnUseOtherAcct": "(Unable to unfollow)", + "revoverJPde": "", + "or": "or", + "openProf": "Show profile", + "warnListRegist": "Follow to add this user to lists.", + "blockDomain": "Add blocking domain", + "name": "Display name", + "note": "Note", + "editProfImg": "Change avataor", + "editHeader": "Change header image", + "blocked": "You are blocked. Why?", + "likeUserDes": "Get people resembling this user.", + "get": "Get", + "historyBack": "Back", + "empUser": "Emphasize this user", + "supportme": "Support TheDesk!", + "TheDeskDes": "TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support!", + "PatreonSupport": "Support on Patreon", + "PixivSupport": "Support on Pixiv FANBOX", + "AWLSupport": "Amazon Wish List", + "SendAmazonGift1": "Give me Amazon Gift Card:", + "SendAmazonGift2": "", + "monthly": "Monthly", + "once": "Once", + "local": "Local", + "localMedia": "Local(Media)", + "home": "Home", + "fed": "Federated", + "fedMedia": "Federated(Media)", + "dm": "Direct Message", + "integratedTLDes": "Integrated(Local/Home)", + "localPlusDes": "LTL+Reply+BT", + "notf": "Notifications", "bookmark": "Bookmarks", - "showThisTL":"Show this TL:", - "webviewWarn":"TweetDeck with customed TJDeck(Code/TJDeck).", - "add":"Add", - "search":"Search", - "sortSet":"Sort", - "selectAcct":"Account(Scroll to show all)", - "listLocale":"List", - "filterWord":"Filtering words", - "degree":"Filter contexts", - "conver":"Conversations", - "prof":"Profiles", - "option":"Options", - "matchWord":"Whole word", - "warnMatchWord":"Nice for Latin language", - "except":"Drop instead of hide", - "exceptWorn":"Filtered toots will disappear irreversibly, even if filter is later removed", - "avalableBefore":"Expire after", - "warnAvBefore":"Unset or \"0\" means \"Never\"", - "warnAvBefore2":"This value may contain some error", - "unlimited":"Never", - "days":"day(s)", - "hours":"hour(s)", - "mins":"minute(s)", - "secs":"second(s)", - "warnOnIntegratedTL":"Integrated TL/Plus TL will hide both Home-filtering words and Local-filtering words.", - "helloTheDesk":"Internal error: please clear all data(at setting page) All data will be deleted.", - "addColumn":"Add a column", - "sortColumns":"Sort", - "acctMan":"Account Manager", - "filter":"Filter", - "setting":"Preferences", - "reverse":"Toot button layout reverse", - "f5":"Reload TL", - "nanoDes":"The smallest Mastodon,", - "verTips":"Version", - "clockTips":"Clock", - "ramTips":"RAM status", - "changeTips":"Change Tips", - "helpAndLogs":"Help & Log", - "help":"Help", - "contactwithlog":"If you tell me bugs(not working or something) with this log, I can detect what is wrong more easily.", - "about":"About TheDesk", - "hereAddColumns":"<- Add TL", + "showThisTL": "Show this TL:", + "webviewWarn": "TweetDeck with customed TJDeck(Code/TJDeck).", + "add": "Add", + "search": "Search", + "sortSet": "Sort", + "selectAcct": "Account(Scroll to show all)", + "listLocale": "List", + "filterWord": "Filtering words", + "degree": "Filter contexts", + "conver": "Conversations", + "prof": "Profiles", + "option": "Options", + "matchWord": "Whole word", + "warnMatchWord": "Nice for Latin language", + "except": "Drop instead of hide", + "exceptWorn": "Filtered toots will disappear irreversibly, even if filter is later removed", + "avalableBefore": "Expire after", + "warnAvBefore": "Unset or \"0\" means \"Never\"", + "warnAvBefore2": "This value may contain some error", + "unlimited": "Never", + "days": "day(s)", + "hours": "hour(s)", + "mins": "minute(s)", + "secs": "second(s)", + "warnOnIntegratedTL": "Integrated TL/Plus TL will hide both Home-filtering words and Local-filtering words.", + "helloTheDesk": "Internal error: please clear all data(at setting page) All data will be deleted.", + "addColumn": "Add a column", + "sortColumns": "Sort", + "acctMan": "Account Manager", + "filter": "Filter", + "setting": "Preferences", + "reverse": "Toot button layout reverse", + "f5": "Reload TL", + "nanoDes": "The smallest Mastodon,", + "verTips": "Version", + "clockTips": "Clock", + "ramTips": "RAM status", + "changeTips": "Change Tips", + "helpAndLogs": "Help & Log", + "help": "Help", + "contactwithlog": "If you tell me bugs(not working or something) with this log, I can detect what is wrong more easily.", + "about": "About TheDesk", + "hereAddColumns": "<- Add TL", "foundBug": "I found a bug", "show": "Show", "directory": "Directory", + "discover": "Discover", "active": "Recently active", "newcomer": "New arrivals", "local_only": "Local only", diff --git a/app/view/make/language/ja-KS/index.json b/app/view/make/language/ja-KS/index.json index 38b9c509..0749a859 100644 --- a/app/view/make/language/ja-KS/index.json +++ b/app/view/make/language/ja-KS/index.json @@ -1,182 +1,183 @@ { - "draghere":"ドラッグしてみ?(ドラッグしたらすぐアップロードされるで)", - "nowOffline":"オフラインやで。投稿は全部下書きに行くし、もしオンラインなったら再読み込みしたらええで。", - "reOnline":"オンライン戻ったから再読み込みしてな。", - "close":"Close", + "draghere": "ドラッグしてみ?(ドラッグしたらすぐアップロードされるで)", + "nowOffline": "オフラインやで。投稿は全部下書きに行くし、もしオンラインなったら再読み込みしたらええで。", + "reOnline": "オンライン戻ったから再読み込みしてな。", + "close": "Close", "webSrc": "Webでさがす", "tsSrc": "tootsearchでさがす", - "showSelectProf":"このアカウントのプロフィール出す", - "closethisbox":"このボックスなおす", - "post-new":"投稿", - "toot":"トゥート", - "nsfwDes":"画像を見たらあかんやつにする", - "cwDes":"コンテンツワーニング(ほんまに見るんか?って聞く)", - "selfile":"ファイル選ぶ", - "insertEmoji":"絵文字入れる", - "schedule":"時間指定投稿", - "postat":"時間指定投稿", - "scheduleWarn":"2.7.0~ 5分は待ってな。サーバーの時計おうてるかは知らんで。", - "clearToot":"トゥートボックスのクリア", - "replyMode":"返信モード", - "no":"いいえ", - "yes":"はい", - "temp":"添付ファイル", - "nothing":"なし", - "vis":"公開範囲", - "cwtext":"警告文", - "selectVis":"公開範囲指定", - "publicJP":"公開", - "unlistedJP":"未収載", - "privateJP":"非公開", - "localJP":"ローカル限定", - "directJP":"ダイレクト", - "sectoot":"こっちでもトゥート", - "emojiWarn":"サーバーちゃうかったら絵文字もちゃうで。", - "emojiInsertWarn":"入力できん絵文字もあるけどしゃーない。", - "refreshEmoji":"絵文字更新", - "closeThisBox":"ボックスなおす", - "showThisEmoji":"一覧を表示中", - "customEmoji":"カスタム絵文字", - "peopleEmoji":"ひと", - "natureEmoji":"自然", - "foodEmoji":"食べ物", - "activityEmoji":"活動", - "placeEmoji":"場所", - "thingsEmoji":"もの", - "symbolEmoji":"記号", - "flagsEmoji":"国旗", + "showSelectProf": "このアカウントのプロフィール出す", + "closethisbox": "このボックスなおす", + "post-new": "投稿", + "toot": "トゥート", + "nsfwDes": "画像を見たらあかんやつにする", + "cwDes": "コンテンツワーニング(ほんまに見るんか?って聞く)", + "selfile": "ファイル選ぶ", + "insertEmoji": "絵文字入れる", + "schedule": "時間指定投稿", + "postat": "時間指定投稿", + "scheduleWarn": "2.7.0~ 5分は待ってな。サーバーの時計おうてるかは知らんで。", + "clearToot": "トゥートボックスのクリア", + "replyMode": "返信モード", + "no": "いいえ", + "yes": "はい", + "temp": "添付ファイル", + "nothing": "なし", + "vis": "公開範囲", + "cwtext": "警告文", + "selectVis": "公開範囲指定", + "publicJP": "公開", + "unlistedJP": "未収載", + "privateJP": "非公開", + "localJP": "ローカル限定", + "directJP": "ダイレクト", + "sectoot": "こっちでもトゥート", + "emojiWarn": "サーバーちゃうかったら絵文字もちゃうで。", + "emojiInsertWarn": "入力できん絵文字もあるけどしゃーない。", + "refreshEmoji": "絵文字更新", + "closeThisBox": "ボックスなおす", + "showThisEmoji": "一覧を表示中", + "customEmoji": "カスタム絵文字", + "peopleEmoji": "ひと", + "natureEmoji": "自然", + "foodEmoji": "食べ物", + "activityEmoji": "活動", + "placeEmoji": "場所", + "thingsEmoji": "もの", + "symbolEmoji": "記号", + "flagsEmoji": "国旗", "draft": "下書き(タンス)", - "poll":"アンケート", - "pollDdisabled":"アンケート付けへん", - "pollProvider":"アンケートのプロバイダ", - "choice":"選択肢", - "polluntil":"あんたが投票するまで票数教えへん", - "pollmulti":"複数選択を許可", - "expires_in":"有効期限(秒)", - "contextBefore":"これより前の会話", - "thisToot":"対象のトゥート", - "contextAfter":"これより後の会話", - "beforeLTL":"これより前のLocal TL(誰にエアリプしてん)", - "beforeUTL":"これより前のユーザーTL(誰のトゥート言及してんねん)", - "afterLTL":"これより後のLocal TL(誰のトゥート言及してんねん)", - "afterUTL":"これより後のユーザーTL(誰のトゥート言及してんねん)", - "afterFTL":"これより後の連合TL(誰のトゥート言及してんねん)", - "favedPeople":"誰がお気に入りに登録してるんや", - "btedPeople":"誰がお気に入りブーストしたんや", - "useOtherAcct1":"他のアカウント使う", - "useOtherAcct2":"の解除はできひん", + "poll": "アンケート", + "pollDdisabled": "アンケート付けへん", + "pollProvider": "アンケートのプロバイダ", + "choice": "選択肢", + "polluntil": "あんたが投票するまで票数教えへん", + "pollmulti": "複数選択を許可", + "expires_in": "有効期限(秒)", + "contextBefore": "これより前の会話", + "thisToot": "対象のトゥート", + "contextAfter": "これより後の会話", + "beforeLTL": "これより前のLocal TL(誰にエアリプしてん)", + "beforeUTL": "これより前のユーザーTL(誰のトゥート言及してんねん)", + "afterLTL": "これより後のLocal TL(誰のトゥート言及してんねん)", + "afterUTL": "これより後のユーザーTL(誰のトゥート言及してんねん)", + "afterFTL": "これより後の連合TL(誰のトゥート言及してんねん)", + "favedPeople": "誰がお気に入りに登録してるんや", + "btedPeople": "誰がお気に入りブーストしたんや", + "useOtherAcct1": "他のアカウント使う", + "useOtherAcct2": "の解除はできひん", "btWithVis": "公開範囲も決めてからブースト", - "reply":"返信", - "bt":"ブースト", - "favRegist":"お気に入り", - "openBrowser":"ブラウザで開く", - "screenshot":"スクリーンショット", - "copyURL":"URLをコピー", - "copy":"コピー", - "embed":"埋め込む", - "toots":"トゥート", - "follow":"フォロー", - "follower":"フォロワー", - "utlColumn":"カラムとして追加", - "timeline":"タイムライン", - "operateOtherAcct":"他のアカウント使うて何かする", - "list":"リスト", - "makeNew":"新しいやつ", - "blocks":"ブロック", - "mutes":"ミュート", - "block":"ブロック", - "mute":"ミュート", - "domainBlock":"ドメインブロック", - "editProf":"プロフィールいらう", - "change":"変更", - "followReq":"フォローリクエスト", - "likeHimOrHer":"似とうユーザー", - "frc":"あんたにおすすめ", - "more":"他無いんか?", - "endorse":"紹介したる", - "openinbrowser":"ブラウザで開く", - "mainacct":"メインアカウントに設定", - "revoverJP":"する", - "warnUseOtherAcct":"(解除はでけへん。)", - "revoverJPde":"で", - "or":"それか", - "openProf":"プロフィール出す", - "warnListRegist":"リストに入れたかったらまずフォローせなあかん。", - "blockDomain":"ブロックするドメイン", - "name":"名前", - "note":"自己紹介", - "editProfImg":"アバター変える", - "editHeader":"ヘッダー変える", - "blocked":"なんでか知らんけどブロックされとるわ", - "likeUserDes":"あんたと似とうユーザーを発掘すんで。", - "get":"取得", - "historyBack":"一つ前のユーザーデータ", - "empUser":"ユーザー強調", - "supportme":"支援してくれんか?", - "TheDeskDes":"TheDeskは営利目的ちゃうし、有料機能や広告は一切あらへん。
せやけど君らが支援してくれとうからTheDeskは続いてるんや。ほんまありがとうな。", - "PatreonSupport":"Patreonで支援", - "PixivSupport":"Pixiv FANBOXで支援", - "AWLSupport":"Amazonほしいものリスト", - "SendAmazonGift1":"", - "SendAmazonGift2":"にAmazonギフトカードを送る", - "monthly":"月額支援(大歓迎)", - "once":"一度限りの支援(めっちゃ歓迎)", - "local":"ローカル", - "localMedia":"ローカル(メディア)", - "home":"ホーム", - "fed":"連合", - "fedMedia":"連合(メディア)", - "dm":"ダイレクトメッセージ", - "integratedTLDes":"統合(ローカルとホーム)", - "localPlusDes":"統合(LTL+BT+返信)", - "notf":"通知", + "reply": "返信", + "bt": "ブースト", + "favRegist": "お気に入り", + "openBrowser": "ブラウザで開く", + "screenshot": "スクリーンショット", + "copyURL": "URLをコピー", + "copy": "コピー", + "embed": "埋め込む", + "toots": "トゥート", + "follow": "フォロー", + "follower": "フォロワー", + "utlColumn": "カラムとして追加", + "timeline": "タイムライン", + "operateOtherAcct": "他のアカウント使うて何かする", + "list": "リスト", + "makeNew": "新しいやつ", + "blocks": "ブロック", + "mutes": "ミュート", + "block": "ブロック", + "mute": "ミュート", + "domainBlock": "ドメインブロック", + "editProf": "プロフィールいらう", + "change": "変更", + "followReq": "フォローリクエスト", + "likeHimOrHer": "似とうユーザー", + "frc": "あんたにおすすめ", + "more": "他無いんか?", + "endorse": "紹介したる", + "openinbrowser": "ブラウザで開く", + "mainacct": "メインアカウントに設定", + "revoverJP": "する", + "warnUseOtherAcct": "(解除はでけへん。)", + "revoverJPde": "で", + "or": "それか", + "openProf": "プロフィール出す", + "warnListRegist": "リストに入れたかったらまずフォローせなあかん。", + "blockDomain": "ブロックするドメイン", + "name": "名前", + "note": "自己紹介", + "editProfImg": "アバター変える", + "editHeader": "ヘッダー変える", + "blocked": "なんでか知らんけどブロックされとるわ", + "likeUserDes": "あんたと似とうユーザーを発掘すんで。", + "get": "取得", + "historyBack": "一つ前のユーザーデータ", + "empUser": "ユーザー強調", + "supportme": "支援してくれんか?", + "TheDeskDes": "TheDeskは営利目的ちゃうし、有料機能や広告は一切あらへん。
せやけど君らが支援してくれとうからTheDeskは続いてるんや。ほんまありがとうな。", + "PatreonSupport": "Patreonで支援", + "PixivSupport": "Pixiv FANBOXで支援", + "AWLSupport": "Amazonほしいものリスト", + "SendAmazonGift1": "", + "SendAmazonGift2": "にAmazonギフトカードを送る", + "monthly": "月額支援(大歓迎)", + "once": "一度限りの支援(めっちゃ歓迎)", + "local": "ローカル", + "localMedia": "ローカル(メディア)", + "home": "ホーム", + "fed": "連合", + "fedMedia": "連合(メディア)", + "dm": "ダイレクトメッセージ", + "integratedTLDes": "統合(ローカルとホーム)", + "localPlusDes": "統合(LTL+BT+返信)", + "notf": "通知", "bookmark": "ブックマーク", - "showThisTL":"表示するタイムライン", - "webviewWarn":"TweetDeckを出すで。TJDeckをカスタムしたものが読み込まれる(Code/TJDeck)。", - "add":"追加", - "search":"検索", - "sortSet":"並べ替え設定", - "selectAcct":"選択(スクロールして全選択肢表示)", - "filterWord":"フィルターワード", - "listLocale":"一覧", - "degree":"適応範囲", - "conver":"会話", - "prof":"プロフィール", - "option":"オプション", - "matchWord":"単語マッチ", - "warnMatchWord":"非ラテン系の文字列では「単語マッチ」はせん方がええで。(これはフリかも知れん)", - "except":"除外", - "exceptWorn":"「除外」にしてもうたらマッチしたトゥートはフィルター解除しても二度と表示されへん。", - "avalableBefore":"有効期限(あと)", - "warnAvBefore":"未指定(または0分)で「無期限」や", - "warnAvBefore2":"この数字はそんなに正確ちゃうで", - "unlimited":"無期限", - "days":"日", - "hours":"時間", - "mins":"分", - "secs":"秒", - "warnOnIntegratedTL":"Integrated TL/Plus TLは、公開/ホームのフィルターワードをどっちも合わせて処理するで", - "helloTheDesk":"やってもうた…再読込して治らんかったら初期化(全データ削除)してな…(予め設定をエクスポートしとくんやで)", - "addColumn":"カラム追加", - "sortColumns":"カラム一覧/並べ替え", - "acctMan":"アカウントマネージャー", - "filter":"フィルター", - "setting":"設定", - "reverse":"トゥートボタンの左右入れ替え", - "f5":"TL再読込", - "nanoDes":"めっちゃ小さいマストドン。", - "verTips":"バージョン", - "clockTips":"時計", - "ramTips":"システムメモリ容量", - "changeTips":"Tips変更", - "helpAndLogs":"ヘルプとログ", - "help":"ヘルプ", - "contactwithlog":"なんか知らんけど動かんとかそういうのを開発者のお兄さんお姉さんに言うときは下のログのそこらへんの時間に起きたなぁってのを拾って連絡するとなんかの助けになるかも知れん。ついでやけどこのウィンドウ全体を横に引き伸ばしたらいい感じに見れるで", - "about":"このソフトについて", - "hereAddColumns":"←ここからTL追加", + "showThisTL": "表示するタイムライン", + "webviewWarn": "TweetDeckを出すで。TJDeckをカスタムしたものが読み込まれる(Code/TJDeck)。", + "add": "追加", + "search": "検索", + "sortSet": "並べ替え設定", + "selectAcct": "選択(スクロールして全選択肢表示)", + "filterWord": "フィルターワード", + "listLocale": "一覧", + "degree": "適応範囲", + "conver": "会話", + "prof": "プロフィール", + "option": "オプション", + "matchWord": "単語マッチ", + "warnMatchWord": "非ラテン系の文字列では「単語マッチ」はせん方がええで。(これはフリかも知れん)", + "except": "除外", + "exceptWorn": "「除外」にしてもうたらマッチしたトゥートはフィルター解除しても二度と表示されへん。", + "avalableBefore": "有効期限(あと)", + "warnAvBefore": "未指定(または0分)で「無期限」や", + "warnAvBefore2": "この数字はそんなに正確ちゃうで", + "unlimited": "無期限", + "days": "日", + "hours": "時間", + "mins": "分", + "secs": "秒", + "warnOnIntegratedTL": "Integrated TL/Plus TLは、公開/ホームのフィルターワードをどっちも合わせて処理するで", + "helloTheDesk": "やってもうた…再読込して治らんかったら初期化(全データ削除)してな…(予め設定をエクスポートしとくんやで)", + "addColumn": "カラム追加", + "sortColumns": "カラム一覧/並べ替え", + "acctMan": "アカウントマネージャー", + "filter": "フィルター", + "setting": "設定", + "reverse": "トゥートボタンの左右入れ替え", + "f5": "TL再読込", + "nanoDes": "めっちゃ小さいマストドン。", + "verTips": "バージョン", + "clockTips": "時計", + "ramTips": "システムメモリ容量", + "changeTips": "Tips変更", + "helpAndLogs": "ヘルプとログ", + "help": "ヘルプ", + "contactwithlog": "なんか知らんけど動かんとかそういうのを開発者のお兄さんお姉さんに言うときは下のログのそこらへんの時間に起きたなぁってのを拾って連絡するとなんかの助けになるかも知れん。ついでやけどこのウィンドウ全体を横に引き伸ばしたらいい感じに見れるで", + "about": "このソフトについて", + "hereAddColumns": "←ここからTL追加", "foundBug": "バグあるんやけど", "show": "表示", "directory": "ディレクトリ", + "discover": "見つける", "active": "最新活動順", "newcomer": "新規順", "local_only": "ローカルだけ", diff --git a/app/view/make/language/ja/index.json b/app/view/make/language/ja/index.json index 5bc9ce4a..061b3b7d 100644 --- a/app/view/make/language/ja/index.json +++ b/app/view/make/language/ja/index.json @@ -1,184 +1,185 @@ { - "draghere":"ここにドラッグして添付(ドラッグと同時にアップロードされます)", - "nowOffline":"オフラインです。投稿はすべて下書きに追加されます。オンライン復帰時には再読み込みを推奨します。", + "draghere": "ここにドラッグして添付(ドラッグと同時にアップロードされます)", + "nowOffline": "オフラインです。投稿はすべて下書きに追加されます。オンライン復帰時には再読み込みを推奨します。", "reOnline": "オンラインに復帰しました。再読み込みを推奨します。", "webSrc": "Webで検索", "tsSrc": "tootsearchで検索", - "close":"Close", - "showSelectProf":"選択したアカウントのプロフィールを表示", - "closethisbox":"このボックスを閉じる", - "post-new":"投稿", - "toot":"トゥート", - "nsfwDes":"画像に制限を付与", - "cwDes":"コンテンツワーニング(トゥートを表示する前にメッセージで隠す)", - "selfile":"ファイルを選択", - "insertEmoji":"絵文字を挿入", - "schedule":"時間指定投稿", - "postat":"時間指定投稿", - "scheduleWarn":"2.7.0~ 5分以内には投稿できません。サーバーの時計が正確とは限りません。", - "clearToot":"トゥートボックスのクリア", - "replyMode":"返信モード", - "no":"いいえ", - "yes":"はい", - "temp":"添付ファイル", - "nothing":"なし", + "close": "Close", + "showSelectProf": "選択したアカウントのプロフィールを表示", + "closethisbox": "このボックスを閉じる", + "post-new": "投稿", + "toot": "トゥート", + "nsfwDes": "画像に制限を付与", + "cwDes": "コンテンツワーニング(トゥートを表示する前にメッセージで隠す)", + "selfile": "ファイルを選択", + "insertEmoji": "絵文字を挿入", + "schedule": "時間指定投稿", + "postat": "時間指定投稿", + "scheduleWarn": "2.7.0~ 5分以内には投稿できません。サーバーの時計が正確とは限りません。", + "clearToot": "トゥートボックスのクリア", + "replyMode": "返信モード", + "no": "いいえ", + "yes": "はい", + "temp": "添付ファイル", + "nothing": "なし", "stamp": "スタンプ", "stampWarn": "画像右下にアカウント名(aa@bb.cc)テキストを挿入します", - "vis":"公開範囲", - "cwtext":"警告文", - "selectVis":"公開範囲指定", - "publicJP":"公開", - "unlistedJP":"未収載", - "privateJP":"非公開", - "localJP":"ローカル限定", - "directJP":"ダイレクト", - "sectoot":"セカンダリートゥート", - "emojiWarn":"サーバーによって実装が異なります。", - "emojiInsertWarn":"一部絵文字は入力できません。", - "refreshEmoji":"絵文字更新", - "closeThisBox":"このボックスを閉じる", - "showThisEmoji":"一覧を表示中", - "customEmoji":"カスタム絵文字", - "peopleEmoji":"ひと", - "natureEmoji":"自然", - "foodEmoji":"食べ物", - "activityEmoji":"活動", - "placeEmoji":"場所", - "thingsEmoji":"もの", - "symbolEmoji":"記号", - "flagsEmoji":"国旗", + "vis": "公開範囲", + "cwtext": "警告文", + "selectVis": "公開範囲指定", + "publicJP": "公開", + "unlistedJP": "未収載", + "privateJP": "非公開", + "localJP": "ローカル限定", + "directJP": "ダイレクト", + "sectoot": "セカンダリートゥート", + "emojiWarn": "サーバーによって実装が異なります。", + "emojiInsertWarn": "一部絵文字は入力できません。", + "refreshEmoji": "絵文字更新", + "closeThisBox": "このボックスを閉じる", + "showThisEmoji": "一覧を表示中", + "customEmoji": "カスタム絵文字", + "peopleEmoji": "ひと", + "natureEmoji": "自然", + "foodEmoji": "食べ物", + "activityEmoji": "活動", + "placeEmoji": "場所", + "thingsEmoji": "もの", + "symbolEmoji": "記号", + "flagsEmoji": "国旗", "draft": "下書き", - "poll":"アンケート", - "pollDdisabled":"アンケートを使用しない", - "pollProvider":"アンケートのプロバイダ", - "choice":"選択肢", - "polluntil":"投票するまで票数を隠す", - "pollmulti":"複数選択を許可", - "expires_in":"有効期限(秒)", - "contextBefore":"これより前の会話", - "thisToot":"対象のトゥート", - "contextAfter":"これより後の会話", - "beforeLTL":"これより前のLocal TL(エアリプソース確認)", - "beforeUTL":"これより前のユーザーTL(BTソース確認)", - "afterLTL":"これより後のLocal TL(言及確認)", - "afterUTL":"これより後のユーザーTL(言及確認)", - "afterFTL":"これより後の連合TL(言及確認)", - "favedPeople":"このトゥートをお気に入りに登録した人", - "btedPeople":"このトゥートをブーストした人", - "useOtherAcct1":"他のアカウントを使用", - "useOtherAcct2":"の解除はできません", + "poll": "アンケート", + "pollDdisabled": "アンケートを使用しない", + "pollProvider": "アンケートのプロバイダ", + "choice": "選択肢", + "polluntil": "投票するまで票数を隠す", + "pollmulti": "複数選択を許可", + "expires_in": "有効期限(秒)", + "contextBefore": "これより前の会話", + "thisToot": "対象のトゥート", + "contextAfter": "これより後の会話", + "beforeLTL": "これより前のLocal TL(エアリプソース確認)", + "beforeUTL": "これより前のユーザーTL(BTソース確認)", + "afterLTL": "これより後のLocal TL(言及確認)", + "afterUTL": "これより後のユーザーTL(言及確認)", + "afterFTL": "これより後の連合TL(言及確認)", + "favedPeople": "このトゥートをお気に入りに登録した人", + "btedPeople": "このトゥートをブーストした人", + "useOtherAcct1": "他のアカウントを使用", + "useOtherAcct2": "の解除はできません", "btWithVis": "公開範囲を指定してブースト", - "reply":"返信", - "bt":"ブースト", - "favRegist":"お気に入り", - "openBrowser":"ブラウザで開く", - "screenshot":"スクリーンショット", - "copyURL":"URLをコピー", - "copy":"コピー", - "embed":"埋め込む", - "toots":"トゥート", - "follow":"フォロー", - "follower":"フォロワー", - "utlColumn":"カラムとして追加", - "timeline":"タイムライン", - "operateOtherAcct":"他のアカウントで操作", - "list":"リスト", - "makeNew":"新規作成", - "blocks":"ブロック", - "mutes":"ミュート", - "block":"ブロック", - "mute":"ミュート", - "domainBlock":"ドメインブロック", - "editProf":"プロフィール編集", - "change":"変更", - "followReq":"フォローリクエスト", - "likeHimOrHer":"似てる", - "frc":"おすすめ", - "more":"もっと", - "endorse":"紹介する", - "openinbrowser":"ブラウザで開く", - "mainacct":"メインアカウントに設定", - "revoverJP":"する", - "warnUseOtherAcct":"(解除はできません。)", - "revoverJPde":"で", - "or":"または", - "openProf":"プロフィールを表示", - "warnListRegist":"リストに追加するためにはフォローが必要です。", - "blockDomain":"ブロックするドメイン", - "name":"名前", - "note":"自己紹介", - "editProfImg":"アバターを変更", - "editHeader":"ヘッダーを変更", - "blocked":"ブロックされています。なぜでしょう?", - "likeUserDes":"似ているユーザーを取得できます。", - "get":"取得", - "historyBack":"一つ前のユーザーデータ", - "empUser":"ユーザー強調", - "supportme":"ご支援ください。", - "TheDeskDes":"TheDeskは営利目的ではないため、有料機能や広告は一切ありません。
皆様のあたたかいご支援のもとで製作されています。", - "PatreonSupport":"Patreonで支援", - "PixivSupport":"Pixiv FANBOXで支援", - "AWLSupport":"Amazonほしいものリスト", - "SendAmazonGift1":"", - "SendAmazonGift2":"にAmazonギフトカードを送る", - "monthly":"月額支援(大歓迎)", - "once":"一度限りの支援(もちろん歓迎)", - "local":"ローカル", - "localMedia":"ローカル(メディア)", - "home":"ホーム", - "fed":"連合", - "fedMedia":"連合(メディア)", - "dm":"ダイレクトメッセージ", - "integratedTLDes":"統合(ローカルとホーム)", - "localPlusDes":"統合(LTL+BT+返信)", - "notf":"通知", + "reply": "返信", + "bt": "ブースト", + "favRegist": "お気に入り", + "openBrowser": "ブラウザで開く", + "screenshot": "スクリーンショット", + "copyURL": "URLをコピー", + "copy": "コピー", + "embed": "埋め込む", + "toots": "トゥート", + "follow": "フォロー", + "follower": "フォロワー", + "utlColumn": "カラムとして追加", + "timeline": "タイムライン", + "operateOtherAcct": "他のアカウントで操作", + "list": "リスト", + "makeNew": "新規作成", + "blocks": "ブロック", + "mutes": "ミュート", + "block": "ブロック", + "mute": "ミュート", + "domainBlock": "ドメインブロック", + "editProf": "プロフィール編集", + "change": "変更", + "followReq": "フォローリクエスト", + "likeHimOrHer": "似てる", + "frc": "おすすめフォロー", + "more": "もっと", + "endorse": "紹介する", + "openinbrowser": "ブラウザで開く", + "mainacct": "メインアカウントに設定", + "revoverJP": "する", + "warnUseOtherAcct": "(解除はできません。)", + "revoverJPde": "で", + "or": "または", + "openProf": "プロフィールを表示", + "warnListRegist": "リストに追加するためにはフォローが必要です。", + "blockDomain": "ブロックするドメイン", + "name": "名前", + "note": "自己紹介", + "editProfImg": "アバターを変更", + "editHeader": "ヘッダーを変更", + "blocked": "ブロックされています。なぜでしょう?", + "likeUserDes": "似ているユーザーを取得できます。", + "get": "取得", + "historyBack": "一つ前のユーザーデータ", + "empUser": "ユーザー強調", + "supportme": "ご支援ください。", + "TheDeskDes": "TheDeskは営利目的ではないため、有料機能や広告は一切ありません。
皆様のあたたかいご支援のもとで製作されています。", + "PatreonSupport": "Patreonで支援", + "PixivSupport": "Pixiv FANBOXで支援", + "AWLSupport": "Amazonほしいものリスト", + "SendAmazonGift1": "", + "SendAmazonGift2": "にAmazonギフトカードを送る", + "monthly": "月額支援(大歓迎)", + "once": "一度限りの支援(もちろん歓迎)", + "local": "ローカル", + "localMedia": "ローカル(メディア)", + "home": "ホーム", + "fed": "連合", + "fedMedia": "連合(メディア)", + "dm": "ダイレクトメッセージ", + "integratedTLDes": "統合(ローカルとホーム)", + "localPlusDes": "統合(LTL+BT+返信)", + "notf": "通知", "bookmark": "ブックマーク", - "showThisTL":"表示するタイムライン", - "webviewWarn":"TweetDeckを表示します。TJDeckをカスタムしたものが読み込まれます(Code/TJDeck)。", - "add":"追加", - "search":"検索", - "sortSet":"並べ替え設定", - "selectAcct":"選択(スクロールで全選択肢表示)", - "filterWord":"フィルターワード", - "listLocale":"一覧", - "degree":"適応範囲", - "conver":"会話", - "prof":"プロフィール", - "option":"オプション", - "matchWord":"単語マッチ", - "warnMatchWord":"非ラテン系の文字列では「単語マッチ」は推奨されません。", - "except":"除外", - "exceptWorn":"「除外」時マッチしたトゥートは非可逆的に除外され、削除後も閲覧できません。", - "avalableBefore":"有効期限(あと)", - "warnAvBefore":"未指定(または0分)で「無期限」になります。", - "warnAvBefore2":"仕様上数値の正確性を保証できません。", - "unlimited":"無期限", - "days":"日", - "hours":"時間", - "mins":"分", - "secs":"秒", - "warnOnIntegratedTL":"Integrated TL/Plus TLは、公開/ホームのフィルターワードが合算されて適応されます。どちらか一方の指定でも非表示になります。", - "helloTheDesk":"内部エラーです。再読込して治らない場合は初期化(全データ削除)をしてください。(事前に設定をエクスポートしておくことをおすすめします。)", - "addColumn":"カラム追加", - "sortColumns":"カラム一覧/並べ替え", - "acctMan":"アカウントマネージャー", - "filter":"フィルター", - "setting":"設定", - "reverse":"トゥートボタンの左右入れ替え", - "f5":"TL再読込", - "nanoDes":"最小のマストドン。", - "verTips":"バージョン", - "clockTips":"時計", - "ramTips":"システムメモリ容量", - "changeTips":"Tips変更", - "helpAndLogs":"ヘルプとログ", - "help":"ヘルプ", - "contactwithlog":"不具合等のお問合わせは以下のログから発生時刻付近のものを集めてご連絡いただけるとスムーズになるかもしれません。また、このメニューウィンドウ全体を横に引き伸ばすとログが見やすくなります。", - "about":"このソフトについて", - "hereAddColumns":"←ここからTL追加", + "showThisTL": "表示するタイムライン", + "webviewWarn": "TweetDeckを表示します。TJDeckをカスタムしたものが読み込まれます(Code/TJDeck)。", + "add": "追加", + "search": "検索", + "sortSet": "並べ替え設定", + "selectAcct": "選択(スクロールで全選択肢表示)", + "filterWord": "フィルターワード", + "listLocale": "一覧", + "degree": "適応範囲", + "conver": "会話", + "prof": "プロフィール", + "option": "オプション", + "matchWord": "単語マッチ", + "warnMatchWord": "非ラテン系の文字列では「単語マッチ」は推奨されません。", + "except": "除外", + "exceptWorn": "「除外」時マッチしたトゥートは非可逆的に除外され、削除後も閲覧できません。", + "avalableBefore": "有効期限(あと)", + "warnAvBefore": "未指定(または0分)で「無期限」になります。", + "warnAvBefore2": "仕様上数値の正確性を保証できません。", + "unlimited": "無期限", + "days": "日", + "hours": "時間", + "mins": "分", + "secs": "秒", + "warnOnIntegratedTL": "Integrated TL/Plus TLは、公開/ホームのフィルターワードが合算されて適応されます。どちらか一方の指定でも非表示になります。", + "helloTheDesk": "内部エラーです。再読込して治らない場合は初期化(全データ削除)をしてください。(事前に設定をエクスポートしておくことをおすすめします。)", + "addColumn": "カラム追加", + "sortColumns": "カラム一覧/並べ替え", + "acctMan": "アカウントマネージャー", + "filter": "フィルター", + "setting": "設定", + "reverse": "トゥートボタンの左右入れ替え", + "f5": "TL再読込", + "nanoDes": "最小のマストドン。", + "verTips": "バージョン", + "clockTips": "時計", + "ramTips": "システムメモリ容量", + "changeTips": "Tips変更", + "helpAndLogs": "ヘルプとログ", + "help": "ヘルプ", + "contactwithlog": "不具合等のお問合わせは以下のログから発生時刻付近のものを集めてご連絡いただけるとスムーズになるかもしれません。また、このメニューウィンドウ全体を横に引き伸ばすとログが見やすくなります。", + "about": "このソフトについて", + "hereAddColumns": "←ここからTL追加", "foundBug": "バグを見つけた", "show": "表示", "directory": "ディレクトリ", + "discover": "見つける", "active": "最新活動順", "newcomer": "新規順", "local_only": "ローカルのみ", diff --git a/app/view/pl-PL/index.html b/app/view/pl-PL/index.html index 36ba490c..eaff0a36 100644 --- a/app/view/pl-PL/index.html +++ b/app/view/pl-PL/index.html @@ -2,1307 +2,1118 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - -
-
-
Szukaj w Internecie
-
Search on tootsearch
-
Copy
-
Toot
-
-
- - - - Feature -
-
- OFFLINE: all of your post is in the draft box and you should reload after re-connect to the Internet -
-
- Now we are in the Internet, you should reload... -
-
- - -
-
-

Przewodnik powitalny

- Look at the bottom of this window. Here is some tips about it. - -
- account_circle: Menadżer konta
- Add more accounts and logout them. -
- settings: Ustawienia
- Many and many preferences here. You will couldn't check it all! -
- remove_from_queue: TheDesk Nano The smallest Mastodon,
- Mini window client(experimental) -
- apps: Menu
- All daily TheDesk and Mastodon tuning like add and sort columns, list and filter check.
-
- -
-
- -
-
- Przeciągnij tutaj by przesłać -
- -
-
-
-
-
- Post newReaction -
- -
-
-
- - - -
-
- -
- - cancel - - -
-
-
- format_bold - format_italic - format_underlined - strikethrough_s - format_quote - short_text - code - format_list_bulleted - format_list_numbered - - - autorenew - flare - swap_vert - swap_horiz - - Markdownエディタを隠す + + + +
+
+
Szukaj w Internecie
+
Search on tootsearch
+
Copy
+
Toot
+
+
+ + + + Feature +
+
OFFLINE: all of your post is in the draft box and you should reload after re-connect to the Internet
+
Now we are in the Internet, you should reload...
+
+ + +
+
+

Przewodnik powitalny

+ Look at the bottom of this window. Here is some tips about it. + +
+ account_circle: Menadżer konta
Add more accounts and logout them. +
+ settings: Ustawienia
Many and many preferences here. You will couldn't check it all! +
+ remove_from_queue: TheDesk Nano The smallest Mastodon,
Mini window client(experimental) +
+ apps: Menu
All daily TheDesk and Mastodon tuning like add and sort columns, list and filter check. +
+
+ +
+
+ +
+
+ Przeciągnij tutaj by przesłać +
+ +
+
+
+
+
Post newReaction
+ +
+
+
+ + + +
+
+ +
+ + cancel + + +
+
+
+ format_bold + format_italic + format_underlined + strikethrough_s + format_quote + short_text + code + format_list_bulleted + format_list_numbered + + + autorenew + flare + swap_vert + swap_horiz + + Markdownエディタを隠す + +
+ format_size + px + color_lens + +
+ link +   + +
+ image +   + +
+
+
+
+ + Edit -
- format_size - px - color_lens - -
- link -   - -
- image -   - -
-
-
-
- - Edit - -
-
- +
+
+ -
- -
- - Preview - - - Markdownエディタを表示 - -
-
- visibility_off - public - CW - photo_library - tag_faces - more_vert - clear -
-
-
-
- Reply: Nie/Dołączanie plików: - Brak - Stamp: Off - /Poll:Nie - public - -
- -
- Post at
2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)Expire - mode(beta)
- -
-
-
- - - - - - - - - - -
-
- - -
-
-
-
- -
- - Refresh emojis list -
-
-
-
-
+
+ visibility_off + public + CW + photo_library + tag_faces + more_vert + clear +
+
+
+
+ Reply: Nie/Dołączanie plików: + Brak + Stamp: Off /Poll: + Nie + public + +
+ +
+ Post at
2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)Expire mode(beta)
+ +
+
+
+ + + + + + + + + + +
+
+ + - / - -
+
+
+
+ +
+ + Refresh emojis list +
+
+
+
+ + / + + +
+ +
+ +
+
+ + + + + + + dzień (dni) + hour(s) + minute(s) +
+
+
+
+ + -
- - - - + + - -
- -
-
-
ご支援いただけませんか?
- (これは支援の有無に関わらず定期的に出ます。過去のバージョン等で何度も表示される等のバグを確認しております。)
- あなたのMastodon, Misskeyライフを邪魔してしまって申し訳ありません。
- 乞食のようなマネをしてご支援をお願いするのもどうかと思いますが、少々お時間をください。
-
- TheDeskになぜ金銭が発生するかについて: - 詳細は省きますが、開発者から緊急の連絡をしたりするのに使われます。
- 全てのユーザーが安心してTheDeskを使っていただける環境のためにも、ぜひご支援をご検討ください。ご支援いただけなくても使用不可能になることは全くありません。
- TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support! -
-
-
Support me
- It may disturb your Mastodon life, but your support is required to keep TheDesk awesome!
- TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support! -
- -
-
Once
- - Amazon Wish List - -
- Give me Amazon Gift Card:web-pro@cutls.com
- Kyash
-
-
-
- -
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + close + +
+
+ + + + + +
+ chevron_right + expand_less + close +
+
+ + +
+ +
+
+ + +
+
+
+ + + +
+
+
ご支援いただけませんか?
+ (これは支援の有無に関わらず定期的に出ます。過去のバージョン等で何度も表示される等のバグを確認しております。)
あなたのMastodon, Misskeyライフを邪魔してしまって申し訳ありません。
乞食のようなマネをしてご支援をお願いするのもどうかと思いますが、少々お時間をください。 +
+
TheDeskになぜ金銭が発生するかについて: 詳細は省きますが、開発者から緊急の連絡をしたりするのに使われます。 +
+ 全てのユーザーが安心してTheDeskを使っていただける環境のためにも、ぜひご支援をご検討ください。ご支援いただけなくても使用不可能になることは全くありません。
+ TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support! +
+
+
Support me
+ It may disturb your Mastodon life, but your support is required to keep TheDesk awesome!
+ TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support! +
+ +
+
Once
+ Amazon Wish List +
Give me Amazon Gift Card: web-pro@cutls.com
Kyash +
+
+
+
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/view/pl-PL/setting.html b/app/view/pl-PL/setting.html index 99a63ce2..85e85052 100644 --- a/app/view/pl-PL/setting.html +++ b/app/view/pl-PL/setting.html @@ -688,7 +688,7 @@ style="width:100%; max-width:40rem;">Main author: Cutls@1m.cutls.com
- TheDesk @ 5621ffbe42a1de361ccee0e679c97d30da436aab - 36ad187296f74ae3ed6cb12a4ef26b27d8d13d0f - Sprawdź aktualizacje

@@ -698,7 +698,7 @@
OSS License
-