Skip to content

Commit e1e332d

Browse files
fix(hydra) : change hardcoded hydra prefix in templates (#388)
Co-authored-by: Valentin Dassonville <[email protected]>
1 parent cb47c8b commit e1e332d

File tree

15 files changed

+63
-63
lines changed

15 files changed

+63
-63
lines changed

src/generators/ReactGenerator.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ export default class ReactGenerator extends BaseGenerator {
2020
"hooks/list.ts",
2121
"hooks/mercure.ts",
2222
"hooks/retrieve.ts",
23-
"hooks/update.ts",
2423
"hooks/show.ts",
24+
"hooks/update.ts",
2525

2626
// interfaces
2727
"interfaces/Collection.ts",
@@ -32,9 +32,9 @@ export default class ReactGenerator extends BaseGenerator {
3232
"components/foo/Form.tsx",
3333
"components/foo/index.ts",
3434
"components/foo/List.tsx",
35-
"components/foo/Update.tsx",
36-
"components/foo/type.ts",
3735
"components/foo/Show.tsx",
36+
"components/foo/type.ts",
37+
"components/foo/Update.tsx",
3838
"components/Field.tsx",
3939
"components/Links.tsx",
4040
"components/Pagination.tsx",

templates/nuxt/components/foo/FooList.vue

+4-4
Original file line numberDiff line numberDiff line change
@@ -266,10 +266,10 @@ const { items, view, error, isLoading, hubUrl } = await useFetchList<{{titleUcFi
266266
{{lc}}ListStore.setData({ items, view, error, isLoading, hubUrl });
267267
268268
const pagination = {
269-
first: view.value?.["hydra:first"]?.slice(-1),
270-
previous: view.value?.["hydra:previous"]?.slice(-1),
271-
next: view.value?.["hydra:next"]?.slice(-1),
272-
last: view.value?.["hydra:last"]?.slice(-1),
269+
first: view.value?.["{{hydraPrefix}}first"]?.slice(-1),
270+
previous: view.value?.["{{hydraPrefix}}previous"]?.slice(-1),
271+
next: view.value?.["{{hydraPrefix}}next"]?.slice(-1),
272+
last: view.value?.["{{hydraPrefix}}last"]?.slice(-1),
273273
};
274274
275275
useMercureList({ store: {{lc}}ListStore, deleteStore: {{lc}}DeleteStore });

templates/nuxt/composables/api.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ async function useApi<T>(path: string, options: UseFetchOptions<T>) {
2020

2121
onResponseError({ response }) {
2222
const data = response._data;
23-
const error = data["hydra:description"] || response.statusText;
23+
const error = data["{{hydraPrefix}}description"] || response.statusText;
2424

2525
throw new Error(error);
2626
},
@@ -51,8 +51,8 @@ export async function useFetchList<T>(
5151
});
5252

5353
const value = data.value as PagedCollection<T>;
54-
items.value = value["hydra:member"];
55-
view.value = value["hydra:view"];
54+
items.value = value["{{hydraPrefix}}member"];
55+
view.value = value["{{hydraPrefix}}view"];
5656

5757
return {
5858
items,
@@ -94,7 +94,7 @@ export async function useCreateItem<T>(resource: string, payload: Item) {
9494

9595
onResponseError({ response }) {
9696
const data = response._data;
97-
const error = data["hydra:description"] || response.statusText;
97+
const error = data["{{hydraPrefix}}description"] || response.statusText;
9898

9999
if (!data.violations) throw new Error(error);
100100

@@ -135,7 +135,7 @@ export async function useUpdateItem<T>(item: Item, payload: Item) {
135135

136136
onResponseError({ response }) {
137137
const data = response._data;
138-
const error = data["hydra:description"] || response.statusText;
138+
const error = data["{{hydraPrefix}}description"] || response.statusText;
139139

140140
if (!data.violations) throw new Error(error);
141141

templates/react-common/actions/foo/list.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ export function list(page = '{{{name}}}') {
3131
dispatch(loading(false));
3232
dispatch(success(retrieved));
3333

34-
if (hubURL && retrieved['hydra:member'].length)
34+
if (hubURL && retrieved['{{hydraPrefix}}member'].length)
3535
dispatch(
3636
mercureSubscribe(
3737
hubURL,
38-
retrieved['hydra:member'].map(i => i['@id'])
38+
retrieved['{{hydraPrefix}}member'].map(i => i['@id'])
3939
)
4040
);
4141
})

templates/react-common/reducers/foo/list.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,15 @@ export function retrieved(state = null, action) {
4040
case '{{{uc}}}_LIST_MERCURE_MESSAGE':
4141
return {
4242
...state,
43-
'hydra:member': state['hydra:member'].map(item =>
43+
'{{hydraPrefix}}member': state['{{hydraPrefix}}member'].map(item =>
4444
item['@id'] === action.retrieved['@id'] ? action.retrieved : item
4545
)
4646
};
4747

4848
case '{{{uc}}}_LIST_MERCURE_DELETED':
4949
return {
5050
...state,
51-
'hydra:member': state['hydra:member'].filter(
51+
'{{hydraPrefix}}member': state['{{hydraPrefix}}member'].filter(
5252
item => item['@id'] !== action.retrieved['@id']
5353
)
5454
};

templates/react-common/utils/dataAccess.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ export function fetch(id, options = {}) {
2424
return response.json().then(
2525
json => {
2626
const error =
27-
json['hydra:description'] ||
28-
json['hydra:title'] ||
27+
json['{{hydraPrefix}}description'] ||
28+
json['{{hydraPrefix}}title'] ||
2929
'An error occurred.';
3030
if (!json.violations) throw Error(error);
3131

@@ -47,9 +47,9 @@ export function fetch(id, options = {}) {
4747
}
4848

4949
export function normalize(data) {
50-
if (has(data, 'hydra:member')) {
50+
if (has(data, '{{hydraPrefix}}member')) {
5151
// Normalize items in collections
52-
data['hydra:member'] = data['hydra:member'].map(item => normalize(item));
52+
data['{{hydraPrefix}}member'] = data['{{hydraPrefix}}member'].map(item => normalize(item));
5353

5454
return data;
5555
}

templates/react-native/components/foo/List.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,11 @@ class ListComponent extends Component {
7373
<ScrollView contentInset={ {top: -24} }
7474
automaticallyAdjustContentInsets>
7575
<List>
76-
{this.props.retrieved['hydra:member'].map(
76+
{this.props.retrieved['{{hydraPrefix}}member'].map(
7777
item => ListComponent.renderRow(item))}
7878
</List>
7979
</ScrollView>
80-
{pagination(this.props.retrieved['hydra:view'], this.props.list)}
80+
{pagination(this.props.retrieved['{{hydraPrefix}}view'], this.props.list)}
8181
</View>
8282
);
8383
}

templates/react-native/utils/helpers.js

+13-13
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,28 @@ export function pagination(view, list) {
1313
<View style={ {flexDirection: 'row', alignSelf: 'center', alignContent: 'center'} }>
1414
<SocialIcon
1515
type='fast-backward'
16-
iconColor={view['hydra:previous'] ? '#3faab4' : 'grey'}
17-
onPress={() => list(paginationRoute(view['hydra:first']))}
18-
disabled={!view['hydra:previous']}
16+
iconColor={view['{{hydraPrefix}}previous'] ? '#3faab4' : 'grey'}
17+
onPress={() => list(paginationRoute(view['{{hydraPrefix}}first']))}
18+
disabled={!view['{{hydraPrefix}}previous']}
1919
/>
2020
<SocialIcon
2121
type='backward'
22-
iconColor={view['hydra:previous'] ? '#3faab4' : 'grey'}
23-
onPress={() => list(paginationRoute(view['hydra:previous']))}
24-
disabled={!view['hydra:previous']}
22+
iconColor={view['{{hydraPrefix}}previous'] ? '#3faab4' : 'grey'}
23+
onPress={() => list(paginationRoute(view['{{hydraPrefix}}previous']))}
24+
disabled={!view['{{hydraPrefix}}previous']}
2525
/>
2626
<SocialIcon
2727
type='forward'
28-
iconColor={view['hydra:next'] ? '#3faab4' : 'grey'}
29-
onPress={() => list(paginationRoute(view['hydra:next']))}
30-
disabled={!view['hydra:next']}
28+
iconColor={view['{{hydraPrefix}}next'] ? '#3faab4' : 'grey'}
29+
onPress={() => list(paginationRoute(view['{{hydraPrefix}}next']))}
30+
disabled={!view['{{hydraPrefix}}next']}
3131
/>
3232

3333
<SocialIcon
3434
type='fast-forward'
35-
iconColor={view['hydra:next'] ? '#3faab4' : 'grey'}
36-
disabled={!view['hydra:next']}
37-
onPress={() => list(paginationRoute(view['hydra:last']))}
35+
iconColor={view['{{hydraPrefix}}next'] ? '#3faab4' : 'grey'}
36+
disabled={!view['{{hydraPrefix}}next']}
37+
onPress={() => list(paginationRoute(view['{{hydraPrefix}}last']))}
3838
activityIndicatorStyle={ {backgroundColor:'red'} }
3939
/>
4040
</View>
@@ -45,4 +45,4 @@ export function delayRefresh() {
4545
setTimeout(() => {
4646
Actions.refresh({refresh: Math.random()});
4747
}, 500);
48-
}
48+
}

templates/react/components/Pagination.tsx

+5-5
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ interface PaginationProps {
66
}
77

88
const Pagination = ({retrieved}: PaginationProps) => {
9-
const view = retrieved && retrieved["hydra:view"];
9+
const view = retrieved && retrieved["{{hydraPrefix}}view"];
1010
if (!view) {
1111
return null;
1212
}
1313

1414
const {
15-
"hydra:first": first,
16-
"hydra:previous": previous,
17-
"hydra:next": next,
18-
"hydra:last": last,
15+
"{{hydraPrefix}}first": first,
16+
"{{hydraPrefix}}previous": previous,
17+
"{{hydraPrefix}}next": next,
18+
"{{hydraPrefix}}last": last,
1919
} = view;
2020

2121
return (

templates/react/components/foo/List.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ interface ListProps {
1313
}
1414

1515
const ListView = ({error, loading, retrieved}: ListProps) => {
16-
const items = (retrieved && retrieved["hydra:member"]) || [];
16+
const items = (retrieved && retrieved["{{hydraPrefix}}member"]) || [];
1717

1818
return (
1919
<div>

templates/react/hooks/fetch.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ const normalizeAuth = (auth: string) => {
6464
// Error handling
6565
const regularHandler = (response: Response, json: any) => {
6666
const error =
67-
json["hydra:description"] ||
68-
json["hydra:title"] ||
67+
json["{{hydraPrefix}}description"] ||
68+
json["{{hydraPrefix}}title"] ||
6969
json["message"] ||
7070
"An error occurred.";
7171

@@ -78,8 +78,8 @@ const submissionHandler = (response: Response, json: any) => {
7878
}
7979

8080
const error =
81-
json["hydra:description"] ||
82-
json["hydra:title"] ||
81+
json["{{hydraPrefix}}description"] ||
82+
json["{{hydraPrefix}}title"] ||
8383
json["message"] ||
8484
"An error occurred.";
8585

templates/react/hooks/mercure.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ const useMercure = <Resource extends ApiResource>(retrieved: Resource | null): I
7171
const collection = retrieved as PagedCollection<Resource>;
7272

7373
if (hubURL && retrieved) {
74-
if (collection["hydra:member"]) {
75-
setEventSource(subscribe(hubURL, collection["hydra:member"].map(item => item["@id"])));
74+
if (collection["{{hydraPrefix}}member"]) {
75+
setEventSource(subscribe(hubURL, collection["{{hydraPrefix}}member"].map(item => item["@id"])));
7676
} else {
7777
setEventSource(subscribe(hubURL, retrieved["@id"]));
7878
}

templates/react/hooks/show.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ const useShow = <Resource extends ApiResource>(): IShowStore<Resource> => {
3434
useEffect(() => {
3535
if (message) {
3636
const collection = (retrieved as PagedCollection<Resource>);
37-
if (collection && collection['hydra:member']) {
38-
const item = collection['hydra:member'].find((i) => i["@id"] === message["@id"]);
37+
if (collection && collection['{{hydraPrefix}}member']) {
38+
const item = collection['{{hydraPrefix}}member'].find((i) => i["@id"] === message["@id"]);
3939
if (item && retrieved) {
4040
Object.assign(item, message);
4141
setRetrieved({ ...retrieved });
+12-12
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
import { ApiResource } from "../utils/types";
22

33
export interface Pagination {
4-
"hydra:first"?: string;
5-
"hydra:previous"?: string;
6-
"hydra:next"?: string;
7-
"hydra:last"?: string;
4+
"{{hydraPrefix}}first"?: string;
5+
"{{hydraPrefix}}previous"?: string;
6+
"{{hydraPrefix}}next"?: string;
7+
"{{hydraPrefix}}last"?: string;
88
}
99

1010
export interface PagedCollection<T> extends ApiResource {
1111
"@context"?: string;
1212
"@type"?: string;
13-
"hydra:firstPage"?: string;
14-
"hydra:itemsPerPage"?: number;
15-
"hydra:lastPage"?: string;
16-
"hydra:member"?: T[];
17-
"hydra:nextPage"?: string;
18-
"hydra:search"?: object;
19-
"hydra:totalItems"?: number;
20-
"hydra:view"?: Pagination;
13+
"{{hydraPrefix}}firstPage"?: string;
14+
"{{hydraPrefix}}itemsPerPage"?: number;
15+
"{{hydraPrefix}}lastPage"?: string;
16+
"{{hydraPrefix}}member"?: T[];
17+
"{{hydraPrefix}}nextPage"?: string;
18+
"{{hydraPrefix}}search"?: object;
19+
"{{hydraPrefix}}totalItems"?: number;
20+
"{{hydraPrefix}}view"?: Pagination;
2121
}

templates/vuetify/store/foo/list.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ export const use{{titleUcFirst}}ListStore = defineStore("{{lc}}List", {
3434

3535
this.toggleLoading();
3636

37-
this.setItems(data["hydra:member"]);
38-
this.setTotalItems(data["hydra:totalItems"] ?? 0);
37+
this.setItems(data["{{hydraPrefix}}member"]);
38+
this.setTotalItems(data["{{hydraPrefix}}totalItems"] ?? 0);
3939

4040
if (hubUrl) {
4141
this.setHubUrl(hubUrl);

0 commit comments

Comments
 (0)