Note: The links below are not clickable, Just copy and paste them in your web browser.
STEPS:
1.Install a user script manager (Extension) - Violentmonkey:
- Chrome: https://bit.ly/Violentmonkey-chrome
- Firefox: https://mzl.la/3MWmUUs
- Microsoft Edge: https://bit.ly/3Omqk3V
2. Install the script:
- https://raw.githubusercontent.com/tajnymag/tinder-deblur/main/tinder.user.js
Updated Script
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);