diff --git a/PortaCapena.OdooJsonRpcClient/OdooClient.cs b/PortaCapena.OdooJsonRpcClient/OdooClient.cs index 99ff85b..8b02a94 100644 --- a/PortaCapena.OdooJsonRpcClient/OdooClient.cs +++ b/PortaCapena.OdooJsonRpcClient/OdooClient.cs @@ -10,6 +10,7 @@ using System.Threading.Tasks; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using System.Collections.Concurrent; using PortaCapena.OdooJsonRpcClient.Consts; using PortaCapena.OdooJsonRpcClient.Extensions; using PortaCapena.OdooJsonRpcClient.Models; @@ -23,7 +24,7 @@ public sealed class OdooClient private static HttpClient _client; public OdooConfig Config { get; } - [ThreadStatic] private static int? _userUid; + private static readonly ConcurrentDictionary _userUid = new ConcurrentDictionary(); /// /// Can be set to false, if server certificate shall not be validated. @@ -298,8 +299,8 @@ public static async Task> DeleteRangeAsync(OdooConfig odooConfi public async Task> GetCurrentUserUidOrLoginAsync(CancellationToken cancellationToken = default) { - if (_userUid.HasValue) - return await Task.FromResult(OdooResult.SucceedResult(_userUid.Value)); + if (_userUid.ContainsKey(Config.ApiUrl)) + return await Task.FromResult(OdooResult.SucceedResult(_userUid[Config.ApiUrl])); return await LoginAsync(cancellationToken); } @@ -308,7 +309,7 @@ public async Task> LoginAsync(CancellationToken cancellationToke var result = await LoginAsync(Config, cancellationToken); if (result.Succeed) - _userUid = result.Value; + _userUid[Config.ApiUrl] = result.Value; return result; }