draggables, ipc stuff
This commit is contained in:
12
electron-ui/src/ipc/audio/channels.ts
Normal file
12
electron-ui/src/ipc/audio/channels.ts
Normal file
@ -0,0 +1,12 @@
|
||||
const AudioChannels = {
|
||||
LOAD_AUDIO_BUFFER: 'audio:loadAudioBuffer',
|
||||
TRIM_FILE: 'audio:trimFile',
|
||||
DELETE_FILE: 'audio:deleteFile',
|
||||
GET_COLLECTION_METADATA: 'audio:getCollectionMetadata',
|
||||
SET_COLLECTION_METADATA: 'audio:setCollectionMetadata',
|
||||
ADD_COLLECTION: 'audio:addCollection',
|
||||
REMOVE_COLLECTION: 'audio:removeCollection',
|
||||
GET_COLLECTIONS: 'audio:getCollections',
|
||||
} as const;
|
||||
|
||||
export default AudioChannels;
|
||||
18
electron-ui/src/ipc/audio/main.ts
Normal file
18
electron-ui/src/ipc/audio/main.ts
Normal file
@ -0,0 +1,18 @@
|
||||
import { ipcMain } from 'electron';
|
||||
import fs from 'fs';
|
||||
import AudioChannels from './channels';
|
||||
import { LoadAudioBufferArgs, LoadAudioBufferResult } from './types';
|
||||
|
||||
export default function registerAudioIpcHandlers() {
|
||||
ipcMain.handle(
|
||||
AudioChannels.LOAD_AUDIO_BUFFER,
|
||||
async (_, args: LoadAudioBufferArgs): Promise<LoadAudioBufferResult> => {
|
||||
try {
|
||||
const buffer = await fs.promises.readFile(args.filePath);
|
||||
return { buffer };
|
||||
} catch (err: any) {
|
||||
return { error: err.message };
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
32
electron-ui/src/ipc/audio/types.ts
Normal file
32
electron-ui/src/ipc/audio/types.ts
Normal file
@ -0,0 +1,32 @@
|
||||
export interface LoadAudioBufferArgs {
|
||||
filePath: string;
|
||||
}
|
||||
|
||||
export interface LoadAudioBufferResult {
|
||||
buffer?: Buffer;
|
||||
error?: string;
|
||||
}
|
||||
|
||||
export enum PlaybackType {
|
||||
PlayStop = 'playStop',
|
||||
PlayOverlap = 'playOverlap',
|
||||
}
|
||||
|
||||
export interface ClipMetadata {
|
||||
name: string;
|
||||
filePath: string;
|
||||
volume: number;
|
||||
startTime: number | undefined;
|
||||
endTime: number | undefined;
|
||||
playbackType: PlaybackType;
|
||||
}
|
||||
|
||||
export interface CollectionMetadata {
|
||||
name: string;
|
||||
clips: ClipMetadata[];
|
||||
}
|
||||
|
||||
export interface MetadataFile {
|
||||
uncategorizedClips: ClipMetadata[];
|
||||
collections: CollectionMetadata[];
|
||||
}
|
||||
Reference in New Issue
Block a user