import { DevStore } from 'src/background/storage/DevStore';

/**
 * A list of websites that we don't want to reload when the extension reloads (becuase it'd be hella annoying lmao)
 */
const HOT_RELOADING_WHITELIST = [
    'youtube.com',
    'twitch.tv',
    'github.dev',
    'figma.com',
    'netflix.com',
    'disneyplus.com',
    'hbomax.com',
    'spotify.com',
    'localhost:6006',
    'docs.google.com',
    'reddit.com',
    'gmail.com',
    'photopea.com',
];

/**
 * Reloads the tab that was open when the extension was reloaded
 * @returns a promise that resolves when the tab is reloaded
 */
export async function hotReloadTab(): Promise<void> {
    const { getIsTabReloading, getReloadTabId } = DevStore;

    const [isTabReloading, reloadTabId] = await Promise.all([getIsTabReloading(), getReloadTabId()]);

    if (!isTabReloading || !reloadTabId) return;

    chrome.tabs.get(reloadTabId, tab => {
        if (!tab?.id) return;
        if (!tab.url) return;
        if (!HOT_RELOADING_WHITELIST.find(url => tab.url?.includes(url))) {
            chrome.tabs.reload(tab.id);
        }
    });
}
