Skip to content

Commit ba5d182

Browse files
committed
further cleanup, diverse
1 parent 0036d45 commit ba5d182

16 files changed

+257
-298
lines changed

actionHandling/ActionHandlers.ts

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
import { QVueGlobals } from 'quasar'
22
import { useContentStore } from 'src/content/stores/contentStore'
33
import { useCommandExecutor } from 'src/core/services/CommandExecutor'
4-
import {
5-
AddUrlToTabsetHandler,
6-
ButtonActions,
7-
} from 'src/tabsets/actionHandling/AddUrlToTabsetHandler'
4+
import { AddUrlToTabsetHandler, ButtonActions } from 'src/tabsets/actionHandling/AddUrlToTabsetHandler'
85
import { AddUrlToTabsetHandlers } from 'src/tabsets/actionHandling/AddUrlToTabsetHandlers'
96
import { RssFolderHandler } from 'src/tabsets/actionHandling/handler/RssFolderHandler'
107
import { ActionHandlerButtonClickedHolder } from 'src/tabsets/actionHandling/model/ActionHandlerButtonClickedHolder'
@@ -46,39 +43,33 @@ export function useActionHandlers($q: QVueGlobals | undefined) {
4643
handler.withDialog(args.actionContext?.identifier)?.onOk((data: string[]) => {
4744
console.log('data', data)
4845
handler.clicked(chromeTab, tabset, undefined, {
49-
useForLinks: data.indexOf('useForLinks') >= 0,
46+
data: { useForLinks: data.indexOf('useForLinks') >= 0 },
5047
})
5148
})
5249
break
5350
case ButtonActions.NewFile:
5451
handler.withDialog(args.actionContext?.identifier)?.onOk((filename: string) => {
55-
handler.clicked(chromeTab, tabset, undefined, { filename })
52+
handler.clicked(chromeTab, tabset, undefined, { data: { filename } })
5653
})
5754
break
5855
case ButtonActions.Save:
5956
await handler.updateInTabset(chromeTab, tabset, args.additionalData)
6057
break
6158
case ButtonActions.SaveAs:
6259
handler.withDialog(args.actionContext?.identifier)?.onOk((filename: string) => {
63-
handler.clicked(chromeTab, tabset, undefined, { filename })
60+
handler.clicked(chromeTab, tabset, undefined, { data: { filename } })
6461
})
6562
break
6663
case ButtonActions.DynamicLoad:
67-
console.log(
68-
`loading dynamic data for tabset/folder ${tabset.id}/${args['folder' as keyof object]} `,
69-
)
70-
await useCommandExecutor().execute(
71-
new LoadDynamicTabsCommand(tabset, args['folder' as keyof object]),
72-
)
64+
console.log(`loading dynamic data for tabset/folder ${tabset.id}/${args['folder' as keyof object]} `)
65+
await useCommandExecutor().execute(new LoadDynamicTabsCommand(tabset, args['folder' as keyof object]))
7366
break
7467
case ButtonActions.AddRssFeed:
7568
console.log('===>', args.actionContext)
76-
handler
77-
.withDialog(args.actionContext?.identifier)
78-
?.onOk((data: { b: boolean; s: string }) => {
79-
console.log('in', data)
80-
handler.clicked(chromeTab, tabset, undefined, { data })
81-
})
69+
handler.withDialog(args.actionContext?.identifier)?.onOk((data: { b: boolean; s: string }) => {
70+
console.log('in', data)
71+
handler.clicked(chromeTab, tabset, undefined, { data: { more: data } })
72+
})
8273
break
8374
case ButtonActions.LoadRssFeed:
8475
await handler.clicked(chromeTab, tabset, folder)
@@ -88,14 +79,16 @@ export function useActionHandlers($q: QVueGlobals | undefined) {
8879
// break;
8980
case ButtonActions.ImportChromeBookmarks:
9081
console.log('===>', args.actionContext)
91-
handler.withDialog(args.actionContext?.identifier)?.onOk((data: string[]) => {
92-
console.log('data', data)
82+
handler.withDialog(args.actionContext?.identifier)?.onOk((input: string[]) => {
83+
console.log('data', input)
9384
handler.clicked(chromeTab, tabset, undefined, {
9485
action: {
9586
identifier: ButtonActions.ImportChromeBookmarks,
9687
label: 'Import',
9788
},
98-
recursive: data.indexOf('recursive') >= 0,
89+
data: {
90+
recursive: input.indexOf('recursive') >= 0,
91+
},
9992
})
10093
})
10194
break

actionHandling/AddUrlToTabsetHandler.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,13 @@ export type AddUrlToTabsetHandlerAdditionalData = {
2424
identifier: ButtonActions
2525
label: string
2626
}
27-
useForLinks?: boolean
28-
recursive?: boolean
29-
filename?: string
30-
data?: object
27+
data?: {
28+
useForLinks?: boolean
29+
displayFeed?: boolean
30+
recursive?: boolean
31+
filename?: string
32+
more?: object
33+
}
3134
}
3235

3336
export interface AddUrlToTabsetHandler {

actionHandling/handler/DynamicUrlAddUrlToTabsetHandler.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { ExecutionResult } from 'src/core/domain/ExecutionResult'
33
import { useCommandExecutor } from 'src/core/services/CommandExecutor'
44
import {
55
AddUrlToTabsetHandler,
6+
AddUrlToTabsetHandlerAdditionalData,
67
ButtonActions,
78
} from 'src/tabsets/actionHandling/AddUrlToTabsetHandler'
89
import { ActionContext } from 'src/tabsets/actionHandling/model/ActionContext'
@@ -38,7 +39,7 @@ export class DynamicUrlAddUrlToTabsetHandler implements AddUrlToTabsetHandler {
3839
chromeTab: chrome.tabs.Tab,
3940
ts: Tabset,
4041
folder?: Tabset,
41-
additionalData: object = {},
42+
additionalData: AddUrlToTabsetHandlerAdditionalData = {},
4243
): Promise<ExecutionResult<any>> {
4344
const newTab: Tab = new Tab(uid(), chromeTab)
4445
return useCommandExecutor().execute(new AddTabToTabsetCommand(newTab, ts, ts.folderActive))
@@ -47,7 +48,7 @@ export class DynamicUrlAddUrlToTabsetHandler implements AddUrlToTabsetHandler {
4748
updateInTabset(
4849
chromeTab: chrome.tabs.Tab,
4950
ts: Tabset,
50-
additionalData: object = {},
51+
additionalData: AddUrlToTabsetHandlerAdditionalData = {},
5152
): Promise<ExecutionResult<any>> {
5253
throw new Error('not implemented J')
5354
}

actionHandling/handler/ExcalidrawAddUrlToTabsetHandler.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { ExecutionResult } from 'src/core/domain/ExecutionResult'
33
import { useCommandExecutor } from 'src/core/services/CommandExecutor'
44
import {
55
AddUrlToTabsetHandler,
6+
AddUrlToTabsetHandlerAdditionalData,
67
ButtonActions,
78
} from 'src/tabsets/actionHandling/AddUrlToTabsetHandler'
89
import { ActionContext } from 'src/tabsets/actionHandling/model/ActionContext'
@@ -59,7 +60,7 @@ export class ExcalidrawAddUrlToTabsetHandler implements AddUrlToTabsetHandler {
5960
chromeTab: chrome.tabs.Tab,
6061
ts: Tabset,
6162
folder?: Tabset,
62-
additionalData?: object,
63+
additionalData?: AddUrlToTabsetHandlerAdditionalData,
6364
): Promise<ExecutionResult<any>> {
6465
console.log('saving...', chromeTab.id, additionalData)
6566
try {
@@ -84,9 +85,7 @@ export class ExcalidrawAddUrlToTabsetHandler implements AddUrlToTabsetHandler {
8485
firstFrameReturned.result['versionDataState' as keyof object],
8586
)
8687
}
87-
return useCommandExecutor().execute(
88-
new AddTabToTabsetCommand(newTab, ts, ts.folderActive, true),
89-
)
88+
return useCommandExecutor().execute(new AddTabToTabsetCommand(newTab, ts, ts.folderActive, true))
9089
}
9190
} catch (error: any) {
9291
console.warn('error', error)
@@ -98,19 +97,17 @@ export class ExcalidrawAddUrlToTabsetHandler implements AddUrlToTabsetHandler {
9897
async updateInTabset(
9998
chromeTab: chrome.tabs.Tab,
10099
ts: Tabset,
101-
additionalData: object = {},
100+
additionalData: AddUrlToTabsetHandlerAdditionalData = {},
102101
): Promise<ExecutionResult<any>> {
103102
console.log('updating...', chromeTab.id, additionalData)
104103
try {
105-
const filename = additionalData['filename' as keyof object]
104+
const filename = additionalData.data!['filename' as keyof object]
106105
if (!filename) {
107106
throw new Error('filename is missing')
108107
}
109108
const returned = await this.queryBrowserTab(chromeTab, '', filename)
110109
if (returned.length > 0) {
111-
const tabCandidates = ts.tabs.filter(
112-
(t: Tab) => t.url!.match(this.urlMatcher()) && t.title === filename,
113-
)
110+
const tabCandidates = ts.tabs.filter((t: Tab) => t.url!.match(this.urlMatcher()) && t.title === filename)
114111
const firstFrameReturned = returned.at(0)
115112
if (firstFrameReturned && firstFrameReturned.result && tabCandidates.length > 0) {
116113
tabCandidates[0]!.storage = new ExcalidrawStorage(
@@ -132,8 +129,7 @@ export class ExcalidrawAddUrlToTabsetHandler implements AddUrlToTabsetHandler {
132129

133130
handleOpenedTab(browserTab: chrome.tabs.Tab, tab: Tab) {
134131
console.log('handling opened tab', browserTab.id, tab.id)
135-
const excalidraw =
136-
tab.storage || new ExcalidrawStorage([], {}, new Date().getTime(), new Date().getTime())
132+
const excalidraw = tab.storage || new ExcalidrawStorage([], {}, new Date().getTime(), new Date().getTime())
137133
console.log('setting to storage', excalidraw)
138134

139135
chrome.scripting

actionHandling/handler/FileProtocolUrlAddUrlToTabsetHandler.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { DialogChainObject, QVueGlobals } from 'quasar'
22
import { ExecutionResult } from 'src/core/domain/ExecutionResult'
33
import {
44
AddUrlToTabsetHandler,
5+
AddUrlToTabsetHandlerAdditionalData,
56
ButtonActions,
67
} from 'src/tabsets/actionHandling/AddUrlToTabsetHandler'
78
import { ActionContext } from 'src/tabsets/actionHandling/model/ActionContext'
@@ -30,11 +31,11 @@ export class FileProtocolUrlAddUrlToTabsetHandler implements AddUrlToTabsetHandl
3031
browserTab: chrome.tabs.Tab,
3132
ts: Tabset,
3233
folder: Tabset | undefined,
33-
additionalData: object | undefined,
34+
additionalData?: AddUrlToTabsetHandlerAdditionalData,
3435
): Promise<ExecutionResult<any>> {
3536
console.log('saving...', browserTab.id, additionalData)
3637
try {
37-
const filename = additionalData ? additionalData['filename' as keyof object] : undefined
38+
const filename = additionalData ? additionalData.data!['filename' as keyof object] : undefined
3839
if (!filename) {
3940
throw new Error('filename is missing')
4041
}
@@ -79,7 +80,7 @@ export class FileProtocolUrlAddUrlToTabsetHandler implements AddUrlToTabsetHandl
7980
async updateInTabset(
8081
browserTab: chrome.tabs.Tab,
8182
ts: Tabset,
82-
additionalData: object,
83+
additionalData: AddUrlToTabsetHandlerAdditionalData,
8384
): Promise<ExecutionResult<any>> {
8485
console.log('saving...', browserTab.id, additionalData)
8586
try {

actionHandling/handler/ImportFromChromeBookmarksManagerAddUrlToTabsetHandler.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export class ImportFromChromeBookmarksManagerAddUrlToTabsetHandler implements Ad
3232
actions(): ActionContext[] {
3333
return [
3434
{
35-
label: 'Import Bookmarks',
35+
label: 'Import...',
3636
identifier: ButtonActions.ImportChromeBookmarks,
3737
active: (t: chrome.tabs.Tab) => {
3838
const folderId = getBmFolderId(t)
@@ -82,7 +82,7 @@ export class ImportFromChromeBookmarksManagerAddUrlToTabsetHandler implements Ad
8282
await useTabsetService().saveTabset(tabset)
8383
console.log('imported to tabset', tabset.id)
8484
await useTabsetsStore().reloadTabset(tabset.id)
85-
return Promise.resolve('', '')
85+
return Promise.resolve(new ExecutionResult('', ''))
8686
// })
8787
} catch (e: any) {
8888
console.log('got error', e)

actionHandling/handler/MarkdownFileAddUrlToTabsetHandler.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { ExecutionResult } from 'src/core/domain/ExecutionResult'
33
import { useCommandExecutor } from 'src/core/services/CommandExecutor'
44
import {
55
AddUrlToTabsetHandler,
6+
AddUrlToTabsetHandlerAdditionalData,
67
ButtonActions,
78
} from 'src/tabsets/actionHandling/AddUrlToTabsetHandler'
89
import { AddTabToTabsetCommand } from 'src/tabsets/commands/AddTabToTabsetCommand'
@@ -38,11 +39,11 @@ export class MarkdownFileAddUrlToTabsetHandler implements AddUrlToTabsetHandler
3839
chromeTab: chrome.tabs.Tab,
3940
ts: Tabset,
4041
folder?: Tabset,
41-
additionalData: object = {},
42+
additionalData: AddUrlToTabsetHandlerAdditionalData = {},
4243
): Promise<ExecutionResult<any>> {
4344
console.log('saving...', chromeTab.id, additionalData)
4445
try {
45-
const useForLinks = additionalData['useForLinks' as keyof object] as boolean
46+
const useForLinks = additionalData.data!['useForLinks' as keyof object] as boolean
4647
const newTab = new Tab(uid(), chromeTab)
4748
await useCommandExecutor().execute(new AddTabToTabsetCommand(newTab, ts, ts.folderActive))
4849
if (useForLinks) {
@@ -61,7 +62,7 @@ export class MarkdownFileAddUrlToTabsetHandler implements AddUrlToTabsetHandler
6162
updateInTabset(
6263
chromeTab: chrome.tabs.Tab,
6364
ts: Tabset,
64-
additionalData: object = {},
65+
additionalData: AddUrlToTabsetHandlerAdditionalData = {},
6566
): Promise<ExecutionResult<any>> {
6667
throw new Error('not implemented K')
6768
}

actionHandling/handler/NoopAddUrlToTabsetHandler.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { DialogChainObject } from 'quasar'
22
import { ExecutionResult } from 'src/core/domain/ExecutionResult'
33
import {
44
AddUrlToTabsetHandler,
5+
AddUrlToTabsetHandlerAdditionalData,
56
ButtonActions,
67
} from 'src/tabsets/actionHandling/AddUrlToTabsetHandler'
78
import { ActionContext } from 'src/tabsets/actionHandling/model/ActionContext'
@@ -29,15 +30,15 @@ export class NoopAddUrlToTabsetHandler implements AddUrlToTabsetHandler {
2930
chromeTab: chrome.tabs.Tab,
3031
ts: Tabset,
3132
folder?: Tabset,
32-
additionalData: object = {},
33+
additionalData: AddUrlToTabsetHandlerAdditionalData = {},
3334
): Promise<ExecutionResult<any>> {
3435
return Promise.reject('noop AddurlToTabsetHandler')
3536
}
3637

3738
updateInTabset(
3839
chromeTab: chrome.tabs.Tab,
3940
ts: Tabset,
40-
additionalData: object = {},
41+
additionalData: AddUrlToTabsetHandlerAdditionalData = {},
4142
): Promise<ExecutionResult<any>> {
4243
return Promise.reject('noop AddurlToTabsetHandler')
4344
}

actionHandling/handler/RssFolderHandler.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
11
import { parseFeed } from '@rowanmanning/feed-parser'
2+
import { FeedCategory } from '@rowanmanning/feed-parser/lib/feed/base'
23
import * as cheerio from 'cheerio'
34
import { DialogChainObject, QVueGlobals, uid } from 'quasar'
45
import BrowserApi from 'src/app/BrowserApi'
56
import { ExecutionResult } from 'src/core/domain/ExecutionResult'
67
import { useCommandExecutor } from 'src/core/services/CommandExecutor'
8+
import { useUtils } from 'src/core/services/Utils'
79
import {
810
AddUrlToTabsetHandler,
11+
AddUrlToTabsetHandlerAdditionalData,
912
ButtonActions,
1013
} from 'src/tabsets/actionHandling/AddUrlToTabsetHandler'
1114
import { ActionContext } from 'src/tabsets/actionHandling/model/ActionContext'
1215
import { AddTabToTabsetCommand } from 'src/tabsets/commands/AddTabToTabsetCommand'
1316
import { Tab, UrlExtension } from 'src/tabsets/models/Tab'
1417
import { Tabset } from 'src/tabsets/models/Tabset'
1518

19+
const { sanitizeAsPlainText } = useUtils()
20+
1621
export class RssFolderHandler implements AddUrlToTabsetHandler {
1722
constructor(public $q: QVueGlobals | undefined) {}
1823

@@ -36,7 +41,7 @@ export class RssFolderHandler implements AddUrlToTabsetHandler {
3641
chromeTab: chrome.tabs.Tab,
3742
ts: Tabset,
3843
folder?: Tabset,
39-
additionalData: object = {},
44+
additionalData: AddUrlToTabsetHandlerAdditionalData = {},
4045
): Promise<ExecutionResult<any>> {
4146
console.log('loading...', chromeTab.id, additionalData)
4247
if (!folder || !folder.dynamicUrl) {
@@ -62,24 +67,20 @@ export class RssFolderHandler implements AddUrlToTabsetHandler {
6267
// items: Array.from(items)
6368
// }
6469
//console.log("items", items)
65-
Array.from(feed.items).forEach((item: any) => {
70+
const itemsArray = Array.from(feed.items).splice(0, 20)
71+
itemsArray.forEach((item: any) => {
6672
console.log('item: ', item)
6773
//const title = additionalData['feedname'] || 'no title' //this.getFromItem(item, "title", "no title")
6874
const title = item.title
6975
const url = item.url
7076

71-
if (!item.content) {
72-
console.log('skipping item as content is missing', item)
73-
return
74-
}
75-
76-
const desc = item.description || ''
77+
const desc = sanitizeAsPlainText(item.description) || ''
7778
const published = item.published //item.querySelector("pubDate")?.innerHTML || undefined
7879
//const enclosure: Element | null = item.querySelector("enclosure")
7980
let img = item.image?.url //enclosure ? enclosure.getAttribute("url") : undefined
8081
console.log('img', img)
8182
if (!img) {
82-
const snippet = item.content
83+
const snippet = item.content || item.description || 'no content'
8384
console.log('snippet', snippet)
8485
var $ = cheerio.load(snippet)
8586
img = $('img').attr('src')
@@ -90,6 +91,7 @@ export class RssFolderHandler implements AddUrlToTabsetHandler {
9091
newTab.description = desc
9192
newTab.image = img
9293
newTab.extension = UrlExtension.RSS
94+
newTab.tags = item.categories.map((c: FeedCategory) => c.term)
9395
if (published) {
9496
newTab.created = new Date(published).getTime()
9597
}
@@ -103,7 +105,7 @@ export class RssFolderHandler implements AddUrlToTabsetHandler {
103105
updateInTabset(
104106
chromeTab: chrome.tabs.Tab,
105107
ts: Tabset,
106-
additionalData: object = {},
108+
additionalData: AddUrlToTabsetHandlerAdditionalData = {},
107109
): Promise<ExecutionResult<any>> {
108110
throw new Error('not implemented L')
109111
}

0 commit comments

Comments
 (0)