diff --git a/src/Api/Controllers/CiphersController.cs b/src/Api/Controllers/CiphersController.cs index e3a90319eb..9c6391f430 100644 --- a/src/Api/Controllers/CiphersController.cs +++ b/src/Api/Controllers/CiphersController.cs @@ -58,8 +58,11 @@ namespace Bit.Api.Controllers { var userId = _userService.GetProperUserId(User).Value; var ciphers = await _cipherRepository.GetManyByUserIdHasSubvaultsAsync(userId); + var subvaultCiphers = await _subvaultCipherRepository.GetManyByUserIdAsync(userId); - var responses = ciphers.Select(c => new CipherDetailsResponseModel(c, subvaultCiphers)); + var subvaultCiphersGroupDict = subvaultCiphers.GroupBy(s => s.CipherId).ToDictionary(s => s.Key); + + var responses = ciphers.Select(c => new CipherDetailsResponseModel(c, subvaultCiphersGroupDict)); return new ListResponseModel(responses); } diff --git a/src/Core/Models/Api/Response/CipherResponseModel.cs b/src/Core/Models/Api/Response/CipherResponseModel.cs index 6486892b86..eb27da1f59 100644 --- a/src/Core/Models/Api/Response/CipherResponseModel.cs +++ b/src/Core/Models/Api/Response/CipherResponseModel.cs @@ -44,10 +44,18 @@ namespace Bit.Core.Models.Api public class CipherDetailsResponseModel : CipherResponseModel { - public CipherDetailsResponseModel(CipherDetails cipher, IEnumerable subvaultCipher) + public CipherDetailsResponseModel(CipherDetails cipher, + IDictionary> subvaultCiphers) : base(cipher, "cipherDetails") { - SubvaultIds = subvaultCipher.Select(s => s.SubvaultId); + if(subvaultCiphers.ContainsKey(cipher.Id)) + { + SubvaultIds = subvaultCiphers[cipher.Id].Select(s => s.SubvaultId); + } + else + { + SubvaultIds = new Guid[] { }; + } } public IEnumerable SubvaultIds { get; set; }