public async Task RoomMemberPayloadDirty(string roomId) { if (Logger.IsEnabled(LogLevel.Trace)) { Logger.LogTrace($"roomMemberPayloadDirty({roomId})"); } var contactIdList = await RoomMemberList(roomId); foreach (var contactId in contactIdList) { var cacheKey = CacheKeyRoomMember(roomId, contactId); _ = CacheRoomMemberPayload.Delete(cacheKey); } }
public async Task <RoomMemberPayload> RoomMemberPayload(string roomId, string memberId) { if (Logger.IsEnabled(LogLevel.Trace)) { Logger.LogTrace($"roomMemberPayload(roomId={roomId}, memberId={memberId})"); } if (string.IsNullOrWhiteSpace(roomId) || string.IsNullOrWhiteSpace(memberId)) { throw new ArgumentException("no id"); } //1. Try to get from cache var cacheKey = CacheKeyRoomMember(roomId, memberId); var cachedPayload = CacheRoomMemberPayload.Get(cacheKey); if (cachedPayload != null) { return(cachedPayload); } //2. Cache not found var rawPayload = await RoomMemberRawPayload(roomId, memberId); if (rawPayload == null) { throw new InvalidOperationException($"contact({memberId}) is not in the Room({roomId})"); } var payload = await RoomMemberRawPayloadParser(rawPayload); CacheRoomMemberPayload.Set(cacheKey, payload); if (Logger.IsEnabled(LogLevel.Trace)) { Logger.LogTrace($"roomMemberPayload({roomId}) cache SET"); } return(payload); }