Skip to content

Commit 88bb661

Browse files
Merge pull request #3 from JiriBalcar/main
Fix issue with BASE_URL - rewrite fetch to user @strapi fetch client
2 parents 72a4ac2 + e627bdd commit 88bb661

File tree

16 files changed

+346
-554
lines changed

16 files changed

+346
-554
lines changed

README.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,7 @@ The **Sitemap Plugin for Strapi v5** is a powerful tool to dynamically generate
3535
npm install strapi-5-sitemap-plugin
3636
```
3737

38-
### Add an environment variable
39-
If your Strapi backend is not hosted on the root of your domain, you need to add an environment variable to your `.env` file:
40-
```bash
41-
STRAPI_ADMIN_BACKEND_URL=https://your-strapi-backend.tld/with/directories
42-
```
38+
---
4339

4440
### Make the sitemap.xml file available
4541
1. Go to **Settings**:

admin/src/components/CollectionTypeModal.tsx

Lines changed: 60 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,30 @@ import { Field } from "@strapi/design-system";
44
import { Modal } from "@strapi/design-system";
55
import React, {useEffect, useRef, useState} from "react";
66
import {PLUGIN_ID} from "../pluginId";
7-
import {getJwtToken, BASE_URL} from "../utils/helpers";
8-
7+
import { getFetchClient } from '@strapi/strapi/admin';
98
interface CollectionType {
109
uid: string;
1110
singularName: string;
1211
displayName: string;
1312
}
1413

15-
export default function CollectionTypeModal({isOpen, setModalOpen, setNewCollectionTypeAdded, typeToEdit = null, setTypeToEdit, editID = '', setEditID}: {isOpen: boolean, setModalOpen: React.Dispatch<React.SetStateAction<boolean>>, setNewCollectionTypeAdded: React.Dispatch<React.SetStateAction<boolean>>, typeToEdit: any | null, setTypeToEdit: React.Dispatch<React.SetStateAction<string>>, editID: string, setEditID: React.Dispatch<React.SetStateAction<string>>}) {
14+
export default function CollectionTypeModal({
15+
isOpen,
16+
setModalOpen,
17+
setNewCollectionTypeAdded,
18+
typeToEdit = null,
19+
setTypeToEdit,
20+
editID = '',
21+
setEditID,
22+
}: {
23+
isOpen: boolean;
24+
setModalOpen: React.Dispatch<React.SetStateAction<boolean>>;
25+
setNewCollectionTypeAdded: React.Dispatch<React.SetStateAction<boolean>>;
26+
typeToEdit: any | null;
27+
setTypeToEdit: React.Dispatch<React.SetStateAction<string>>;
28+
editID: string;
29+
setEditID: React.Dispatch<React.SetStateAction<string>>;
30+
}) {
1631
const [type, setType] = useState('');
1732
const [langcode, setLangcode] = useState('');
1833
const [pattern, setPattern] = useState('');
@@ -31,12 +46,14 @@ export default function CollectionTypeModal({isOpen, setModalOpen, setNewCollect
3146
const frequencyRef = useRef<HTMLInputElement>(null);
3247
const lastModifiedRef = useRef<HTMLInputElement>(null);
3348

49+
const { get, put, post } = getFetchClient();
50+
3451
const handleInputChange = (setter: React.Dispatch<React.SetStateAction<string>>) => (event: React.ChangeEvent<HTMLInputElement>) => {
35-
setter(event.target.value);
36-
};
52+
setter(event.target.value);
53+
};
3754
const handleSelectChange = (setter: React.Dispatch<React.SetStateAction<string>>) => (event: string) => {
38-
setter(event);
39-
};
55+
setter(event);
56+
};
4057
const validateFields = () => {
4158
if (!type) {
4259
typeRef.current?.focus();
@@ -63,40 +80,37 @@ export default function CollectionTypeModal({isOpen, setModalOpen, setNewCollect
6380

6481
try {
6582
if (typeToEdit && editID) {
66-
response = await fetch(`${BASE_URL}/${PLUGIN_ID}/admin`, {
67-
method: "PUT",
68-
headers: {
69-
"Content-Type": "application/json",
70-
'Authorization': 'Bearer ' + getJwtToken(),
71-
},
72-
body: JSON.stringify({type, langcode, pattern, priority, frequency, lastModified, id: editID}),
83+
response = await put(`/${PLUGIN_ID}/admin`, {
84+
type,
85+
langcode,
86+
pattern,
87+
priority,
88+
frequency,
89+
lastModified,
90+
id: editID,
7391
});
7492
} else {
75-
response = await fetch(`${process.env.STRAPI_ADMIN_BACKEND_URL}/${PLUGIN_ID}/admin`, {
76-
method: "POST",
77-
headers: {
78-
"Content-Type": "application/json",
79-
'Authorization': 'Bearer ' + getJwtToken(),
80-
},
81-
body: JSON.stringify({type, langcode, pattern, priority, lastModified, frequency}),
93+
response = await post(`/${PLUGIN_ID}/admin`, {
94+
type,
95+
langcode,
96+
pattern,
97+
priority,
98+
lastModified,
99+
frequency,
82100
});
83101
}
84102

85-
if (response.ok) {
86-
const data = await response.json();
87-
setNewCollectionTypeAdded(true);
88-
setType('');
89-
setLangcode('');
90-
setPattern('');
91-
setPriority('');
92-
setFrequency('');
93-
setLastModified('false');
94-
setEditID('');
95-
setTypeToEdit('');
96-
setModalOpen(false);
97-
} else {
98-
alert('Error while saving!');
99-
}
103+
const data = response.data;
104+
setNewCollectionTypeAdded(true);
105+
setType('');
106+
setLangcode('');
107+
setPattern('');
108+
setPriority('');
109+
setFrequency('');
110+
setLastModified('false');
111+
setEditID('');
112+
setTypeToEdit('');
113+
setModalOpen(false);
100114
} catch (err) {
101115
console.error(err);
102116
alert('An unexpected error occurred.');
@@ -122,43 +136,24 @@ export default function CollectionTypeModal({isOpen, setModalOpen, setNewCollect
122136
}
123137
}, [typeToEdit]);
124138

125-
126139
useEffect(() => {
127140
const getContentTypes = async () => {
128-
const response = await fetch(`${BASE_URL}/${PLUGIN_ID}/admin-get-content-types`, {
129-
method: 'GET',
130-
headers: {
131-
'Content-Type': 'application/json',
132-
'Authorization': 'Bearer ' + getJwtToken(),
133-
},
134-
});
135-
136-
if (response.ok) {
137-
const data = await response.json();
141+
try {
142+
const { data } = await get(`/${PLUGIN_ID}/admin-get-content-types`);
138143
setCollectionTypes(data.collectionTypes);
139-
}
140-
else {
144+
} catch (error) {
141145
alert('Error while loading!');
142146
}
143-
}
147+
};
144148

145149
const getLocales = async () => {
146-
const response = await fetch(`${BASE_URL}/${PLUGIN_ID}/admin-get-locales`, {
147-
method: "GET",
148-
headers: {
149-
"Content-Type": "application/json",
150-
'Authorization': 'Bearer ' + getJwtToken(),
151-
},
152-
});
153-
154-
if (response.ok) {
155-
const data = await response.json();
150+
try {
151+
const { data } = await get(`/${PLUGIN_ID}/admin-get-locales`);
156152
setLocales(data);
157-
}
158-
else {
153+
} catch (error) {
159154
alert('Error while loading!');
160155
}
161-
}
156+
};
162157

163158
getContentTypes();
164159
getLocales();
@@ -167,21 +162,13 @@ export default function CollectionTypeModal({isOpen, setModalOpen, setNewCollect
167162
useEffect(() => {
168163
if (type) {
169164
const getAllowedFields = async () => {
170-
const response = await fetch(`${BASE_URL}/${PLUGIN_ID}/admin-allowed-fields?type=${type}`, {
171-
method: 'GET',
172-
headers: {
173-
'Content-Type': 'application/json',
174-
'Authorization': 'Bearer ' + getJwtToken(),
175-
},
176-
});
177-
178-
const data = await response.json();
165+
const { data } = await get(`/${PLUGIN_ID}/admin-allowed-fields?type=${type}`);
179166

180167
setPatternHint('Possible fields: ' + data.allowedFields.map((field: string) => `[${field}]`).join(', '));
181168
if (pattern === '') {
182169
setPattern('/' + data.slug + '/');
183170
}
184-
}
171+
};
185172
getAllowedFields();
186173
}
187174
}, [type]);
@@ -194,8 +181,6 @@ export default function CollectionTypeModal({isOpen, setModalOpen, setNewCollect
194181
}
195182
};
196183

197-
198-
199184
return (
200185
<Modal.Root open={isOpen} onOpenChange={(e: boolean) => handleOnOpenChange(e)}>
201186
<Modal.Content>

admin/src/components/CustomURLModal.tsx

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,25 @@ import { Grid } from "@strapi/design-system";
33
import { Field } from "@strapi/design-system";
44
import { Modal } from "@strapi/design-system";
55
import React, {useEffect, useRef, useState} from "react";
6-
import {PLUGIN_ID} from "../pluginId";
7-
import {getJwtToken, BASE_URL} from "../utils/helpers";
8-
export default function CustomURLModal({isOpen, setModalOpen, setNewCustomURLAdded, typeToEdit = '', setTypeToEdit, editID = '', setEditID}: {isOpen: boolean, setModalOpen: React.Dispatch<React.SetStateAction<boolean>>, setNewCustomURLAdded: React.Dispatch<React.SetStateAction<boolean>>, typeToEdit: any, setTypeToEdit: React.Dispatch<React.SetStateAction<string>>, editID: string, setEditID: React.Dispatch<React.SetStateAction<string>>}) {
6+
import { PLUGIN_ID } from '../pluginId';
7+
import { getFetchClient } from '@strapi/strapi/admin';
8+
export default function CustomURLModal({
9+
isOpen,
10+
setModalOpen,
11+
setNewCustomURLAdded,
12+
typeToEdit = '',
13+
setTypeToEdit,
14+
editID = '',
15+
setEditID,
16+
}: {
17+
isOpen: boolean;
18+
setModalOpen: React.Dispatch<React.SetStateAction<boolean>>;
19+
setNewCustomURLAdded: React.Dispatch<React.SetStateAction<boolean>>;
20+
typeToEdit: any;
21+
setTypeToEdit: React.Dispatch<React.SetStateAction<string>>;
22+
editID: string;
23+
setEditID: React.Dispatch<React.SetStateAction<string>>;
24+
}) {
925
const [slug, setSlug] = useState('');
1026
const [priority, setPriority] = useState('');
1127
const [frequency, setFrequency] = useState('');
@@ -14,6 +30,8 @@ export default function CustomURLModal({isOpen, setModalOpen, setNewCustomURLAdd
1430
const priorityRef = useRef<HTMLInputElement>(null);
1531
const frequencyRef = useRef<HTMLInputElement>(null);
1632

33+
const { put, post } = getFetchClient();
34+
1735
const handleInputChange = (setter: React.Dispatch<React.SetStateAction<string>>) => (event: React.ChangeEvent<HTMLInputElement>) => {
1836
setter(event.target.value);
1937
};
@@ -42,37 +60,24 @@ export default function CustomURLModal({isOpen, setModalOpen, setNewCustomURLAdd
4260

4361
try {
4462
if (typeToEdit && editID) {
45-
response = await fetch(`${BASE_URL}/${PLUGIN_ID}/admin-custom-urls`, {
46-
method: "PUT",
47-
headers: {
48-
"Content-Type": "application/json",
49-
'Authorization': 'Bearer ' + getJwtToken(),
50-
},
51-
body: JSON.stringify({slug, priority, frequency, id: editID}),
63+
response = await put(`/${PLUGIN_ID}/admin-custom-urls`, {
64+
slug,
65+
priority,
66+
frequency,
67+
id: editID,
5268
});
5369
} else {
54-
response = await fetch(`${process.env.STRAPI_ADMIN_BACKEND_URL}/${PLUGIN_ID}/admin-custom-urls`, {
55-
method: "POST",
56-
headers: {
57-
"Content-Type": "application/json",
58-
'Authorization': 'Bearer ' + getJwtToken(),
59-
},
60-
body: JSON.stringify({slug, priority, frequency}),
61-
});
70+
response = await post(`/${PLUGIN_ID}/admin-custom-urls`, { slug, priority, frequency });
6271
}
6372

64-
if (response.ok) {
65-
const data = await response.json();
66-
setNewCustomURLAdded(true);
67-
setSlug('');
68-
setPriority('');
69-
setFrequency('');
70-
setEditID('');
71-
setTypeToEdit('');
72-
setModalOpen(false);
73-
} else {
74-
alert('Error while saving!');
75-
}
73+
const data = response.data;
74+
setNewCustomURLAdded(true);
75+
setSlug('');
76+
setPriority('');
77+
setFrequency('');
78+
setEditID('');
79+
setTypeToEdit('');
80+
setModalOpen(false);
7681
} catch (err) {
7782
console.error(err);
7883
alert('An unexpected error occurred.');
@@ -100,7 +105,6 @@ export default function CustomURLModal({isOpen, setModalOpen, setNewCustomURLAdd
100105
}
101106
};
102107

103-
104108
return (
105109
<Modal.Root open={isOpen} onOpenChange={(e: boolean) => handleOnOpenChange(e)}>
106110
<Modal.Content>

0 commit comments

Comments
 (0)