diff --git a/js/interface_common.js b/js/interface_common.js index cfb1f11..2916102 100644 --- a/js/interface_common.js +++ b/js/interface_common.js @@ -6,6 +6,7 @@ // Post actions: submit, count characters var twister = { + URIs: {}, // shortened URIs are cached here after fetching html: { detached: $('
'), // here elements go to detach themself blanka: $('') // to open stuff in new tab, see routeOnClick() @@ -823,23 +824,19 @@ function fillElemWithTxt(elem, txt, htmlFormatMsgOpt) { } function fetchShortenedURI(req) { - // FIXME need to check if ret for req is cached here + if (twister.URIs[req]) { + applyShortenedURI(req, twister.URIs[req]); + return; + } if (parseInt(twisterVersion) < 93500) { console.warn('can\'t fetch URI "' + req + '": daemon is obsolete, version 0.9.35 or higher is required'); return; } twisterRpc('decodeshorturl', [req], - function gotShortURI(req, ret) { - // FIXME need to cache ret here - var elems = $('.link-shortened[href="' + req + '"]') - .attr('href', ret) - .removeClass('link-shortened') - .off('click mouseup') - .on('click mouseup', muteEvent) - ; - for (var i = 0; i < elems.length; i++) - if (elems[i].text === req) - elems[i].text = ret; + function (req, ret) { + twister.URIs[req] = ret; + $.localStorage.set('twistaURIs', twister.URIs); + applyShortenedURI(req, ret); }, req, function (req, ret) { console.warn('can\'t fetch URI "' + req + '": ' + ret.message); @@ -847,6 +844,18 @@ function fetchShortenedURI(req) { ); } +function applyShortenedURI(short, long) { + var elems = $('.link-shortened[href="' + short + '"]') + .attr('href', long) + .removeClass('link-shortened') + .off('click mouseup') + .on('click mouseup', muteEvent) + ; + for (var i = 0; i < elems.length; i++) + if (elems[i].text === short) // there may be some other text, possibly formatted, so we check it + elems[i].text = long; +} + function routeOnClick(event) { function routeNewTab(event) { @@ -2328,6 +2337,8 @@ function setTextcompleteDropdownListPos(position) { } $(document).ready(function () { + if ($.localStorage.isSet('twistaURIs')) + twister.URIs = $.localStorage.get('twistaURIs'); twister.html.blanka.appendTo('body').hide(); twister.tmpl.followersList = extractTemplate('#template-followers-list'); twister.tmpl.followersPeer = extractTemplate('#template-followers-peer');