diff --git a/internal/models/directchat.go b/internal/models/directchat.go index 210ace5..583dfb4 100644 --- a/internal/models/directchat.go +++ b/internal/models/directchat.go @@ -4,10 +4,11 @@ import "time" // DirectChat representa un chat directo entre dos usuarios type DirectChat struct { - ID string `json:"id" firestore:"id"` - UserIDs []string `json:"userIds" firestore:"userIds"` - LastMessage *Message `json:"lastMessage,omitempty" firestore:"lastMessage,omitempty"` - CreatedAt time.Time `json:"createdAt" firestore:"createdAt"` - UpdatedAt time.Time `json:"updatedAt" firestore:"updatedAt"` - IsDeleted bool `json:"isDeleted" firestore:"isDeleted"` + ID string `json:"id" firestore:"id"` + UserIDs []string `json:"userIds" firestore:"userIds"` + DisplayNames []string `json:"displayNames" firestore:"displayNames,omitempty"` + LastMessage *Message `json:"lastMessage,omitempty" firestore:"lastMessage,omitempty"` + CreatedAt time.Time `json:"createdAt" firestore:"createdAt"` + UpdatedAt time.Time `json:"updatedAt" firestore:"updatedAt"` + IsDeleted bool `json:"isDeleted" firestore:"isDeleted"` } diff --git a/internal/repositories/directchat_repository.go b/internal/repositories/directchat_repository.go index c786e8e..db17225 100644 --- a/internal/repositories/directchat_repository.go +++ b/internal/repositories/directchat_repository.go @@ -13,12 +13,14 @@ import ( // DirectChatRepository maneja las operaciones de base de datos para los chats directos type DirectChatRepository struct { FirestoreClient *config.FirestoreClient + UserRepo *UserRepository } // NewDirectChatRepository crea una nueva instancia de DirectChatRepository -func NewDirectChatRepository(client *config.FirestoreClient) *DirectChatRepository { +func NewDirectChatRepository(client *config.FirestoreClient, userRepo *UserRepository) *DirectChatRepository { return &DirectChatRepository{ FirestoreClient: client, + UserRepo: userRepo, } } @@ -111,6 +113,16 @@ func (r *DirectChatRepository) GetUserDirectChats(userID string) ([]models.Direc if err := doc.DataTo(&chat); err != nil { return nil, err } + + // Obtener los nombres actualizados de los usuarios + chat.DisplayNames = make([]string, len(chat.UserIDs)) + for i, id := range chat.UserIDs { + user, err := r.UserRepo.GetUserByID(ctx, id) + if err == nil && user != nil { + chat.DisplayNames[i] = user.DisplayName + } + } + chats = append(chats, chat) }