Compare commits

..

4 Commits

Author SHA1 Message Date
cutls
957ef30fc0 WIP: use-strict 'login' 2019-11-25 00:03:33 +09:00
cutls
bae73521e9 WIP: use-strict 2019-11-24 23:53:35 +09:00
cutls
2583c3b80a Merge branch 'master' into use-strict 2019-11-24 23:35:56 +09:00
cutls
2b6cf60868 WIP: use strict 2019-11-24 22:26:19 +09:00
142 changed files with 1398 additions and 1963 deletions

View File

@@ -461,35 +461,6 @@ textarea {
.contributor img {
width: 1rem;
}
.tagComp{
display: grid;
grid-template-columns: 60px 80px 1fr;
grid-template-rows: 1fr 1fr;
grid-template-areas: "svg toot user" "svg toot tag" "svg toots tag";
border-top: dotted 0.5px var(--gray);
padding: 5px
}
.tagCompSvg {
grid-area: svg;
}
.tagCompToot {
grid-area: toot;
text-align: center;
}
.tagCompToots {
grid-area: toots;
text-align: center;
}
.tagCompUser {
grid-area: user;
}
.tagCompTag {
grid-area: tag;
padding-top: 10px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
/*スクロールバー*/
::-webkit-scrollbar {

View File

@@ -79,14 +79,6 @@
padding-right: 5px;
margin-right: 15px;
border-radius: 5px;
height: 35px;
}
.bgReport {
height: 34px;
padding-top: 0.45rem;
text-decoration: underline;
padding-left: 5px;
padding-right: 5px;
}
#spot-box {
display: grid;
@@ -224,10 +216,7 @@ iframe,
margin: -1px 0;
}
.bigemoji {
width: 100px !important;
height: auto !important;
position: relative;
z-index: 9999;
width: 60px !important;
}
.faicon_FTL {
display: none;
@@ -654,8 +643,6 @@ p:not(:last-child) {
margin-top: 3px;
padding: 1px;
border-radius: 3px;
overflow: hidden;
position: relative;
}
.fa-2x > .emoji-img {
width: 36px !important;
@@ -694,29 +681,6 @@ p:not(:last-child) {
.votebtn:hover {
background-color: var(--color);
}
.leadPoll {
position: absolute;
background-color: var(--box);
height: 20px;
border-radius: 3px;
}
.lpAnime {
animation-duration: 1s;
animation-name: fadeInLeft;
}
.onPoll {
position: relative;
}
.maxVoter {
background-color: var(--emphasized);
filter: brightness(120%);
}
.ownMark img {
width: 1.2rem !important;
position: relative;
top: -1px;
margin-left: 5px !important;
}
.jump {
display: inline-block;
animation: jump 0.75s linear infinite;

View File

@@ -1,3 +1,4 @@
'use strict'
//このソフトについて
function about() {
postMessage(["sendSinmpleIpc", "about"], "*")

View File

@@ -1,3 +1,4 @@
'use strict'
var digitCharacters = [
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J",

View File

@@ -1,3 +1,4 @@
'use strict'
/*! Hammer.JS - v2.0.8 - 2016-04-23
* http://hammerjs.github.io/
*

View File

@@ -1,191 +1,192 @@
selectedColumn = 0
selectedToot = 0
$(function ($) {
'use strict'
var selectedColumn = 0
var selectedToot = 0
$(function($) {
//キーボードショートカット
$(window).keydown(function (e) {
var hasFocus = $('input').is(':focus');
var hasFocus2 = $('textarea').is(':focus');
if (document.getElementById("webview")) {
if ($("#webviewsel:checked").val()) {
var wv = false;
$(window).keydown(function(e) {
var hasFocus = $('input').is(':focus')
var hasFocus2 = $('textarea').is(':focus')
if (document.getElementById('webview')) {
if ($('#webviewsel:checked').val()) {
var wv = false
} else {
var wv = true;
var wv = true
}
} else {
var wv = true;
var wv = true
}
//Enter
if (e.keyCode === 13) {
if($("#src").is(':focus')){
if ($('#src').is(':focus')) {
src()
return false;
return false
}
if($("#list-add").is(':focus')){
if ($('#list-add').is(':focus')) {
makeNewList()
return false;
return false
}
}
//Ctrl+Shift+Enter:Lgen
if (event.metaKey || event.ctrlKey && wv) {
if (event.metaKey || (event.ctrlKey && wv)) {
if (event.shiftKey) {
if (e.keyCode === 13) {
post('local');
return false;
post('local')
return false
}
}
}
//Ctrl+Enter:投稿
if (event.metaKey || event.ctrlKey && wv) {
if (event.metaKey || (event.ctrlKey && wv)) {
if (e.keyCode === 13) {
post();
return false;
post()
return false
}
}
//Alt+Enter:セカンダリー
if (event.metaKey || event.altKey && wv) {
if (event.metaKey || (event.altKey && wv)) {
if (e.keyCode === 13) {
sec();
return false;
sec()
return false
}
}
//Esc:消す
if (e.keyCode === 27 && wv) {
hide();
return false;
hide()
return false
}
//F5リロード
if (e.keyCode === 116 && wv) {
location.href = "index.html";
return false;
location.href = 'index.html'
return false
}
//Ctrl+Sift+C:全消し
if (((event.metaKey || event.ctrlKey) && event.shiftKey) && wv) {
if ((event.metaKey || event.ctrlKey) && event.shiftKey && wv) {
if (e.keyCode === 67) {
clear();
return false;
clear()
return false
}
}
//Ctrl+Sift+N:NowPlaying
if (((event.metaKey || event.ctrlKey) && event.shiftKey) && wv) {
if ((event.metaKey || event.ctrlKey) && event.shiftKey && wv) {
if (e.keyCode === 78) {
show();
show()
nowplaying()
return false;
return false
}
}
//input/textareaにフォーカスなし時
if ((!hasFocus && !hasFocus2) && wv) {
if (!hasFocus && !hasFocus2 && wv) {
if (!wv) {
return true;
return true
}
//Ctrl+V:いつもの
if (event.metaKey || event.ctrlKey) {
if (e.keyCode === 86) {
show();
show()
}
}
//X:開閉
if (e.keyCode === 88) {
if (!$("#post-box").hasClass("appear")) {
show();
$('textarea').focus();
if (!$('#post-box').hasClass('appear')) {
show()
$('textarea').focus()
} else {
hide();
hide()
}
return false;
return false
}
//N:新トゥート
if (e.keyCode === 78) {
if (!$("#post-box").hasClass("appear")) {
show();
if (!$('#post-box').hasClass('appear')) {
show()
}
$('textarea').focus();
return false;
$('textarea').focus()
return false
}
//Ctrl+E:全ての通知未読を既読にする
if (event.metaKey || event.ctrlKey) {
if (e.keyCode === 69) {
allNotfRead();
return false;
allNotfRead()
return false
}
}
//Ctrl+Space:読み込み
if (event.metaKey || event.ctrlKey) {
if (e.keyCode === 32) {
parseColumn();
return false;
parseColumn()
return false
}
}
//Ctrl+Sift+S:設定
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode === 83) {
location.href = "setting.html";
return false;
location.href = 'setting.html'
return false
}
}
//Ctrl+Sift+M:アカマネ
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode === 77) {
location.href = "acct.html";
return false;
location.href = 'acct.html'
return false
}
}
//Ctrl+Sift+P:プロフ
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode === 80) {
profShow()
return false;
return false
}
}
//数字:TL
if (event.metaKey || event.ctrlKey) {
if (e.keyCode >= 49 && e.keyCode <= 57) {
var kz = e.keyCode - 49;
goColumn(kz);
return false;
var kz = e.keyCode - 49
goColumn(kz)
return false
}
}
//矢印:選択
if (e.code == "ArrowLeft") {
if (e.code == 'ArrowLeft') {
//left
if ($("#imagemodal").hasClass("open")) {
imgCont('prev');
return false;
if ($('#imagemodal').hasClass('open')) {
imgCont('prev')
return false
}
if (selectedColumn > 0) {
selectedColumn--
}
tootSelector(selectedColumn, selectedToot)
return false;
} else if (e.code == "ArrowUp") {
return false
} else if (e.code == 'ArrowUp') {
//up
if ($("#imagemodal").hasClass("open")) {
return false;
if ($('#imagemodal').hasClass('open')) {
return false
}
if (selectedToot > 0) {
selectedToot--
}
tootSelector(selectedColumn, selectedToot)
return false;
} else if (e.code == "ArrowRight") {
return false
} else if (e.code == 'ArrowRight') {
//right
if ($("#imagemodal").hasClass("open")) {
imgCont('next');
return false;
if ($('#imagemodal').hasClass('open')) {
imgCont('next')
return false
}
if (selectedColumn < $(".tl-box").length - 1) {
if (selectedColumn < $('.tl-box').length - 1) {
selectedColumn++
}
tootSelector(selectedColumn, selectedToot)
return false;
} else if (e.code == "ArrowDown") {
return false
} else if (e.code == 'ArrowDown') {
//down
if ($("#imagemodal").hasClass("open")) {
return false;
if ($('#imagemodal').hasClass('open')) {
return false
}
selectedToot++
tootSelector(selectedColumn, selectedToot)
return false;
return false
}
//Ctrl+U:0,0選択
if (event.ctrlKey || event.metaKey) {
@@ -193,29 +194,29 @@ $(function ($) {
selectedToot = 0
selectedColumn = 0
tootSelector(0, 0)
return false;
return false
}
}
//選択時
if (e.keyCode == 70) {
var id = $(".selectedToot").attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
var id = $('.selectedToot').attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr('data-acct')
fav(id, acct_id, false)
return false;
return false
}
if (e.keyCode == 66) {
var id = $(".selectedToot").attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
var id = $('.selectedToot').attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr('data-acct')
rt(id, acct_id, false)
return false;
return false
}
if (e.keyCode == 82) {
var id = $(".selectedToot").attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
var ats_cm = $('.selectedToot .rep-btn').attr("data-men")
var mode = $('.selectedToot .rep-btn').attr("data-visen")
var id = $('.selectedToot').attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr('data-acct')
var ats_cm = $('.selectedToot .rep-btn').attr('data-men')
var mode = $('.selectedToot .rep-btn').attr('data-visen')
re(id, ats_cm, acct_id, mode)
return false;
return false
}
}
//textareaフォーカス時
@@ -224,23 +225,27 @@ $(function ($) {
//C+S+(No):ワンクリ
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode >= 49 && e.keyCode <= 51) {
var no = e.keyCode - 48;
if (localStorage.getItem("oks-" + no)) { $("#textarea").val($("#textarea").val() + localStorage.getItem("oks-" + no)) }
return false;
var no = e.keyCode - 48
if (localStorage.getItem('oks-' + no)) {
$('#textarea').val($('#textarea').val() + localStorage.getItem('oks-' + no))
}
return false
}
}
}
}
});
})
//クリアボタン
$("#clear").click(function () {
clear();
});
});
$('#clear').click(function() {
clear()
})
})
//選択する
function tootSelector(column, toot) {
$('.cvo').removeClass("selectedToot")
$('#timeline_' + column + ' .cvo').eq(toot).addClass("selectedToot")
$('.cvo').removeClass('selectedToot')
$('#timeline_' + column + ' .cvo')
.eq(toot)
.addClass('selectedToot')
var scr = $('.tl-box[tlid=' + column + ']').scrollTop()
var elem = $('.selectedToot').offset().top
var top = elem - $('.tl-box').height() + scr
@@ -255,4 +260,4 @@ function tootSelector(column, toot) {
$('.tl-box[tlid=' + column + ']').animate({ scrollTop: to })
}
}
}
}

View File

@@ -1,3 +1,4 @@
'use strict'
//モーダル・ドロップダウンの各種設定
$(document).ready(function () {
// the "href" attribute of the modal trigger must specify the modal ID that wants to be triggered

View File

@@ -1,3 +1,4 @@
'use strict'
var sha256 = function sha256(ascii) {
function rightRotate(value, amount) {
return (value >>> amount) | (value << (32 - amount));

View File

@@ -1,3 +1,4 @@
'use strict'
//バージョンチェッカー
function verck(ver, jp) {
console.log('%c Welcome😊', 'color: red;font-size:200%;')
@@ -21,7 +22,7 @@ function verck(ver, jp) {
if (localStorage.getItem('winstore')) {
$('#releasenote').modal('open')
}
verp = ver.replace('(', '')
var verp = ver.replace('(', '')
verp = verp.replace('.', '-')
verp = verp.replace('.', '-')
verp = verp.replace('[', '-')
@@ -40,15 +41,13 @@ function verck(ver, jp) {
if (!show) {
console.log(show)
if (
date.getFullYear() * 100 + date.getMonth() + 1 >= localStorage.getItem('showSupportMe') ||
date.getMonth() + 1 >= localStorage.getItem('showSupportMe') ||
!localStorage.getItem('showSupportMe')
) {
if (date.getMonth() == 11) {
var yrs = date.getFullYear() + 1
var nextmonth = yrs * 100 + 1
var nextmonth = 1
} else {
var yrs = date.getFullYear()
var nextmonth = yrs * 100 + date.getMonth() + 2
var nextmonth = date.getMonth() + 2
}
if (lang.language != 'ja') {
$('#support-btm-ja').addClass('hide')
@@ -219,7 +218,7 @@ function verck(ver, jp) {
}
var infostreaming = false
function infowebsocket() {
infows = new WebSocket('wss://thedesk.top/ws/')
var infows = new WebSocket('wss://thedesk.top/ws/')
infows.onopen = function(mess) {
console.log([tlid, ':Connect Streaming Info:', mess])
infostreaming = true
@@ -347,11 +346,10 @@ function storeDialog(platform, ver) {
localStorage.setItem('winstore', 'localinstall')
}
localStorage.setItem('ver', ver)
show = true
console.log('%c Thank you for your update🎉', 'color: red;font-size:200%;')
$(document).ready(function() {
$('#releasenote').modal('open')
verp = ver.replace('(', '')
var verp = ver.replace('(', '')
verp = verp.replace('.', '-')
verp = verp.replace('.', '-')
verp = verp.replace('[', '-')

View File

@@ -1,84 +1,97 @@
var defaultemojiList = ["activity", "flag", "food", "nature", "object", "people", "place", "symbol"];
'use strict'
var defaultemojiList = ['activity', 'flag', 'food', 'nature', 'object', 'people', 'place', 'symbol']
var defaultemoji = {
activity: activity,
flag: flag,
food: food,
nature: nature,
object: object,
people: people,
place: place,
symbol: symbol
};
if (lang == "ja") {
var defaultemojiname = {
activity: "活動",
flag: "国旗",
food: "食べ物",
nature: "自然",
object: "もの",
people: "ひと",
place: "場所",
symbol: "記号"
};
activity: activity,
flag: flag,
food: food,
nature: nature,
object: object,
people: people,
place: place,
symbol: symbol
}
if (lang == 'ja') {
var defaultemojiname = {
activity: '活動',
flag: '国旗',
food: '食べ物',
nature: '自然',
object: 'もの',
people: 'ひと',
place: '場所',
symbol: '記号'
}
} else {
var defaultemojiname = {
activity: "Activities",
flag: "Flags",
food: "Foods",
nature: "Nature",
object: "Tools",
people: "People",
place: "Places",
symbol: "Symbols"
};
var defaultemojiname = {
activity: 'Activities',
flag: 'Flags',
food: 'Foods',
nature: 'Nature',
object: 'Tools',
people: 'People',
place: 'Places',
symbol: 'Symbols'
}
}
function defaultEmoji(target) {
var json = defaultemoji[target];
var emojis = "";
Object.keys(json).forEach(function (key) {
var emoji = json[key];
emojis = emojis + '<a onclick="defEmoji(\'' + emoji["shortcode"] + '\')" class="pointer"><span style="width: 20px; height: 20px; display: inline-block; background-image: url(\'../../img/sheet.png\'); background-size: 4900%; background-position: ' + emoji["css"] + ';"></span></a>';
});
$("#emoji-list").html(emojis);
$("#now-emoji").text(lang.lang_defaultemojis_text.replace("{{cat}}", defaultemojiname[target]));
$(".emoji-control").addClass("hide");
var json = defaultemoji[target]
var emojis = ''
Object.keys(json).forEach(function(key) {
var emoji = json[key]
emojis =
emojis +
'<a onclick="defEmoji(\'' +
emoji['shortcode'] +
'\')" class="pointer"><span style="width: 20px; height: 20px; display: inline-block; background-image: url(\'../../img/sheet.png\'); background-size: 4900%; background-position: ' +
emoji['css'] +
';"></span></a>'
})
$('#emoji-list').html(emojis)
$('#now-emoji').text(lang.lang_defaultemojis_text.replace('{{cat}}', defaultemojiname[target]))
$('.emoji-control').addClass('hide')
}
function customEmoji() {
$("#emoji-suggest").val("");
$(".emoji-control").removeClass("hide");
emojiList('home')
$('#emoji-suggest').val('')
$('.emoji-control').removeClass('hide')
emojiList('home')
}
function defEmoji(target) {
var selin = $("#textarea").prop('selectionStart');
if (!selin) {
selin = 0;
}
var emojiraw = newpack.filter(function (item, index) {
if (item.short_name == target) return true;
});
var hex = emojiraw[0].unified.split("-");
if (hex.length === 2) {
emoji = twemoji.convert.fromCodePoint(hex[0]) + twemoji.convert.fromCodePoint(hex[1]);
} else {
emoji = twemoji.convert.fromCodePoint(hex[0]);
}
var now = $("#textarea").val();
var before = now.substr(0, selin);
var after = now.substr(selin, now.length);
newt = before + emoji + after;
$("#textarea").val(newt);
$("#textarea").focus();
var selin = $('#textarea').prop('selectionStart')
if (!selin) {
selin = 0
}
var emojiraw = newpack.filter(function(item, index) {
if (item.short_name == target) return true
})
var hex = emojiraw[0].unified.split('-')
if (hex.length === 2) {
emoji = twemoji.convert.fromCodePoint(hex[0]) + twemoji.convert.fromCodePoint(hex[1])
} else {
emoji = twemoji.convert.fromCodePoint(hex[0])
}
var now = $('#textarea').val()
var before = now.substr(0, selin)
var after = now.substr(selin, now.length)
var newt = before + emoji + after
$('#textarea').val(newt)
$('#textarea').focus()
}
function faicon() {
var json = faicons;
var emojis = "";
Object.keys(json).forEach(function (key) {
var emoji = json[key];
var eje = emoji.replace(/fa-/g, "");
emojis = emojis + '<a onclick="emojiInsert(\'[faicon]' + eje + '[/faicon]\')" class="pointer white-text" style="font-size:24px"><i class="fa ' + emoji + '"></i></a>';
});
$("#emoji-list").html(emojis);
$("#now-emoji").text("faicon");
$(".emoji-control").addClass("hide");
}
var json = faicons
var emojis = ''
Object.keys(json).forEach(function(key) {
var emoji = json[key]
var eje = emoji.replace(/fa-/g, '')
emojis =
emojis +
'<a onclick="emojiInsert(\'[faicon]' +
eje +
'[/faicon]\')" class="pointer white-text" style="font-size:24px"><i class="fa ' +
emoji +
'"></i></a>'
})
$('#emoji-list').html(emojis)
$('#now-emoji').text('faicon')
$('.emoji-control').addClass('hide')
}

View File

@@ -1,3 +1,4 @@
'use strict'
var activity=[
{shortcode:"soccer",css:"4.16667% 10.4167%"},
{shortcode:"basketball",css:"16.6667% 56.25%"},

View File

@@ -1,3 +1,4 @@
'use strict'
//インスタンスリスト
var idata = {
"kirishima.cloud": "instance",

View File

@@ -1,3 +1,4 @@
'use strict'
/*ログイン処理・認証までのJS*/
//最初に読むやつ
//アスタルテ判定初期化
@@ -379,9 +380,7 @@ function ckdb(acct_id) {
localStorage.setItem('imas', 'true')
$('.imasonly').show()
}
var at = localStorage.getItem('acct_' + acct_id + '_at')
var bbcode = domain + '_bbcode'
var letters = domain + '_letters'
var quoteMarker = domain + '_quote'
if (localStorage.getItem('instance')) {
var json = JSON.parse(localStorage.getItem('instance'))
@@ -579,10 +578,10 @@ function multiSelector(parseC) {
//バージョンエンコ
function enc(ver) {
var ver = ver.replace(/\s/g, '')
var ver = ver.replace(/\(/g, '-')
var ver = ver.replace(/\)/g, '')
var ver = ver.replace(/\[/g, '_')
var ver = ver.replace(/\]/g, '')
ver = ver.replace(/\(/g, '-')
ver = ver.replace(/\)/g, '')
ver = ver.replace(/\[/g, '_')
ver = ver.replace(/\]/g, '')
return ver
}
//インスタンスティッカー

View File

@@ -1,3 +1,4 @@
'use strict'
//ログアウトします
function logout() {
localStorage.removeItem("acct_" + acct_id + "_at");

View File

@@ -1,3 +1,4 @@
'use strict'
//アカウントマネージャ
//最初に読むやつ
function load() {
@@ -61,7 +62,7 @@ function load() {
<i class="material-icons">refresh</i>${lang.lang_manager_refresh}
</a>
<a class="waves-effect disTar pointer red-text" onclick="multiDel('${key}')">
<i class="material-icons">delete</i>${lang.lang_manager_delete}"
<i class="material-icons">delete</i>${lang.lang_manager_delete}
</a><br />${lang.lang_manager_color}
<div id="colorsel_${key}" class="colorsel"></div>
</div>
@@ -316,14 +317,8 @@ function support() {
Object.keys(idata).forEach(function(key) {
var instance = idata[key]
if (instance == 'instance') {
templete =
'<a onclick="login(\'' +
key +
'\')" class="collection-item pointer transparent">' +
idata[key + '_name'] +
'(' +
key +
')</a>'
var templete =
`<a onclick="login('${key}')" class="collection-item pointer transparent">${idata[key + '_name']}(${key})</a>`
$('#support').append(templete)
}
})
@@ -331,8 +326,6 @@ function support() {
//URL指定してポップアップ
function login(url) {
var multi = localStorage.getItem('multi')
var obj = JSON.parse(multi)
if ($('#misskey:checked').val() == 'on') {
$('#misskey').prop('checked', true)
misskeyLogin(url)
@@ -938,7 +931,6 @@ function multisel() {
} else {
var obj = JSON.parse(multi)
}
var templete
var last = localStorage.getItem('main')
var sel
if (obj.length < 1) {
@@ -947,21 +939,18 @@ function multisel() {
} else {
Object.keys(obj).forEach(function(key) {
var acct = obj[key]
var list = key * 1 + 1
if (key == last) {
sel = 'selected'
mainb = '(' + lang.lang_manager_def + ')'
var domain = localStorage.getItem('domain_' + key)
var mainb = '(' + lang.lang_manager_def + ')'
var profimg = localStorage.getItem('prof_' + key)
var domain = localStorage.getItem('domain_' + key)
if (!profimg) {
profimg = '../../img/missing.svg'
}
} else {
sel = ''
mainb = ''
var mainb = ''
}
template = `
var template = `
<option value="${key}" data-icon="${acct.prof}" class="left circle" ${sel}>
${acct.user}@${acct.domain}${mainb}
</option>
@@ -977,7 +966,7 @@ function mainacct() {
M.toast({ html: lang.lang_manager_mainAcct, displayLength: 3000 })
}
function colorpicker(key) {
temp = `<div onclick="coloradd('${key}','def','def')" class="pointer exc">${lang.lang_manager_none}</div>
var temp = `<div onclick="coloradd('${key}','def','def')" class="pointer exc">${lang.lang_manager_none}</div>
<div onclick="coloradd('${key}','f44336','white')" class="red white-text pointer"></div>
<div onclick="coloradd('${key}','e91e63','white')" class="pink white-text pointer"></div>
<div onclick="coloradd('${key}','9c27b0','white')" class="purple white-text pointer"></div>

View File

@@ -1,3 +1,4 @@
'use strict'
//プラットフォーム別 最後に読むやつ
//リンクを外部で開くか内部で出すか
$(document).on('click', 'a', e => {
@@ -10,7 +11,7 @@ $(document).on('click', 'a', e => {
if (url) {
urls = url.match(/https?:\/\/(.+)/)
//トゥートのURLぽかったら
toot = url.match(/https:\/\/([^+_]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/)
var toot = url.match(/https:\/\/([^+_]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/)
if (!toot) {
//Pleroma対策
toot = url.match(/https:\/\/([^+_]+)\/users\/([a-zA-Z0-9_]+)\/statuses\/([0-9]+)/)
@@ -103,7 +104,7 @@ function playSound() {
if (soundFile) {
soundFile.stop()
}
context = new AudioContext()
var context = new AudioContext()
context.createBufferSource().start(0)
context.decodeAudioData(request.response, function(buf) {
//console.log("Playing:" , source)
@@ -123,11 +124,6 @@ function playSound() {
volumeControl.gain.value = vol
source.start(0)
soundFile = source
function newFunction() {
var source
return source
}
}
function nano() {
postMessage(['nano', null], '*')
@@ -138,13 +134,13 @@ onmessage = function(e) {
} else if (e.data[0] == 'udg') {
udg(e.data[1][0], e.data[1][1])
} else if (e.data[0] == 'media') {
media(e.data[1][0], e.data[1][1], e.data[1][2], e.data[1][3])
media(e.data[1][0], e.data[1][1], e.data[1][2])
} else if (e.data[0] == 'post') {
post('pass')
} else if (e.data[0] == 'toastSaved') {
var show = `${lang.lang_img_DLDone}${
e.data[1][0]
}<button class="btn-flat toast-action" onclick="openFinder('${e.data[1][1]}')">Show</button>`
}<button class="btn-flat toast-action" onclick="openFinder(${e.data[1][1]}')">Show</button>`
M.toast({ html: show, displayLength: 5000 })
} else if (e.data[0] == 'parseColumn') {
parseColumn(e.data[1])

View File

@@ -1 +1,2 @@
'use strict'
//jQuery読む

View File

@@ -1,3 +1,4 @@
'use strict'
document.title = 'TheDesk'
$.strip_tags = function(str, allowed) {
if (!str) {
@@ -161,8 +162,8 @@ $.mb_substr = function(str, begin, end) {
var splitter = new GraphemeSplitter()
var arr = splitter.splitGraphemes(str)
var newarr = []
for (var i = 0; i < arr.length; i++) {
if (i >= begin && i <= end) {
for(var i = 0; i < arr.length; i++){
if(i >= begin && i <= end){
newarr.push(arr[i])
}
}
@@ -211,75 +212,3 @@ function escapeCsv(str) {
}
return result
}
function evalAttr(json, attr, lenCk) {
if (json[attr]) {
if (lenCk) {
if (json[attr][0]) {
return true
} else {
return false
}
} else {
return true
}
} else {
return false
}
}
function statusModel(now) {
if (!now) {
var now = new Date().toString()
}
return {
id: '',
created_at: now,
in_reply_to_id: null,
in_reply_to_account_id: null,
sensitive: false,
spoiler_text: '',
visibility: 'public',
language: 'en',
uri: '',
url: '',
replies_count: 0,
reblogs_count: 0,
favourites_count: 0,
favourited: false,
reblogged: false,
muted: false,
bookmarked: false,
pinned: false,
content: '<p><i>No status here</i></p>',
reblog: null,
application: {
name: null,
website: null
},
account: {
id: '',
username: '',
acct: '',
display_name: '',
locked: false,
bot: false,
created_at: now,
note: '',
url: '',
avatar: '',
avatar_static: '',
header: '',
header_static: '',
followers_count: 0,
following_count: 0,
statuses_count: 0,
last_status_at: now,
emojis: [],
fields: []
},
media_attachments: [],
mentions: [],
tags: [],
card: null,
poll: null
}
}

View File

@@ -1,3 +1,4 @@
'use strict'
//TL取得
var websocket
function tl(data) {

View File

@@ -1,9 +1,10 @@
'use strict'
var electron = require('electron')
const shell = electron.shell
var ipc = electron.ipcRenderer
onmessage = function(e) {
if (e.data[0] == 'openUrl') {
urls = e.data[1].match(/https?:\/\/(.+)/)
var urls = e.data[1].match(/https?:\/\/(.+)/)
if (urls) {
shell.openExternal(e.data[1])
}
@@ -13,10 +14,6 @@ onmessage = function(e) {
ipc.send('dialogStore', e.data[1])
} else if (e.data[0] == 'bmpImage') {
ipc.send('bmp-image', e.data[1])
} else if (e.data[0] == 'resizeImage') {
ipc.send('resize-image', e.data[1])
} else if (e.data[0] == 'stampImage') {
ipc.send('stamp-image', e.data[1])
} else if (e.data[0] == 'dialogCW') {
ipc.send('dialogCW', e.data[1])
} else if (e.data[0] == 'nativeNotf') {
@@ -116,31 +113,7 @@ ipc.on('theme-css-response', function(event, arg) {
})
//img.js
ipc.on('bmp-img-comp', function(event, b64) {
if (b64[2]) {
var stamped = true
} else {
var stamped = false
}
postMessage(['media', [b64[0], 'image/png', b64[1], stamped]], '*')
})
ipc.on('resizeJudgement', function(event, b64) {
var resize = localStorage.getItem('uploadCrop') * 1
if (resize > 0) {
var element = new Image()
var width
element.onload = function() {
var width = element.naturalWidth
var height = element.naturalHeight
if (width > resize || height > resize) {
ipc.send('resize-image', [b64, resize])
} else {
postMessage(['media', [b64[0], 'image/png', b64[1]]], '*')
}
}
element.src = b64
} else {
postMessage(['media', [b64[0], 'image/png', b64[1]]], '*')
}
postMessage(['media', [b64[0], 'image/png', b64[1]]], '*')
})
//ui,img.js
ipc.on('general-dl-prog', function(event, arg) {

View File

@@ -1,3 +1,4 @@
'use strict'
/*! https://mths.be/punycode v1.4.1 by @mathias */
;(function(root) {
/** Detect free variables */

View File

@@ -1,3 +1,4 @@
'use strict'
//BBCodeとMarkdownの入力・パーサー
//アカウント変えた時にBBとかMDとか
function mdCheck() {

View File

@@ -1,3 +1,4 @@
'use strict'
//絵文字ピッカー
//最初に読み込む
$('#emoji-before').addClass('disabled')

View File

@@ -1,3 +1,4 @@
'use strict'
//ドラッグ・アンド・ドロップからアップロードまで。uiのimg.jsとは異なります。
var obj = $('body')
var system
@@ -60,24 +61,6 @@ function handleFileUpload(files, obj, no) {
var fr = new FileReader()
fr.onload = function(evt) {
var b64 = evt.target.result
var resize = localStorage.getItem('uploadCrop') * 1
if (resize > 0) {
var element = new Image()
var width
element.onload = function() {
var width = element.naturalWidth
var height = element.naturalHeight
if (width > resize || height > resize) {
postMessage(['resizeImage', [b64, resize]], '*')
return false
} else {
$('#b64-box').val(b64)
var ret = media(b64, files['type'], no)
}
}
element.src = b64
return false
}
$('#b64-box').val(b64)
var ret = media(b64, files['type'], no)
}
@@ -86,15 +69,7 @@ function handleFileUpload(files, obj, no) {
}
//ファイルアップロード
function media(b64, type, no, stamped) {
var acct_id = $('#post-acct-sel').val()
var domain = localStorage.getItem('domain_' + acct_id)
var user = localStorage.getItem('user_' + acct_id)
if ($('#stamp').hasClass('stamp-avail') && !stamped) {
postMessage(['stampImage', [b64, user + '@' + domain]], '*')
return false
}
console.log(b64)
function media(b64, type, no) {
var l = 4
var c = 'abcdefghijklmnopqrstuvwxyz0123456789'
var cl = c.length
@@ -114,6 +89,8 @@ function media(b64, type, no, stamped) {
var media = toBlob(b64, type)
var fd = new FormData()
fd.append('file', media)
var acct_id = $('#post-acct-sel').val()
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
var httpreq = new XMLHttpRequest()
if (localStorage.getItem('mode_' + domain) == 'misskey') {
@@ -128,6 +105,7 @@ function media(b64, type, no, stamped) {
}
var previewer = 'url'
fd.append('i', at)
//fd.append('isSensitive', nsfw);
httpreq.send(fd)
} else {
var previewer = 'preview_url'
@@ -156,7 +134,11 @@ function media(b64, type, no, stamped) {
}
var img = localStorage.getItem('img')
if (json.type.indexOf('image') != -1) {
var html = `<img src="${json[previewer]}" class="preview-img pointer" data-media="${json['id']}" oncontextmenu="deleteImage('${json['id']}')" onclick="altImage('${acct_id}','${json['id']}')" title="${lang.lang_postimg_delete}">`
var html = `<img src="${json[previewer]}" class="preview-img pointer" data-media="${
json['id']
}" oncontextmenu="deleteImage('${json['id']}')" onclick="altImage('${acct_id}','${
json['id']
}')" title="${lang.lang_postimg_delete}">`
$('#preview').append(html)
} else {
$('#preview').append(lang.lang_postimg_previewdis)
@@ -170,7 +152,7 @@ function media(b64, type, no, stamped) {
mediav = mediav.replace(regExp, json['id'])
$('#media').val(mediav)
}
if (img == 'url' && json['text_url']) {
if (img == 'url') {
$('#textarea').val($('#textarea').val() + ' ' + json['text_url'])
}
todc()
@@ -319,12 +301,3 @@ function altImage(acct_id, id) {
}
})
}
function stamp() {
if ($('#stamp').hasClass('stamp-avail')) {
$('#stamp').html('Off')
$('#stamp').removeClass('stamp-avail')
} else {
$('#stamp').html('On')
$('#stamp').addClass('stamp-avail')
}
}

View File

@@ -1,3 +1,4 @@
'use strict'
//Renpost
function renote(id, acct_id, remote) {
if ($('#pub_' + id).hasClass('rted')) {

View File

@@ -1,3 +1,4 @@
'use strict'
/*投稿系*/
//投稿
function sec() {
@@ -17,13 +18,6 @@ function post(mode, postvis) {
var acct_id = $('#post-acct-sel').val()
localStorage.setItem('last-use', acct_id)
var domain = localStorage.getItem('domain_' + acct_id)
if ($('#ideKey').val() != '') {
var ideKey = $('#ideKey').val()
} else {
var user = localStorage.getItem('user_' + acct_id)
var ideKey = Math.floor(Date.now() / 1000) + '/TheDesk/' + user + '@' + domain
$('#ideKey').val(ideKey)
}
if (!localStorage.getItem('cw_sentence')) {
var cw_sent = 500
} else {
@@ -159,7 +153,6 @@ function post(mode, postvis) {
httpreq.open('POST', start, true)
httpreq.setRequestHeader('Content-Type', 'application/json')
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.setRequestHeader('Idempotency-Key', ideKey)
httpreq.responseType = 'json'
httpreq.send(JSON.stringify(toot))
httpreq.onreadystatechange = function() {
@@ -167,8 +160,6 @@ function post(mode, postvis) {
var json = httpreq.response
if (this.status !== 200) {
setLog(start, this.status, json)
} else {
$('#ideKey').val('')
}
var box = localStorage.getItem('box')
if (box == 'yes' || !box) {
@@ -265,7 +256,6 @@ function misskeyPost() {
//クリア(Shift+C)
function clear() {
$('#textarea').val('')
$('#ideKey').val('')
if (localStorage.getItem('stable')) {
$('#textarea').val('#' + localStorage.getItem('stable') + ' ')
}
@@ -295,8 +285,6 @@ function clear() {
$('#nsfw').removeClass('yellow-text')
$('#nsfw').html('visibility_off')
$('#nsfw').removeClass('nsfw-avail')
$('#stamp').html('Off')
$('#stamp').removeClass('stamp-avail')
$('#nsc').text(lang.lang_nothing)
$('#drag').css('background-color', '#e0e0e0')
$('#preview').html('')

View File

@@ -1,3 +1,4 @@
'use strict'
/*保護系*/
//画像保護
function nsfw() {

View File

@@ -1,7 +1,8 @@
'use strict'
//お気に入り登録やブースト等、フォローやブロック等
//お気に入り登録
function fav(id, acct_id, remote) {
if ($(`.cvo[unique-id=${id}]`).hasClass('faved')) {
if ($('#pub_' + id).hasClass('faved')) {
var flag = 'unfavourite'
} else {
var flag = 'favourite'
@@ -57,7 +58,7 @@ function fav(id, acct_id, remote) {
//ブースト
function rt(id, acct_id, remote, vis) {
if ($(`.cvo[toot-id=${id}]`).hasClass('rted')) {
if ($('#pub_' + id).hasClass('rted')) {
var flag = 'unreblog'
} else {
var flag = 'reblog'
@@ -85,7 +86,7 @@ function rt(id, acct_id, remote, vis) {
json = json.reblog
}
console.log(['Success: boost', json])
$('[toot-id=' + id + '] .fav_ct').text(json.favourites_count)
$('[unique-id=' + id + '] .fav_ct').text(json.favourites_count)
if (!json.reblog) {
if (flag == 'unreblog') {
var rt = json.reblogs_count - 1
@@ -95,16 +96,16 @@ function rt(id, acct_id, remote, vis) {
} else {
var rt = json.reblogs_count
}
$('[toot-id=' + id + '] .rt_ct').text(rt)
$('[unique-id=' + id + '] .rt_ct').text(rt)
} else {
$('[toot-id=' + id + '] .rt_ct').text(json.reblogs_count)
$('[unique-id=' + id + '] .rt_ct').text(json.reblogs_count)
}
if ($('[toot-id=' + id + ']').hasClass('rted')) {
$('[toot-id=' + id + ']').removeClass('rted')
if ($('[unique-id=' + id + ']').hasClass('rted')) {
$('[unique-id=' + id + ']').removeClass('rted')
$('.rt_' + id).removeClass('light-blue-text')
} else {
$('[toot-id=' + id + ']').addClass('rted')
$('[unique-id=' + id + ']').addClass('rted')
$('.rt_' + id).addClass('light-blue-text')
}
}
@@ -117,7 +118,7 @@ function boostWith(vis) {
}
//ブックマーク
function bkm(id, acct_id, tlid) {
if ($(`.cvo[unique-id=${id}]`).hasClass('bkmed')) {
if ($('#pub_' + id).hasClass('bkmed')) {
var flag = 'unbookmark'
} else {
var flag = 'bookmark'
@@ -141,19 +142,19 @@ function bkm(id, acct_id, tlid) {
json = json.reblog
}
var fav = json.favourites_count
$('[toot-id=' + id + '] .fav_ct').text(fav)
$('[toot-id=' + id + '] .rt_ct').text(json.reblogs_count)
if (flag == 'unbookmark') {
$('.bkmStr_' + id).text(lang.lang_parse_bookmark)
$('.bkm_' + id).removeClass('red-text')
$('[toot-id=' + id + ']').removeClass('bkmed')
} else {
$('.bkmStr_' + id).text(lang.lang_parse_unbookmark)
$('.bkm_' + id).addClass('red-text')
$('[toot-id=' + id + ']').addClass('bkmed')
}
var tlidTar = $(`.bookmark-timeline[data-acct=${acct_id}]`).attr('tlid')
columnReload(tlidTar, 'bookmark')
$('[toot-id=' + id + '] .fav_ct').text(fav)
$('[toot-id=' + id + '] .rt_ct').text(json.reblogs_count)
if (flag == 'unbookmark') {
$('.bkmStr_' + id).text(lang.lang_parse_bookmark)
$('.bkm_' + id).removeClass('red-text')
$('[toot-id=' + id + ']').removeClass('bkmed')
} else {
$('.bkmStr_' + id).text(lang.lang_parse_unbookmark)
$('.bkm_' + id).addClass('red-text')
$('[toot-id=' + id + ']').addClass('bkmed')
}
var tlidTar = $(`.bookmark-timeline[data-acct=${acct_id}]`).attr('tlid')
columnReload(tlidTar,'bookmark')
}
}
}
@@ -389,92 +390,45 @@ function redraft(id, acct_id) {
}).then(result => {
if (result.value) {
show()
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
if (localStorage.getItem('mode_' + domain) == 'misskey') {
var start = 'https://' + domain + '/api/notes/delete'
var httpreq = new XMLHttpRequest()
httpreq.open('POST', start, true)
httpreq.setRequestHeader('Content-Type', 'application/json')
httpreq.responseType = 'json'
httpreq.send(JSON.stringify({ i: at, noteId: id }))
$('[toot-id=' + id + ']').hide()
$('[toot-id=' + id + ']').remove()
} else {
var start = 'https://' + domain + '/api/v1/statuses/' + id
var httpreq = new XMLHttpRequest()
httpreq.open('DELETE', 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) {
if (this.status !== 200) {
setLog(start, this.status, this.response)
}
var json = httpreq.response
$('#post-acct-sel').prop('disabled', true)
$('#post-acct-sel').val(acct_id)
$('select').formSelect()
mdCheck()
var medias = $('[toot-id=' + id + ']').attr('data-medias')
var mediack = json.media_attachments[0]
//メディアがあれば
var media_ids = []
if (mediack) {
for (var i = 0; i <= 4; i++) {
if (json.media_attachments[i]) {
media_ids.push(json.media_attachments[i].id)
$('#preview').append(
'<img src="' +
json.media_attachments[i].preview_url +
'" style="width:50px; max-height:100px;">'
)
} else {
break
}
}
}
var vismode = $('[toot-id=' + id + '] .vis-data').attr('data-vis')
vis(vismode)
var medias = media_ids.join(',');
$('#media').val(medias)
localStorage.setItem('nohide', true)
show()
if (json.text) {
var html = json.text
} else {
var html = $('[toot-id=' + id + '] .toot').html()
html = html.replace(/^<p>(.+)<\/p>$/, '$1')
html = html.replace(/<br\s?\/?>/, '\n')
html = html.replace(/<p>/, '\n')
html = html.replace(/<\/p>/, '\n')
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, '$1')
html = $.strip_tags(html)
}
$('#textarea').val(html)
if (json.spoiler_text) {
cw()
$('#cw-text').val(json.spoiler_text)
}
if (json.sensitive) {
$('#nsfw').addClass('yellow-text')
$('#nsfw').html('visibility')
$('#nsfw').addClass('nsfw-avail')
}
if (json.in_reply_to_id) {
$('#reply').val(json.in_reply_to_id)
}
del(id, acct_id)
$('#post-acct-sel').prop('disabled', true)
$('#post-acct-sel').val(acct_id)
$('select').formSelect()
mdCheck()
var medias = $('[toot-id=' + id + ']').attr('data-medias')
var vismode = $('[toot-id=' + id + '] .vis-data').attr('data-vis')
vis(vismode)
$('#media').val(medias)
var ct = medias.split(',').length
$('[toot-id=' + id + '] img.toot-img').each(function(i, elem) {
if (i < ct) {
var url = $(elem).attr('src')
console.log('Play back image data:' + url)
$('#preview').append('<img src="' + url + '" style="width:50px; max-height:100px;">')
}
})
var html = $('[toot-id=' + id + '] .toot').html()
html = html.replace(/^<p>(.+)<\/p>$/, '$1')
html = html.replace(/<br\s?\/?>/, '\n')
html = html.replace(/<p>/, '\n')
html = html.replace(/<\/p>/, '\n')
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, '$1')
html = $.strip_tags(html)
localStorage.setItem('nohide', true)
show()
$('#textarea').val(html)
var cwtxt = $('[toot-id=' + id + '] .cw_text').html()
if (cwtxt != '') {
cwtxt = $.strip_tags(cwtxt)
cw()
$('#cw-text').val(cwtxt)
}
}
})
}
//ピン留め
function pin(id, acct_id) {
if ($(`.cvo[unique-id=${id}]`).hasClass('pined')) {
if ($('#pub_' + id).hasClass('pined')) {
var flag = 'unpin'
} else {
var flag = 'pin'
@@ -654,17 +608,13 @@ function staEx(mode) {
console.error(error)
})
.then(function(json) {
if (json.statuses) {
if (json.statuses[0]) {
var id = json.statuses[0].id
if (mode == 'rt') {
rt(id, acct_id, 'remote')
} else if (mode == 'fav') {
fav(id, acct_id, 'remote')
} else if (mode == 'reply') {
reEx(id)
}
}
var id = json.statuses[0].id
if (mode == 'rt') {
rt(id, acct_id, 'remote')
} else if (mode == 'fav') {
fav(id, acct_id, 'remote')
} else if (mode == 'reply') {
reEx(id)
}
})
return
@@ -683,10 +633,10 @@ function toggleAction(elem, height) {
cont.removeClass('top')
cont.addClass('bottom')
}
if (elem.parents('.cvo').attr('id') == 'toot-this') {
if(elem.parents('.cvo').attr('id') == 'toot-this'){
console.log($('#toot-this').offset().top, elem.offset().top)
left = $('#toot-this').offset().left + elem.offset().left + 10
top = $('#toot-this').offset().top - $('#toot-this').height() - height + 25
top = $('#toot-this').offset().top - $('#toot-this').height() -height + 25
}
cont.css('top', top + 'px')
cont.css('right', `calc(100vw - ${left}px)`)

View File

@@ -1,3 +1,4 @@
'use strict'
//入力時にハッシュタグと@をサジェスト
var timer = null

View File

@@ -1,3 +1,4 @@
'use strict'
/*リプライ*/
function re(id, ats_cm, acct_id, mode) {
clear()

View File

@@ -1,3 +1,4 @@
'use strict'
//カード処理やメンション、ハッシュタグの別途表示
//全てのTL処理で呼び出し
function additional(acct_id, tlid) {
@@ -37,7 +38,7 @@ function additional(acct_id, tlid) {
}
//トゥートのURLぽかったら
toot = text.match(/https:\/\/([a-zA-Z0-9.-]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/)
var toot = text.match(/https:\/\/([a-zA-Z0-9.-]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/)
if (toot) {
if (toot[1]) {
$(this).attr('data-acct', acct_id)
@@ -172,7 +173,7 @@ function additionalIndv(tlid, acct_id, id) {
console.error(error)
})
.then(function(json) {
cards = json.card
var cards = json.card
var analyze = cardHtml(cards, acct_id, id)
$('[toot-id=' + id + '] .additional').html(analyze)
if (json.title) {

View File

@@ -1,3 +1,4 @@
'use strict'
//トゥートの詳細
function details(id, acct_id, tlid, mode) {
if (mode == 'dm') {

View File

@@ -1,3 +1,4 @@
'use strict'
//日付パーサー
function date(str, datetype) {
if (datetype == "relative") {

View File

@@ -1,3 +1,4 @@
'use strict'
//ディレクトリ
//ディレクトリトグル
function dirMenu() {

View File

@@ -1,3 +1,4 @@
'use strict'
/*メディアフィルター機能*/
//各TL上方のMedia[On/Off]
function mediaToggle(tlid) {

View File

@@ -1,3 +1,4 @@
'use strict'
function listMenu() {
$('#left-menu div').removeClass('active')
$('#listMenu').addClass('active')

View File

@@ -1,3 +1,4 @@
'use strict'
function escapeHTMLtemp(str) {
if (!str) {
return "";

View File

@@ -1,3 +1,4 @@
'use strict'
//Integrated TL
async function mixtl(acct_id, tlid, type, delc, voice) {
localStorage.setItem('now', type)

View File

@@ -1,3 +1,4 @@
'use strict'
//通知
//取得+Streaming接続
function notf(acct_id, tlid, sys) {
@@ -69,8 +70,7 @@ function notfColumn(acct_id, tlid, sys) {
var n = new Notification('TheDesk:' + domain, options)
}
var mute = getFilterTypeByAcct(acct_id, 'notif')
//Pleromaにはmoveというtypeがあるらしい。何が互換APIじゃ
if (obj.type != 'follow' && obj.type != 'move') {
if (obj.type != 'follow') {
if (misskey) {
templete = templete + misskeyParse([obj], 'notf', acct_id, tlid, -1, mute)
} else {
@@ -80,7 +80,7 @@ function notfColumn(acct_id, tlid, sys) {
if (misskey) {
templete = templete + misskeyUserparse([obj], 'notf', acct_id, tlid, -1, mute)
} else {
templete = templete + userparse([obj.account], obj.type, acct_id, tlid, -1)
templete = templete + userparse([obj.account], 'notf', acct_id, tlid, -1)
}
}
})
@@ -180,8 +180,7 @@ function notfCommon(acct_id, tlid, sys) {
var n = new Notification('TheDesk:' + domain, options)
}
var mute = getFilterTypeByAcct(acct_id, 'notif')
//Pleromaにはmoveというtypeがあるらしい。何が互換APIじゃ
if (obj.type != 'follow' && obj.type != 'move') {
if (obj.type != 'follow') {
if (misskey) {
templete = templete + misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute)
} else {
@@ -191,7 +190,7 @@ function notfCommon(acct_id, tlid, sys) {
if (misskey) {
templete = templete + misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute)
} else {
templete = templete + userparse([obj.account], obj.type, acct_id, 'notf', -1)
templete = templete + userparse([obj.account], 'notf', acct_id, 'notf', -1)
}
}
})
@@ -240,7 +239,7 @@ function notfWS(misskey, acct_id, tlid, domain, at) {
if (obj.type != 'follow') {
templete = parse([obj], 'notf', acct_id, 'notf', popup)
} else {
templete = userparse([obj], obj.type, acct_id, 'notf', popup)
templete = userparse([obj], 'notf', acct_id, 'notf', popup)
}
if (!$('div[data-notfIndv=' + acct_id + '_' + obj.id + ']').length) {
$('div[data-notf=' + acct_id + ']').prepend(templete)
@@ -340,7 +339,7 @@ function notfmore(tlid) {
if (misskey) {
templete = templete + misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute)
} else {
templete = templete + userparse([obj.account], obj.type, acct_id, 'notf', -1)
templete = templete + userparse([obj.account], 'notf', acct_id, 'notf', -1)
}
}
})

View File

@@ -1,3 +1,4 @@
'use strict'
//Integrated TL
function mixtl(acct_id, tlid, type, delc, voice) {
localStorage.removeItem('morelock')

View File

@@ -1,3 +1,4 @@
'use strict'
//オブジェクトパーサー(トゥート)
function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
var splitter = new GraphemeSplitter()
@@ -217,13 +218,8 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
Object.keys(toot.account.emojis).forEach(function(key5) {
var emoji = toot.account.emojis[key5]
var shortcode = emoji.shortcode
if (gif == 'yes') {
var emoSource = emoji.url
} else {
var emoSource = emoji.static_url
}
var emoji_url = `
<img draggable="false" src="${emoSource}" class="emoji-img" data-emoji="${shortcode}"
<img draggable="false" src="${emoji.url}" class="emoji-img" data-emoji="${shortcode}"
alt=" :${shortcode}: " title="${shortcode}" onclick="this.classList.toggle('bigemoji');">
`
var regExp = new RegExp(':' + shortcode + ':', 'g')
@@ -232,9 +228,6 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
}
var noticeavatar = ''
if (mix == 'notf') {
if (!toot.status) {
toot.status = statusModel(toot.created_at)
}
if (gif == 'yes') {
noticeavatar = toot.account.avatar
} else {
@@ -372,15 +365,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
Object.keys(toot.account.emojis).forEach(function(key5) {
var emoji = toot.account.emojis[key5]
var shortcode = emoji.shortcode
if (gif == 'yes') {
var emoSource = emoji.url
} else {
var emoSource = emoji.static_url
}
var emoji_url = `
<img draggable="false" src="${emoSource}" class="emoji-img" data-emoji="${shortcode}"
alt=" :${shortcode}: " title="${shortcode}" onclick="this.classList.toggle('bigemoji');">
`
<img draggable="false" src="${emoji.url}" class="emoji-img" data-emoji="${shortcode}"
alt=" :${shortcode}: " title="${shortcode}" onclick="this.classList.toggle(\'bigemoji\');">`
var regExp = new RegExp(':' + shortcode + ':', 'g')
dis_name = dis_name.replace(regExp, emoji_url)
})
@@ -429,15 +416,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
Object.keys(toot.account.emojis).forEach(function(key5) {
var emoji = toot.account.emojis[key5]
var shortcode = emoji.shortcode
if (gif == 'yes') {
var emoSource = emoji.url
} else {
var emoSource = emoji.static_url
}
var emoji_url = `
<img draggable="false" src="${emoSource}" class="emoji-img" data-emoji="${shortcode}"
alt=" :${shortcode}: " title="${shortcode}" onclick="this.classList.toggle('bigemoji');">
`
<img draggable="false" src="${emoji.url}" class="emoji-img" data-emoji="${shortcode}"
alt=" :${shortcode}: " title="${shortcode}" onclick="this.classList.toggle(\'bigemoji\');">`
var regExp = new RegExp(':' + shortcode + ':', 'g')
dis_name = dis_name.replace(regExp, emoji_url)
})
@@ -559,11 +540,11 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
.match(
/https?:\/\/([^+_]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/
)
urlsck = content.match(/(https?):\/\/([^<>]*?)\/([^"]*)/g)
var urlsck = content.match(/(https?):\/\/([^<>]*?)\/([^"]*)/g)
if (urlsck) {
for (var urlct = 0; urlct < urlsck.length; urlct++) {
var urlindv = urlsck[urlct]
urlCont = urlindv.match(/(https?):\/\/([^a-zA-Z0-9.-]*?)\.(.+?)\/([^"]*)/)
var urlCont = urlindv.match(/(https?):\/\/([^a-zA-Z0-9.-]*?)\.(.+?)\/([^"]*)/)
if (urlCont) {
urlindv = urlindv.replace(/[.*+?^=!:${}()|[\]\/\\]/g, '\\$&')
var encoded = encodeURI(urlCont[4])
@@ -588,7 +569,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
//Poll
var poll = ''
if (toot.poll) {
var poll = pollParse(toot.poll, acct_id, false)
var poll = pollParse(toot.poll, acct_id)
}
var mediack = toot.media_attachments[0]
@@ -709,9 +690,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
var featured = ` <a onclick="tagFeature('${tag.name}','${acct_id}')" class="pointer" title="add it to Featured tags">Feature</a> `
tags =
tags +
`<span class="hide" data-tag="${tag.name}" data-regTag="${tag.name.toLowerCase()}">#${
tag.name
}:
`<span class="hide" data-tag="${tag.name}" data-regTag="${tag.name.toLowerCase()}">#${tag.name}:
<a onclick="tl('tag','${tag.name}','${acct_id}','add')" class="pointer"
title="${lang.lang_parse_tagTL.replace(
'{{tag}}',
@@ -848,15 +827,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
Object.keys(toot.emojis).forEach(function(key5) {
var emoji = toot.emojis[key5]
var shortcode = emoji.shortcode
if (gif == 'yes') {
var emoSource = emoji.url
} else {
var emoSource = emoji.static_url
}
var emoji_url = `
<img draggable="false" src="${emoSource}" class="emoji-img" data-emoji="${shortcode}"
alt=" :${shortcode}: " title="${shortcode}" onclick="this.classList.toggle('bigemoji');">
`
<img draggable="false" src="${emoji.url}" class="emoji-img" data-emoji="${shortcode}"
alt=" :${shortcode}: " title="${shortcode}" onclick="this.classList.toggle(\'bigemoji\');">`
var regExp = new RegExp(':' + shortcode + ':', 'g')
content = content.replace(regExp, emoji_url)
spoil = spoil.replace(regExp, emoji_url)
@@ -1060,9 +1033,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
</a>
</div>
<div class="action ${can_rt} ${disp['rt']} ${noauth}">
<a onclick="rt('${toot.id}','${acct_id}','${tlid}')" class="waves-effect waves-dark btn-flat actct bt-btn"
<a onclick="rt('${uniqueid}','${acct_id}','${tlid}')" class="waves-effect waves-dark btn-flat actct bt-btn"
style="padding:0" title="${lang.lang_parse_bt}">
<i class="fas fa-retweet ${if_rt} rt_${toot.id}"></i>
<i class="fas fa-retweet ${if_rt} rt_${uniqueid}"></i>
<span class="rt_ct">${toot.reblogs_count}</span>
</a>
</div>
@@ -1108,26 +1081,28 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
<a onclick="client('${$.strip_tags(via)}')" class="pointer">${lang.lang_parse_clientop}</a>
</div>
<div>
<button onclick="bkm('${uniqueid}','${acct_id}','${tlid}')"
<button onclick="bkm('${toot.id}','${acct_id}','${tlid}')"
class="waves-effect waves-dark btn-flat actct bkm-btn" style="padding:0">
<i class="fas text-darken-3 fa-bookmark bkm_${toot.id} ${if_bkm}"></i>
<span class="bkmStr_${uniqueid}">${bkmStr}</span>
<span class="bkmStr_${toot.id}">${bkmStr}</span>
</button>
</div>
<div class="${if_mine}">
<button onclick="del('${uniqueid}','${acct_id}')" class="waves-effect waves-dark btn-flat actct"
<button onclick="del('${toot.id}','${acct_id}')" class="waves-effect waves-dark btn-flat actct"
style="padding:0">
<i class="fas fa-trash"></i>${lang.lang_parse_del}
</button>
</div>
<div class="${if_mine}">
<button onclick="pin('${uniqueid}','${acct_id}')" class="waves-effect waves-dark btn-flat actct" style="padding:0">
<i class="fas fa-map-pin pin_${uniqueid} ${if_pin}"></i>
<span class="pinStr_${uniqueid}">${pinStr}</span>
<button onclick="pin('${
toot.id
}','${acct_id}')" class="waves-effect waves-dark btn-flat actct" style="padding:0">
<i class="fas fa-map-pin pin_${toot.id} ${if_pin}"></i>
<span class="pinStr_${toot.id}">${pinStr}</span>
</button>
</div>
<div class="${if_mine}">
<button onclick="redraft('${uniqueid}','${acct_id}')" class="waves-effect waves-dark btn-flat actct"
<button onclick="redraft('${toot.id}','${acct_id}')" class="waves-effect waves-dark btn-flat actct"
style="padding:0">
<i class="material-icons">redo</i>${lang.lang_parse_redraft}
</button>
@@ -1159,10 +1134,6 @@ function userparse(obj, auth, acct_id, tlid, popup) {
if (locale == 'yes') {
var locale = false
}
var gif = localStorage.getItem('gif')
if (!gif) {
gif = 'yes'
}
var templete = ''
var datetype = localStorage.getItem('datetype')
Object.keys(obj).forEach(function(key) {
@@ -1192,15 +1163,10 @@ function userparse(obj, auth, acct_id, tlid, popup) {
} else {
var authhtml = ''
}
if (auth == 'follow') {
var ftxt = lang.lang_parse_followed
if (!locale && localStorage.getItem('followlocale_' + acct_id)) {
ftxt = localStorage.getItem('followlocale_' + acct_id)
}
} else if (auth == 'moved') {
var ftxt = lang.lang_parse_moved
var ftxt = lang.lang_parse_followed
if (!locale && localStorage.getItem('followlocale_' + acct_id)) {
ftxt = localStorage.getItem('followlocale_' + acct_id)
}
console.log(auth, ftxt)
if (popup > 0 || popup == -1 || notf) {
var notftext = ftxt + '<br>'
} else {
@@ -1243,15 +1209,9 @@ function userparse(obj, auth, acct_id, tlid, popup) {
Object.keys(toot.emojis).forEach(function(key5) {
var emoji = toot.emojis[key5]
var shortcode = emoji.shortcode
if (gif == 'yes') {
var emoSource = emoji.url
} else {
var emoSource = emoji.static_url
}
var emoji_url = `
<img draggable="false" src="${emoSource}" class="emoji-img" data-emoji="${shortcode}"
alt=" :${shortcode}: " title="${shortcode}" onclick="this.classList.toggle('bigemoji');">
`
<img draggable="false" src="${emoji.url}" class="emoji-img" data-emoji="${shortcode}"
alt=" :${shortcode}: " title="${shortcode}" onclick="this.classList.toggle(\'bigemoji\');">`
var regExp = new RegExp(':' + shortcode + ':', 'g')
dis_name = dis_name.replace(regExp, emoji_url)
})
@@ -1260,11 +1220,7 @@ function userparse(obj, auth, acct_id, tlid, popup) {
dis_name = twemoji.parse(dis_name)
}
if (toot.avatar) {
if (gif == 'yes') {
var avatar = toot.avatar
} else {
var avatar = toot.avatar_static
}
var avatar = toot.avatar
} else {
var avatar = '../../img/missing.svg'
}
@@ -1387,34 +1343,17 @@ function client(name) {
}
}
//Poll Parser
function pollParse(poll, acct_id, emojis) {
function pollParse(poll, acct_id) {
var datetype = localStorage.getItem('datetype')
var anime = localStorage.getItem('animation')
if (anime == 'yes' || !anime) {
var lpAnime = 'lpAnime'
} else {
var lpAnime = ''
}
var gif = localStorage.getItem('gif')
if (!gif) {
gif = 'yes'
}
var choices = poll.options
if (poll.own_votes) {
var minechoice = poll.own_votes
} else {
var minechoice = []
}
var refresh = `<a onclick="voteMastodonrefresh('${acct_id}','${poll.id}')" class="pointer">
${lang.lang_manager_refresh}
</a>`
if (poll.voted && poll.own_votes.length) {
if (poll.voted) {
var myvote = lang.lang_parse_voted
if (poll.expired) myvote = myvote + '/' + lang.lang_parse_endedvote
var result_hide = ''
} else if (poll.voted && !poll.own_votes.length) {
var myvote = lang.lang_parse_myvote
if (poll.expired) myvote = myvote + '/' + lang.lang_parse_endedvote
var result_hide = ''
} else if (poll.expired) {
var myvote = lang.lang_parse_endedvote
@@ -1426,90 +1365,49 @@ function pollParse(poll, acct_id, emojis) {
myvote +
`<a onclick="showResult('${acct_id}','${poll.id}')" class="pointer">
${lang.lang_parse_unvoted}
</a> `
</a>`
}
var result_hide = 'hide'
}
var ended = date(poll.expires_at, datetype)
var pollHtml = ''
if (choices[0].votes_count === 0 || choices[0].votes_count > 0) {
var max = _.maxBy(choices, 'votes_count').votes_count
} else {
var max = 0
}
Object.keys(choices).forEach(function(keyc) {
var choice = choices[keyc]
var voteit = ''
for (var i = 0; i < minechoice.length; i++) {
var me = minechoice[i]
if (me == keyc) {
var voteit =
'<span class="ownMark"><img class="emoji" draggable="false" src="https://twemoji.maxcdn.com/v/12.1.4/72x72/2705.png"></span>'
var voteit = '✅'
break
}
}
if (!poll.voted && !poll.expired) {
var votesel =
"voteSelMastodon('" + acct_id + "','" + poll.id + "'," + keyc + ',' + poll.multiple + ')'
var voteclass = 'pointer'
var voteclass = 'pointer waves-effect waves-light'
} else {
var votesel = ''
var voteclass = ''
}
var per = Math.ceil((choice.votes_count / poll.votes_count) * 100)
if (!per) per = 0
if (max == choice.votes_count) {
var addPoll = 'maxVoter'
} else {
var addPoll = ''
}
var openData = ''
if (choice.votes_count !== null) {
openData = `<span style="float: right">${choice.votes_count}<span class="sml">(${per}%)</span></span>`
} else {
openData = `<span style="float: right">?<span class="sml">(-%)</span></span>`
}
var choiceText = escapeHTML(choice.title)
if (emojis) {
//絵文字があれば
Object.keys(emojis).forEach(function(key5) {
var emoji = emojis[key5]
var shortcode = emoji.shortcode
if (gif == 'yes') {
var emoSource = emoji.url
} else {
var emoSource = emoji.static_url
}
var emoji_url = `
<img draggable="false" src="${emoSource}" class="emoji-img" data-emoji="${shortcode}"
alt=" :${shortcode}: " title="${shortcode}" onclick="this.classList.toggle('bigemoji');">
`
var regExp = new RegExp(':' + shortcode + ':', 'g')
choiceText = choiceText.replace(regExp, emoji_url)
})
choiceText = twemoji.parse(choiceText)
}
pollHtml =
pollHtml +
`<div class="${voteclass} vote vote_${acct_id}_${poll.id}_${keyc}" onclick="${votesel}">
<span class="vote_${acct_id}_${poll.id}_result leadPoll ${result_hide} ${addPoll} ${lpAnime}" style="width: ${per}%"></span>
<span class="onPoll">${choiceText}${voteit}</span>
<span class="vote_${acct_id}_${poll.id}_result ${result_hide} onPoll">
${openData}
${escapeHTML(choice.title)}
<span class="vote_${acct_id}_${poll.id}_result ${result_hide}">
(${choice.votes_count})
</span>
${voteit}
</div>`
})
if (poll.expired) {
refresh = ''
}
pollHtml = `<div class="vote_${acct_id}_${poll.id}">
${pollHtml}${myvote}
${refresh}
<a onclick="voteMastodonrefresh('${acct_id}','${poll.id}')" class="pointer">
${lang.lang_manager_refresh}
</a>
<span class="cbadge cbadge-hover" title="${date(poll.expires_at, 'absolute')}">
<i class="far fa-calendar-times"></i>
${ended}
</span>${poll.voters_count} ${lang.lang_parse_people}
</span>
</div>`
return pollHtml
}

View File

@@ -1,3 +1,4 @@
'use strict'
//アンケートのトグル
function pollToggle() {
if ($('#poll').hasClass('hide')) {
@@ -120,7 +121,7 @@ function voteMastodonrefresh(acct_id, id) {
if (!json) {
return false
}
var poll = pollParse(json, acct_id, json.emojis)
var poll = pollParse(json, acct_id)
$('.vote_' + acct_id + '_' + json.id).html(poll)
}
}

View File

@@ -1,8 +1,9 @@
$voise = null
isBouyomi = localStorage.getItem('voice_bouyomi')
$voiseName = lang.lang_speech
$voices = speechSynthesis.getVoices()
$synthes = new SpeechSynthesisUtterance()
'use strict'
var $voise = null
var isBouyomi = localStorage.getItem('voice_bouyomi')
var $voiseName = lang.lang_speech
var $voices = speechSynthesis.getVoices()
var $synthes = new SpeechSynthesisUtterance()
$voise = $.grep($voices, function(n, i) {
return n.name == $voiseName
})[0]
@@ -12,14 +13,14 @@ speechSynthesis.cancel()
if (!localStorage.getItem('voice_vol')) {
localStorage.setItem('voice_vol', 1)
}
voiceRate = localStorage.getItem('voice_speed')
var voiceRate = localStorage.getItem('voice_speed')
$synthes.rate = voiceRate
voicePitch = localStorage.getItem('voice_pitch')
var voicePitch = localStorage.getItem('voice_pitch')
$synthes.pitch = voicePitch
voiceVol = localStorage.getItem('voice_vol')
var voiceVol = localStorage.getItem('voice_vol')
$synthes.volume = voiceVol
function say(msgr) {
msg = voiceParse(msgr)
var msg = voiceParse(msgr)
var voice = localStorage.getItem('voicebank')
var obj = JSON.parse(voice)
if (!obj) {
@@ -31,7 +32,7 @@ function say(msgr) {
localStorage.setItem('voicebank', json)
}
}
$repeat = setInterval(function() {
var $repeat = setInterval(function() {
if (!speechSynthesis.speaking) {
var voice = localStorage.getItem('voicebank')
if (voice) {
@@ -72,7 +73,7 @@ $repeat = setInterval(function() {
}
}, 300)
function voiceParse(msg) {
msg = $.strip_tags(msg)
var msg = $.strip_tags(msg)
msg = msg.replace(/#/g, '')
msg = msg.replace(/'/g, '')
msg = msg.replace(/"/g, '')

View File

@@ -1,3 +1,4 @@
'use strict'
//検索
//検索ボックストグル
function searchMenu() {
@@ -216,9 +217,6 @@ function moreTs(tlid, q) {
function graphDraw(tag, acct_id) {
var tags = ''
var his = tag.history
return graphDrawCore(his, tag)
}
function graphDrawCore(his, tag){
var max = Math.max.apply(null, [
his[0].uses,
his[1].uses,
@@ -235,32 +233,36 @@ function graphDrawCore(his, tag){
var two = 50 - (his[2].uses / max) * 50
var one = 50 - (his[1].uses / max) * 50
var zero = 50 - (his[0].uses / max) * 50
return `<div class="tagComp">
<div class="tagCompSvg">
<svg version="1.1" viewbox="0 0 60 50" width="60" height="50">
<g>
<path d="M0,${six} L10,${five} 20,${four} 30,${three} 40,${two} 50,${one} 60,${zero} 61,61 0,61"
style="stroke: #0f8c0c;fill: rgba(13,113,19,.25); stroke-width: 1;">
</path>
</g>
</svg>
</div>
<div class="tagCompToot">
<span style="font-size:200%">${his[0].uses}</span>
</div>
<div class="tagCompToots">
toot
</div>
<div class="tagCompTag">
<a onclick="tl('tag','${escapeHTML(tag.name)}','${acct_id}','add')" class="pointer" title="${escapeHTML(tag.name)}">
#${escapeHTML(tag.name)}
</a>
</div>
<div class="tagCompUser">
${his[0].accounts}
${lang.lang_src_people}
</div>
</div>`
if (max === 0) {
tags =
`<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50"></svg>
<span style="font-size:200%">${his[0].uses}</span>
toot(s)&nbsp;
<a onclick=\"tl('tag','${escapeHTML(tag.name)}','${acct_id}','add')" class="pointer">
#${escapeHTML(tag.name)}
</a>&nbsp;` +
his[0].accounts +
lang.lang_src_people
} else {
tags =
`<br><br>
<svg version="1.1" viewbox="0 0 60 50" width="60" height="50">
<g>
<path d="M0,${six} L10,${five} 20,${four} 30,${three} 40,${two} 50,${one} 60,${zero}"
style="stroke: #0f8c0c;fill: rgba(13,113,19,.25); stroke-width: 1;">
</path>
</g>
</svg>
<span style="font-size:200%">${his[0].uses}</span>
toot&nbsp;
<a onclick="tl('tag','${escapeHTML(tag.name)}','${acct_id}','add')" class="pointer">
#${escapeHTML(tag.name)}
</a>&nbsp;` +
his[0].accounts +
lang.lang_src_people
}
return tags
}
/*
<svg version="1.1" viewbox="0 0 50 300" width="100%" height="50">
@@ -302,7 +304,38 @@ function trend() {
Object.keys(json).forEach(function(keye) {
var tag = json[keye]
var his = tag.history
tags = graphDrawCore(his, tag)
var max = Math.max.apply(null, [
his[0].uses,
his[1].uses,
his[2].uses,
his[3].uses,
his[4].uses,
his[5].uses,
his[6].uses
])
var six = 50 - (his[6].uses / max) * 50
var five = 50 - (his[5].uses / max) * 50
var four = 50 - (his[4].uses / max) * 50
var three = 50 - (his[3].uses / max) * 50
var two = 50 - (his[2].uses / max) * 50
var one = 50 - (his[1].uses / max) * 50
var zero = 50 - (his[0].uses / max) * 50
tags =
`<svg version="1.1" viewbox="0 0 60 50" width="60" height="50">
<g>
<path d="M0,${six} L10,${five} 20,${four} 30,${three} 40,${two} 50,${one} 60,${zero}"
style="stroke: #0f8c0c;fill: rgba(13,113,19,.25); stroke-width: 1;">
</path>
</g>
</svg>
<span style="font-size:200%">${his[0].uses}</span>
toot&nbsp;
<a onclick="tl('tag','${escapeHTML(tag.name)}','${acct_id}','add')" class="pointer">
#${escapeHTML(tag.name)}
</a>&nbsp;` +
his[0].accounts +
lang.lang_src_people +
'<br><br>'
$('#src-contents').append(tags)
})

View File

@@ -1,3 +1,4 @@
'use strict'
//タグ表示
if (location.search) {
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/)

View File

@@ -1,5 +1,6 @@
'use strict'
//TL取得
moreloading = false
var moreloading = false
var errorct = 0
function tl(type, data, acct_id, tlid, delc, voice, mode) {
scrollevent()

View File

@@ -1,3 +1,4 @@
'use strict'
/*イメージビューワー*/
//postのimg.jsとは異なります。
function imgv(id, key, acct_id) {
@@ -53,7 +54,7 @@ function imgCont(type) {
$('#imagemodal').attr('data-image', murl)
//表示はリモートを使うか(どちらにしろコピーはオリジナル)
var remote_img = localStorage.getItem('remote_img')
if (remote_img == 'yes' && ourl != 'null') {
if (remote_img == 'yes') {
murl = ourl
}
if (murl) {
@@ -76,7 +77,7 @@ function imgCont(type) {
}
function imageXhr(id, key, murl) {
var startTime = new Date()
xhr = new XMLHttpRequest()
var xhr = new XMLHttpRequest()
xhr.open('GET', murl, true)
xhr.responseType = 'arraybuffer'
xhr.addEventListener(
@@ -95,7 +96,7 @@ function imageXhr(id, key, murl) {
'loadend',
function(event) {
var total = event.total
$('#imgbyte').text(Math.floor(total / 1024))
$('#imgbyte').text(Math.floor(total/1024))
var now = event.loaded
var per = (now / total) * 100
$('#imgprog').text(Math.floor(per))
@@ -104,7 +105,7 @@ function imageXhr(id, key, murl) {
)
xhr.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
r = new FileReader()
var r = new FileReader()
r.readAsDataURL(this.response)
r.onload = function() {
var b64 = r.result
@@ -266,8 +267,9 @@ function dlImg() {
if (remote_img == 'yes') {
murl = ourl
}
var save = localStorage.getItem('savefolder')
if (!save || save == 'null') {
if (localStorage.getItem('savefolder')) {
var save = localStorage.getItem('savefolder')
} else {
var save = ''
}
postMessage(['generalDL', [murl, save, false]], '*')

View File

@@ -1,3 +1,4 @@
'use strict'
//レイアウトの設定
var websocketOld = []
@@ -706,7 +707,7 @@ function setToggleTag(tlid) {
}
}
function colorpicker(key) {
temp = `<div onclick="coloradd('${key}','def','def')" class="pointer">Default</div>
var temp = `<div onclick="coloradd('${key}','def','def')" class="pointer">Default</div>
<div onclick="coloradd('${key}','f44336','white')" class="red white-text pointer">Red</div>
<div onclick="coloradd('${key}','e91e63','white')" class="pink white-text pointer">Pink</div>
<div onclick="coloradd('${key}','9c27b0','white')" class="purple white-text pointer">Purple</div>

View File

@@ -1,3 +1,4 @@
'use strict'
function menu() {
localStorage.setItem("menu-done", true);
$("#fukidashi").addClass("hide")

View File

@@ -1,3 +1,4 @@
'use strict'
function pip(id) {
$("#pip-content").html($("[toot-id=" + id + "] .additional").html());
$("#pip").removeClass("hide");

View File

@@ -1,3 +1,4 @@
'use strict'
/*ささやきボックス(Cr民並感)*/
//✕隠す
function hide() {

View File

@@ -1,3 +1,4 @@
'use strict'
var r = document.getElementById("radio");
function Rtoggle() {
if ($("#radio").hasClass("play")) {

View File

@@ -1,3 +1,4 @@
'use strict'
//スクロールで続きを読む
function scrollevent() {
$('.tl-box').scroll(function() {

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,4 @@
'use strict'
//ソートデータ読み込み
function sortLoad () {
$("#sort").html("");

View File

@@ -1,3 +1,4 @@
'use strict'
function spotifyConnect() {
var auth = "https://accounts.spotify.com/authorize?client_id=0f18e54abe0b4aedb4591e353d3aff69&redirect_uri=https://thedesk.top/spotify-connect&response_type=code&scope=user-read-currently-playing";
var platform = localStorage.getItem("platform");

View File

@@ -1,3 +1,4 @@
'use strict'
//テーマ適用
function themes(theme) {
if (!theme) {

View File

@@ -1,3 +1,4 @@
'use strict'
//左下のメッセージ
var todcTrigger = null
function todo(mes) {
@@ -128,7 +129,7 @@ function trendTagonTip() {
})
}
//Spotify
spotint = null
var spotint = null
function spotifytips() {
if (spotint) clearInterval(spotint)
var start =

View File

@@ -1,3 +1,4 @@
'use strict'
//ユーザーデータ表示
//タイムライン
function utl(user, more, acct_id) {

View File

@@ -1,3 +1,4 @@
'use strict'
//プロフ編集
//文字系
function profedit() {

View File

@@ -1,3 +1,4 @@
'use strict'
//ユーザーデータ表示
localStorage.removeItem("history");
//コード受信

View File

@@ -1,92 +1,43 @@
function img(mainWindow, dir) {
const electron = require('electron')
const dialog = electron.dialog
const fs = require('fs')
var Jimp = require('jimp')
var ipc = electron.ipcMain
const BrowserWindow = electron.BrowserWindow
ipc.on('file-select', (e, args) => {
dialog.showOpenDialog(
null,
{
properties: ['openFile', 'multiSelections'],
title: '添付ファイルを選択',
defaultPath: '.',
filters: [
{
name: 'メディアファイル',
extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg', 'mp4', 'webm']
},
{ name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg'] },
{ name: '動画', extensions: ['mp4', 'webm'] },
{ name: '全てのファイル', extensions: ['*'] }
]
},
fileNames => {
if (!fileNames) {
return false
}
for (var i = 0; i < fileNames.length; i++) {
var path = fileNames[i]
var bin = fs.readFileSync(path, 'base64')
e.sender.webContents.send('resizeJudgement', [bin, 'new'])
}
}
)
})
ipc.on('bmp-image', (e, args) => {
Jimp.read(args[0], function(err, lenna) {
if (err) throw err
lenna.getBase64(Jimp.MIME_PNG, function(err, src) {
e.sender.webContents.send('bmp-img-comp', [src, args[1]])
})
})
})
ipc.on('resize-image', (e, args) => {
var ext = args[0].toString().slice(args[0].indexOf('/') + 1, args[0].indexOf(';'))
if (ext == 'jpeg') {
var use = 'MIME_JPEG'
} else {
var use = 'MIME_PNG'
}
var b64 = args[0].replace(/^data:\w+\/\w+;base64,/, '')
var decodedFile = new Buffer(b64, 'base64')
Jimp.read(decodedFile, function(err, lenna) {
if (err) throw err
lenna.scaleToFit(args[1], args[1]).getBase64(Jimp[use], function(err, src) {
e.sender.webContents.send('bmp-img-comp', [src, args[1]])
})
})
})
ipc.on('stamp-image', (e, args) => {
var text = args[1]
var b64 = args[0].replace(/^data:\w+\/\w+;base64,/, '')
var decodedFile = new Buffer(b64, 'base64')
console.log(text)
Jimp.read(decodedFile, function(err, image) {
if (err) throw err
Jimp.loadFont(Jimp.FONT_SANS_16_BLACK).then(font => {
var evWidth = Jimp.measureText(font, text)
var width = image.bitmap.width
var height = image.bitmap.height
var left = width - evWidth - 10
var top = height - 30
var color = Jimp.intToRGBA(image.getPixelColor(left, top))
console.log(left, top, color)
var ave = (color.r + color.g + color.b) / 3
if (ave > 128) {
image.print(font, left, top, args[1]).getBase64(Jimp.MIME_PNG, function(err, src) {
e.sender.webContents.send('bmp-img-comp', [src, args[1], true])
})
} else {
Jimp.loadFont(Jimp.FONT_SANS_16_WHITE).then(font => {
image.print(font, left, top, args[1]).getBase64(Jimp.MIME_PNG, function(err, src) {
e.sender.webContents.send('bmp-img-comp', [src, args[1], true])
})
})
}
})
})
})
const electron = require("electron");
const dialog = electron.dialog;
const fs = require("fs");
var Jimp = require("jimp");
var ipc = electron.ipcMain;
const BrowserWindow = electron.BrowserWindow;
ipc.on('file-select', (e, args) => {
dialog.showOpenDialog(null, {
properties: ['openFile', 'multiSelections'],
title: '添付ファイルを選択',
defaultPath: '.',
filters: [
{ name: 'メディアファイル', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg', 'mp4', 'webm'] },
{ name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg'] },
{ name: '動画', extensions: ['mp4', 'webm'] },
{ name: '全てのファイル', extensions: ['*'] }
]
}, (fileNames) => {
if (!fileNames) {
return false;
}
for (var i = 0; i < fileNames.length; i++) {
var path = fileNames[i];
var bin = fs.readFileSync(path, 'base64');
e.sender.webContents.send('bmp-img-comp', [bin, 'new']);
}
});
});
ipc.on('bmp-image', (e, args) => {
var m = args[0].match(/(.+)\\(.+)\.(.+)$/);
Jimp.read(args[0], function (err, lenna) {
if (err) throw err;
lenna.getBase64(Jimp.MIME_PNG, function (err, src) {
e.sender.webContents.send('bmp-img-comp', [src, args[1]]);
});
});
});
}
exports.img = img
exports.img = img;

View File

@@ -45,7 +45,7 @@ function system(mainWindow, dir, lang, dirname) {
//エクスポートのダイアログ
ipc.on("exportSettings", function(e, args) {
dialog.showSaveDialog(
mainWindow,
null,
{
title: "Export",
properties: ["openFile", "createDirectory"],
@@ -62,14 +62,13 @@ function system(mainWindow, dir, lang, dirname) {
//インポートのダイアログ
ipc.on("importSettings", function(e, args) {
dialog.showOpenDialog(
mainWindow,
null,
{
title: "Import",
properties: ["openFile"],
filters: [{ name: "TheDesk Config", extensions: ["thedeskconfig", "thedeskconfigv2", "json5"] }]
},
fileNames => {
console.log("imported from: ", fileNames)
if (!fileNames) {
return false;
}
@@ -80,7 +79,7 @@ function system(mainWindow, dir, lang, dirname) {
//保存フォルダのダイアログ
ipc.on("savefolder", function(e, args) {
dialog.showOpenDialog(
mainWindow,
null,
{
title: "Save folder",
properties: ["openDirectory"]
@@ -93,7 +92,7 @@ function system(mainWindow, dir, lang, dirname) {
//カスタムサウンドのダイアログ
ipc.on("customSound", function(e, arg) {
dialog.showOpenDialog(
mainWindow,
null,
{
title: "Custom sound",
properties: ["openFile"],

View File

@@ -1,6 +1,6 @@
{
"name": "thedesk",
"version": "20.1.0",
"version": "20.0.4",
"description": "TheDesk is a Mastodon client for PC.",
"repository": "https://github.com/cutls/TheDesk",
"main": "main.js",
@@ -52,16 +52,14 @@
"dependencies": {
"@fortawesome/fontawesome-free": "^5.11.2",
"electron-dl": "^1.14.0",
"jimp": "^0.9.1",
"jimp": "^0.8.4",
"jquery": "^3.4.1",
"jquery-ui-dist": "^1.12.1",
"materialize-css": "git://github.com/cutls/materialize",
"json5": "^2.1.1",
"lodash": "^4.17.15",
"sumchecker": "^3.0.0",
"sweetalert2": "^9.5.3",
"sumchecker": "^3.0.1",
"sweetalert2": "^9.4.0",
"sweetalert2": "^9.3.16",
"vue": "^2.6.10"
},
"optionalDependencies": {

View File

@@ -205,11 +205,9 @@
<div class="col s12 mize" style="margin-bottom:5px; padding:0;">
<div id="taglist"></div>
<div id="preview" class="mize"></div>
<span class=" sml mize"><span>@@replyMode@@</span>:
<span id="rec">@@no@@</span>/<span>@@temp@@</span>:
<span id="mec">@@nothing@@</span>
<a onclick="stamp()" class="pointer" title="@@stampWarn@@">@@stamp@@: <span id="stamp">Off</span></a>
/@@poll@@:<span id="pollsta">@@no@@</span>
<span class=" sml mize"><span data-trans="reply">@@replyMode@@</span>:
<span id="rec">@@no@@</span>/<span data-trans="file">@@temp@@</span>:
<span id="mec">@@nothing@@</span>/@@poll@@:<span id="pollsta">@@no@@</span>
<span id="vis" class="hide">public</span>
</span>
<br>
@@ -260,7 +258,6 @@
</ul>
<!--hidden area-->
<input type="hidden" id="reply">
<input type="hidden" id="ideKey">
<input type="hidden" id="quote">
<input type="hidden" id="media">
<!--END hidden area-->
@@ -764,57 +761,34 @@
<a href="https://thedesk.top" target="_blank">HP</a><br>
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br>
<br>
<div id="release-20-1-0_Kawaii" class="release-do" style="display:none; ">><br>
<div id="release-20-0-4_Kawaii" class="release-do" style="display:none; ">><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Pixiv FanboxやPatreonでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note 20.1.0 (Kawaii)</h5>
画像のページ送りに失敗する
<h5>Release Note 20.0.4 (Kawaii)</h5>
YouTubeの一部の埋め込みがtrustedになっていなかった
<a onclick="udgEx('Cutls@cutls.com','main')" class="contributor">
<img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">Cutls
</a><br>
Pleromaのmove通知タイプの対応
<a onclick="udgEx('Cutls@cutls.com','main')" class="contributor">
<img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">Cutls
</a><br>
・ブーストやお気に入りが解除できなくなるバグの修正(進行中)
<a onclick="udgEx('Cutls@cutls.com','main')" class="contributor">
<img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">Cutls
</a><br>
・保存先フォルダが表示されないバグの修正
<a onclick="udgEx('micchan83@fedibird.com','main')" class="contributor">
<img src="https://user-images.githubusercontent.com/17561618/67261210-a46a7980-f4da-11e9-9c9c-704757d3b1a7.png">micchan83
</a>
<a onclick="udgEx('Cutls@cutls.com','main')" class="contributor">
<img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">Cutls
</a>
<br>
・ブーストされた投票で最も投票された選択肢の背景色がブースト背景色と一緒で見えにくかった
<a onclick="udgEx('kPherox@pl.kpherox.dev','main')" class="contributor">
<img src="https://user-images.githubusercontent.com/17561618/66582379-a3714800-ebbc-11e9-8402-d81a35a3be9f.png">kPherox
Integrated TLを下にもっと読み込むことができなかった
<a onclick="udgEx('naokisz@kirishima.cloud','main')" class="contributor">
<img src="https://user-images.githubusercontent.com/17561618/69067796-0fba5380-0a67-11ea-9924-ffc3e1401672.png">naokisz
</a>
<a onclick="udgEx('Cutls@cutls.com','main')" class="contributor">
<img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">Cutls
</a><br>
インポートやエクスポートで直接中身をやりとりする方法を追加
Integrated TLのストリーミングも切れたらアイコンが赤くなるように
<a onclick="udgEx('Cutls@cutls.com','main')" class="contributor">
<img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">Cutls
</a><br>
画像の長辺リサイズ(デフォルトはオフ)
<a onclick="udgEx('popn_ja@popon.pptdn.jp','main')" class="contributor">
<img src="https://avatars3.githubusercontent.com/u/24523508?s=88&v=4">kaias1jp
</a>
翻訳が上手く表示されていなかった
<a onclick="udgEx('Cutls@cutls.com','main')" class="contributor">
<img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">Cutls
</a><br>
画像に自分のアカウント名(acct@aaa.tld)を入れるボタン(アップロード前に押す)
トゥートを外部URLから検索して表示するのが上手くいってなかった
<a onclick="udgEx('Cutls@cutls.com','main')" class="contributor">
<img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">Cutls
</a><br>
・削除して再編集に関するバグの修正
<a onclick="udgEx('Cutls@cutls.com','main')" class="contributor">
<img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">Cutls
</a> 他匿名報告者等<br>
</div>
<div id="release-en" style="display:none">
<h5>Let's make it native!</h5>
@@ -1135,9 +1109,6 @@
</a>
<span id="fukidashi">@@hereAddColumns@@</span>
</div>
<a href="https://thedesk.top/bugs/?lang=@@lang@@" target="_blank" class="waves-effect bgReport" draggable="false" title="Feeling unlucky">
@@foundBug@@
</a>
</div>
</div>
<div>
@@ -1172,11 +1143,11 @@
<div id="support-btm" class="z-depth-4 hide">
<div id="support-btm-ja">
<h5>ご支援いただけませんか?</h5>
(これは支援の有無に関わらず定期的に出ます。過去のバージョン等で何度も表示される等のバグを確認しております。)<br>
(これは支援の有無に関わらず定期的に出ます。)<br>
あなたのMastodon, Misskeyライフを邪魔してしまって申し訳ありません。<br>
乞食のようなマネをしてご支援をお願いするのもどうかと思いますが、少々お時間をください。<br>
<br>
TheDeskになぜ金銭が発生するかについて: 詳細は省きますが、開発者から緊急の連絡をしたりするのに使われます。<br>
ご安心ください。インターネット上のフリー百科事典のような高圧的支援要求はいたしません。コーヒーも要求いたしません。<br>
(中略)<br>
<b>全てのユーザーが安心してTheDeskを使っていただける環境のため</b>にも、ぜひご支援をご検討ください。ご支援いただけなくても使用不可能になることは全くありません。<br>
<b>@@TheDeskDes@@</b>
</div>

View File

@@ -168,7 +168,6 @@
"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",
"active": "Recently active",

View File

@@ -137,7 +137,6 @@
"lang_layout_deleteColumn": "Delete this column",
"lang_layout_deleteColumnDesc": "Delete this column",
"lang_layout_unread": "Unread",
"lang_layout_tagManager": "Tag timeline manager",
"lang_sort_gothis": "Go to this column",
"lang_sort_remthis": "Delete this column",
"lang_spotify_img": "Attach an album artwork",
@@ -199,12 +198,10 @@
"lang_parse_clientemp": "emphasized(/not emphasized)",
"lang_parse_clientmute": "muted",
"lang_parse_mute": " will be muted. You can remove on preferences.",
"lang_parse_voted": "(Voted)",
"lang_parse_myvote": "(My own poll)",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_people": "people",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "sensitive media",

View File

@@ -168,7 +168,6 @@
"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",
"active": "Recently active",

View File

@@ -137,7 +137,6 @@
"lang_layout_deleteColumn": "Delete this column",
"lang_layout_deleteColumnDesc": "Delete this column",
"lang_layout_unread": "Unread",
"lang_layout_tagManager": "Tag timeline manager",
"lang_sort_gothis": "Go to this column",
"lang_sort_remthis": "Delete this column",
"lang_spotify_img": "Attach an album artwork",
@@ -199,12 +198,10 @@
"lang_parse_clientemp": "emphasized(/not emphasized)",
"lang_parse_clientmute": "muted",
"lang_parse_mute": " will be muted. You can remove on preferences.",
"lang_parse_voted": "(Voted)",
"lang_parse_myvote": "(My own poll)",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_people": "people",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "sensitive media",

View File

@@ -125,7 +125,7 @@
"integratedTLDes": "Интегриране (Местно/Начало)",
"localPlusDes": "LTL+Отговор+BT",
"notf": "Известия",
"bookmark": "Отметки",
"bookmark": "Bookmarks",
"showThisTL": "Показване на този TL:",
"webviewWarn": "TweetDeck с потребителски TJDeck(<a href='https://gist.github.com/cutls/8787a55d2c1c53274e68a427966046a6' target='_blank'>Код</a>/<a href='https://gist.github.com/totoraj930/d1394dadb51d75666a76829f61e7280c' target='_blank'>TJDeck</a>). Клавишните комбинации ще ви дразнят. Когато се почувствате така, маркирате „Предпочитам WebView“ в горната част на колоната.",
"add": "Добави",
@@ -168,7 +168,6 @@
"contactwithlog": "Ако ми кажете за грешки (нещо не работи или подобно) с този дневник, мога по-лесно да открия какво не е наред.",
"about": "За TheDesk",
"hereAddColumns": "<- Добави ТЛ",
"foundBug": "I found a bug",
"show": "Покажи",
"directory": "Директория",
"active": "Наскоро активен",
@@ -179,5 +178,5 @@
"acctManDesc": "Добавете още акаунти и излезте от тях.",
"settingDesc": "Много. много предпочитания са тук. Няма да можете да ги проверите всички!",
"nanoDescPlus": "Клиент мини прозорец (експериментално)",
"listDesc": "Всички настройки на TheDesk и Mastodon, като <b> добавяне и сортиране на колони </b>, <b> списък и проверка на филтрите </b>."
"listDesc": "All daily TheDesk and Mastodon tuning like <b>add and sort columns</b>, <b>list and filter check</b>."
}

View File

@@ -21,17 +21,17 @@
"lang_time_suffixAgo": null,
"lang_time_suffixFromNow": null,
"lang_time_inPast": null,
"lang_time_seconds": "%d сек.",
"lang_time_minute": "1 мин.",
"lang_time_minutes": "%d мин.",
"lang_time_hour": "1 ч",
"lang_time_hours": "%d ч",
"lang_time_day": "1 ден",
"lang_time_days": "%d дни",
"lang_time_month": "1 месец",
"lang_time_months": "%d месеца",
"lang_time_year": "г.",
"lang_time_years": "%d г.",
"lang_time_seconds": "%d s",
"lang_time_minute": "1 m",
"lang_time_minutes": "%d m",
"lang_time_hour": "1 h",
"lang_time_hours": "%d h",
"lang_time_day": "1 d",
"lang_time_days": "%d d",
"lang_time_month": "1 month",
"lang_time_months": "%d months",
"lang_time_year": "y",
"lang_time_years": "%d y",
"lang_version_usever": "Не е намерена актуализация({{ver}})",
"lang_version_skipver": "Актуализацията бе игнорирана.",
"lang_version_platform": "Искате ли автоматични актуализации? (За потребителите инсталирали от Microsoft Store, изберете „Не“)",
@@ -52,13 +52,13 @@
"lang_emoji_get": "Вземи емотикони",
"lang_emoji_custom": "Персонализирани емотикони",
"lang_defaultemojis_text": "Още емотикони {{cat}}",
"lang_emoji_uncat": "Без категория",
"lang_emoji_uncat": "Uncategorized",
"lang_postimg_previewdis": "не може да се визуализира",
"lang_postimg_aftupload": "Не можете да променяте профилите след качването.",
"lang_postimg_failupload": "Неуспешно",
"lang_postimg_delete": "Кликнете за да добавите описание, щракнете с десния бутон за да го изтриете",
"lang_postimg_desc": "Описание",
"lang_postimg_leadContext": "щракнете с десния бутон върху миниатюрата за да изтриете това",
"lang_postimg_failupload": "Failed",
"lang_postimg_delete": "Click to add description, right-click to delete this",
"lang_postimg_desc": "Description",
"lang_postimg_leadContext": "right-click the thumbnail to delete this",
"lang_post_tagTL": "Тази раздумка не съдържа маркер по подразбиране. Тази раздумка няма да се показва в локалния TL. Продължавате?",
"lang_post_tagVis": "Тази раздумка (не е \"публична\") не е показана с този етикет в ТЛ.",
"lang_post_cwtitle": "Авто CW Сигнал",
@@ -137,7 +137,6 @@
"lang_layout_deleteColumn": "Премахване на тази колона",
"lang_layout_deleteColumnDesc": "Премахване на тази колона",
"lang_layout_unread": "Unread",
"lang_layout_tagManager": "Tag timeline manager",
"lang_sort_gothis": "Отидете в тази колона",
"lang_sort_remthis": "Премахване на тази колона",
"lang_spotify_img": "Attach an album artwork",
@@ -199,12 +198,10 @@
"lang_parse_clientemp": "emphasized(/not emphasized)",
"lang_parse_clientmute": "muted",
"lang_parse_mute": " will be muted. You can remove on preferences.",
"lang_parse_voted": "(Voted)",
"lang_parse_myvote": "(My own poll)",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_people": "people",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "NSFW media",

View File

@@ -168,7 +168,6 @@
"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",
"active": "Recently active",

View File

@@ -137,7 +137,6 @@
"lang_layout_deleteColumn": "Delete this column",
"lang_layout_deleteColumnDesc": "Delete this column",
"lang_layout_unread": "Unread",
"lang_layout_tagManager": "Tag timeline manager",
"lang_sort_gothis": "Go to this column",
"lang_sort_remthis": "Delete this column",
"lang_spotify_img": "Attach an album artwork",
@@ -199,12 +198,10 @@
"lang_parse_clientemp": "emphasized(/not emphasized)",
"lang_parse_clientmute": "muted",
"lang_parse_mute": " will be muted. You can remove on preferences.",
"lang_parse_voted": "(Voted)",
"lang_parse_myvote": "(My own poll)",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_people": "people",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "sensitive media",

View File

@@ -168,7 +168,6 @@
"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",
"active": "Recently active",

View File

@@ -137,7 +137,6 @@
"lang_layout_deleteColumn": "Delete this column",
"lang_layout_deleteColumnDesc": "Delete this column",
"lang_layout_unread": "Unread",
"lang_layout_tagManager": "Tag timeline manager",
"lang_sort_gothis": "Go to this column",
"lang_sort_remthis": "Delete this column",
"lang_spotify_img": "Attach an album artwork",
@@ -200,11 +199,9 @@
"lang_parse_clientmute": "ztlumena",
"lang_parse_mute": " bude ztlumena. To můžete odstranit v nastavení.",
"lang_parse_voted": "Voted",
"lang_parse_myvote": "(My own poll)",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_people": "people",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "NSFW media",

View File

@@ -168,7 +168,6 @@
"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",
"active": "Recently active",

View File

@@ -137,7 +137,6 @@
"lang_layout_deleteColumn": "Delete this column",
"lang_layout_deleteColumnDesc": "Delete this column",
"lang_layout_unread": "Unread",
"lang_layout_tagManager": "Tag timeline manager",
"lang_sort_gothis": "Go to this column",
"lang_sort_remthis": "Delete this column",
"lang_spotify_img": "Attach an album artwork",
@@ -199,12 +198,10 @@
"lang_parse_clientemp": "emphasized(/not emphasized)",
"lang_parse_clientmute": "muted",
"lang_parse_mute": " will be muted. You can remove on preferences.",
"lang_parse_voted": "(Voted)",
"lang_parse_myvote": "(My own poll)",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_people": "people",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "sensitive media",

View File

@@ -168,7 +168,6 @@
"contactwithlog": "Wenn Sie mir mit diesem Log Fehler (Funktionsunfähigkeit oder ähnliches) zeigen, kann ich leichter erkennen, was falsch ist.",
"about": "Über TheDesk",
"hereAddColumns": "<- Neuer Verlauf",
"foundBug": "I found a bug",
"show": "Zeige",
"directory": "Verzeichnis",
"active": "Kürzlich aktiv",

View File

@@ -24,10 +24,10 @@
"lang_time_seconds": "%d s",
"lang_time_minute": "1 Min.",
"lang_time_minutes": "%d m",
"lang_time_hour": "1 S",
"lang_time_hour": "1 h",
"lang_time_hours": "%d h",
"lang_time_day": "1 t",
"lang_time_days": "%d t",
"lang_time_day": "1 d",
"lang_time_days": "%d d",
"lang_time_month": "1 Monat",
"lang_time_months": "%d Monate",
"lang_time_year": "y",
@@ -137,7 +137,6 @@
"lang_layout_deleteColumn": "Diese Spalte löschen",
"lang_layout_deleteColumnDesc": "Diese Spalte löschen",
"lang_layout_unread": "ungelesen",
"lang_layout_tagManager": "Tag timeline manager",
"lang_sort_gothis": "Gehe zu dieser Spalte",
"lang_sort_remthis": "Diese Spalte löschen",
"lang_spotify_img": "Albumcover anhängen",
@@ -183,7 +182,7 @@
"lang_parse_bt": "Diesen Tröt verstärken",
"lang_parse_fav": "Diesen Tröt favorisieren",
"lang_parse_quote": "Diesen Tröt zitieren",
"lang_parse_bookmark": "Lesezeichen hinzufügen",
"lang_parse_bookmark": "Bookmark this",
"lang_parse_unbookmark": "Lesezeichen entfernen",
"lang_parse_del": "Diesen Tröt löschen",
"lang_parse_pin": "Dieses Tröt fixieren",
@@ -200,11 +199,9 @@
"lang_parse_clientmute": "Stumm",
"lang_parse_mute": " wird stumm gemacht. Kann in den Einstellungen wieder entfernt werden.",
"lang_parse_voted": "Abgestimmt",
"lang_parse_myvote": "(My own poll)",
"lang_parse_vote": "Abstimmen",
"lang_parse_unvoted": "Ergebnis ohne Abstimmung anzeigen",
"lang_parse_endedvote": "Abgelaufen",
"lang_parse_people": "people",
"lang_parse_thread": "Konversation anzeigen",
"lang_parse_unknown": "Angehängte Datei",
"lang_parse_nsfw": "NSFW Medien",
@@ -262,6 +259,6 @@
"lang_setting_notftestprof": "Ihr Symbol wird angezeigt.",
"lang_setting_exportwarn": "Nur wichtige Daten werden exportiert. Sie müssen diese Daten sichern.",
"lang_setting_importwarn": "Alle Daten werden gelöscht.",
"lang_setting_noupd": "Keine Updates verfügbar",
"lang_setting_noupd": "No available update",
"lang_setting_thisisbeta": "This is beta version. You have to update manually."
}

View File

@@ -168,7 +168,6 @@
"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",
"active": "Recently active",

View File

@@ -137,7 +137,6 @@
"lang_layout_deleteColumn": "Delete this column",
"lang_layout_deleteColumnDesc": "Delete this column",
"lang_layout_unread": "Unread",
"lang_layout_tagManager": "Tag timeline manager",
"lang_sort_gothis": "Go to this column",
"lang_sort_remthis": "Delete this column",
"lang_spotify_img": "Attach an album artwork",
@@ -199,12 +198,10 @@
"lang_parse_clientemp": "emphasized(/not emphasized)",
"lang_parse_clientmute": "muted",
"lang_parse_mute": " will be muted. You can remove on preferences.",
"lang_parse_voted": "(Voted)",
"lang_parse_myvote": "(My own poll)",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_people": "people",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "sensitive media",

View File

@@ -168,7 +168,6 @@
"contactwithlog": "crwdns4378:0crwdne4378:0",
"about": "crwdns3384:0crwdne3384:0",
"hereAddColumns": "crwdns3386:0crwdne3386:0",
"foundBug": "crwdns4431:0crwdne4431:0",
"show": "crwdns3388:0crwdne3388:0",
"directory": "crwdns3390:0crwdne3390:0",
"active": "crwdns3392:0crwdne3392:0",

View File

@@ -137,7 +137,6 @@
"lang_layout_deleteColumn": "crwdns3670:0crwdne3670:0",
"lang_layout_deleteColumnDesc": "crwdns3672:0crwdne3672:0",
"lang_layout_unread": "crwdns3674:0crwdne3674:0",
"lang_layout_tagManager": "crwdns4411:0crwdne4411:0",
"lang_sort_gothis": "crwdns3676:0crwdne3676:0",
"lang_sort_remthis": "crwdns3678:0crwdne3678:0",
"lang_spotify_img": "crwdns3680:0crwdne3680:0",
@@ -200,11 +199,9 @@
"lang_parse_clientmute": "crwdns3784:0crwdne3784:0",
"lang_parse_mute": "crwdns3786:0crwdne3786:0",
"lang_parse_voted": "crwdns3788:0crwdne3788:0",
"lang_parse_myvote": "crwdns4415:0crwdne4415:0",
"lang_parse_vote": "crwdns3790:0crwdne3790:0",
"lang_parse_unvoted": "crwdns3792:0crwdne3792:0",
"lang_parse_endedvote": "crwdns3794:0crwdne3794:0",
"lang_parse_people": "crwdns4413:0crwdne4413:0",
"lang_parse_thread": "crwdns3796:0crwdne3796:0",
"lang_parse_unknown": "crwdns3798:0crwdne3798:0",
"lang_parse_nsfw": "crwdns3800:0crwdne3800:0",

View File

@@ -20,8 +20,6 @@
"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",
@@ -170,7 +168,6 @@
"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",
"active": "Recently active",

View File

@@ -193,19 +193,16 @@
"lang_parse_detail": "Details",
"lang_parse_redraft": "Delete & re-draft",
"lang_parse_followed": "Followed you",
"lang_parse_moved": "Moved to...",
"lang_parse_clientop": "Operation of this client",
"lang_parse_clienttxt": " will be",
"lang_parse_clientno": "done nothing",
"lang_parse_clientemp": "emphasized(/not emphasized)",
"lang_parse_clientmute": "muted",
"lang_parse_mute": " will be muted. You can remove on preferences.",
"lang_parse_voted": "(Voted)",
"lang_parse_myvote": "(My own poll)",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_people": "people",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "sensitive media",

View File

@@ -10,7 +10,6 @@
"env": "System Preferences",
"setlang": "Languages",
"backup": "Import and export of preferences",
"backupWarn": "If you got a error when you choose the file, please paste the strings of file and click import",
"import": "Import",
"export": "Export",
"hardwareAcceleration": "Disable hardware acceleration",
@@ -138,8 +137,6 @@
"nothing": "Hidden",
"localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Pay attention to GIF animation.",
"keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys",

View File

@@ -125,7 +125,7 @@
"integratedTLDes": "Integrado (local/principal)",
"localPlusDes": "Local+Respuesta+retoot",
"notf": "Notificaciones",
"bookmark": "Marcadores",
"bookmark": "Bookmarks",
"showThisTL": "Mostrar esta línea temporal:",
"webviewWarn": "TweetDeck con TJDeck personalizado (<a href='https://gist.github.com/cutls/8787a55d2c1c53274e68a427966046a6' target='_blank'>Código</a>/<a href='https://gist.github.com/totoraj930/d1394dadb51d75666a76829f61e7280c' target='_blank'>TJDeck</a>). Los atajos de teclado te irritarán. Cuando lo sientas, revisá \"Preferir WebView\" en la parte superior de la columna.",
"add": "Agregar",
@@ -163,12 +163,11 @@
"clockTips": "Reloj",
"ramTips": "Estado de RAM",
"changeTips": "Cambiar atajos",
"helpAndLogs": "Ayuda y registro",
"helpAndLogs": "Help & Log",
"help": "Ayuda",
"contactwithlog": "Si me comentás de estos errores (algo que funcione mal o que no funcione en absoluto) con este registro, puedo detectar lo que está mal más fácilmente.",
"contactwithlog": "If you tell me bugs(not working or something) with this log, I can detect what is wrong more easily.",
"about": "Acerca de TheDesk",
"hereAddColumns": "« Agregar línea temporal",
"foundBug": "I found a bug",
"show": "Mostrar",
"directory": "Directorio",
"active": "Recientemente activo",

View File

@@ -86,8 +86,8 @@
"lang_usetxtbox_reply": "Modo de respuesta. \"Ctrl\" + \"Mayús\" + \"C\" para limpiar.",
"lang_cards_check": " comprobado",
"lang_cards_pip": "Modo de pantalla en pantalla",
"lang_cards_trusted": "HTML insertado de confianza por TheDesk (Twitter, nicovideo, YouTube, Spotify, twitcasing)",
"lang_cards_untrusted": "HTML insertado no confiable por TheDesk",
"lang_cards_trusted": "Trusted embed HTML by TheDesk(Twitter, nicovideo, YouTube, Spotify, twitcasing)",
"lang_cards_untrusted": "Untrusted embed HTML by TheDesk",
"lang_details_nodata": "Sin datos",
"lang_details_filtered": "Toot filtrado",
"lang_details_embed": "El código HTML de inserción se copió al portapapeles.",
@@ -116,7 +116,7 @@
"lang_tl_postmarkers_title": "Procesando…",
"lang_tl_postmarkers": "Datos de marcadores POST. Por favor, esperá.",
"lang_img_DLDone": "Descargado:",
"lang_img_copyDone": "Copiado: dirección web de esta imagen",
"lang_img_copyDone": "Copied: URL of this image",
"lang_layout_gotop": "Ir al comienzo de esta columna. Cuando el ícono está rojo, esta columna no se puede conectar a la API del streaming. En ese caso, por favor, refrescá.",
"lang_layout_thisacct": "{{notf}} de esta cuenta",
"lang_layout_delthis": "Quitar esta columna",
@@ -137,7 +137,6 @@
"lang_layout_deleteColumn": "Eliminar esta columna",
"lang_layout_deleteColumnDesc": "Eliminar esta columna",
"lang_layout_unread": "Sin leer",
"lang_layout_tagManager": "Tag timeline manager",
"lang_sort_gothis": "Ir a esta columna",
"lang_sort_remthis": "Eliminar esta columna",
"lang_spotify_img": "Adjuntar la tapa del álbum",
@@ -183,14 +182,14 @@
"lang_parse_bt": "Retootear este toot",
"lang_parse_fav": "Marcar como favorito este toot",
"lang_parse_quote": "Citar este toot",
"lang_parse_bookmark": "Marcar esto",
"lang_parse_unbookmark": "Desmarcar esto",
"lang_parse_bookmark": "Bookmark this",
"lang_parse_unbookmark": "Unbookmark this",
"lang_parse_del": "Eliminar este toot",
"lang_parse_pin": "Fijar este toot",
"lang_parse_unpin": "Desanclar esto",
"lang_parse_link": "Abrir en navegador web",
"lang_parse_unpin": "Unpin this",
"lang_parse_link": "Open in a browser",
"lang_parse_det": "Detalles vía tu cuenta principal.",
"lang_parse_detail": "Detalles",
"lang_parse_detail": "Details",
"lang_parse_redraft": "Eliminar toot original y editarlo",
"lang_parse_followed": "Te sigue",
"lang_parse_clientop": "Función de este cliente",
@@ -200,15 +199,13 @@
"lang_parse_clientmute": "silenciar",
"lang_parse_mute": " será silenciado. Lo podés quitar en la configuración.",
"lang_parse_voted": "Votado",
"lang_parse_myvote": "(My own poll)",
"lang_parse_vote": "Votar",
"lang_parse_unvoted": "Mostrar el resultado sin votar",
"lang_parse_endedvote": "Venció",
"lang_parse_people": "people",
"lang_parse_thread": "Mostrar hilo",
"lang_parse_unknown": "Archivo adjunto",
"lang_parse_nsfw": "medios sensibles",
"lang_parse_html": "Mostrar HTML insertado",
"lang_parse_html": "Show embed HTML",
"lang_parse_notffilter": "Mostrar notificaciones de este usuario",
"lang_misskeyparse_renote": "Republicar",
"lang_misskeyparse_renoteqt": "Renovar",

View File

@@ -31,8 +31,8 @@
"fontsize": "Tamaño de tipografía",
"savefolder": "Carpeta para guardar",
"savefolderwarn": "TheDesk usa esta configuración para guardar imágenes en general y capturas de pantallas.",
"useragent": "Cadena de agente de usuario",
"useragentWarn": "Reiniciar cuando se cambie",
"useragent": "User agent",
"useragentWarn": "Restart when changed",
"absolute": "valor absoluto",
"themeSel": "Seleccionar tema",
"customtheme": "Editar y agregar temas personalizados",
@@ -98,8 +98,8 @@
"animation": "Animación de líneas temporales",
"markers": "Marcadores (marcar como leído) en línea temporal principal y notificaciones",
"markerswarn": "Mastodon 3.0~. Compartido en interface web y clientes de terceros soportados.",
"remote_img": "Obtener imágenes del servidor remoto",
"remote_imgWarn": "Todas las previsualizaciones se obtienen de tu servidor de caché conectado.",
"remote_img": "Get images from the remote server",
"remote_imgWarn": "All previews are got from your loginned cache server.",
"replySound": "Sonido (respuesta)",
"favSound": "Sonido (marcado como favorito)",
"btSound": "Sonido (retoot)",
@@ -127,7 +127,7 @@
"full": "Dirección web, texto y cuenta (mención al usuario)",
"notqt": "Deshabilitado (ocultar botones en las líneas temporales)",
"apiQuote": "API (sólo algunas instancias)",
"showBookmarkAction": "Mostrar un botón de marcador",
"showBookmarkAction": "Show a bookmarking toot button",
"main": "Acciones de cuenta predeterminada",
"mainwarn": "Se puede establecer la cuenta predeterminada en el Administrador de cuentas.",
"lastacct": "Cuenta usada recientemente",

View File

@@ -4,7 +4,7 @@
"portable": "Compilación portátil",
"installer": "Compilación de instalación",
"linux": "zip",
"linuxdeb": "deb (Recomendado para Debian y Ubuntu)",
"linuxdeb": "deb(Recommended on buntu, Debian)",
"linuxsnap": "snap",
"snap": "La compilación Snap puede encontrarse en Snapcraft",
"sureupd": "¡Podrías perderte una experiencia copada!",
@@ -15,5 +15,5 @@
"problem2": "Por favor, descargá desde <a href=\"https://thedesk.top/en/\">el sitio web oficial</a>.",
"continue": "Continuar con la actualización",
"dlnow": "Descargando…",
"checkWhatIsNew": "¿Qué hay de nuevo?"
"checkWhatIsNew": "What is new?"
}

View File

@@ -168,7 +168,6 @@
"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",
"active": "Recently active",

View File

@@ -137,7 +137,6 @@
"lang_layout_deleteColumn": "Delete this column",
"lang_layout_deleteColumnDesc": "Delete this column",
"lang_layout_unread": "Unread",
"lang_layout_tagManager": "Tag timeline manager",
"lang_sort_gothis": "Go to this column",
"lang_sort_remthis": "Delete this column",
"lang_spotify_img": "Attach an album artwork",
@@ -199,12 +198,10 @@
"lang_parse_clientemp": "emphasized(/not emphasized)",
"lang_parse_clientmute": "muted",
"lang_parse_mute": " will be muted. You can remove on preferences.",
"lang_parse_voted": "(Voted)",
"lang_parse_myvote": "(My own poll)",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_people": "people",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "sensitive media",

View File

@@ -168,7 +168,6 @@
"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",
"active": "Recently active",

View File

@@ -137,7 +137,6 @@
"lang_layout_deleteColumn": "Delete this column",
"lang_layout_deleteColumnDesc": "Delete this column",
"lang_layout_unread": "Unread",
"lang_layout_tagManager": "Tag timeline manager",
"lang_sort_gothis": "Go to this column",
"lang_sort_remthis": "Delete this column",
"lang_spotify_img": "Attach an album artwork",
@@ -199,12 +198,10 @@
"lang_parse_clientemp": "emphasized(/not emphasized)",
"lang_parse_clientmute": "muted",
"lang_parse_mute": " will be muted. You can remove on preferences.",
"lang_parse_voted": "(Voted)",
"lang_parse_myvote": "(My own poll)",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_people": "people",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "sensitive media",

View File

@@ -168,7 +168,6 @@
"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",
"active": "Recently active",

View File

@@ -137,7 +137,6 @@
"lang_layout_deleteColumn": "Delete this column",
"lang_layout_deleteColumnDesc": "Delete this column",
"lang_layout_unread": "Unread",
"lang_layout_tagManager": "Tag timeline manager",
"lang_sort_gothis": "Go to this column",
"lang_sort_remthis": "Delete this column",
"lang_spotify_img": "Attach an album artwork",
@@ -199,12 +198,10 @@
"lang_parse_clientemp": "emphasized(/not emphasized)",
"lang_parse_clientmute": "muted",
"lang_parse_mute": " will be muted. You can remove on preferences.",
"lang_parse_voted": "(Voted)",
"lang_parse_myvote": "(My own poll)",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_people": "people",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "sensitive media",

View File

@@ -168,7 +168,6 @@
"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",
"active": "Recently active",

View File

@@ -137,7 +137,6 @@
"lang_layout_deleteColumn": "Delete this column",
"lang_layout_deleteColumnDesc": "Delete this column",
"lang_layout_unread": "Unread",
"lang_layout_tagManager": "Tag timeline manager",
"lang_sort_gothis": "Go to this column",
"lang_sort_remthis": "Delete this column",
"lang_spotify_img": "Attach an album artwork",
@@ -199,12 +198,10 @@
"lang_parse_clientemp": "emphasized(/not emphasized)",
"lang_parse_clientmute": "muted",
"lang_parse_mute": " will be muted. You can remove on preferences.",
"lang_parse_voted": "(Voted)",
"lang_parse_myvote": "(My own poll)",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_people": "people",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "sensitive media",

View File

@@ -168,7 +168,6 @@
"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",
"active": "Recently active",

View File

@@ -137,7 +137,6 @@
"lang_layout_deleteColumn": "Delete this column",
"lang_layout_deleteColumnDesc": "Delete this column",
"lang_layout_unread": "Unread",
"lang_layout_tagManager": "Tag timeline manager",
"lang_sort_gothis": "Go to this column",
"lang_sort_remthis": "Delete this column",
"lang_spotify_img": "Attach an album artwork",
@@ -199,12 +198,10 @@
"lang_parse_clientemp": "emphasized(/not emphasized)",
"lang_parse_clientmute": "muted",
"lang_parse_mute": " will be muted. You can remove on preferences.",
"lang_parse_voted": "(Voted)",
"lang_parse_myvote": "(My own poll)",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_people": "people",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "sensitive media",

Some files were not shown because too many files have changed in this diff Show More