@@ -6,6 +6,7 @@ import { changeOptionsHostToHostNameAndPort } from './upgrade';
66import { getLogseqService } from './logseq/tool' ;
77import { SearchEngineConfigMigration } from '@/utils/migration' ;
88import { templates } from '@/utils/storage' ;
9+ import { onMessage , sendMessage } from '@/types/messaging' ;
910
1011export default defineBackground ( {
1112 // Set manifest options
@@ -19,49 +20,76 @@ export default defineBackground({
1920 main ( ) {
2021 // Executed when background is loaded, CANNOT BE ASYNC
2122
22- browser . runtime . onConnect . addListener ( ( port ) => {
23- port . onMessage . addListener ( ( msg ) => {
24- if ( msg . type === 'query' ) {
25- const promise = new Promise ( async ( ) => {
26- const logseqService = await getLogseqService ( ) ;
27- const searchRes = await logseqService . search ( msg . query ) ;
28- console . debug ( 'search result' , searchRes ) ;
29- port . postMessage ( searchRes ) ;
30- } ) ;
31-
32- promise . catch ( ( err ) => console . error ( err ) ) ;
33- } else if ( msg . type === 'open-options' ) {
34- browser . runtime . openOptionsPage ( ) ;
35- } else {
36- console . debug ( msg ) ;
37- }
38- } ) ;
23+ // Register message handlers using @webext -core/messaging
24+ onMessage ( 'logseq:search' , async ( { data } ) => {
25+ const logseqService = await getLogseqService ( ) ;
26+ const searchRes = await logseqService . search ( data ) ;
27+ console . debug ( 'search result' , searchRes ) ;
28+ return searchRes ;
3929 } ) ;
4030
41- browser . runtime . onMessage . addListener ( ( msg , sender ) => {
42- if ( msg . type === 'open-options' ) {
43- browser . runtime . openOptionsPage ( ) ;
44- } else if ( msg . type === 'clip-with-selection' ) {
45- quickCapture ( msg . data ) ;
46- } else if ( msg . type === 'clip-page' ) {
47- quickCapture ( '' ) ;
48- } else if ( msg . type === 'open-page' ) {
49- openPage ( msg . url ) ;
50- } else if ( msg . type === 'change-block-marker' ) {
51- changeBlockMarker ( msg . uuid , msg . marker ) ;
52- } else {
53- console . debug ( msg ) ;
54- }
31+ onMessage ( 'logseq:urlSearch' , async ( { data } ) => {
32+ const logseqService = await getLogseqService ( ) ;
33+ const url = new URL ( data . url ) ;
34+ const searchRes = await logseqService . urlSearch ( url , data . options ) ;
35+ return searchRes ;
36+ } ) ;
37+
38+ onMessage ( 'app:openOptions' , async ( ) => {
39+ browser . runtime . openOptionsPage ( ) ;
40+ } ) ;
41+
42+ onMessage ( 'logseq:clipWithSelection' , async ( { data } ) => {
43+ await quickCapture ( data ) ;
44+ } ) ;
45+
46+ onMessage ( 'logseq:clipPage' , async ( ) => {
47+ await quickCapture ( '' ) ;
48+ } ) ;
49+
50+ onMessage ( 'app:openPage' , async ( { data } ) => {
51+ await openPage ( data . url ) ;
52+ } ) ;
53+
54+ onMessage ( 'logseq:changeBlockMarker' , async ( { data } ) => {
55+ const result = await changeBlockMarker ( data . uuid , data . marker ) ;
56+ return result ;
5557 } ) ;
5658
5759 const changeBlockMarker = async ( uuid : string , marker : string ) => {
5860 const tab = await getCurrentTab ( ) ;
5961 if ( ! tab ) {
60- return ;
62+ return {
63+ type : 'change-block-marker-result' ,
64+ uuid,
65+ status : 'error' ,
66+ marker,
67+ msg : 'No active tab found' ,
68+ } ;
6169 }
6270 const logseqService = await getLogseqService ( ) ;
6371 const result = await logseqService . changeBlockMarker ( uuid , marker ) ;
64- browser . tabs . sendMessage ( tab . id ! , result ) ;
72+
73+ // Send result to content script
74+ await sendMessage (
75+ 'content:blockMarkerChanged' ,
76+ {
77+ type : 'change-block-marker-result' ,
78+ uuid,
79+ status : 'success' ,
80+ marker,
81+ msg : result . msg ,
82+ } ,
83+ { tabId : tab . id ! } ,
84+ ) ;
85+
86+ return {
87+ type : 'change-block-marker-result' ,
88+ uuid,
89+ status : 'success' ,
90+ marker,
91+ msg : result . msg ,
92+ } ;
6593 } ;
6694
6795 const getCurrentTab = async ( ) => {
@@ -180,7 +208,13 @@ export default defineBackground({
180208 }
181209
182210 browser . contextMenus . onClicked . addListener ( ( info , tab ) => {
183- browser . tabs . sendMessage ( tab ! . id ! , { type : info . menuItemId } , { } ) ;
211+ if ( info . menuItemId === 'clip-with-selection' ) {
212+ sendMessage ( 'content:quickCaptureWithSelection' , undefined , {
213+ tabId : tab ! . id ! ,
214+ } ) ;
215+ } else if ( info . menuItemId === 'clip-page' ) {
216+ sendMessage ( 'content:quickCapturePage' , undefined , { tabId : tab ! . id ! } ) ;
217+ }
184218 } ) ;
185219
186220 browser . runtime . onInstalled . addListener ( async ( event ) => {
@@ -198,7 +232,7 @@ export default defineBackground({
198232
199233 browser . commands . onCommand . addListener ( ( command , tab ) => {
200234 if ( command === 'clip' && tab !== undefined ) {
201- browser . tabs . sendMessage ( tab . id ! , { type : 'clip' } ) ;
235+ sendMessage ( 'content:quickCapture' , undefined , { tabId : tab . id ! } ) ;
202236 }
203237 } ) ;
204238
0 commit comments