Skip to content

Commit

Permalink
fix: 录音插件升级
Browse files Browse the repository at this point in the history
  • Loading branch information
027xiguapi committed Jan 10, 2024
1 parent 9d5fd0e commit a811595
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 40 deletions.
2 changes: 1 addition & 1 deletion packages/desktop/electron/win/recorderAudioWin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ function createRecorderAudioWin(): BrowserWindow {
},
});

// recorderAudioWin.webContents.openDevTools();
if (url) {
recorderAudioWin.loadURL(WEB_URL + 'recorderAudio.html');
// recorderAudioWin.webContents.openDevTools();
} else {
recorderAudioWin.loadFile(recorderAudioHtml);
}
Expand Down
4 changes: 2 additions & 2 deletions packages/desktop/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@pear-rec/desktop",
"version": "1.3.7",
"version": "1.3.9",
"main": "dist-electron/main/index.js",
"description": "pear-rec",
"author": "027xiguapi",
Expand Down Expand Up @@ -43,4 +43,4 @@
"engines": {
"node": "^14.18.0 || >=16.0.0"
}
}
}
4 changes: 4 additions & 0 deletions packages/web/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# @pear-rec/web

## 1.3.15

fix: 录音插件升级

## 1.3.14

feat: 桌面端联调
Expand Down
6 changes: 3 additions & 3 deletions packages/web/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@pear-rec/web",
"private": true,
"version": "1.3.14",
"version": "1.3.15",
"scripts": {
"dev": "vite",
"build": "rimraf dist && tsc && vite build",
Expand Down Expand Up @@ -32,7 +32,7 @@
"sass": "^1.69.5",
"tui-image-editor": "^3.15.3",
"viewerjs": "^1.11.3",
"wavesurfer.js": "^7.3.4"
"wavesurfer.js": "^7.6.2"
},
"devDependencies": {
"@types/file-saver": "^2.0.5",
Expand Down Expand Up @@ -68,4 +68,4 @@
"lib": "lib"
},
"description": ""
}
}
12 changes: 8 additions & 4 deletions packages/web/src/components/recorderAudio/plugins/base-plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ export type BasePluginEvents = {

export type GenericPlugin = BasePlugin<BasePluginEvents, unknown>;

/** Base class for wavesurfer plugins */
export class BasePlugin<
EventTypes extends BasePluginEvents,
Options,
Expand All @@ -15,22 +16,25 @@ export class BasePlugin<
protected subscriptions: (() => void)[] = [];
protected options: Options;

/** Create a plugin instance */
constructor(options: Options) {
super();
this.options = options;
}

onInit() {
// Overridden in plugin definition
/** Called after this.wavesurfer is available */
protected onInit() {
return;
}

init(wavesurfer: WaveSurfer) {
/** Do not call directly, only called by WavesSurfer internally */
public _init(wavesurfer: WaveSurfer) {
this.wavesurfer = wavesurfer;
this.onInit();
}

destroy() {
/** Destroy the plugin and unsubscribe from all events */
public destroy() {
this.emit('destroy');
this.subscriptions.forEach((unsubscribe) => unsubscribe());
}
Expand Down
55 changes: 25 additions & 30 deletions packages/web/src/components/recorderAudio/plugins/event-emitter.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
export type GeneralEventTypes = {
// the name of the event and the data it dispatches with
// e.g. 'entryCreated': [count: 1]
[EventName: string]: any[] // eslint-disable-line @typescript-eslint/no-explicit-any
[EventName: string]: unknown[] // eslint-disable-line @typescript-eslint/no-explicit-any
}

type EventListener<EventTypes extends GeneralEventTypes, EventName extends keyof EventTypes> = (
Expand All @@ -18,46 +18,41 @@ class EventEmitter<EventTypes extends GeneralEventTypes> {

/** Subscribe to an event. Returns an unsubscribe function. */
public on<EventName extends keyof EventTypes>(
eventName: EventName,
event: EventName,
listener: EventListener<EventTypes, EventName>,
options?: { once?: boolean },
): () => void {
if (!this.listeners[eventName]) {
this.listeners[eventName] = new Set()
if (!this.listeners[event]) {
this.listeners[event] = new Set()
}
this.listeners[eventName].add(listener)
this.listeners[event].add(listener)

return () => this.un(eventName, listener)
}

/** Subscribe to an event only once */
public once<EventName extends keyof EventTypes>(
eventName: EventName,
listener: EventListener<EventTypes, EventName>,
): () => void {
// The actual subscription
const unsubscribe = this.on(eventName, listener)

// Another subscription that will unsubscribe the actual subscription and itself after the first event
const unsubscribeOnce = this.on(eventName, () => {
unsubscribe()
unsubscribeOnce()
})
if (options?.once) {
const unsubscribeOnce = () => {
this.un(event, unsubscribeOnce)
this.un(event, listener)
}
this.on(event, unsubscribeOnce)
return unsubscribeOnce
}

return unsubscribe
return () => this.un(event, listener)
}

/** Unsubscribe from an event */
public un<EventName extends keyof EventTypes>(
eventName: EventName,
event: EventName,
listener: EventListener<EventTypes, EventName>,
): void {
if (this.listeners[eventName]) {
if (listener) {
this.listeners[eventName].delete(listener)
} else {
delete this.listeners[eventName]
}
}
this.listeners[event]?.delete(listener)
}

/** Subscribe to an event only once */
public once<EventName extends keyof EventTypes>(
event: EventName,
listener: EventListener<EventTypes, EventName>,
): () => void {
return this.on(event, listener, { once: true })
}

/** Clear all events */
Expand Down

0 comments on commit a811595

Please sign in to comment.