diff --git a/src/components/Layout/Content.js b/src/components/Layout/Content.js
index 36eb934..75d1f9e 100644
--- a/src/components/Layout/Content.js
+++ b/src/components/Layout/Content.js
@@ -14,8 +14,8 @@ import AppearancePage from "../../pages/settings/appearance/components/Appearanc
import ContentFooter from "./ContentFooter";
// containers
-import ResourcesContainer from "../../features/resources/components/ResourcesContainer";
-import ResourceContainer from "../../features/resources/components/ResourceContainer";
+import ResourcesContainer from "../../features/resources/list/components/ResourcesContainer";
+import ResourceContainer from "../../features/resources/edit/components/ResourceContainer";
// context
import { useLayoutState } from "../../contexts/LayoutContext";
diff --git a/src/api/index.js b/src/features/resources/api/index.js
similarity index 100%
rename from src/api/index.js
rename to src/features/resources/api/index.js
diff --git a/src/api/useDictionariesApi.js b/src/features/resources/api/useDictionariesApi.js
similarity index 87%
rename from src/api/useDictionariesApi.js
rename to src/features/resources/api/useDictionariesApi.js
index 361e9f3..e30a62a 100644
--- a/src/api/useDictionariesApi.js
+++ b/src/features/resources/api/useDictionariesApi.js
@@ -1,6 +1,6 @@
import { useCallback } from "react";
-import useHttpRequest from "./useHttpRequest";
-import { get } from "../utils/axios";
+import useHttpRequest from "../../../hooks/useHttpRequest";
+import { get } from "../../../utils/axios";
const cdn = process.env.REACT_APP_CDN_URL;
const endpoints = {
diff --git a/src/api/useResourcesApi.js b/src/features/resources/api/useResourcesApi.js
similarity index 72%
rename from src/api/useResourcesApi.js
rename to src/features/resources/api/useResourcesApi.js
index 5906cc6..9dc1c1e 100644
--- a/src/api/useResourcesApi.js
+++ b/src/features/resources/api/useResourcesApi.js
@@ -1,7 +1,7 @@
import { useCallback } from "react";
-import useHttpRequest from "./useHttpRequest";
-import { get } from "../utils/axios";
-import { defaultResourcesFilters } from "../constants/resourcesConstants";
+import useHttpRequest from "../../../hooks/useHttpRequest";
+import { get } from "../../../utils/axios";
+import { defaultResourcesFilters } from "../../../constants/resourcesConstants";
const cdn = process.env.REACT_APP_CDN_URL;
@@ -41,8 +41,18 @@ const useResourcesApi = () => {
[exec]
);
+ const getResource = useCallback(
+ (resourceId, options) => {
+ const endpoint = `${cdn}/admin/resource?ResourceId=${resourceId}`;
+ const promise = exec(() => get(endpoint), options);
+ return promise;
+ },
+ [exec]
+ );
+
return {
- getResources
+ getResources,
+ getResource
};
};
diff --git a/src/features/resources/components/ResourceContainer.js b/src/features/resources/components/ResourceContainer.js
deleted file mode 100644
index 72ecc50..0000000
--- a/src/features/resources/components/ResourceContainer.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import React from "react";
-import PageTitle from "../../../components/PageTitle";
-import { useParams } from "react-router-dom";
-
-const ResourceContainer = () => {
- const params = useParams();
- return (
- <>
-
- <>.................>
- >
- );
-};
-
-export default ResourceContainer;
diff --git a/src/features/resources/edit/components/ResourceContainer.js b/src/features/resources/edit/components/ResourceContainer.js
new file mode 100644
index 0000000..06764ac
--- /dev/null
+++ b/src/features/resources/edit/components/ResourceContainer.js
@@ -0,0 +1,36 @@
+import React, { useState, useMemo, useEffect } from "react";
+import PageTitle from "../../../../components/PageTitle";
+import { useParams } from "react-router-dom";
+import { useResourcesApi } from "../../api";
+import { LoadingText } from "../../../../components";
+
+const ResourceContainer = () => {
+ const [state, setState] = useState(null);
+ const [loading, setLoading] = useState(false);
+
+ const params = useParams();
+ const { getResource } = useResourcesApi();
+
+ const isNew = useMemo(() => params.id === "new", [params.id]);
+
+ useEffect(() => {
+ if (isNew) return;
+ const resourceId = parseInt(params.id);
+ setLoading(true);
+ getResource(resourceId).then((resource) => {
+ setState(resource);
+ setLoading(false);
+ });
+ }, [getResource, isNew, params.id]);
+
+ if (loading || state === null) return ;
+
+ return (
+ <>
+
+ <>.................>
+ >
+ );
+};
+
+export default ResourceContainer;
diff --git a/src/features/resources/components/ActionButton.js b/src/features/resources/list/components/ActionButton.js
similarity index 100%
rename from src/features/resources/components/ActionButton.js
rename to src/features/resources/list/components/ActionButton.js
diff --git a/src/features/resources/components/ResourcesContainer.js b/src/features/resources/list/components/ResourcesContainer.js
similarity index 97%
rename from src/features/resources/components/ResourcesContainer.js
rename to src/features/resources/list/components/ResourcesContainer.js
index 99bf390..38f3ab2 100644
--- a/src/features/resources/components/ResourcesContainer.js
+++ b/src/features/resources/list/components/ResourcesContainer.js
@@ -1,10 +1,10 @@
import React, { useState, useEffect, useMemo, useCallback } from "react";
import { Checkbox, FormLabel } from "@material-ui/core";
import MUIDataTable, { debounceSearchRender } from "mui-datatables";
-import { LoadingText } from "../../../components";
-import PageTitle from "../../../components/PageTitle";
-import { useResourcesApi, useDictionariesApi } from "../../../api";
-import { defaultResourcesFilters } from "../../../constants/resourcesConstants";
+import { LoadingText } from "../../../../components";
+import PageTitle from "../../../../components/PageTitle";
+import { useResourcesApi, useDictionariesApi } from "../../api";
+import { defaultResourcesFilters } from "../../../../constants/resourcesConstants";
import { useTranslation } from "react-i18next";
import ActionButton from "./ActionButton";
import SecondaryActionsGroup from "./SecondaryActionsGroup";
@@ -13,7 +13,7 @@ import {
FileCopyOutlined,
OpenInNewOutlined
} from "@material-ui/icons";
-import { useToast, useResourceSecurity } from "../../../hooks";
+import { useToast, useResourceSecurity } from "../../../../hooks";
import { useHistory } from "react-router-dom";
const __ROWS_PER_PAGE_OPTIONS = [10, 20, 50, 100];
diff --git a/src/features/resources/components/SecondaryActionsGroup.js b/src/features/resources/list/components/SecondaryActionsGroup.js
similarity index 100%
rename from src/features/resources/components/SecondaryActionsGroup.js
rename to src/features/resources/list/components/SecondaryActionsGroup.js
diff --git a/src/hooks/index.js b/src/hooks/index.js
index 51d6f91..29909e5 100644
--- a/src/hooks/index.js
+++ b/src/hooks/index.js
@@ -1,4 +1,5 @@
import { useToast } from "../contexts/ToastContext";
+import useHttpRequest from "./useHttpRequest";
import useResourceSecurity from "./useResourceSecurity";
-export { useToast, useResourceSecurity };
+export { useToast, useHttpRequest, useResourceSecurity };
diff --git a/src/api/useHttpRequest.js b/src/hooks/useHttpRequest.js
similarity index 100%
rename from src/api/useHttpRequest.js
rename to src/hooks/useHttpRequest.js