Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd16e475

Browse files
committed
[Fix]:#1928 folder edit/create issues
1 parentf4f6941 commitd16e475

File tree

3 files changed

+38
-30
lines changed

3 files changed

+38
-30
lines changed

‎client/packages/lowcoder/src/pages/ApplicationV2/HomeResCard.tsx‎

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,6 @@ export const StyledTypographyText = styled(AntdTypographyText)`
143143
&:hover {
144144
color: #315efb;
145145
}
146-
}
147146
`;
148147

149148
constMONTH_MILLIS=30*24*60*60*1000;
@@ -244,11 +243,15 @@ export function HomeResCard(props: { res: HomeRes; onMove: (res: HomeRes) => voi
244243
constIcon=resInfo.icon;
245244

246245
consthandleModalOk=(values:any)=>{
247-
res.type===HomeResTypeEnum.Folder&&
248-
dispatch(updateFolder({id:res.id,name:values.appName||res.name}))
249-
dispatch(
250-
updateAppMetaAction({applicationId:res.id,name:values.appName||res.name,folderId:folderId})
251-
);
246+
if(res.type===HomeResTypeEnum.Folder){
247+
// Update folder
248+
dispatch(updateFolder({id:res.id,name:values.appName||res.name}));
249+
}else{
250+
// Update application
251+
dispatch(
252+
updateAppMetaAction({applicationId:res.id,name:values.appName||res.name,folderId:folderId})
253+
);
254+
}
252255

253256
setDialogVisible(false);
254257
setTimeout(()=>{

‎client/packages/lowcoder/src/pages/ApplicationV2/HomeResOptions.tsx‎

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ import { AppTypeEnum } from "constants/applicationConstants";
1212
import{CopyModal}from"pages/common/copyModal";
1313
import{messageInstance}from"lowcoder-design/src/components/GlobalInstances";
1414
importApplicationApifrom"../../api/applicationApi";
15-
import{FolderApi}from"../../api/folderApi";
16-
import{ReduxActionTypes}from"constants/reduxActionConstants";
15+
import{deleteFolder}from"../../redux/reduxActions/folderActions";
1716

1817
constPopoverIcon=styled(PointIcon)`
1918
cursor: pointer;
@@ -120,27 +119,24 @@ export const HomeResOptions = (props: {
120119
type:HomeResInfo[res.type].name.toLowerCase(),
121120
name:<b>{res.name}</b>,
122121
}),
123-
onConfirm:async()=>{
124-
try{
125-
awaitFolderApi.deleteFolder({
122+
onConfirm:()=>{
123+
dispatch(deleteFolder(
124+
{
126125
folderId:res.id,
127126
parentFolderId:folderId||""
128-
});
129-
130-
// Update Redux state to remove deleted folder from dropdown
131-
dispatch({
132-
type:ReduxActionTypes.DELETE_FOLDER_SUCCESS,
133-
payload:{folderId:res.id,parentFolderId:folderId||""}
134-
});
135-
136-
messageInstance.success(trans("home.deleteSuccessMsg"));
137-
setTimeout(()=>{
138-
setModify(!modify);
139-
},200);
140-
}catch(error){
141-
console.error("Failed to delete folder:",error);
142-
messageInstance.error("Failed to delete folder");
143-
}
127+
},
128+
()=>{
129+
// Success callback
130+
messageInstance.success(trans("home.deleteSuccessMsg"));
131+
setTimeout(()=>{
132+
setModify(!modify);
133+
},200);
134+
},
135+
()=>{
136+
// Error callback
137+
messageInstance.error("Failed to delete folder");
138+
}
139+
));
144140
},
145141
confirmBtnType:"delete",
146142
okText:trans("delete"),

‎client/packages/lowcoder/src/pages/ApplicationV2/MoveToFolderModal.tsx‎

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import{HomeRes}from"./HomeLayout";
22
import{defaultasForm}from"antd/es/form";
3-
importReact,{useState}from"react";
3+
importReact,{useState,useEffect}from"react";
44
import{useDispatch,useSelector}from"react-redux";
55
import{useParams}from"react-router-dom";
66
import{
@@ -11,10 +11,10 @@ import {
1111
FormSelectItem,
1212
TacoButton,
1313
}from"lowcoder-design";
14-
import{moveToFolder}from"../../redux/reduxActions/folderActions";
14+
import{moveToFolder,fetchFolderElements}from"../../redux/reduxActions/folderActions";
1515
importstyledfrom"styled-components";
1616
import{trans}from"../../i18n";
17-
import{foldersSelector}from"../../redux/selectors/folderSelector";
17+
import{foldersSelector,isFetchingFolderElements}from"../../redux/selectors/folderSelector";
1818

1919
constMoveLabel=styled.div`
2020
font-size: 13px;
@@ -47,11 +47,20 @@ export const MoveToFolderModal = (props: { source?: HomeRes; onClose: () => void
4747
const[loading,setLoading]=useState<boolean>(false);
4848

4949
constfolders=useSelector(foldersSelector);
50+
constisFetching=useSelector(isFetchingFolderElements);
5051

5152
constdispatch=useDispatch();
5253

5354
const{ folderId}=useParams<{folderId:string}>();
5455

56+
// Fetch folders when modal opens to populate Redux state (only if not already loaded or fetching)
57+
useEffect(()=>{
58+
if(props.source&&folders.length===0&&!isFetching){
59+
// Dispatch the Redux action to fetch folders (empty folderId fetches all folders)
60+
dispatch(fetchFolderElements({}));
61+
}
62+
},[props.source,dispatch,folders.length,isFetching]);
63+
5564
return(
5665
<CustomModal
5766
open={!!props.source}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp