Added useFormat hook to format special values.

This commit is contained in:
Mike Cao 2023-08-07 15:02:50 -07:00
parent a71cf675ae
commit 2eee9c23c3
9 changed files with 68 additions and 19 deletions

View file

@ -6,6 +6,7 @@ export * from './useDocumentClick';
export * from './useEscapeKey';
export * from './useFilters';
export * from './useForceUpdate';
export * from './useFormat';
export * from './useLanguageNames';
export * from './useLocale';
export * from './useMessages';

39
hooks/useFormat.js Normal file
View file

@ -0,0 +1,39 @@
import useMessages from './useMessages';
import { BROWSERS } from 'lib/constants';
import useLocale from './useLocale';
import useCountryNames from './useCountryNames';
export function useFormat() {
const { formatMessage, labels } = useMessages();
const { locale } = useLocale();
const countryNames = useCountryNames(locale);
const formatBrowser = value => {
return BROWSERS[value] || value;
};
const formatCountry = value => {
return countryNames[value] || value;
};
const formatDevice = value => {
return formatMessage(labels[value] || labels.unknown);
};
const formatValue = (value, type) => {
switch (type) {
case 'browser':
return formatBrowser(value);
case 'country':
return formatCountry(value);
case 'device':
return formatDevice(value);
default:
return value;
}
};
return { formatBrowser, formatCountry, formatDevice, formatValue };
}
export default useFormat;

View file

@ -4,11 +4,11 @@ import { messages, labels } from 'components/messages';
export function useMessages() {
const { formatMessage } = useIntl();
function getMessage(id) {
const getMessage = id => {
const message = Object.values(messages).find(value => value.id === id);
return message ? formatMessage(message) : id;
}
};
return { formatMessage, FormattedMessage, messages, labels, getMessage };
}