1
0
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:
Henry Heino
2024-04-06 10:08:16 -07:00
committed by GitHub
parent 9713034f18
commit 58ca1a938b
7 changed files with 79 additions and 67 deletions

View File

@ -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);
}
}

View File

@ -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);
}