@@ -7,14 +7,18 @@ import {
77 ButtonActions ,
88} from 'src/tabsets/actionHandling/AddUrlToTabsetHandler'
99import { DefaultAddUrlToTabsetHandler } from 'src/tabsets/actionHandling/handler/DefaultAddUrlToTabsetHandler'
10+ import { ActionContext } from 'src/tabsets/actionHandling/model/ActionContext'
1011import { CreateTabsetFromBookmarksRecursive } from 'src/tabsets/commands/CreateTabsetFromBookmarksRecursive'
1112import { Tab } from 'src/tabsets/models/Tab'
1213import { Tabset } from 'src/tabsets/models/Tabset'
1314import { useTabsetService } from 'src/tabsets/services/TabsetService2'
15+ import { useTabsetsStore } from 'src/tabsets/stores/tabsetsStore'
1416
15- export class ImportFromChromeBookmarksManagerAddUrlToTabsetHandler
16- implements AddUrlToTabsetHandler
17- {
17+ function getBmFolderId ( chromeTab : chrome . tabs . Tab ) {
18+ return chromeTab . url ?. split ( '?' ) [ 1 ] ?. split ( '=' ) [ 1 ] || undefined
19+ }
20+
21+ export class ImportFromChromeBookmarksManagerAddUrlToTabsetHandler implements AddUrlToTabsetHandler {
1822 constructor ( public $q : QVueGlobals | undefined ) { }
1923
2024 urlMatcher ( ) : RegExp {
@@ -25,10 +29,21 @@ export class ImportFromChromeBookmarksManagerAddUrlToTabsetHandler
2529 return false
2630 }
2731
28- actions ( ) : { label : string ; identifier : ButtonActions } [ ] {
32+ actions ( ) : ActionContext [ ] {
2933 return [
30- { label : 'Import Bookmarks' , identifier : ButtonActions . ImportChromeBookmarks } ,
31- { label : 'Add Tab' , identifier : ButtonActions . AddTab } ,
34+ {
35+ label : 'Import Bookmarks' ,
36+ identifier : ButtonActions . ImportChromeBookmarks ,
37+ active : ( t : chrome . tabs . Tab ) => {
38+ const folderId = getBmFolderId ( t )
39+ return ! folderId ? false : ( useTabsetsStore ( ) . getCurrentTabset ?. bookmarkId || '' ) !== folderId
40+ } ,
41+ } ,
42+ {
43+ label : 'Add Tab' ,
44+ identifier : ButtonActions . AddTab ,
45+ active : ( t : chrome . tabs . Tab ) => ! useTabsetService ( ) . urlExistsInCurrentTabset ( t . url ) ,
46+ } ,
3247 ]
3348 }
3449
@@ -51,45 +66,32 @@ export class ImportFromChromeBookmarksManagerAddUrlToTabsetHandler
5166 ) : Promise < ExecutionResult < any > > {
5267 console . log ( 'saving...' , chromeTab . id , additionalData )
5368 if ( additionalData . action ! . identifier === ButtonActions . AddTab ) {
54- new DefaultAddUrlToTabsetHandler ( ) . clicked ( chromeTab , ts , folder , additionalData )
69+ await new DefaultAddUrlToTabsetHandler ( ) . clicked ( chromeTab , ts , folder , additionalData )
70+ return Promise . resolve ( new ExecutionResult ( '' , 'done' ) )
5571 } else {
56- const folderId = chromeTab . url ?. split ( '?' ) [ 1 ] ?. split ( '=' ) [ 1 ] || undefined
57- if ( ! folderId ) {
72+ const bmFolderId = getBmFolderId ( chromeTab )
73+ if ( ! bmFolderId ) {
5874 return Promise . reject ( 'could not parse bookmarks id from URL' )
5975 }
6076 try {
61- useCommandExecutor ( )
62- . execute ( new CreateTabsetFromBookmarksRecursive ( 'testimport' , folderId ) )
63- . then ( async ( res : ExecutionResult < Tabset > ) => {
64- const tabset = res . result
65- await useTabsetService ( ) . saveTabset ( tabset )
66- console . log ( 'imported to tabset' , tabset . id )
67- } )
68- } catch ( e : any ) { }
77+ const currentTabsetName = useTabsetsStore ( ) . getCurrentTabset ?. name || 'unknown'
78+ const res : ExecutionResult < Tabset > = await useCommandExecutor ( ) . execute (
79+ new CreateTabsetFromBookmarksRecursive ( currentTabsetName , bmFolderId ) ,
80+ )
81+ const tabset = res . result
82+ await useTabsetService ( ) . saveTabset ( tabset )
83+ console . log ( 'imported to tabset' , tabset . id )
84+ await useTabsetsStore ( ) . reloadTabset ( tabset . id )
85+ return Promise . resolve ( '' , '' )
86+ // })
87+ } catch ( e : any ) {
88+ console . log ( 'got error' , e )
89+ return Promise . reject ( 'error importing bookmarks' )
90+ }
6991 }
70- // try {
71- // const useForLinks = additionalData['useForLinks' as keyof object] as boolean
72- // const newTab = new Tab(uid(), chromeTab)
73- // await useCommandExecutor().execute(new AddTabToTabsetCommand(newTab, ts, ts.folderActive))
74- // if (useForLinks) {
75- // // const res = await useCommandExecutor().executeFromUi(new CreateFolderCommand(uid(),"Extracted Links", [],ts.id,undefined, newTab.url!))
76- // // await useTabsetService().saveTabset(ts)
77- // // await useCommandExecutor().execute(new LoadDynamicTabsCommand(ts, res.result as Tabset))
78- // await useCommandExecutor().execute(new LoadDynamicTabsCommand(ts, newTab.url!))
79- // }
80- // return Promise.resolve(new ExecutionResult('', 'done'))
81- // } catch (error: any) {
82- // console.warn('error', error)
83- // return Promise.reject('error creating markdown tab')
84- // }
85- return Promise . reject ( 'error creating markdown tab' )
8692 }
8793
88- updateInTabset (
89- chromeTab : chrome . tabs . Tab ,
90- ts : Tabset ,
91- additionalData : object = { } ,
92- ) : Promise < ExecutionResult < any > > {
94+ updateInTabset ( chromeTab : chrome . tabs . Tab , ts : Tabset , additionalData : object = { } ) : Promise < ExecutionResult < any > > {
9395 throw new Error ( 'not implemented K' )
9496 }
9597
0 commit comments