Skip to content

Commit bb2b972

Browse files
committed
Create new session from tab context menu
1 parent 5fe4def commit bb2b972

File tree

2 files changed

+51
-32
lines changed

2 files changed

+51
-32
lines changed

src/_locales/en/messages.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,10 @@
459459
"description": "a single ampersand (&) marks the next character as an access key for this item"
460460
},
461461

462+
"tab_contextmenu_create_new": {
463+
"message": "&create new session"
464+
},
465+
462466
"tab_contextmenu_set_aside": {
463467
"message": "&set aside"
464468
},

src/ts/background/BrowserTabContextMenu.ts

Lines changed: 47 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as SessionManager from "../core/SessionManager.js";
22
import * as ActiveSessionManager from "../core/ActiveSessionManager.js";
3+
import * as ClassicSessionManager from "../core/ClassicSessionManager.js";
34
import { Tab, ContextMenuId, Bookmark, SessionId } from "../util/Types.js";
45
import ActiveSession from "../core/ActiveSession.js";
56
import TabData from "../core/TabData.js";
@@ -125,14 +126,14 @@ async function addToSessionMenu(
125126
"16": "img/browserMenu/add.svg",
126127
"32": "img/browserMenu/add.svg"
127128
},
128-
onclick: () => SessionManager.createSessionFromTabs(tabs, false)
129+
onclick: () => ClassicSessionManager.createSession(tabs, false)
129130
});
130131

131132
if(sessions.length > 0) {
132133
browser.menus.create({
133134
parentId: "add",
134135
type: "separator"
135-
})
136+
});
136137
}
137138

138139
// add to existing session
@@ -194,36 +195,50 @@ async function addAndSetAsideMenu(
194195
activeSessions:Set<SessionId>,
195196
tabs:Tab[]
196197
) {
197-
if(sessions.length > 0) {
198-
dynamicMenus.push(
199-
browser.menus.create({
200-
parentId: "parent",
201-
id: "add-n-close",
202-
title: browser.i18n.getMessage("tab_contextmenu_add_and_set_aside"),
203-
})
204-
);
205-
206-
sessions
207-
// ignore active sessions as this operation does not make sense
208-
.filter(session => !activeSessions.has(session.id))
209-
.forEach(session => browser.menus.create(
210-
{
211-
parentId: "add-n-close",
212-
title: "&" + session.title.replace(/&/ig, "&&").trim(),
213-
onclick: async (info) => {
214-
for(let tab of tabs) {
215-
const data = TabData.createFromTab(tab);
216-
await browser.bookmarks.create(
217-
data.getBookmarkCreateDetails(session.id)
218-
);
198+
dynamicMenus.push(
199+
browser.menus.create({
200+
parentId: "parent",
201+
id: "add-n-close",
202+
title: browser.i18n.getMessage("tab_contextmenu_add_and_set_aside"),
203+
})
204+
);
219205

220-
browser.tabs.remove(tab.id);
221-
}
222-
223-
// update sidebar
224-
SessionContentUpdate.send(session.id);
225-
}
226-
}
227-
));
206+
// ignore active sessions as this operation does not make sense
207+
sessions = sessions.filter(session => !activeSessions.has(session.id));
208+
209+
// create new session
210+
browser.menus.create({
211+
parentId: "add-n-close",
212+
title: browser.i18n.getMessage("tab_contextmenu_create_new"),
213+
icons: {
214+
"16": "img/browserMenu/add.svg",
215+
"32": "img/browserMenu/add.svg"
216+
},
217+
onclick: () => ClassicSessionManager.createSession(tabs, true)
218+
});
219+
220+
if(sessions.length > 0) {
221+
browser.menus.create({
222+
parentId: "add-n-close",
223+
type: "separator"
224+
});
228225
}
226+
227+
sessions.forEach(session => browser.menus.create({
228+
parentId: "add-n-close",
229+
title: "&" + session.title.replace(/&/ig, "&&").trim(),
230+
onclick: async (info) => {
231+
for(let tab of tabs) {
232+
const data = TabData.createFromTab(tab);
233+
await browser.bookmarks.create(
234+
data.getBookmarkCreateDetails(session.id)
235+
);
236+
237+
browser.tabs.remove(tab.id);
238+
}
239+
240+
// update sidebar
241+
SessionContentUpdate.send(session.id);
242+
}
243+
}));
229244
}

0 commit comments

Comments
 (0)