You've already forked joplin
mirror of
https://github.com/laurent22/joplin.git
synced 2025-07-13 00:10:37 +02:00
Chore: Refactor EventManager to use stronger types (#10272)
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
/* eslint-disable multiline-comment-style */
|
||||
|
||||
import eventManager from '../../../eventManager';
|
||||
import eventManager, { FilterHandler } from '../../../eventManager';
|
||||
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
@ -9,13 +10,11 @@ import eventManager from '../../../eventManager';
|
||||
* so for now disable filters.
|
||||
*/
|
||||
export default class JoplinFilters {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
public async on(name: string, callback: Function) {
|
||||
public async on(name: string, callback: FilterHandler) {
|
||||
eventManager.filterOn(name, callback);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
public async off(name: string, callback: Function) {
|
||||
public async off(name: string, callback: FilterHandler) {
|
||||
eventManager.filterOff(name, callback);
|
||||
}
|
||||
}
|
||||
|
@ -44,9 +44,28 @@ interface ResourceChangeEvent {
|
||||
id: string;
|
||||
}
|
||||
|
||||
type ItemChangeHandler = (event: ItemChangeEvent)=> void;
|
||||
type SyncStartHandler = (event: SyncStartEvent)=> void;
|
||||
type ResourceChangeHandler = (event: ResourceChangeEvent)=> void;
|
||||
interface NoteContentChangeEvent {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- No plugin-api-accessible Note type defined.
|
||||
note: any;
|
||||
}
|
||||
|
||||
interface NoteSelectionChangeEvent {
|
||||
value: string[];
|
||||
}
|
||||
|
||||
interface NoteAlarmTriggerEvent {
|
||||
noteId: string;
|
||||
}
|
||||
|
||||
interface SyncCompleteEvent {
|
||||
withErrors: boolean;
|
||||
}
|
||||
|
||||
type WorkspaceEventHandler<EventType> = (event: EventType)=> void;
|
||||
|
||||
type ItemChangeHandler = WorkspaceEventHandler<ItemChangeEvent>;
|
||||
type SyncStartHandler = WorkspaceEventHandler<SyncStartEvent>;
|
||||
type ResourceChangeHandler = WorkspaceEventHandler<ResourceChangeEvent>;
|
||||
|
||||
/**
|
||||
* The workspace service provides access to all the parts of Joplin that
|
||||
@ -71,7 +90,7 @@ export default class JoplinWorkspace {
|
||||
* Called when a new note or notes are selected.
|
||||
*/
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
public async onNoteSelectionChange(callback: Function): Promise<Disposable> {
|
||||
public async onNoteSelectionChange(callback: WorkspaceEventHandler<NoteSelectionChangeEvent>): Promise<Disposable> {
|
||||
eventManager.appStateOn('selectedNoteIds', callback);
|
||||
|
||||
return {};
|
||||
@ -87,8 +106,7 @@ export default class JoplinWorkspace {
|
||||
* Called when the content of a note changes.
|
||||
* @deprecated Use `onNoteChange()` instead, which is reliably triggered whenever the note content, or any note property changes.
|
||||
*/
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
public async onNoteContentChange(callback: Function) {
|
||||
public async onNoteContentChange(callback: WorkspaceEventHandler<NoteContentChangeEvent>) {
|
||||
eventManager.on(EventName.NoteContentChange, callback);
|
||||
}
|
||||
|
||||
@ -121,8 +139,7 @@ export default class JoplinWorkspace {
|
||||
/**
|
||||
* Called when an alarm associated with a to-do is triggered.
|
||||
*/
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
public async onNoteAlarmTrigger(handler: Function): Promise<Disposable> {
|
||||
public async onNoteAlarmTrigger(handler: WorkspaceEventHandler<NoteAlarmTriggerEvent>): Promise<Disposable> {
|
||||
return makeListener(eventManager, EventName.NoteAlarmTrigger, handler);
|
||||
}
|
||||
|
||||
@ -136,8 +153,7 @@ export default class JoplinWorkspace {
|
||||
/**
|
||||
* Called when the synchronisation process has finished.
|
||||
*/
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
public async onSyncComplete(callback: Function): Promise<Disposable> {
|
||||
public async onSyncComplete(callback: WorkspaceEventHandler<SyncCompleteEvent>): Promise<Disposable> {
|
||||
return makeListener(eventManager, EventName.SyncComplete, callback);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user