mirror of
https://github.com/usebruno/bruno.git
synced 2025-08-03 14:18:49 +02:00
157 lines
4.7 KiB
JavaScript
157 lines
4.7 KiB
JavaScript
import { useEffect } from 'react';
|
|
import { useDispatch } from 'react-redux';
|
|
import {
|
|
collectionAddDirectoryEvent,
|
|
collectionAddFileEvent,
|
|
collectionChangeFileEvent,
|
|
collectionUnlinkFileEvent,
|
|
collectionUnlinkDirectoryEvent,
|
|
collectionUnlinkEnvFileEvent,
|
|
scriptEnvironmentUpdateEvent,
|
|
processEnvUpdateEvent,
|
|
collectionRenamedEvent,
|
|
runRequestEvent,
|
|
runFolderEvent,
|
|
brunoConfigUpdateEvent
|
|
} from 'providers/ReduxStore/slices/collections';
|
|
import { showPreferences, updatePreferences } from 'providers/ReduxStore/slices/app';
|
|
import toast from 'react-hot-toast';
|
|
import { openCollectionEvent, collectionAddEnvFileEvent } from 'providers/ReduxStore/slices/collections/actions';
|
|
import { isElectron } from 'utils/common/platform';
|
|
|
|
const useIpcEvents = () => {
|
|
const dispatch = useDispatch();
|
|
|
|
useEffect(() => {
|
|
if (!isElectron()) {
|
|
return () => {};
|
|
}
|
|
|
|
const { ipcRenderer } = window;
|
|
|
|
const _collectionTreeUpdated = (type, val) => {
|
|
if (window.__IS_DEV__) {
|
|
console.log(type);
|
|
console.log(val);
|
|
}
|
|
if (type === 'addDir') {
|
|
dispatch(
|
|
collectionAddDirectoryEvent({
|
|
dir: val
|
|
})
|
|
);
|
|
}
|
|
if (type === 'addFile') {
|
|
dispatch(
|
|
collectionAddFileEvent({
|
|
file: val
|
|
})
|
|
);
|
|
}
|
|
if (type === 'change') {
|
|
dispatch(
|
|
collectionChangeFileEvent({
|
|
file: val
|
|
})
|
|
);
|
|
}
|
|
if (type === 'unlink') {
|
|
setTimeout(() => {
|
|
dispatch(
|
|
collectionUnlinkFileEvent({
|
|
file: val
|
|
})
|
|
);
|
|
}, 100);
|
|
}
|
|
if (type === 'unlinkDir') {
|
|
dispatch(
|
|
collectionUnlinkDirectoryEvent({
|
|
directory: val
|
|
})
|
|
);
|
|
}
|
|
if (type === 'addEnvironmentFile') {
|
|
dispatch(collectionAddEnvFileEvent(val));
|
|
}
|
|
if (type === 'unlinkEnvironmentFile') {
|
|
dispatch(collectionUnlinkEnvFileEvent(val));
|
|
}
|
|
};
|
|
|
|
ipcRenderer.invoke('renderer:ready');
|
|
const removeCollectionTreeUpdateListener = ipcRenderer.on('main:collection-tree-updated', _collectionTreeUpdated);
|
|
|
|
const removeOpenCollectionListener = ipcRenderer.on('main:collection-opened', (pathname, uid, brunoConfig) => {
|
|
dispatch(openCollectionEvent(uid, pathname, brunoConfig));
|
|
});
|
|
|
|
const removeCollectionAlreadyOpenedListener = ipcRenderer.on('main:collection-already-opened', (pathname) => {
|
|
toast.success('Collection is already opened');
|
|
});
|
|
|
|
const removeDisplayErrorListener = ipcRenderer.on('main:display-error', (error) => {
|
|
if (typeof error === 'string') {
|
|
return toast.error(error || 'Something went wrong!');
|
|
}
|
|
if (typeof message === 'object') {
|
|
return toast.error(error.message || 'Something went wrong!');
|
|
}
|
|
});
|
|
|
|
const removeScriptEnvUpdateListener = ipcRenderer.on('main:script-environment-update', (val) => {
|
|
dispatch(scriptEnvironmentUpdateEvent(val));
|
|
});
|
|
|
|
const removeCollectionRenamedListener = ipcRenderer.on('main:collection-renamed', (val) => {
|
|
dispatch(collectionRenamedEvent(val));
|
|
});
|
|
|
|
const removeRunFolderEventListener = ipcRenderer.on('main:run-folder-event', (val) => {
|
|
dispatch(runFolderEvent(val));
|
|
});
|
|
|
|
const removeRunRequestEventListener = ipcRenderer.on('main:run-request-event', (val) => {
|
|
dispatch(runRequestEvent(val));
|
|
});
|
|
|
|
const removeProcessEnvUpdatesListener = ipcRenderer.on('main:process-env-update', (val) => {
|
|
dispatch(processEnvUpdateEvent(val));
|
|
});
|
|
|
|
const removeConsoleLogListener = ipcRenderer.on('main:console-log', (val) => {
|
|
console[val.type](...val.args);
|
|
});
|
|
|
|
const removeConfigUpdatesListener = ipcRenderer.on('main:bruno-config-update', (val) =>
|
|
dispatch(brunoConfigUpdateEvent(val))
|
|
);
|
|
|
|
const showPreferencesListener = ipcRenderer.on('main:open-preferences', () => {
|
|
dispatch(showPreferences(true));
|
|
});
|
|
|
|
const removePreferencesUpdatesListener = ipcRenderer.on('main:load-preferences', (val) => {
|
|
dispatch(updatePreferences(val));
|
|
});
|
|
|
|
return () => {
|
|
removeCollectionTreeUpdateListener();
|
|
removeOpenCollectionListener();
|
|
removeCollectionAlreadyOpenedListener();
|
|
removeDisplayErrorListener();
|
|
removeScriptEnvUpdateListener();
|
|
removeCollectionRenamedListener();
|
|
removeRunFolderEventListener();
|
|
removeRunRequestEventListener();
|
|
removeProcessEnvUpdatesListener();
|
|
removeConsoleLogListener();
|
|
removeConfigUpdatesListener();
|
|
showPreferencesListener();
|
|
removePreferencesUpdatesListener();
|
|
};
|
|
}, [isElectron]);
|
|
};
|
|
|
|
export default useIpcEvents;
|