Skip to content

Commit d16e475

Browse files
committed
[Fix]: #1928 folder edit/create issues
1 parent f4f6941 commit d16e475

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
const MONTH_MILLIS = 30 * 24 * 60 * 60 * 1000;
@@ -244,11 +243,15 @@ export function HomeResCard(props: { res: HomeRes; onMove: (res: HomeRes) => voi
244243
const Icon = resInfo.icon;
245244

246245
const handleModalOk = (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
import ApplicationApi from "../../api/applicationApi";
15-
import { FolderApi } from "../../api/folderApi";
16-
import { ReduxActionTypes } from "constants/reduxActionConstants";
15+
import { deleteFolder } from "../../redux/reduxActions/folderActions";
1716

1817
const PopoverIcon = 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-
await FolderApi.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 { default as Form } from "antd/es/form";
3-
import React, { useState } from "react";
3+
import React, { 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
import styled from "styled-components";
1616
import { trans } from "../../i18n";
17-
import { foldersSelector } from "../../redux/selectors/folderSelector";
17+
import { foldersSelector, isFetchingFolderElements } from "../../redux/selectors/folderSelector";
1818

1919
const MoveLabel = 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
const folders = useSelector(foldersSelector);
50+
const isFetching = useSelector(isFetchingFolderElements);
5051

5152
const dispatch = 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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy