Skip to content

Commit

Permalink
🚧 Fix bug.
Browse files Browse the repository at this point in the history
  • Loading branch information
Toly committed Aug 29, 2024
1 parent f2bdb74 commit 6d7f3c5
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 31 deletions.
47 changes: 20 additions & 27 deletions src/plugins/entryPoint/background.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ let isContentScriptReady = false;
// login page 是否已经被打开过
let loginHasBeenOpened = false;

// 已经打开的 login page 的 id
let loginPageTabId = -1;
console.log("background.js loaded");

// 向 content script 发送消息
Expand Down Expand Up @@ -49,28 +51,7 @@ function handleError(error) {
}

// 扩展图标被点击
async function extensionIconClicked(tab, clickEvent) {
let token = await getLoginToken();

if (token === undefined || token === null || token === "") {
// Need login logic here...
browser.tabs.create({ url: "loginPage/index.html" });
} else {
// already login, ping pong to server using token
let t = await pingPong();
let j = await t.json();
if (t.ok && j.code === 200) {
// let t = await saveArticle();
// let j = await t.json();
// Notify content script
// if (t.ok && j.code === 200) {
// notifyContentScript({ type: "saveArticleSuccess" });
// }
} else {
browser.tabs.create({ url: "loginPage/index.html" });
}
}
}
async function extensionIconClicked(tab, clickEvent) {}

function detailsHandler(details) {
if (
Expand Down Expand Up @@ -98,20 +79,32 @@ function tempDetailsHandler(details) {
}
browser.browserAction.onClicked.addListener(extensionIconClicked);

browser.tabs.onRemoved.addListener((tabId, removeInfo) => {
console.log(tabId, removeInfo);
if (tabId === loginPageTabId) {
loginHasBeenOpened = false;
}
});

browser.webNavigation.onBeforeNavigate.addListener((details) => {
isContentScriptReady = false;
loginHasBeenOpened = false;
});

let openCount = 0;
// Listen for messages from pages(Mozilla://file pages, not web pages) and content scripts
browser.runtime.onMessage.addListener(async (message) => {
switch (message.type) {
case "open-login":
console.log(`loginHasBeenOpened: ${loginHasBeenOpened}`);
if (!loginHasBeenOpened) {
browser.tabs.create({ url: "loginPage/index.html" });
loginHasBeenOpened = true;
} else {
loginHasBeenOpened = false;
console.log(`openCount: ${openCount}`);
const result = await browser.tabs.create({
active: false,
url: "loginPage/index.html",
});
console.log(result);
loginPageTabId = result.id;
openCount++;
}
break;
case "login-success":
Expand Down
27 changes: 23 additions & 4 deletions src/plugins/general/utils.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { backendServerUrl } from "../entryPoint/constants";
import { getLoginToken } from "../entryPoint/utils/background.utils";
import { stylishReaderMainColor } from "../utils/constants";
import { checkUserLoginStatus } from "../utils/utils";
import {
clickableWordClassName,
floatingIconSize,
Expand All @@ -12,6 +13,10 @@ import {

let currentSelectionContent = "";

let selectionRange = null;

let gSelectionPosition = { x: 0, y: 0 };

/**
* 遍历页面上所有dom节点, 根据单词列表,构建自定义元素
* @param {Array} targetWordList 目标词典单词列表
Expand Down Expand Up @@ -183,6 +188,7 @@ function customizeMouseDownEvent() {

// 点击的是floatingIcon
if ([stylishReaderFloatingIconId].includes(event.target.id)) {
console.log("executed...");
sendMessageFromGeneralScriptToFloatingPanel({
type: "search-word",
word: currentSelectionContent.toString().trim(),
Expand Down Expand Up @@ -237,6 +243,11 @@ function addSelectionChangeEvent() {
const rect = range.getBoundingClientRect();
let x = calculateSelectionPosition(rect, floatingIconSize).x;
let y = calculateSelectionPosition(rect, floatingIconSize).y;
gSelectionPosition = calculateSelectionPosition(
rect,
translationPanelSize
);
gSelectionPosition.y = rect.top;
// FIXME: 这里没有考虑到selection的位置可能会超出屏幕的情况
showFloatingIcon(x, y);
currentSelectionContent = selection.toString().trim();
Expand Down Expand Up @@ -329,21 +340,29 @@ export async function showTranslationFloatingPanel(
source = "selection",
position = { x: 0, y: 0 }
) {
await checkUserLoginStatus();

const translationPanel = document.getElementById(
translationFloatingPanelShadowRootId
);
translationPanel.style.display = "block";
if (source === "selection") {
const selection = window.getSelection();
const range = selection.getRangeAt(0);
showTranslationFloatingPanelTemporary();
let x = calculateFloatingPanelPosition(range).x;
let y = calculateFloatingPanelPosition(range).y;
let x = gSelectionPosition.x;
let y = gSelectionPosition.y;
console.log(x, y);
translationPanel.style.top = y + "px";
translationPanel.style.left = x + "px";
translationPanel.style.opacity = 1;
translationPanel.style.boxShadow = "0 0 15px 5px grey";
} else {
const selection = window.getSelection();
const range = selection.getRangeAt(0);
position.x = calculateFloatingPanelPosition(range).x;
position.y = calculateFloatingPanelPosition(range).y;

console.log(position);

translationPanel.style.top = position.y + "px";
translationPanel.style.left = position.x + "px";
translationPanel.style.opacity = 1;
Expand Down

0 comments on commit 6d7f3c5

Please sign in to comment.