mirror of
https://github.com/usebruno/bruno.git
synced 2025-06-25 14:31:44 +02:00
feat: ctrl+enter triggers send
This commit is contained in:
parent
a79593f951
commit
ce02906070
@ -1,21 +1,22 @@
|
|||||||
import React, { useEffect } from 'react';
|
import React, { useEffect } from 'react';
|
||||||
import find from 'lodash/find';
|
import find from 'lodash/find';
|
||||||
import Mousetrap from 'mousetrap';
|
import Mousetrap from 'mousetrap';
|
||||||
import { saveRequest } from 'providers/ReduxStore/slices/collections';
|
|
||||||
import { requestSaved } from 'providers/ReduxStore/slices/tabs';
|
|
||||||
import { useSelector, useDispatch } from 'react-redux';
|
import { useSelector, useDispatch } from 'react-redux';
|
||||||
|
import { saveRequest, sendRequest } from 'providers/ReduxStore/slices/collections';
|
||||||
|
import { requestSaved } from 'providers/ReduxStore/slices/tabs';
|
||||||
|
import { findCollectionByUid, findItemInCollection } from 'utils/collections';
|
||||||
|
|
||||||
export const HotkeysContext = React.createContext();
|
export const HotkeysContext = React.createContext();
|
||||||
|
|
||||||
export const HotkeysProvider = props => {
|
export const HotkeysProvider = props => {
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
const tabs = useSelector((state) => state.tabs.tabs);
|
const tabs = useSelector((state) => state.tabs.tabs);
|
||||||
|
const collections = useSelector((state) => state.collections.collections);
|
||||||
const activeTabUid = useSelector((state) => state.tabs.activeTabUid);
|
const activeTabUid = useSelector((state) => state.tabs.activeTabUid);
|
||||||
|
|
||||||
|
// save hotkey
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
Mousetrap.bind(['command+s', 'ctrl+s'], (e) => {
|
Mousetrap.bind(['command+s', 'ctrl+s'], (e) => {
|
||||||
console.log("Save hotkey");
|
|
||||||
|
|
||||||
if(activeTabUid) {
|
if(activeTabUid) {
|
||||||
const activeTab = find(tabs, (t) => t.uid === activeTabUid);
|
const activeTab = find(tabs, (t) => t.uid === activeTabUid);
|
||||||
if(activeTab) {
|
if(activeTab) {
|
||||||
@ -35,6 +36,31 @@ export const HotkeysProvider = props => {
|
|||||||
};
|
};
|
||||||
}, [activeTabUid, tabs, saveRequest, requestSaved]);
|
}, [activeTabUid, tabs, saveRequest, requestSaved]);
|
||||||
|
|
||||||
|
// send request (ctrl/cmd + enter)
|
||||||
|
useEffect(() => {
|
||||||
|
Mousetrap.bind(['ctrl+command', 'ctrl+enter'], (e) => {
|
||||||
|
if(activeTabUid) {
|
||||||
|
const activeTab = find(tabs, (t) => t.uid === activeTabUid);
|
||||||
|
if(activeTab) {
|
||||||
|
const collection = findCollectionByUid(collections, activeTab.collectionUid);
|
||||||
|
|
||||||
|
if(collection) {
|
||||||
|
const item = findItemInCollection(collection, activeTab.uid);
|
||||||
|
if(item) {
|
||||||
|
dispatch(sendRequest(item, collection.uid));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false; // this stops the event bubbling
|
||||||
|
});
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
Mousetrap.unbind(['command+s', 'ctrl+s']);
|
||||||
|
};
|
||||||
|
}, [activeTabUid, tabs, saveRequest, requestSaved, collections]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<HotkeysContext.Provider {...props} value='hotkey'>
|
<HotkeysContext.Provider {...props} value='hotkey'>
|
||||||
{props.children}
|
{props.children}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user