feat(#1447): wip on hotkey for save environment

This commit is contained in:
Anoop M D 2024-02-13 17:58:10 +05:30
parent 3c87c1df69
commit d05a86252b
3 changed files with 34 additions and 13 deletions

View File

@ -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>
); );
}; };

View File

@ -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(() => {

View File

@ -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,