45 lines
1.4 KiB
JavaScript
45 lines
1.4 KiB
JavaScript
/**
|
|
* Генерирует уникальный ID
|
|
* @returns {string} - Уникальный ID
|
|
*/
|
|
export const generateUniqueId = () => {
|
|
return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
};
|
|
|
|
/**
|
|
* Сокращает адрес кошелька
|
|
* @param {string} address - Адрес кошелька
|
|
* @returns {string} - Сокращенный адрес
|
|
*/
|
|
export const truncateAddress = (address) => {
|
|
if (!address) return '';
|
|
// Добавим проверку на длину, чтобы не было ошибок
|
|
if (address.length <= 10) return address;
|
|
return `${address.substring(0, 6)}...${address.substring(address.length - 4)}`;
|
|
};
|
|
|
|
/**
|
|
* Форматирует время в человекочитаемый вид
|
|
* @param {string | number | Date} timestamp - Метка времени
|
|
* @returns {string} - Форматированное время
|
|
*/
|
|
export const formatTime = (timestamp) => {
|
|
if (!timestamp) return '';
|
|
try {
|
|
const date = new Date(timestamp);
|
|
if (isNaN(date.getTime())) {
|
|
console.warn('Invalid timestamp for formatTime:', timestamp);
|
|
return '';
|
|
}
|
|
return date.toLocaleString([], {
|
|
year: 'numeric',
|
|
month: 'short',
|
|
day: 'numeric',
|
|
hour: '2-digit',
|
|
minute: '2-digit',
|
|
});
|
|
} catch (error) {
|
|
console.error('Error formatting time:', error, timestamp);
|
|
return '';
|
|
}
|
|
};
|