diff --git a/backend/src/api/proxy/controllers/proxy.js b/backend/src/api/proxy/controllers/proxy.js index cf7da45..97952da 100644 --- a/backend/src/api/proxy/controllers/proxy.js +++ b/backend/src/api/proxy/controllers/proxy.js @@ -10,7 +10,7 @@ module.exports = { method = "GET", data = {}, params = {}, - headers = {}, + headers = { "User-Agent": "govtool-proxy" }, } = ctx.request.body; const response = await axios({ url, method, data, params, headers }); ctx.send({ status: response.status, data: response.data }); diff --git a/pdf-ui/src/components/CreationGoveranceAction/ConstitutionManager.jsx b/pdf-ui/src/components/CreationGoveranceAction/ConstitutionManager.jsx index 7954ef6..6c430a8 100644 --- a/pdf-ui/src/components/CreationGoveranceAction/ConstitutionManager.jsx +++ b/pdf-ui/src/components/CreationGoveranceAction/ConstitutionManager.jsx @@ -11,6 +11,20 @@ const ConstitutionManager = ({ }) => { const theme = useTheme(); + console.log(proposalData); + + useEffect(() => { + if (proposalData?.proposal_constitution_content?.data?.attributes) { + setProposalData({ + ...proposalData, + proposal_constitution_content: + proposalData.proposal_constitution_content.data.attributes, + }); + } else { + return; + } + }, [proposalData]); + const togglePropHhaveGuScript = (checked) => { let pk = proposalData.proposal_constitution_content; pk.prop_have_guardrails_script = checked; @@ -41,7 +55,10 @@ const ConstitutionManager = ({ const handleUrlChange = (url_text) => { constcheckLinkValue(url_text, 'prop_constitution_url'); let pk = { ...proposalData.proposal_constitution_content } - ? { ...proposalData.proposal_constitution_content } + ? { + ...proposalData.proposal_constitution_content?.data + ?.attributes, + } : {}; pk.prop_constitution_url = url_text; setProposalData({ ...proposalData, proposal_constitution_content: pk }); @@ -88,7 +105,9 @@ const ConstitutionManager = ({ }; useEffect(() => { - let pk = proposalData.proposal_constitution_content; + let pk = + proposalData.proposal_constitution_content || + proposalData.data?.attributes?.proposal_constitution_content; if (pk != undefined) { if (Boolean(pk.prop_constitution_url)) constcheckLinkValue( diff --git a/pdf-ui/src/components/EditProposalDialog/index.jsx b/pdf-ui/src/components/EditProposalDialog/index.jsx index f0c0cd2..fc4b686 100644 --- a/pdf-ui/src/components/EditProposalDialog/index.jsx +++ b/pdf-ui/src/components/EditProposalDialog/index.jsx @@ -159,7 +159,7 @@ const EditProposalDialog = ({ setIsSaveDisabled(false); } } - if (draft?.gov_action_type_id == 6) { + if (draft?.gov_action_type_id == 6) { if ( draft?.proposal_hard_fork_content?.major == '' || draft?.proposal_hard_fork_content?.minor == '' || @@ -177,8 +177,8 @@ const EditProposalDialog = ({ // draft.proposal_hard_fork_content.previous_ga_hash = draft.proposal_hard_fork_content.data.attributes.previous_ga_hash // draft.proposal_hard_fork_content.previous_ga_id = draft.proposal_hard_fork_content.data.attributes.previous_ga_id // draft.proposal_hard_fork_content.major = draft.proposal_hard_fork_content.data.attributes.major - // draft.proposal_hard_fork_content.minor = draft.proposal_hard_fork_content.data.attributes.minor - // // delete draft.proposal_hard_fork_content.data + // draft.proposal_hard_fork_content.minor = draft.proposal_hard_fork_content.data.attributes.minor + // // delete draft.proposal_hard_fork_content.data // setDraftData(draft) // } @@ -246,8 +246,7 @@ const EditProposalDialog = ({ ?.proposal_constitution_content, proposal_hard_fork_content: proposalData?.attributes?.content?.attributes - ?.proposal_hard_fork_content - || {}, + ?.proposal_hard_fork_content || {}, }; return draft; }; @@ -313,14 +312,17 @@ const EditProposalDialog = ({ } try { - let payload = {...draft, proposal_hard_fork_content : - { - previous_ga_hash : draft.proposal_hard_fork_content.previous_ga_hash, - previous_ga_id : draft.proposal_hard_fork_content.previous_ga_id, - major : draft.proposal_hard_fork_content.major, - minor : draft.proposal_hard_fork_content.minor - } - } + let payload = { + ...draft, + proposal_hard_fork_content: { + previous_ga_hash: + draft.proposal_hard_fork_content.previous_ga_hash, + previous_ga_id: + draft.proposal_hard_fork_content.previous_ga_id, + major: draft.proposal_hard_fork_content.major, + minor: draft.proposal_hard_fork_content.minor, + }, + }; const response = await createProposalContent({ ...payload, ...proposalConentObj, @@ -413,6 +415,9 @@ const EditProposalDialog = ({ open={openEditDialog} onClose={handleCloseEditDialog} data-testid='edit-proposal-dialog' + PaperProps={{ + sx: { borderRadius: 0 }, + }} > - ) : null } { if (!url) { throw new Error('url is not defined or null'); } - // Fetch the data from the URL - const response = await fetch(url, { - 'User-Agent': 'govtool-agent', - }); - // Check if the response is successful - if (!response.ok) { + const response = await getViaProxy('', { url: url, method: 'GET' }); + console.log('🚀 ~ getHashFromUrl ~ response:', response); + if (response.status !== 200) { throw new Error(`HTTP error! Status: ${response.status}`); } - // Read the text content from the response - const content = await response.text(); - // Create a hash from the fetched content + const content = + typeof response.data === 'string' + ? response.data + : JSON.stringify(response.data); const urlHash = await walletAPI.createHash(content); return urlHash; } catch (error) { - console.error('Error fetching or hashing the content:', error); - throw error; // Re-throw the error if you want to handle it further up the call stack + alert( + `Error fetching data from URL: Please verify that the URL is publicly accessible and try again.` + ); + throw error; } } - useEffect(() => { if (proposal && walletAPI) { handleCreateGAJsonLD(); diff --git a/pdf-ui/src/lib/api.js b/pdf-ui/src/lib/api.js index 08da1df..4a02ff7 100644 --- a/pdf-ui/src/lib/api.js +++ b/pdf-ui/src/lib/api.js @@ -599,3 +599,13 @@ export const getHardForkData = async () => { throw error; } }; + +export const getViaProxy = async (endpoint = '', payload) => { + try { + const { data } = await axiosInstance.post(`/api/proxy`, payload); + return data; + } catch (error) { + console.error('Error posting data via govtool proxy:', error); + throw error; + } +};