-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDefaultProfileOption.tsx
More file actions
68 lines (57 loc) · 2.05 KB
/
Copy pathDefaultProfileOption.tsx
File metadata and controls
68 lines (57 loc) · 2.05 KB
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
63
64
65
66
67
68
import { FC, useEffect } from 'react';
import { FormattedMessage, useIntl } from 'react-intl';
import { getProfileLabelId, getResourceTypeFromURL } from '@/configs/resourceTypes';
import { usePreferredProfiles } from '@/features/profiles';
import { useManageProfileSettingsState } from '@/store';
import './DefaultProfileOption.scss';
type DefaultProfileOptionProps = {
selectedProfile: ProfileDTO;
};
export const DefaultProfileOption: FC<DefaultProfileOptionProps> = ({ selectedProfile }) => {
const { isTypeDefaultProfile, setIsTypeDefaultProfile, setIsModified } = useManageProfileSettingsState([
'isTypeDefaultProfile',
'setIsTypeDefaultProfile',
'setIsModified',
]);
const { loadPreferredProfiles, preferredProfileForType } = usePreferredProfiles();
const { formatMessage } = useIntl();
const handleDefaultChange = () => {
setIsModified(true);
setIsTypeDefaultProfile(prev => !prev);
};
const getTypeLabel = () => {
return (
<span key="type-label">
{formatMessage({
id: getProfileLabelId(getResourceTypeFromURL(selectedProfile.resourceType as ResourceTypeURL)),
})}
</span>
);
};
useEffect(() => {
const initialize = async () => {
const preferredProfiles = await loadPreferredProfiles();
if (preferredProfiles?.length) {
const preferred = preferredProfileForType(selectedProfile.resourceType, preferredProfiles);
setIsTypeDefaultProfile(!!preferred && preferred.id.toString() === selectedProfile.id.toString());
} else {
setIsTypeDefaultProfile(false);
}
};
initialize();
}, [selectedProfile]);
return (
<div className="default-settings">
<label htmlFor="type-default-setting">
<input
type="checkbox"
checked={isTypeDefaultProfile}
onChange={handleDefaultChange}
id="type-default-setting"
data-testid="type-default-setting"
/>
<FormattedMessage id="ld.setDefaultTypeProfile" values={{ type: getTypeLabel() }} />
</label>
</div>
);
};