mirror of
https://github.com/logseq/logseq.git
synced 2026-05-18 18:02:35 +00:00
* refactor(shortcuts): simplify to build handler category map * fix(shortcuts): redundant re-mount for the pdf shortcuts * refactor(shortcuts): simplify names * refactor(shortcuts): simplify user keynames * fix(shortcuts): persist inited state for dev mode * refactor(shortcuts): simplify handlers installation * refactor(shortcuts): optimize shortcuts mixin * fix: incorrect function ref * refactor(shortcuts): shortcuts mixin * fix(shortcuts): incorrect initialization for the pdf shortcut handler * refactor(shortcuts): optimize binding keys map * refactor(shortcuts): optimize shortcuts conflicts detection * refactor(shortcuts): optimize binding ids map * refactor(shortcuts): WIP the new keymap page * refactor(shortcuts): WIP the new keymap related components * feat(shortcuts): WIP fuzzy search for the shortcuts * refactor(shortcuts): WIP the new keymap related components * feat(shortcuts): WIP the new shorcuts record component * feat(shortcuts): WIP the new shorcuts record component * feat(shortcuts): WIP check shortcut conflicts component * feat(shortcuts): WIP the new shorcuts record component * refactor(shortcuts): WIP persist user shortcuts * fix(shortcuts): detection for the conflicts * feat(shortcuts): WIP detection for the conflicts * feat(shortcuts): WIP persist user shortcuts * refactor(shortcuts): add unit tests * enhance(ux): search pane for the shortcuts * feat(shortcuts): remove the existent shortcut item * feat(shortcuts): fold/unfold categories * feat(shortcuts): add shortcuts filters * enhance(shortcuts): resove binding map description * enhance(shortcuts): reactive category shortcuts * enhance(shortcuts): register api for plugins * feat(shortcuts): add keyboard shortcuts filters * feat(shortcuts): impl keyboard shortcuts filters * enhance(shortcuts): leader keys for the shortcut conflicts detection * enhance(tests): leader keys conflicts for the shortucts * enhance(shortcuts): parse conflicts from current binding list * enhance(ui): polish the component of the restore shortcut action * enhance(shortcuts): get conflicts with specific handler id * enhance(shortcuts): polish the confilts component * enhance(shortcuts): polish keymap conflicts component * enhance(shortcuts): ux for handling shorcuts conflicts * enhance(ui): polish notifications cp * fix(shortcuts): remove reduplicate shortcuts for category * enhance(shortcuts): polish ux for handling shorcuts conflicts * chore(plugin): build libs core * enhance(plugin): support shortcut command lifecycle hooks * enhance(plugin): support shortcut command lifecycle hooks * chore(plugin): build libs core * enhance(shortcuts): support shortcuts saved to global config * enhance(shortcuts): support shortcuts be saved to global config * feat(shortcuts): support keymap manager to global settings * enhance(shortcuts): shortcut to open keymap settings * fix(units): tests * fix: lints * enhance(shortcuts): unlisten all shortcuts * fix: lints * fix: lints * fix(units): tests * fix(units): tests * fix(units): tests * enhance(shortcuts): unlisten/listen all shortcuts * enhance(shortcuts): polish conflicts component * fix(ui): modal size * fix(ui): modal panel container * enhance(shortcuts): i18n * enhance(ui): layout of the shortcuts recorder component * fix(lint): i18n * enhance(ui): keyboard icon for the keymap settings tab * fix(shortcuts): incorrect filters for the collaspsed shortcuts * enhance(ui): polish details for the keymap settings * enhance(ui): polish details for the keymap settings * fix(shortcuts): get shortcut description error when the associated handler-id not exist * fix(ui): the shortcut disabled label overlaps with section headers. * refactor(shortcuts): names * enhance(ui): filter icons
102 lines
2.1 KiB
TypeScript
102 lines
2.1 KiB
TypeScript
import { LSPluginUser } from '../LSPlugin.user'
|
|
|
|
export interface IAsyncStorage {
|
|
getItem(key: string): Promise<string | undefined>
|
|
|
|
setItem(key: string, value: string): Promise<void>
|
|
|
|
removeItem(key: string): Promise<void>
|
|
|
|
hasItem(key: string): Promise<boolean>
|
|
|
|
allKeys(): Promise<Array<string>>
|
|
|
|
clear(): Promise<void>
|
|
}
|
|
|
|
/**
|
|
* A storage based on local files under specific context
|
|
*/
|
|
class LSPluginFileStorage implements IAsyncStorage {
|
|
/**
|
|
* @param ctx
|
|
* @param opts
|
|
*/
|
|
constructor(
|
|
private ctx: LSPluginUser,
|
|
private opts?: {
|
|
assets: boolean
|
|
}
|
|
) {}
|
|
|
|
/**
|
|
* plugin id
|
|
*/
|
|
get ctxId() {
|
|
return this.ctx.baseInfo.id
|
|
}
|
|
|
|
/**
|
|
* @param key A string as file name that support nested directory
|
|
* @param value Storage value
|
|
*/
|
|
setItem(key: string, value: string | any): Promise<void> {
|
|
return this.ctx.caller.callAsync(`api:call`, {
|
|
method: 'write-plugin-storage-file',
|
|
args: [this.ctxId, key, value, this.opts?.assets],
|
|
})
|
|
}
|
|
|
|
/**
|
|
* @param key
|
|
*/
|
|
getItem(key: string): Promise<string | any> {
|
|
return this.ctx.caller.callAsync(`api:call`, {
|
|
method: 'read-plugin-storage-file',
|
|
args: [this.ctxId, key, this.opts?.assets],
|
|
})
|
|
}
|
|
|
|
/**
|
|
* @param key
|
|
*/
|
|
removeItem(key: string): Promise<void> {
|
|
return this.ctx.caller.call(`api:call`, {
|
|
method: 'unlink-plugin-storage-file',
|
|
args: [this.ctxId, key, this.opts?.assets],
|
|
})
|
|
}
|
|
|
|
/**
|
|
* Get all path file keys
|
|
*/
|
|
allKeys(): Promise<Array<string>> {
|
|
return this.ctx.caller.callAsync(`api:call`, {
|
|
method: 'list-plugin-storage-files',
|
|
args: [this.ctxId, this.opts?.assets],
|
|
})
|
|
}
|
|
|
|
/**
|
|
* Clears the storage
|
|
*/
|
|
clear(): Promise<void> {
|
|
return this.ctx.caller.call(`api:call`, {
|
|
method: 'clear-plugin-storage-files',
|
|
args: [this.ctxId, this.opts?.assets],
|
|
})
|
|
}
|
|
|
|
/**
|
|
* @param key
|
|
*/
|
|
hasItem(key: string): Promise<boolean> {
|
|
return this.ctx.caller.callAsync(`api:call`, {
|
|
method: 'exist-plugin-storage-file',
|
|
args: [this.ctxId, key, this.opts?.assets],
|
|
})
|
|
}
|
|
}
|
|
|
|
export { LSPluginFileStorage }
|