Convert String salesType to SaleType enum in LeadMarketController
Fix compilation errors in MediaStreamController
- Fixed missing closing brace in getFeed method else block - Replaced Map.of() with HashMap for compatibility - Fixed stream variable to be effectively final fo...
JobTitleController now uses pre-authenticated session from OTKPreAuthFilter to prevent 401 errors
SecurityRoleController now uses pre-authenticated session from OTKPreAuthFilter to prevent 401 errors
DomainController now uses pre-authenticated session from OTKPreAuthFilter to prevent 401 errors
Query all user avatars to get real entity instead of proxy
- Get userId from avatar, then query findByUserId (returns real entities) - Find matching avatar from list and check instanceof - This avoids proxy issues that ...
Use Hibernate LazyInitializer to get actual entity class from proxy
- Access HibernateProxy's LazyInitializer to get persistent class - Check if persistent class is AvatarPhoto or AvatarAvatar Creator - Force initialization usin...
Use direct cast to determine avatar type instead of reflection
- Try casting to AvatarPhoto first to force proxy initialization - Access getFileExtension() directly after cast - Fall back to AvatarAvatar Creator cast if pho...
Improve proxy type detection by catching InvocationTargetException
- Handle ClassCastException when invoking methods on proxy to determine actual type - Try getFileExtension first (photo), then getStyle (Avatar Creator) - Bette...
Improve Hibernate proxy handling for avatar type detection
- Search class hierarchy and interfaces for getFileExtension method - Use reflection to detect AvatarPhoto vs AvatarAvatar Creator when instanceof fails - Add f...
Reload avatar from repository to resolve Hibernate proxy instanceof issue
- Avatar entities loaded from relationships may be Hibernate proxies that fail instanceof checks - Reload avatar from repository to get actual entity type (Avat...
Determine active avatar by checking user.getAvatar() instead of RecordState
- Backend now correctly marks which avatar is active by comparing to user.getAvatar() - This ensures the isActive flag in the API response reflects the actual a...
Handle ISO date format and improve avatarId type parsing
- Added support for ISO date format (YYYY-MM-DD) in addition to M/d/yyyy - Improved avatarId parsing to handle Number types (Double, BigDecimal, etc.) from JSON...
Add better error handling and logging for user/member save operations
- Added try-catch around user save operation with detailed error logging - Added try-catch around member save operation with detailed error logging - Improved d...
Improve avatarId parsing to handle string, integer, and long types
- Added support for parsing avatarId from String type - Better error handling for invalid avatarId formats - Added logging for avatar assignment and errors
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...
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...
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...
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 ...
Add logging and ensure public bucket URL format matches working pattern
Revert to getPresignedUrl like backgrounds - getPresignedUrlWithEndpoint was breaking uploads
Add retry logic for Maven dependency downloads to handle transient Central failures
Simplify StorageController - validate OTK, get image, stream it
Generate presigned URLs normally then replace hostname with theme domain
Use getPresignedUrlWithEndpoint with theme domain for all avatar URLs
Use getPresignedUrl method that works instead of getPresignedUrlWithEndpoint
Generate presigned URLs with theme domain directly in backend for avatars
Use getPresignedUrlWithEndpoint to generate URLs with correct signature for theme domain
Simplify avatar URL generation - use same logic as frontend getThemePath, just replace endpoint in presigned URL
Replace internal IP endpoint with theme domain in presigned URLs as fallback
Add comprehensive logging to avatar URL generation to debug empty URLs
Use getPresignedUrlWithEndpoint to generate URLs signed for theme domain - no endpoint replacement needed
Generate presigned URLs and replace endpoint with theme domain - theme.* alias points directly to MinIO
Return proxy URLs for avatars instead of presigned URLs - avatars now use /api/storage/avatars proxy route
Generate presigned URLs with theme domain endpoint for signed avatar image access
Return /internal/ paths instead of presigned URLs, let frontend use theme domain like ThemeLogo
Generate presigned URL for Avatar Creator avatar creation endpoint
Generate presigned URLs for avatar images from internal bucket like UserBackgroundController
Return avatar IDs as strings to prevent JavaScript number precision loss
Add enhanced logging for avatar deletion to debug not found issues
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
