Mindfulgram for Instagram

Mindfulgram allows you to use Instagram in a mindful way, by removing the addictive content consuming aspects, and just leaving the useful aspects. Learn more on https://www.mindfulgram.app

// @ts-check
// ==UserScript==
// @name         Mindfulgram for Instagram
// @version      0.8
// @description  Mindfulgram allows you to use Instagram in a mindful way, by removing the addictive content consuming aspects, and just leaving the useful aspects. Learn more on https://www.mindfulgram.app
// @match        https://www.instagram.com/*
// @grant        none
// @license      MIT
// @namespace    MINDFULGRAM.APP
// @author       MINDFULGRAM.APP
// @supportURL   https://www.mindfulgram.app
// ==/UserScript==

(function () {
  'use strict';
  {
    const $0dc44d32083a85be$var$throttle = (func, timeFrame)=>{
    let lastTime = 0;
    let timeoutId;
    const throttledFunc = ()=>{
        const timeSinceLastCall = Date.now() - lastTime;
        const runFunc = ()=>{
            func();
            lastTime = Date.now();
            timeoutId = undefined;
        };
        if (timeSinceLastCall >= timeFrame) {
            clearTimeout(timeoutId);
            runFunc();
        } else if (!timeoutId) timeoutId = window.setTimeout(runFunc, timeFrame - timeSinceLastCall);
    };
    return throttledFunc;
}; // Nuke explore and reels page
const $0dc44d32083a85be$var$nukeExploreAndReelsPage = ()=>{
    const _URL = new URL(window.location.href), pathname = _URL.pathname;
    const main = document.querySelector("main");
    const exploreRootPath = "/explore/";
    const reelsRootPath = "/reels/";
    if (pathname === exploreRootPath || pathname.startsWith(reelsRootPath)) {
        if (main) {
            main.style.display = "none";
            return;
        }
    }
    if (main) main.style.display = "flex";
};
const $0dc44d32083a85be$var$nukeStories = ()=>{
    const stories = Array.from(document.querySelectorAll('button[aria-label^="Story by"]'));
    stories.forEach((elem)=>elem.style.visibility = "hidden");
};
const $0dc44d32083a85be$var$nukePostsFromPeopleYouDontFollow = ()=>{
    const posts = Array.from(document.querySelectorAll('article[role="presentation"]'));
    const _URL2 = new URL(window.location.href), pathname = _URL2.pathname;
    const unwantedPosts = posts.filter((post)=>{
        if (pathname !== "/") return false; // if you're not on the root page, don't hide
        const button = post.querySelector("article button");
        if (button && button.textContent === "Follow") return true; // if you don't follow the person, hide
        const header = post.querySelector("header");
        if (header && header.textContent && header.textContent.toLowerCase().includes("Paid partnership".toLowerCase())) return true; // if it is an ad, obviously, hide
        return false; // default to not hiding
    });
    unwantedPosts.forEach((elem)=>elem.style.visibility = "hidden");
};
const $0dc44d32083a85be$var$nukeCommentsOnFeed = ()=>{
    const comments = Array.from(document.querySelectorAll('article[role="presentation"] button svg[aria-label="Like"], article[role="presentation"] button svg[aria-label="Unlike"]'));
    comments.forEach((post)=>{
        const btn = post.closest("button");
        const elmToHide = btn && btn.parentElement && btn.parentElement.parentElement && btn.parentElement.parentElement.parentElement && btn.parentElement.parentElement.parentElement.parentElement;
        if (elmToHide) {
            const roleAttribute = elmToHide.getAttribute("role");
            if (roleAttribute !== "presentation") elmToHide.style.visibility = "hidden";
        }
    });
};
const $0dc44d32083a85be$var$nukeCommentsOnPostPage = ()=>{
    const comments = Array.from(document.querySelectorAll('article[role="presentation"] ul ul'));
    comments.forEach((elem)=>elem.style.visibility = "hidden");
};
const $0dc44d32083a85be$var$nukeCommentsOnCommentsPage = ()=>{
    const _URL3 = new URL(window.location.href), pathname = _URL3.pathname;
    if (pathname.endsWith("/comments/")) {
        const moreComments = Array.from(document.querySelectorAll("h3"));
        moreComments.forEach((elem)=>{
            const grandParent = elem.parentElement && elem.parentElement.parentElement && elem.parentElement.parentElement.parentElement;
            if (grandParent) grandParent.style.visibility = "hidden";
        });
    }
};
const $0dc44d32083a85be$var$main = ()=>{
    $0dc44d32083a85be$var$nukeExploreAndReelsPage();
    $0dc44d32083a85be$var$nukeStories();
    $0dc44d32083a85be$var$nukePostsFromPeopleYouDontFollow();
    $0dc44d32083a85be$var$nukeCommentsOnFeed();
    $0dc44d32083a85be$var$nukeCommentsOnPostPage();
    $0dc44d32083a85be$var$nukeCommentsOnCommentsPage();
};
const $0dc44d32083a85be$export$af6040c61d629c1c = ()=>{
    const throttledMain = $0dc44d32083a85be$var$throttle($0dc44d32083a85be$var$main, 250);
    const observer = new MutationObserver(()=>throttledMain());
    observer.observe(document, {
        subtree: true,
        attributes: true
    });
};


(0, $0dc44d32083a85be$export$af6040c61d629c1c)();



  }
})();