function escapeHTMLtemp(str) {
if (!str) {
return "";
}
return str.replace(/&/g, '&')
.replace(//g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
$.strip_tagstemp = function (str, allowed) {
if (!str) {
return "";
}
allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || [])
.join('');
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi,
commentsAndPhpTags = /|<\?(?:php)?[\s\S]*?\?>/gi;
return str.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
});
};
//オブジェクトパーサー(トゥート)
function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var templete = '';
localStorage.setItem("lastunix_" + tlid, date(obj[0].createdAt, 'unix'));
var actb = localStorage.getItem("action_btns");
var actb = 're,rt,fav,qt,del,pin,red';
if (actb) {
var actb = actb.split(',');
var disp = {};
for (var k = 0; k < actb.length; k++) {
if (k < 4) {
var tp = "type-a";
} else {
var tp = "type-b";
}
disp[actb[k]] = tp;
}
}
var datetype = localStorage.getItem("datetype");
var nsfwtype = localStorage.getItem("nsfw");
var sent = localStorage.getItem("sentence");
var ltr = localStorage.getItem("letters");
var gif = localStorage.getItem("gif");
var imh = localStorage.getItem("img-height");
//ネイティブ通知
var native = localStorage.getItem("nativenotf");
if (!native) {
native = "yes";
}
//クライアント強調
var empCli = localStorage.getItem("client_emp");
if (empCli) {
var empCli = JSON.parse(empCli);
}
//クライアントミュート
var muteCli = localStorage.getItem("client_mute");
if (muteCli) {
var muteCli = JSON.parse(muteCli);
}
//ユーザー強調
var useremp = localStorage.getItem("user_emp");
if (useremp) {
var useremp = JSON.parse(useremp);
}
//ワード強調
var wordempList = localStorage.getItem("word_emp");
if (wordempList) {
var wordempList = JSON.parse(wordempList);
}
//ワードミュート
var wordmuteList = localStorage.getItem("word_mute");
if (wordmuteList) {
var wordmuteList = JSON.parse(wordmuteList);
if (wordmuteList) {
wordmuteList = wordmuteList.concat(mutefilter);
}
} else {
wordmuteList = mutefilter;
}
//Ticker
var tickerck = localStorage.getItem("ticker_ok");
if (tickerck) {
var ticker = true;
} else {
var ticker = false;
}
if (!sent) {
var sent = 500;
}
if (!ltr) {
var ltr = 500;
}
if (!nsfwtype || nsfwtype == "yes") {
var nsfw = "ok";
} else {
var nsfw;
}
var cwtype = localStorage.getItem("cw");
if (!cwtype || cwtype == "yes") {
var cw = "ok";
} else {
var cw;
}
if (!datetype) {
datetype = "absolute";
}
if (!gif) {
var gif = "yes";
}
if (!imh) {
var imh = "200";
}
if (!emp) {
var emp = [];
}
if (!mute) {
var mute = [];
}
if (!useremp) {
var useremp = [];
}
if (!wordemp) {
var wordemp = [];
}
if (!wordmute) {
var wordmute = [];
}
//via通知
var viashow = localStorage.getItem("viashow");
if (!viashow) {
viashow = "via-hide";
}
if (viashow == "hide") {
viashow = "via-hide";
}
//認証なしTL
if (mix == "noauth") {
var noauth = "hide";
var antinoauth = "";
} else {
var noauth = "";
var antinoauth = "hide";
}
//マウスオーバーのみ
var mouseover = localStorage.getItem("mouseover");
if (!mouseover) {
mouseover = "";
} else if (mouseover == "yes" || mouseover == "click") {
mouseover = "hide";
} else if (mouseover == "no") {
mouseover = "";
}
var local = [];
var times = [];
Object.keys(obj).forEach(function (key) {
var toot = obj[key];
var dis_name = toot.user.name;
if (dis_name) {
dis_name = escapeHTMLtemp(dis_name);
} else {
disname = "";
}
//絵文字があれば
if (toot.user.emojis) {
Object.keys(toot.user.emojis).forEach(function (key5) {
var emoji = toot.user.emojis[key5];
var shortcode = emoji.name;
var emoji_url = '';
var regExp = new RegExp(":" + shortcode + ":", "g");
dis_name = dis_name.replace(regExp, emoji_url);
});
}
if (mix == "notf") {
if (gif == "yes") {
noticeavatar = toot.user.avatarUrl;
} else {
noticeavatar = toot.user.avatarUrl;
}
noticeavatar = '' +
'';
if (toot.type == "reply") {
var what = lang.lang_parse_mentioned;
var icon = '';
noticeavatar = "";
} else if (toot.type == "renote") {
var what = lang.lang_misskeyparse_renoted;
var icon = '';
} else if (toot.type == "quote") {
var what = lang.lang_misskeyparse_quoted;
var icon = '';
} else if (toot.type == "reaction") {
var what = lang.lang_misskeyparse_reacted;
var reactions = {
"like": "👍",
"love": "💓",
"laugh": "😁",
"hmm": "🤔",
"surprise": "😮",
"congrats": "🎉",
"amgry": "💢",
"confused": "😥",
"rip": "😇"
}
var icon = reactions[toot.reaction];
var emojisData = JSON.parse(localStorage.getItem("emoji_" + acct_id));
if (!icon) {
if (emojisData) {
var num = emojisData.length;
var ehtml = "";
for (i = 0; i < num; i++) {
var emoji = emojisData[i];
if (":" + emoji.shortcode + ":" == toot.reaction) {
if (emoji) {
icon = '';
}
}
}
}
}
} else {
var icon = 'info';
}
var noticetext = '' + date(toot.createdAt,
datetype) +
'' + icon + '' + dis_name +
"(@" + toot.user.username +
")";
var notice = noticetext;
var memory = localStorage.getItem("notice-mem");
if (popup >= 0 && obj.length < 5 && noticetext != memory) {
if (localStorage.getItem("hasNotfC_" + acct_id) != "true") {
if (toot.type == "reply") {
var replyct = localStorage.getItem("notf-reply_" + acct_id)
$(".notf-reply_" + acct_id).text(replyct * 1 - (-1));
localStorage.setItem("notf-reply_" + acct_id, replyct * 1 - (-1))
$(".notf-reply_" + acct_id).removeClass("hide")
} else if (toot.type == "renote" || toot.type == "quote") {
var btct = localStorage.getItem("notf-bt_" + acct_id)
$(".notf-bt_" + acct_id).text(btct * 1 + 1);
localStorage.setItem("notf-bt_" + acct_id, btct * 1 - (-1))
$(".notf-bt_" + acct_id).removeClass("hide")
} else if (toot.type == "reaction") {
var favct = localStorage.getItem("notf-fav_" + acct_id)
$(".notf-fav_" + acct_id).text(favct * 1 - (-1));
localStorage.setItem("notf-fav_" + acct_id, favct * 1 - (-1))
$(".notf-fav_" + acct_id).removeClass("hide")
}
}
var domain = localStorage.getItem("domain_" + acct_id);
if (popup > 0) {
M.toast({ html: "[" + domain + "]" + escapeHTMLtemp(toot.user.name) + what, displayLength: popup * 1000 })
}
if (native == "yes") {
var os = localStorage.getItem("platform");
var options = {
body: toot.user.name + "(" + toot.user.username + ")" + what + "\n\n" + $.strip_tagstemp(toot.note.text),
icon: toot.user.avatarUrl
};
if (os == "darwin") {
var n = new Notification('TheDesk:' + domain, options);
} else {
var nativeNotfOpt=[
'TheDesk:' + domain,
toot.user.name + "(" + toot.user.username + ")" + what + "\n\n" + $.strip_tagstemp(toot.note.text),
toot.user.avatarUrl,
"toot",
acct_id,
toot.note.id
]
postMessage(["nativeNotf", nativeNotfOpt], "*")
}
}
if (localStorage.getItem("hasNotfC_" + acct_id) != "true") {
$(".notf-icon_" + acct_id).addClass("red-text");
}
localStorage.setItem("notice-mem", noticetext);
noticetext = "";
}
var if_notf = 'data-notfIndv="' + acct_id + "_" + toot.id + '"';
var toot = toot.note;
var dis_name = escapeHTML(toot.user.name);
} else {
var if_notf = "";
if (toot.renote) {
var rebtxt = lang.lang_parse_btedsimple;
var rticon = "fa-retweet light-blue-text";
var notice = '' + dis_name + "(@" + toot.user.username +
")
";
var boostback = "shared";
var uniqueid = toot.id;
if (!toot.text) {
var toot = toot.renote;
}
var dis_name = escapeHTML(toot.user.name);
var uniqueid = toot.id;
var actemojick = false
} else {
var uniqueid = toot.id;
var notice = "";
var boostback = "";
//ユーザー強調
if (toot.user.host) {
var fullname = toot.user.username + "@" + toot.user.host;
} else {
var domain = localStorage.getItem("domain_" + acct_id);
var fullname = toot.user.username + "@" + domain;
}
if (useremp) {
Object.keys(useremp).forEach(function (key10) {
var user = useremp[key10];
if (user == fullname) {
boostback = "emphasized";
}
});
}
}
}
var id = toot.id;
if (mix == "home") {
var home = ""
var divider = '
';
} else {
var home = "";
var divider = '';
}
/*
if (toot.account.locked) {
var locked = ' ';
} else {
var locked = "";
}
*/
if (!toot.app) {
if (toot.viaMobile) {
var via = 'Mobile';
} else {
var via = '';
viashow = "via-hide";
}
} else {
var via = escapeHTML(toot.app.name);
if (!toot.app.name) {
viashow = "via-hide";
}
//強調チェック
Object.keys(empCli).forEach(function (key6) {
var empCliList = empCli[key6];
if (empCliList == via) {
boostback = "emphasized";
}
});
//ミュートチェック
Object.keys(muteCli).forEach(function (key7) {
var muteCliList = muteCli[key7];
if (muteCliList == via) {
boostback = "hide";
}
});
}
if ((toot.cw || toot.cw == "") && cw) {
var content = escapeHTML(toot.text);
var spoil = escapeHTMLtemp(toot.cw);
var spoiler = "cw cw_hide_" + toot.id;
var api_spoil = "gray";
var spoiler_show = '' + lang.lang_parse_cwshow + '
';
} else {
var ct1 = nl2br(toot.text).split('
').length - 2;
var ct2 = nl2br(toot.text).split('
').length - 2;
if (ct1 > ct2) { var ct = ct1; } else { var ct = ct2; }
if ((sent < ct && $.mb_strlen($.strip_tagstemp(toot.text)) > 5) || ($.strip_tagstemp(toot.text).length > ltr && $.mb_strlen($.strip_tagstemp(toot.text)) > 5)) {
var content = '' + lang.lang_parse_fulltext + '
' + escapeHTMLtemp(toot.text)
var spoil = '' + $.mb_substr($.strip_tagstemp(
toot.text), 0, 100) +
'' + lang.lang_parse_autofold + '';
var spoiler = "cw cw_hide_" + toot.id;
var spoiler_show = '' + lang.lang_parse_more + '
';
} else {
var content = escapeHTMLtemp(toot.text);
if (toot.cw) {
var spoil = escapeHTMLtemp(toot.cw);
} else {
var spoil = "";
}
var spoiler = "";
var spoiler_show = "";
}
}
var analyze = '';
var urls = $.strip_tagstemp(content).replace(/\n/g, " ").match(
/https?:\/\/([-a-zA-Z0-9@.]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/
);
if (urls) {
var analyze = '' + lang.lang_parse_url + '
';
} else {
var analyze = '';
}
var viewer = "
";
var hasmedia = "";
var youtube = "";
if (toot.emojis) {
var emojick = toot.emojis[0];
} else {
var emojick = false;
}
//デフォ絵文字
if (content) {
//MFM
content = content.replace(/^"([^"]+)"$/gmi, '$1
')
content = content.replace(/`(.+)`/gi, '$1
')
content = content.replace(/(http(s)?:\/\/[\x21-\x7e]+)/gi, '$1')
content = content.replace(/\(\(\((.+)\)\)\)/gi, '$1')
content = content.replace(/<motion>(.+)<\/motion>/gi, '$1')
content = content.replace(/\*\*\*([^*]+)\*\*\*/gi, '$1')
content = content.replace(/\*\*([^*]+)\*\*/gi, '$1')
content = content.replace(/^(.+)\s(検索|search)$/gmi, 'search
')
content = content.replace(/\[(.+)\]\($1');
content = content.replace(/<center>/gi, '')
content = content.replace(/<\/center>/gi, '
')
content = content.replace(/<flip>(.+)<\/flip>/gi, '$1')
content = content.replace(/<small>(.+)<\/small>/gi, '$1')
content = content.replace(/<i>(.+)<\/i>/gi, '$1')
content = content.replace(/<spin>(.+)<\/spin>/gi, '$1')
content = content.replace(/\*\*(.+)\*\*/gi, '$1')
content = content.replace(/<jump>(.+)<\/jump>/gi, '$1')
content = twemoji.parse(content);
} else {
content = "";
}
//絵文字があれば
if (emojick) {
Object.keys(toot.emojis).forEach(function (key5) {
var emoji = toot.emojis[key5];
var shortcode = emoji.name;
var emoji_url = '';
var regExp = new RegExp(":" + shortcode + ":", "g");
content = content.replace(regExp, emoji_url);
spoil = spoil.replace(regExp, emoji_url);
});
}
if (dis_name) {
dis_name = twemoji.parse(dis_name);
} else {
dis_name = "";
}
if (spoil) {
spoil = twemoji.parse(spoil);
}
if (noticetext) {
noticetext = twemoji.parse(noticetext);
}
if (notice) {
notice = twemoji.parse(notice);
}
if (toot.files) {
var mediack = toot.files[0];
var useparam = "files";
} else {
if (toot.media) {
var mediack = toot.media[0];
var useparam = "media";
} else {
var mediack = false;
}
}
//メディアがあれば
var media_ids = "";
if (mediack) {
hasmedia = "hasmedia";
var cwdt = 100 / toot[useparam].length;
Object.keys(toot[useparam]).forEach(function (key2) {
var media = toot[useparam][key2];
var purl = media.url;
media_ids = media_ids + media.id + ",";
var url = media.url;
if (media.isSensitive && nsfw) {
var sense = "sensitive"
} else {
var sense = ""
}
if (media.type.indexOf("video") !== -1) {
viewer = viewer + '';
} else if (media.type.indexOf("audio") !== -1) {
viewer = viewer + '