This repository has been archived by the owner on Feb 10, 2024. It is now read-only.
/
useWordpressProfiles.ts
62 lines (54 loc) · 1.87 KB
/
useWordpressProfiles.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 { WordpressUserProfileDTO } from "../../../core/wordpress/dto/WordpressUserProfileDTO";
import { routeValidation } from "./routeValidation";
const LOG = LogService.createLogger('useWordpressProfilesList');
export function useWordpressProfilesList(url:string):
[
readonly WordpressUserProfileDTO[] | undefined,
] {
const [userProfilesList, setUserProfilesList] = useState<readonly WordpressUserProfileDTO[] | undefined>(undefined);
const [valid, setValid] = useState<boolean>(false);
const refreshCallback = useCallback(
() => {
const result = routeValidation(url);
setValid(result);
},
[
url,
]
)
const getWordpressUserProfilesCallback = useCallback(
async () => {
try {
LOG.debug(`Fetching user profiles list`);
const result = await WordpressService.getWordpressUserProfilesList(url);
LOG.debug(`Received user profiles list: `, result);
setUserProfilesList(result);
} catch (err) {
LOG.error(`Failed to load wordpress user profiles list: `, err);
}
},
[
url
]
);
// Update profiles list initially
useEffect(
() => {
LOG.debug(`Initial update triggered`);
refreshCallback()
if(valid) {
getWordpressUserProfilesCallback()
}
},
[
refreshCallback,
valid,
getWordpressUserProfilesCallback
]
);
return [userProfilesList];
}