const keySessionLastActivity = 'sessionLastActivity';
const keySessionBatchKeyword = 'sessionBatchKeyword';
const batchKeywordClient = 'revenue-launch-batch1-client';
const batchKeywordServer = 'revenue-launch-batch1-server';

function canAccessTopWindow() {
    try {
        if (window.top.location.href) {
            return true;
        }
    } catch (error) {
        // console.log('canAccessTopWindow', error);
        return false;
    }
};

function getWindow() {
    return canAccessTopWindow() ? window.top : window.self;
};

function getBatchKeyword() {
    let batchKeyword = batchKeywordClient; // Default to client in case of error

    try {
        const w = getWindow();
        const ls = w.localStorage;
        if (!ls) {
            // console.error('localStorage is not supported');
            return batchKeyword;
        }

        // Get the current timestamp
        const currentTime = new Date().getTime();

        // Reset the session after 30 minutes of inactivity
        if (ls.getItem(keySessionLastActivity)) {
            const sessionLastActivityTime = parseInt(ls.getItem(keySessionLastActivity));
            if (currentTime - sessionLastActivityTime > 30 * 60 * 1000) {
                ls.removeItem(keySessionBatchKeyword);
            }
        }
        // Record the session activity
        ls.setItem(keySessionLastActivity, currentTime.toString());

        // Get or set the batch keyword
        if (ls.getItem(keySessionBatchKeyword)) {
            batchKeyword = ls.getItem(keySessionBatchKeyword);
        } else {
            batchKeyword = Math.random() < 0.5 ? batchKeywordClient : batchKeywordServer;
            ls.setItem(keySessionBatchKeyword, batchKeyword);
        }
    } catch (error) {
        // console.error('getBatchKeyword', error);
    }

    return batchKeyword;
}