Improve error handling and logging for member profile updates
- Added detailed logging to API route for PUT requests - Improved error response handling to include actual error messages - Fixed avatarId type conversion (str...
Add detailed logging to updateMemberProfile for debugging
- Added logging at start of updateMemberProfile method - Added logging before and after saving user and member - Improved error response to include error detail...
Improve error handling and refresh profile data after save
- Added detailed error messages when profile save fails - Profile data is now refreshed from server after successful save - Better error logging for debugging
Add support for updating user name fields and dateOfBirth in member profile
- Added UserRepository to MemberController - Updated updateMemberProfile to handle namePrefix, nameFirst, nameMiddle, nameLast, nameSuffix, nameFirstAKA, nameLa...
Remove URL input for backgrounds, improve upload error handling, fix avatar persistence
- Removed URL input field for backgrounds - only uploads via popup are allowed - Improved error handling for background uploads with detailed error messages - F...
Resolve lint errors in ProfileTab and MemberHeader
- Added Button import to MemberHeader - Fixed newAvatar scope issue in handleUploadPhoto and handleCreateAvatar Creator - Stored avatarIdToRefresh in outer scop...
Add Manage Backgrounds button in MemberHeader
- Added handleManageBackgroundsClick prop to MemberHeader - Added Manage Backgrounds button next to URL input when custom background is enabled - BackgroundMana...
Store avatar hash and extension in *** session data
- Added updateSession method to KSessionService for updating session fields - Updated setActiveAvatar to store userAvatarHash and userAvatarExtension in session...
Refresh profile data after setting avatar and ensure proper activation
- handleSelectAvatar now sets avatar as active via API and refreshes profile data - handleUploadPhoto and handleCreateAvatar Creator now update member and refre...
Convert null to undefined for avatarSrc type compatibility
- fetchMemberAvatar returns string | null but avatarSrc expects string | undefined - Use nullish coalescing operator to convert null to undefined
Add .js extension to dynamic imports for node16 module resolution
- TypeScript with node16 moduleResolution requires explicit file extensions - Changed relative imports to include .js extension
Use relative paths for dynamic imports of avatarUtils
- Changed dynamic imports from @/app/lib/avatarUtils to relative paths - Fixes TypeScript module resolution error during build
Fix async/await syntax error in HexHeadGroup useEffect
- Wrapped Promise.all in async function to fix build error - useEffect callbacks cannot be async directly
Update avatarUtils to use URLs directly from member profile
- Backend now includes avatar URLs in member profile response - Removed unnecessary second API call to /api/security/avatars/{id} - More efficient and works cor...
Include avatar URLs in member profile response
- Added helper methods to generate avatar URLs (getThemeDomain, getPublicBucketName, generateFileHash, getPublicBucketUrl, generateAvatarUrl) - Updated getMembe...
Add avatar fallback logic to chat components and member list
- Created avatarUtils.ts with utility functions for avatar fallback (member -> user -> initials) - Updated HexHeadGroup to fetch and display avatars with fallba...
Add ThemeBackgroundController with hash-based storage and public bucket support
Додати темуОсобливості та репозиторію з відносинами з Користувачем/Меберами
Implement ThemeBackground system: entity, repository, controller, and enhanced BackgroundManager with slideshow support
Fix lint error: change let to const for filtered variable and remove unused imports
Enhance Select Avatar tab: add search, sort by newest, date/time display, edit avatars, and photo cropping with draggable mask
Fix Grid layout: replace Grid container/item with Box using CSS Grid to match FormPersonalInfo.tsx exact layout
Fix TypeScript errors: add eslint-disable for EyeDropper any type, remove unused imports
Replace CREATE AVATAR tab with exact layout from FormPersonalInfo.tsx - matching kamo-register avatar creator interface
Fix Swiper CSS imports: move to top-level side-effect imports instead of dynamic imports
Фіксація Swiper import: використання динамічного імпорту для вирішення проблеми модуля CommonJS/ESM
Fix TypeScript error: replace 'any' with 'unknown' in error handling
Виправлення використання API компонента Grid для відповідності MUI v7 Grid API
Update Create Avatar layout to match kamo-register design
- Reorganize Create Avatar tab with top row for quick settings (Style, Seed) - Split bottom row into two columns: Preview (left) and Advanced Settings (right) -...
Switch back to MuiAvatar components for avatar display
- Replace img tags with MuiAvatar components - Maintains all existing functionality (error handling, loading callbacks) - Cleaner code using Material-UI compone...
Use correct bucket and object path structure for MinIO uploads
- Change bucket name from domain-based to 'public' bucket - Include domain path (e.g., kamocrm-com) as part of object name, not bucket name - Fix object path st...
Properly handle MinIO upload failures for avatars
- Remove silent exception swallowing in Avatar Creator avatar creation - Add proper error handling and rollback for failed uploads - Delete database record if f...
Remove ID-based fallback code, use only hash-based naming
- Remove all try-catch fallback logic for missing fileHash column - Remove ID-based file naming fallbacks - Code now exclusively uses hash-based file storage - ...
Handle missing fileHash column gracefully
- Add try-catch around fileHash access to handle missing database column - Fall back to ID-based file naming if fileHash column doesn't exist yet - Allows code ...
Заміна MuiAvatar з тегом img для коректного відображення avatar зображень
- Використовуйте рідний тег img замість компонента MuiAvatar для кращого відображення зображення - Обгортання Гим в контейнері коробки з правильним укладанням д...
Implement hash-based file storage for avatars
- Generate SHA-256 hash from avatar ID after persistence - Store hash in database fileHash field - Upload files to MinIO using hash-based naming: {hash}.{fileEx...
Додати файлПриховати поле до суб'єкта Avatar для безпечного зберігання файлів
- Додати файлГаш стовпець для зберігання SHA-256 хеш аватара ID - Hash використовується для обробки файлів Minio, щоб запобігти атакам акметації - Формат: {hash...
Проблеми генерації та відображення Avatar URL
- Додати X-Forwarded-Host заголовок переадресації в API проксі, так що назад може генерувати правильні URL-адреси доменів теми - Додайте комплексний журнал для ...
Покращити управління аватаром UI і функціональність
- Виправлення avatar відображення у Виберіть Avatar popup, щоб показати зображення для всіх аватар (генерувати SVG клієнт-на стороні при відсутності URL) - Випр...
Виправлення помилки синтаксису SQL в getPageviewExpandedMetrics запиту
Видалити перетворенняAvatarUrl дзвінків - відображати зображення безпосередньо з URL-адрес зворотного зв'язку
Update avatarUrlTransform для повернення не визначених замість null
Add logging and ensure public bucket URL format matches working pattern
Як ви бачите відправлення?
Кожен з цих оновлень землі в робочому просторі автоматично. Почати вільний час і дивитися його на тиждень після тижня.