Skip to content

Commit 0036d45

Browse files
committed
further cleanup, ui fixes
1 parent 3c50cc0 commit 0036d45

File tree

6 files changed

+107
-116
lines changed

6 files changed

+107
-116
lines changed

actionHandling/ActionHandlers.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,6 @@ export function useActionHandlers($q: QVueGlobals | undefined) {
8888
// break;
8989
case ButtonActions.ImportChromeBookmarks:
9090
console.log('===>', args.actionContext)
91-
// handler
92-
// .withDialog(args.actionContext?.identifier)
93-
// ?.onOk((data: { b: boolean; s: string }) => {
94-
// console.log('in', data)
95-
// handler.clicked(chromeTab, tabset, undefined, { data })
96-
// })
9791
handler.withDialog(args.actionContext?.identifier)?.onOk((data: string[]) => {
9892
console.log('data', data)
9993
handler.clicked(chromeTab, tabset, undefined, {

actionHandling/SpecialUrlAddToTabsetComponent.vue

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<template>
22
<!-- @click.stop="saveInTabset(props.tabset.id, props.tabset.folderActive)" -->
3-
<template v-if="handler.actions().length === 0"> --- </template>
3+
<template v-if="handler.actions().length === 0"> ---</template>
44
<template v-else-if="handler.actions().length === 1">
55
<q-btn
66
outline
@@ -14,8 +14,7 @@
1414
:class="{ shake: animateAddtabButton, 'cursor-pointer': !alreadyInTabset() }"
1515
:color="alreadyInTabset() ? 'grey-5' : tsBadges.length > 0 ? 'positive' : 'primary'"
1616
size="xs"
17-
data-testid="saveInTabsetBtn"
18-
>
17+
data-testid="saveInTabsetBtn">
1918
<div>{{ handler.actions()[0]!.label }}</div>
2019
<!-- <q-icon right class="q-ma-none q-pa-none" size="2em" name="o_south" />-->
2120
</q-btn>
@@ -31,8 +30,10 @@
3130
</template>
3231

3332
<template v-else-if="handler.actions().length > 1">
33+
<!-- :disable="!handler.actions()[0]!.active(props.currentChromeTab)"-->
3434
<q-btn-dropdown
3535
:label="handler.actions()[0]!.label"
36+
v-close-popup
3637
@click.stop="
3738
emits(
3839
'buttonClicked',
@@ -42,25 +43,27 @@
4243
)
4344
"
4445
class="q-ma-none q-px-none q-py-none"
45-
:color="alreadyInTabset() ? 'grey-5' : tsBadges.length > 0 ? 'positive' : 'primary'"
46+
:color="color(handler.actions()[0]!)"
4647
size="xs"
4748
split
48-
outline
49-
>
49+
outline>
5050
<q-list dense>
5151
<q-item
5252
v-for="l in handler.actions().slice(1)"
53-
clickable
53+
:clickable="isActive(l)"
5454
dense
5555
@click.stop="
5656
emits(
5757
'buttonClicked',
5858
new ActionHandlerButtonClickedHolder(handler, ButtonActions.Save, l, {}),
5959
)
60-
"
61-
>
60+
">
6261
<q-item-section>
63-
<q-item-label style="font-size: smaller">{{ l.label }}</q-item-label>
62+
<q-item-label
63+
style="font-size: smaller"
64+
:class="isActive(l) ? 'text-primary' : 'text-grey-5'"
65+
>{{ l.label }}</q-item-label
66+
>
6467
</q-item-section>
6568
</q-item>
6669
</q-list>
@@ -70,8 +73,7 @@
7073
v-if="alreadyInTabset()"
7174
anchor="center left"
7275
self="center right"
73-
:offset="[10, 10]"
74-
>
76+
:offset="[10, 10]">
7577
click the dropdown icon for more options
7678
</q-tooltip>
7779
</template>
@@ -86,6 +88,7 @@ import {
8688
ButtonActions,
8789
} from 'src/tabsets/actionHandling/AddUrlToTabsetHandler'
8890
import { NoopAddUrlToTabsetHandler } from 'src/tabsets/actionHandling/handler/NoopAddUrlToTabsetHandler'
91+
import { ActionContext } from 'src/tabsets/actionHandling/model/ActionContext'
8992
import { ActionHandlerButtonClickedHolder } from 'src/tabsets/actionHandling/model/ActionHandlerButtonClickedHolder'
9093
import TabsetService from 'src/tabsets/services/TabsetService'
9194
import { useTabsetService } from 'src/tabsets/services/TabsetService2'
@@ -141,10 +144,7 @@ const activeFolderNameFor = (ts: Tabset, activeFolder: string) => {
141144
}
142145
143146
const tabsetNameOrChain = (tabset: Tabset) => {
144-
if (tabset.folderActive) {
145-
return activeFolderNameFor(tabset, tabset.folderActive)
146-
}
147-
return tabset.name
147+
return tabset.folderActive ? activeFolderNameFor(tabset, tabset.folderActive) : tabset.name
148148
}
149149
150150
const tooltipAlreadyInOtherTabsets = (tabsetName: string) => {
@@ -163,4 +163,15 @@ const tooltipAlreadyInOtherTabsets = (tabsetName: string) => {
163163
"' as well."
164164
)
165165
}
166+
167+
const isActive = (ac: ActionContext) => {
168+
return ac.active ? ac.active(props.currentChromeTab) : true
169+
}
170+
171+
const color = (ac: ActionContext) => {
172+
if (ac.active) {
173+
return ac.active(props.currentChromeTab) ? 'primary' : 'grey-5'
174+
}
175+
return alreadyInTabset() ? 'grey-5' : tsBadges.value.length > 0 ? 'positive' : 'primary'
176+
}
166177
</script>

actionHandling/handler/ImportFromChromeBookmarksManagerAddUrlToTabsetHandler.ts

Lines changed: 40 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,18 @@ import {
77
ButtonActions,
88
} from 'src/tabsets/actionHandling/AddUrlToTabsetHandler'
99
import { DefaultAddUrlToTabsetHandler } from 'src/tabsets/actionHandling/handler/DefaultAddUrlToTabsetHandler'
10+
import { ActionContext } from 'src/tabsets/actionHandling/model/ActionContext'
1011
import { CreateTabsetFromBookmarksRecursive } from 'src/tabsets/commands/CreateTabsetFromBookmarksRecursive'
1112
import { Tab } from 'src/tabsets/models/Tab'
1213
import { Tabset } from 'src/tabsets/models/Tabset'
1314
import { 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

actionHandling/model/ActionContext.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ export class ActionContext {
77
public identifier: ButtonActions,
88
public folder?: Tabset,
99
public additionalData?: object,
10+
public active?: (t: chrome.tabs.Tab) => boolean,
1011
) {}
1112
}

commands/CreateTabsetFromBookmarksRecursive.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ export class CreateTabsetFromBookmarksRecursive implements Command<Tabset> {
3434
) {}
3535

3636
async execute(): Promise<ExecutionResult<any>> {
37-
//console.log('creating recursively', this.name, this.bookmarkId)
3837
const tabset = await createTabsetFrom(this.name, '' + this.bookmarkId)
38+
tabset.bookmarkId = this.bookmarkId
3939
return Promise.resolve(new ExecutionResult(tabset, 'done'))
4040
}
4141
}

0 commit comments

Comments
 (0)