You are on page 1of 3

13.

async function unblur() {

const teasers = await fetch('https://api.gotinder.com/v2/fast-match/teasers', {

headers: {

'X-Auth-Token': localStorage.getItem('TinderWeb/APIToken'),

platform: 'android'

},

})

.then((res) => res.json())

.then((res) => res.data.results);

const teaserEls = document.querySelectorAll('.Expand.enterAnimationContainer >


div:nth-child(1)');

for (let i = 0; i < teaserEls.length; ++i) {

const teaser = teasers[i];

const teaserEl = teaserEls[i];

const teaserImage = teaser.user.photos[0].url;

teaserEl.style.backgroundImage = `url(${teaserImage})`;

/**

* Awaits the first event of the specified listener

* @param {EventTarget} target

* @param {string} eventType

* @returns {Promise<void>}

*/

async function once(target, eventType) {

return new Promise((resolve) => {

target.addEventListener(eventType, () => {
target.removeEventListener(eventType, resolve);

resolve();

});

});

/**

* Awaits until the main app element is found in DOM and returns it

* @returns {Promise<HTMLElement>}

*/

async function waitForApp() {

const getAppEl = (parent) => parent.querySelector('.App');

let appEl = getAppEl(document.body);

if (appEl) return appEl;

return new Promise((resolve) => {

new MutationObserver((_, me) => {

appEl = getAppEl(document.body);

if (appEl) {

me.disconnect();

resolve(appEl);

}).observe(document.body, { subtree: true, childList: true });

});

async function main() {

// check if running as a userscript

if (typeof GM_info === 'undefined') {

console.warn(
'[TINDER DEBLUR]: The only supported way of running this script is
through a userscript management browser addons like Violentmonkey, Tampermonkey or
Greasemonkey!'

);

console.warn(

'[TINDER DEBLUR]: Script was not terminated, but you should really
look into the correct way of running it.'

);

// wait for a full page load

await once(window, 'load');

const appEl = await waitForApp();

const pageCheckCallback = () => {

if (['/app/likes-you', '/app/gold-home'].includes(location.pathname)) {

console.debug('[TINDER DEBLUR]: Deblurring likes');

unblur();

};

// setup navigation observer

const observer = new MutationObserver(pageCheckCallback);

observer.observe(appEl, { subtree: true, childList: true });

// setup loop based observer (every 5s)

setInterval(pageCheckCallback, 5000);

main().catch(console.error);

99

You might also like