Skip to content

Commit bd3ef7c

Browse files
committed
Simplified implementation
1 parent 66f7c24 commit bd3ef7c

File tree

7 files changed

+48
-50
lines changed

7 files changed

+48
-50
lines changed

src/components/feed-sources/feed-source-form.jsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ function FeedSourceForm({
3737
loadingMessage = "",
3838
feedSource = null,
3939
feedSourceTypeOptions = null,
40+
handleChangeFeedType = () => {},
4041
dynamicFormElement = null,
4142
mode = null,
4243
}) {
@@ -67,10 +68,10 @@ function FeedSourceForm({
6768
onChange={handleInput}
6869
/>
6970
<FormSelect
70-
label={t("feed-source-feed-type-label")}
7171
name="feedType"
72+
label={t("feed-source-feed-type-label")}
7273
value={feedSource.feedType}
73-
onChange={handleInput}
74+
onChange={handleChangeFeedType}
7475
disabled={mode === "PUT"}
7576
options={feedSourceTypeOptions}
7677
/>

src/components/feed-sources/feed-source-manager.jsx

Lines changed: 27 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import {
1111
displayError,
1212
displaySuccess,
1313
} from "../util/list/toast-component/display-toast";
14-
import EventDatabaseApiFeedTypeTemplate from "./feed-source-type-templates/EventDatabaseApiFeedType.template";
15-
import NotifiedFeedTypeTemplate from "./feed-source-type-templates/NotifiedFeedType.template";
16-
import CalendarFeedTypeTemplate from "./feed-source-type-templates/CalendarFeedType.template";
14+
import EventDatabaseFeedType from "./templates/event-database-feed-type.jsx";
15+
import NotifiedFeedType from "./templates/notified-feed-type.jsx";
16+
import CalendarFeedType from "./templates/calendar-feed-type.jsx";
1717

1818
/**
1919
* The theme manager component.
@@ -67,27 +67,34 @@ function FeedSourceManager({
6767
value: "App\\Feed\\EventDatabaseApiFeedType",
6868
title: t("dynamic-fields.event-database-api-feed-type.title"),
6969
key: "1",
70-
secrets: "host",
71-
template: <EventDatabaseApiFeedTypeTemplate mode={saveMethod} />,
70+
secretsDefault: {
71+
"host": ""
72+
},
73+
template: <EventDatabaseFeedType mode={saveMethod} />,
7274
},
7375
{
7476
value: "App\\Feed\\NotifiedFeedType",
7577
title: t("dynamic-fields.notified-feed-type.title"),
7678
key: "2",
77-
secrets: "token",
78-
template: <NotifiedFeedTypeTemplate mode={saveMethod} />,
79+
secretsDefault: {
80+
"token": "",
81+
},
82+
template: <NotifiedFeedType mode={saveMethod} />,
7983
},
8084
{
8185
value: "App\\Feed\\CalendarApiFeedType",
8286
title: t("dynamic-fields.calendar-api-feed-type.title"),
8387
key: "3",
84-
secrets: "resources",
85-
template: <CalendarFeedTypeTemplate mode={saveMethod} />,
88+
secretsDefault: {
89+
"resources": []
90+
},
91+
template: <CalendarFeedType mode={saveMethod} />,
8692
},
8793
{
8894
value: "App\\Feed\\RssFeedType",
8995
title: t("dynamic-fields.rss-feed-type.title"),
90-
key: "5",
96+
key: "4",
97+
secretsDefault: {},
9198
template: null,
9299
},
93100
];
@@ -109,11 +116,15 @@ function FeedSourceManager({
109116
setFormStateObject({ ...initialState });
110117
}, [initialState]);
111118

119+
const onFeedTypeChange = () => {
120+
const option = feedSourceTypeOptions.find((opt) => opt.value === formStateObject.feedType);
121+
const newFormStateObject = {...formStateObject};
122+
newFormStateObject.secrets = {...option.secretsDefault};
123+
setFormStateObject(newFormStateObject);
124+
}
125+
112126
useEffect(() => {
113-
if (formStateObject) {
114-
const option = feedSourceTypeOptions.find(
115-
(opt) => opt.value === formStateObject.feedType
116-
);
127+
if (formStateObject?.feedType) {
117128
if (option && option.template) {
118129
setDynamicFormElement(
119130
cloneElement(option.template, {
@@ -125,26 +136,7 @@ function FeedSourceManager({
125136
setDynamicFormElement(null);
126137
}
127138
}
128-
}, [formStateObject]);
129-
130-
useEffect(() => {
131-
if (formStateObject?.feedType) {
132-
const selectedFeedTypeSecret = feedSourceTypeOptions.find(
133-
(option) => option.value === formStateObject.feedType
134-
).secrets;
135-
136-
if (selectedFeedTypeSecret) {
137-
const secretsArray = selectedFeedTypeSecret
138-
.split(",")
139-
.map((prop) => prop.trim());
140-
141-
formStateObject.secrets = secretsArray?.reduce((acc, secret) => {
142-
acc[secret] = formStateObject[secret];
143-
return acc;
144-
}, {});
145-
}
146-
}
147-
}, [formStateObject, formStateObject?.feedType]);
139+
}, [formStateObject?.feedType]);
148140

149141
/** Save feed source. */
150142
function saveFeedSource() {
@@ -206,6 +198,7 @@ function FeedSourceManager({
206198
isLoading={isLoading || submitting}
207199
loadingMessage={loadingMessage}
208200
feedSourceTypeOptions={feedSourceTypeOptions}
201+
onFeedTypeChange={}
209202
dynamicFormElement={dynamicFormElement}
210203
mode={saveMethod}
211204
/>

src/components/feed-sources/feed-sources-list.jsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ function FeedSourcesList() {
4545
page: { get: page },
4646
createdBy: { get: createdBy },
4747
} = useContext(ListContext);
48+
4849
const {
4950
data,
5051
error: feedSourcesGetError,
@@ -97,6 +98,7 @@ function FeedSourcesList() {
9798
displayError(t("error-messages.feed-source-delete-error"), isDeleteError);
9899
}
99100
}, [isDeleteError]);
101+
100102
const handleDelete = () => {
101103
setIsDeleting(true);
102104
setLoadingMessage(t("loading-messages.deleting-feed-source"));
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ import PropTypes from "prop-types";
33
import { useTranslation } from "react-i18next";
44
import FormInput from "../../util/forms/form-input";
55

6-
const CalendarFeedTypeTemplate = ({ handleInput, formStateObject, mode }) => {
6+
const CalendarFeedType = ({ handleInput, formStateObject, mode }) => {
77
const { t } = useTranslation("common", {
88
keyPrefix: "feed-source-manager.dynamic-fields.calendar-api-feed-type",
99
});
10+
1011
return (
1112
<>
1213
<FormInput
@@ -25,11 +26,12 @@ const CalendarFeedTypeTemplate = ({ handleInput, formStateObject, mode }) => {
2526
);
2627
};
2728

28-
CalendarFeedTypeTemplate.propTypes = {
29+
CalendarFeedType.propTypes = {
2930
handleInput: PropTypes.func,
3031
formStateObject: PropTypes.shape({
3132
resources: PropTypes.string,
3233
}),
3334
mode: PropTypes.string,
3435
};
35-
export default CalendarFeedTypeTemplate;
36+
37+
export default CalendarFeedType;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,5 @@ EventDatabaseApiTemplate.propTypes = {
3636
}),
3737
mode: PropTypes.string,
3838
};
39+
3940
export default EventDatabaseApiTemplate;
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@ import PropTypes from "prop-types";
33
import { useTranslation } from "react-i18next";
44
import FormInput from "../../util/forms/form-input";
55

6-
const NotifiedFeedTypeTemplate = ({
6+
const NotifiedFeedType = ({
77
handleInput,
88
formStateObject,
99
mode,
1010
}) => {
1111
const { t } = useTranslation("common", {
1212
keyPrefix: "feed-source-manager.dynamic-fields.notified-feed-type",
1313
});
14+
1415
return (
1516
<>
1617
<FormInput
@@ -29,11 +30,12 @@ const NotifiedFeedTypeTemplate = ({
2930
);
3031
};
3132

32-
NotifiedFeedTypeTemplate.propTypes = {
33+
NotifiedFeedType.propTypes = {
3334
handleInput: PropTypes.func,
3435
formStateObject: PropTypes.shape({
3536
token: PropTypes.string,
3637
}),
3738
mode: PropTypes.string,
3839
};
39-
export default NotifiedFeedTypeTemplate;
40+
41+
export default NotifiedFeedType;

src/translations/da/common.json

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -248,19 +248,16 @@
248248
}
249249
},
250250
"feed-source-manager": {
251-
"edit-feed-source": "Rediger følgende feed source",
252-
"create-new-feed-source": "Opret ny feed source",
251+
"edit-feed-source": "Rediger følgende datakilde",
252+
"create-new-feed-source": "Opret ny datakilde",
253253
"loading-messages": {
254-
"loading-feed-source": "Henter feed source",
255-
"saving-feed-source": "Gemmer feed source",
256-
"saving-media": "Mediet bliver gemt"
254+
"loading-feed-source": "Henter datakilde",
255+
"saving-feed-source": "Gemmer datakilde"
257256
},
258257
"success-messages": {
259-
"saved-media": "Mediet er gemt",
260258
"saved-feed-source": "Feed source er gemt"
261259
},
262260
"error-messages": {
263-
"save-media-error": "Der skete en fejl da mediet skulle gemmes:",
264261
"save-feed-source-error": "Der skete en fejl da feed source skulle gemmes:",
265262
"load-feed-source-error": "Der skete en fejl da feed source med følgende id: {{id}} skulle hentes:"
266263
},
@@ -271,7 +268,7 @@
271268
"redacted-value-input-placeholder": "Skjult værdi"
272269
},
273270
"notified-feed-type": {
274-
"title": "Notified feed",
271+
"title": "Notified",
275272
"token": "Notified API token",
276273
"redacted-value-input-placeholder": "Skjult værdi"
277274
},

0 commit comments

Comments
 (0)