0

migrate mv2 to mv3 extensions.but I have already used sendRespon.Pls help me!

chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
    switch (request.method) {
        case "checkTab":
            if (sender.tab.windowId === runningWindowId || sender.tab.id === runningTabId || sender.tab.id === scoreTabId) {
                sendResponse({
                    status: 'ok',
                    "runtime": 1
                });
            }
            break;
        case "startRun":
            if (!Object.keys(channelUrls).length) {
                if (!isMobile) {
                    if (!runningWindowId) {
                        getPointsData(function (data) {
                            if (userId !== data.userId) {
                                usedUrls = {
                                    "article": [],
                                    "video": []
                                }
                            }
                            userId = data.userId;
                            createWindow(urlMap.index, function (window) {
                                runningWindowId = window.id;
                                notice(chrome.i18n.getMessage("extWorking"), chrome.i18n.getMessage("extWarning"));
                                setTimeout(function () {
                                    channelUrls["exam-practice"] = urlMap.dailyAsk;
                                    channelUrls["exam-weekly"] = urlMap.weeklyAsk;
                                    channelUrls["exam-paper"] = urlMap.paperAsk;
                                    getChannelData("article", function (list) {
                                        channelUrls["article"] = list;
                                    });
                                    getChannelData("video", function (list) {
                                        channelUrls["video"] = list;
                                    });
                                    autoEarnPoints(1000 + Math.floor(Math.random() * 1000));
                                }, 1000 );
                            });
                        });
                    }
                } else {
                    if (!runningTabId) {
                        getPointsData(function (data) {
                            if (userId !== data.userId) {
                                usedUrls = {
                                    "article": [],
                                    "video": []
                                }
                            }
                            userId = data.userId;
                            chrome.tabs.create({"url": urlMap.index}, function (tab) {
                                runningTabId = tab.id;
                                setTimeout(function () {
                                    channelUrls["exam-practice"] = urlMap.dailyAsk;
                                    channelUrls["exam-weekly"] = urlMap.weeklyAsk;
                                    channelUrls["exam-paper"] = urlMap.paperAsk;
                                    getChannelData("article", function (list) {
                                        channelUrls["article"] = list;
                                    });
                                    getChannelData("video", function (list) {
                                        channelUrls["video"] = list;
                                    });
                                    autoEarnPoints(1000 + Math.floor(Math.random() * 1000));

                                }, 1000 );
                            });
                        });
                    }
                }
            }
            break;
        case "useUrl":
            if (usedUrls[request.type].indexOf(sender.tab.url) === -1) {
                usedUrls[request.type].push(sender.tab.url);
            }
            break;
        case "chooseLogin":
            chooseLogin = 1;
            sendResponse({
                status: 'ok',
                "chooseLogin": chooseLogin
            });
            break;
        case "checkLogin":
            if (sender.tab.id === scoreTabId) {
                if (!chooseLogin) {
                    chrome.tabs.update(scoreTabId, {"url": getLoginUrl()});
                }
            }
            break;
        case "weeklyTitle":
            weeklyTitle = 1;
            sendResponse({
                status: 'ok',
                "weeklyTitle": weeklyTitle
            });
            break;
        case "paperTitle":
            paperTitle = 1;
            sendResponse({
                status: 'ok',
                "paperTitle": paperTitle
            });
            break;
        case "askComplete":
            break;
    }
});
  • When sending response asynchronously (getPointsData) you need `return true` from onMessage. – wOxxOm Apr 06 '22 at 06:20

0 Answers0