fix(web/radial): go back to correct more page when going back from sub

This commit is contained in:
Luke
2023-02-25 14:14:31 +01:00
parent b3b49b1cbd
commit 709d512422
2 changed files with 26 additions and 14 deletions

View File

@@ -24,6 +24,9 @@ local menuHistory = {}
---@type RadialMenuProps? ---@type RadialMenuProps?
local currentRadial = nil local currentRadial = nil
---@type number | nil
local menuPage = nil
---Open a the global radial menu or a registered radial submenu with the given id. ---Open a the global radial menu or a registered radial submenu with the given id.
---@param id string? ---@param id string?
local function showRadial(id) local function showRadial(id)
@@ -113,7 +116,7 @@ function lib.hideRadial()
SendNUIMessage({ SendNUIMessage({
action = 'openRadialMenu', action = 'openRadialMenu',
data = false data = menuPage or false
}) })
SetNuiFocus(false, false) SetNuiFocus(false, false)
@@ -229,9 +232,12 @@ lib.addKeybind({
defaultKey = 'z', defaultKey = 'z',
onPressed = function() onPressed = function()
if isOpen then if isOpen then
menuPage = 1
return lib.hideRadial() return lib.hideRadial()
end end
menuPage = nil
if #menuItems == 0 or IsNuiFocused() or IsPauseMenuActive() then return end if #menuItems == 0 or IsNuiFocused() or IsPauseMenuActive() then return end
isOpen = true isOpen = true

View File

@@ -84,11 +84,19 @@ const RadialMenu: React.FC = () => {
setMenuItems(items); setMenuItems(items);
}, [menu.items, menu.page]); }, [menu.items, menu.page]);
useNuiEvent('openRadialMenu', async (data: { items: RadialMenuItem[]; sub?: boolean } | false) => { useNuiEvent(
if (!data) return setVisible(false); 'openRadialMenu',
setMenu({ ...data, page: 1 }); async (data: { items: RadialMenuItem[]; sub?: boolean; page?: number } | false | number) => {
setVisible(true); if (!data || typeof data === 'number') {
}); setVisible(false);
if (typeof data === 'number') setMenu((ps) => ({ ...ps, page: data }));
return;
}
// data.page currently unused but might need later?
setMenu((state) => ({ ...data, page: data.page || state.page }));
setVisible(true);
}
);
useNuiEvent('refreshItems', (data: RadialMenuItem[]) => { useNuiEvent('refreshItems', (data: RadialMenuItem[]) => {
setMenu({ ...menu, items: data }); setMenu({ ...menu, items: data });
@@ -99,8 +107,8 @@ const RadialMenu: React.FC = () => {
<Box <Box
className={classes.wrapper} className={classes.wrapper}
onContextMenu={async () => { onContextMenu={async () => {
if (menu.page > 1) await changePage(); if (menu.sub) fetchNui('radialBack');
else if (menu.sub) fetchNui('radialBack'); else if (menu.page > 1) await changePage();
}} }}
> >
<ScaleFade visible={visible}> <ScaleFade visible={visible}>
@@ -158,13 +166,11 @@ const RadialMenu: React.FC = () => {
<g <g
transform={`translate(175, 175)`} transform={`translate(175, 175)`}
onClick={async () => { onClick={async () => {
if (menu.page > 1) await changePage(); if (menu.sub) fetchNui('radialBack');
else if (menu.page > 1) await changePage();
else { else {
if (menu.sub) fetchNui('radialBack'); setVisible(false);
else { fetchNui('radialClose');
setVisible(false);
fetchNui('radialClose');
}
} }
}} }}
> >