Добавлена логика загрузки аватаров пользователей через API с использованием S3. Реализованы проверки на тип и размер файла, а также обработка ошибок. Обновлены компоненты UserSettings и useAuth для интеграции новой функциональности. Оптимизирована работа с кэшем Apollo Client для мгновенного обновления аватара в интерфейсе.

This commit is contained in:
Bivekich
2025-07-28 09:08:38 +03:00
parent ec28803549
commit 5c57c34c1a
5 changed files with 266 additions and 24 deletions

View File

@ -27,25 +27,21 @@ export class S3Service {
}
static async uploadAvatar(file: File, userId: string): Promise<string> {
const fileName = `${userId}-${Date.now()}.${file.name.split('.').pop()}`
const key = `avatars/${fileName}`
try {
// Создаем FormData для загрузки
const formData = new FormData()
formData.append('file', file)
formData.append('key', key)
formData.append('bucket', s3Config.bucket)
formData.append('userId', userId)
// Пока используем простую загрузку через наш API
// Позже можно будет сделать прямую загрузку в S3
// Загружаем через наш API роут
const response = await fetch('/api/upload-avatar', {
method: 'POST',
body: formData
})
if (!response.ok) {
throw new Error('Failed to upload avatar')
const errorData = await response.json()
throw new Error(errorData.error || 'Failed to upload avatar')
}
const result = await response.json()