Skip to content

Commit 87ba23a

Browse files
committed
🎨 优化窗口打开逻辑
1 parent 028129c commit 87ba23a

5 files changed

Lines changed: 20 additions & 10 deletions

File tree

packages/message/server.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ export class Server {
8484
})
8585
.catch((e: Error) => {
8686
con.sendMessage({ code: -1, message: e.message || e.toString() });
87+
this.logger.error("connectHandle error", Logger.E(e));
8788
});
8889
return true;
8990
} else {
@@ -106,13 +107,15 @@ export class Server {
106107
})
107108
.catch((e: Error) => {
108109
sendResponse({ code: -1, message: e.message || e.toString() });
110+
this.logger.error("messageHandle error", Logger.E(e));
109111
});
110112
return true;
111113
} else {
112114
sendResponse({ code: 0, data: ret });
113115
}
114116
} catch (e: any) {
115117
sendResponse({ code: -1, message: e.message || e.toString() });
118+
this.logger.error("messageHandle error", Logger.E(e));
116119
}
117120
} else {
118121
sendResponse({ code: -1, message: "no such api " + action });

src/app/logger/logger.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ export default class Logger {
9696
return { error: e };
9797
}
9898
if (e instanceof Error) {
99+
console.error(e);
99100
return { error: e.message };
100101
}
101102
if (typeof e === "object") {

src/app/service/service_worker/gm_api.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,8 +310,9 @@ export default class GMApi {
310310
}
311311

312312
@PermissionVerify.API()
313-
CAT_userConfig(request: Request): void {
314-
openInCurrentTab(`/src/options.html#/?userConfig=${request.uuid}`);
313+
CAT_userConfig(request: Request, sender: GetSender): void {
314+
const { tabId } = sender.getExtMessageSender();
315+
openInCurrentTab(`/src/options.html#/?userConfig=${request.uuid}`, tabId === -1 ? undefined : tabId);
315316
}
316317

317318
@PermissionVerify.API({

src/app/service/service_worker/permission_verify.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ export default class PermissionVerify {
150150
return;
151151
}
152152
try {
153-
const ret = await this.confirm(data.request, data.confirm);
153+
const ret = await this.confirm(data.request, data.confirm, data.sender);
154154
data.resolve(ret);
155155
} catch (e) {
156156
data.reject(e);
@@ -169,7 +169,7 @@ export default class PermissionVerify {
169169
});
170170
}
171171

172-
async confirm(request: Request, confirm: boolean | ConfirmParam): Promise<boolean> {
172+
async confirm(request: Request, confirm: boolean | ConfirmParam, sender: GetSender): Promise<boolean> {
173173
if (typeof confirm === "boolean") {
174174
return confirm;
175175
}
@@ -194,7 +194,7 @@ export default class PermissionVerify {
194194
throw new Error("permission denied");
195195
}
196196
// 没有权限,则弹出页面让用户进行确认
197-
const userConfirm = await this.confirmWindow(request.script, confirm);
197+
const userConfirm = await this.confirmWindow(request.script, confirm, sender);
198198
// 成功存入数据库
199199
const model: Permission = {
200200
uuid: request.uuid,
@@ -250,7 +250,7 @@ export default class PermissionVerify {
250250
> = new Map();
251251

252252
// 弹出窗口让用户进行确认
253-
async confirmWindow(script: Script, confirm: ConfirmParam): Promise<UserConfirm> {
253+
async confirmWindow(script: Script, confirm: ConfirmParam, sender: GetSender): Promise<UserConfirm> {
254254
return new Promise((resolve, reject) => {
255255
const uuid = uuidv4();
256256
// 超时处理
@@ -269,7 +269,8 @@ export default class PermissionVerify {
269269
reject,
270270
});
271271
// 打开窗口
272-
openInCurrentTab(`src/confirm.html?uuid=${uuid}`);
272+
const { tabId } = sender.getExtMessageSender();
273+
openInCurrentTab(`src/confirm.html?uuid=${uuid}`, tabId === -1 ? undefined : tabId);
273274
});
274275
}
275276

src/pkg/utils/utils.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,13 @@ export function getIcon(script: Script): string | undefined {
145145
);
146146
}
147147

148-
// 在当前页后打开一个新页面
149-
export async function openInCurrentTab(url: string) {
150-
const tab = await getCurrentTab();
148+
export async function getTab(tabId: number) {
149+
return await chrome.tabs.get(tabId).catch(() => undefined);
150+
}
151+
152+
// 在当前页后打开一个新页面,如果指定tabId则在该tab后打开
153+
export async function openInCurrentTab(url: string, tabId?: number) {
154+
const tab = await (tabId ? getTab(tabId) : getCurrentTab());
151155
const createProperties: chrome.tabs.CreateProperties = { url };
152156
if (tab) {
153157
// 添加 openerTabId 有可能出现 Error "Tab opener must be in the same window as the updated tab."

0 commit comments

Comments
 (0)