This repository has been archived by the owner on Feb 10, 2024. It is now read-only.
/
useWordpressReferences.ts
62 lines (54 loc) · 1.84 KB
/
useWordpressReferences.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// Copyright (c) 2022. Heusala Group Oy <info@heusalagroup.fi>. All rights reserved.
import { WordpressService } from "../../services/WordpressService";
import {useCallback, useEffect, useState} from "react";
import { LogService } from "../../../core/LogService";
import { WordpressReferenceDTO } from "../../../core/wordpress/dto/WordpressReferenceDTO";
import { routeValidation } from "./routeValidation";
const LOG = LogService.createLogger('useWordpressReferencesList');
export function useWordpressReferencesList(url:string):
[
readonly WordpressReferenceDTO[] | undefined,
] {
const [referencesList, setReferenceList] = useState<readonly WordpressReferenceDTO[] | undefined>(undefined);
const [valid, setValid] = useState<boolean>(false);
const refreshCallback = useCallback(
() => {
const result = routeValidation(url);
setValid(result);
},
[
url,
]
)
const getWordpressReferencesCallback = useCallback(
async () => {
try {
LOG.debug(`Fetching references list`);
const result = await WordpressService.getWordpressReferenceList(url);
LOG.debug(`Received references list: `, result);
setReferenceList(result);
} catch (err) {
LOG.error(`Failed to load wordpress references list: `, err);
}
},
[
url,
]
);
// Update reference list initially
useEffect(
() => {
LOG.debug(`Initial update triggered`);
refreshCallback()
if(valid) {
getWordpressReferencesCallback()
}
},
[
refreshCallback,
valid,
getWordpressReferencesCallback
]
);
return [referencesList];
}