mirror of
https://github.com/usebruno/bruno.git
synced 2025-05-02 12:24:25 +02:00
feat(#1447): wip on hotkey for save environment
This commit is contained in:
parent
3c87c1df69
commit
d05a86252b
@ -2,6 +2,7 @@ import React, { useRef, forwardRef, useState } from 'react';
|
|||||||
import find from 'lodash/find';
|
import find from 'lodash/find';
|
||||||
import Dropdown from 'components/Dropdown';
|
import Dropdown from 'components/Dropdown';
|
||||||
import { selectEnvironment } from 'providers/ReduxStore/slices/collections/actions';
|
import { selectEnvironment } from 'providers/ReduxStore/slices/collections/actions';
|
||||||
|
import { updateEnvironmentSettingsModalVisibility } from 'providers/ReduxStore/slices/app';
|
||||||
import { IconSettings, IconCaretDown, IconDatabase, IconDatabaseOff } from '@tabler/icons';
|
import { IconSettings, IconCaretDown, IconDatabase, IconDatabaseOff } from '@tabler/icons';
|
||||||
import EnvironmentSettings from '../EnvironmentSettings';
|
import EnvironmentSettings from '../EnvironmentSettings';
|
||||||
import toast from 'react-hot-toast';
|
import toast from 'react-hot-toast';
|
||||||
@ -24,6 +25,16 @@ const EnvironmentSelector = ({ collection }) => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const handleSettingsIconClick = () => {
|
||||||
|
setOpenSettingsModal(true);
|
||||||
|
dispatch(updateEnvironmentSettingsModalVisibility(true));
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleModalClose = () => {
|
||||||
|
setOpenSettingsModal(false);
|
||||||
|
dispatch(updateEnvironmentSettingsModalVisibility(false));
|
||||||
|
};
|
||||||
|
|
||||||
const onDropdownCreate = (ref) => (dropdownTippyRef.current = ref);
|
const onDropdownCreate = (ref) => (dropdownTippyRef.current = ref);
|
||||||
|
|
||||||
const onSelect = (environment) => {
|
const onSelect = (environment) => {
|
||||||
@ -66,7 +77,7 @@ const EnvironmentSelector = ({ collection }) => {
|
|||||||
<IconDatabaseOff size={18} strokeWidth={1.5} />
|
<IconDatabaseOff size={18} strokeWidth={1.5} />
|
||||||
<span className="ml-2">No Environment</span>
|
<span className="ml-2">No Environment</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="dropdown-item border-top" onClick={() => setOpenSettingsModal(true)}>
|
<div className="dropdown-item border-top" onClick={handleSettingsIconClick}>
|
||||||
<div className="pr-2 text-gray-600">
|
<div className="pr-2 text-gray-600">
|
||||||
<IconSettings size={18} strokeWidth={1.5} />
|
<IconSettings size={18} strokeWidth={1.5} />
|
||||||
</div>
|
</div>
|
||||||
@ -74,7 +85,7 @@ const EnvironmentSelector = ({ collection }) => {
|
|||||||
</div>
|
</div>
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
</div>
|
</div>
|
||||||
{openSettingsModal && <EnvironmentSettings collection={collection} onClose={() => setOpenSettingsModal(false)} />}
|
{openSettingsModal && <EnvironmentSettings collection={collection} onClose={handleModalClose} />}
|
||||||
</StyledWrapper>
|
</StyledWrapper>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -18,6 +18,7 @@ export const HotkeysProvider = (props) => {
|
|||||||
const tabs = useSelector((state) => state.tabs.tabs);
|
const tabs = useSelector((state) => state.tabs.tabs);
|
||||||
const collections = useSelector((state) => state.collections.collections);
|
const collections = useSelector((state) => state.collections.collections);
|
||||||
const activeTabUid = useSelector((state) => state.tabs.activeTabUid);
|
const activeTabUid = useSelector((state) => state.tabs.activeTabUid);
|
||||||
|
const isEnvironmentSettingsModalOpen = useSelector((state) => state.app.isEnvironmentSettingsModalOpen);
|
||||||
const [showSaveRequestModal, setShowSaveRequestModal] = useState(false);
|
const [showSaveRequestModal, setShowSaveRequestModal] = useState(false);
|
||||||
const [showEnvSettingsModal, setShowEnvSettingsModal] = useState(false);
|
const [showEnvSettingsModal, setShowEnvSettingsModal] = useState(false);
|
||||||
const [showNewRequestModal, setShowNewRequestModal] = useState(false);
|
const [showNewRequestModal, setShowNewRequestModal] = useState(false);
|
||||||
@ -43,16 +44,20 @@ export const HotkeysProvider = (props) => {
|
|||||||
// save hotkey
|
// save hotkey
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
Mousetrap.bind(['command+s', 'ctrl+s'], (e) => {
|
Mousetrap.bind(['command+s', 'ctrl+s'], (e) => {
|
||||||
const activeTab = find(tabs, (t) => t.uid === activeTabUid);
|
if (isEnvironmentSettingsModalOpen) {
|
||||||
if (activeTab) {
|
console.log('todo: save environment settings');
|
||||||
const collection = findCollectionByUid(collections, activeTab.collectionUid);
|
} else {
|
||||||
if (collection) {
|
const activeTab = find(tabs, (t) => t.uid === activeTabUid);
|
||||||
const item = findItemInCollection(collection, activeTab.uid);
|
if (activeTab) {
|
||||||
if (item && item.uid) {
|
const collection = findCollectionByUid(collections, activeTab.collectionUid);
|
||||||
dispatch(saveRequest(activeTab.uid, activeTab.collectionUid));
|
if (collection) {
|
||||||
} else {
|
const item = findItemInCollection(collection, activeTab.uid);
|
||||||
// todo: when ephermal requests go live
|
if (item && item.uid) {
|
||||||
// setShowSaveRequestModal(true);
|
dispatch(saveRequest(activeTab.uid, activeTab.collectionUid));
|
||||||
|
} else {
|
||||||
|
// todo: when ephermal requests go live
|
||||||
|
// setShowSaveRequestModal(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -63,7 +68,7 @@ export const HotkeysProvider = (props) => {
|
|||||||
return () => {
|
return () => {
|
||||||
Mousetrap.unbind(['command+s', 'ctrl+s']);
|
Mousetrap.unbind(['command+s', 'ctrl+s']);
|
||||||
};
|
};
|
||||||
}, [activeTabUid, tabs, saveRequest, collections]);
|
}, [activeTabUid, tabs, saveRequest, collections, isEnvironmentSettingsModalOpen]);
|
||||||
|
|
||||||
// send request (ctrl/cmd + enter)
|
// send request (ctrl/cmd + enter)
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
@ -9,6 +9,7 @@ const initialState = {
|
|||||||
screenWidth: 500,
|
screenWidth: 500,
|
||||||
showHomePage: false,
|
showHomePage: false,
|
||||||
showPreferences: false,
|
showPreferences: false,
|
||||||
|
isEnvironmentSettingsModalOpen: false,
|
||||||
preferences: {
|
preferences: {
|
||||||
request: {
|
request: {
|
||||||
sslVerification: true,
|
sslVerification: true,
|
||||||
@ -42,6 +43,9 @@ export const appSlice = createSlice({
|
|||||||
updateIsDragging: (state, action) => {
|
updateIsDragging: (state, action) => {
|
||||||
state.isDragging = action.payload.isDragging;
|
state.isDragging = action.payload.isDragging;
|
||||||
},
|
},
|
||||||
|
updateEnvironmentSettingsModalVisibility: (state, action) => {
|
||||||
|
state.isEnvironmentSettingsModalOpen = action.payload;
|
||||||
|
},
|
||||||
showHomePage: (state) => {
|
showHomePage: (state) => {
|
||||||
state.showHomePage = true;
|
state.showHomePage = true;
|
||||||
},
|
},
|
||||||
@ -74,6 +78,7 @@ export const {
|
|||||||
refreshScreenWidth,
|
refreshScreenWidth,
|
||||||
updateLeftSidebarWidth,
|
updateLeftSidebarWidth,
|
||||||
updateIsDragging,
|
updateIsDragging,
|
||||||
|
updateEnvironmentSettingsModalVisibility,
|
||||||
showHomePage,
|
showHomePage,
|
||||||
hideHomePage,
|
hideHomePage,
|
||||||
showPreferences,
|
showPreferences,
|
||||||
|
Loading…
Reference in New Issue
Block a user