From b6cfa024d9e8b59da8cfa7c45c5365d5c69c5ce1 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Sat, 3 Nov 2012 07:34:59 +0100 Subject: [PATCH] now exchanging ^mentions with names, fixes #15 --- Core.js | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/Core.js b/Core.js index 72b14cb..a8888a6 100644 --- a/Core.js +++ b/Core.js @@ -99,6 +99,7 @@ Core.prototype.getItem = function(status) { template.in_reply.parentNode.className = "hidden"; template.message.innerHTML = replaceUsernamesWithLinks(replaceURLWithHTMLLinks(status.content.text, status.entities, template.message)); + findMentions(template.message, status.mentions); var time = document.createElement("abbr"); time.innerText = ISODateString(new Date(status.published_at * 1000)); @@ -365,6 +366,56 @@ function replaceShortened(url, message_node) { }); } +function findMentions(node, mentions) { + var text = node.innerHTML; + var mentions_in_text = []; + var res = text.match(/(\^\S+)/ig); + + if (res) { + for (var i = 0; i < res.length; i++) { + var name = res[i]; + var e = name.substring(1); + if (e.substring(0,7) != "http://" && e.substring(0,8) != "https://") { + e = "https://" + e; + } + for (var j = 0; j < mentions.length; j++) { + var m = mentions[j]; + if(m.entity.startsWith(e)) { + mentions_in_text.push({ + entity: m.entity, + text: name + }); + } + } + } + } + + for (var i = 0; i < mentions_in_text.length; i++) { + var mention = mentions_in_text[i]; + + findProfileURL(mention.entity, function(profile_url) { + if (profile_url) { + getURL(profile_url, "GET", function(resp) { + var profile = JSON.parse(resp.responseText); + var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; + + if (profile && basic) { + if(basic.name) { + var new_text = node.innerHTML.replace( + mention.text, + "" + + basic.name + + "" + ); + node.innerHTML = new_text; + } + } + }, null, false); // do not send auth-headers + } + }); + } +} + function parseMentions(text, post_id, entity) { var mentions = [];