diff --git a/Analytics-CSharp/Analytics-CSharp.csproj b/Analytics-CSharp/Analytics-CSharp.csproj index 604abc8..2d383d7 100644 --- a/Analytics-CSharp/Analytics-CSharp.csproj +++ b/Analytics-CSharp/Analytics-CSharp.csproj @@ -10,7 +10,7 @@ Segment, Inc The hassle-free way to add analytics to your C# app. - 2.3.2 + 2.3.4 MIT https://github.com/segmentio/Analytics-CSharp git diff --git a/Analytics-CSharp/Segment/Analytics/Settings.cs b/Analytics-CSharp/Segment/Analytics/Settings.cs index 339b748..5a9fe8a 100644 --- a/Analytics-CSharp/Segment/Analytics/Settings.cs +++ b/Analytics-CSharp/Segment/Analytics/Settings.cs @@ -16,7 +16,7 @@ public struct Settings public partial class Analytics { - internal async void Update(Settings settings) { + internal async Task Update(Settings settings) { System systemState = await Store.CurrentState(); HashSet initializedPlugins = new HashSet(); Timeline.Apply(plugin => { @@ -49,7 +49,7 @@ await Scope.WithContext(NetworkIODispatcher, async () => settings = systemState._settings; } - Update(settings.Value); + await Update(settings.Value); await Store.Dispatch(new System.ToggleRunningAction(true)); } } diff --git a/Analytics-CSharp/Segment/Analytics/State.cs b/Analytics-CSharp/Segment/Analytics/State.cs index 49aa430..c1c755e 100644 --- a/Analytics-CSharp/Segment/Analytics/State.cs +++ b/Analytics-CSharp/Segment/Analytics/State.cs @@ -37,7 +37,15 @@ internal static System DefaultState(Configuration configuration, IStorage storag try { string cache = storage.Read(StorageConstants.Settings) ?? ""; - settings = JsonUtility.FromJson(cache); + if (string.IsNullOrEmpty(cache)) + { + Analytics.Logger.Log(LogLevel.Information, null, "No settings loaded from storage. Switch to default settings provided through configuration."); + settings = configuration.DefaultSettings; + } + else + { + settings = JsonUtility.FromJson(cache); + } } catch (Exception e) { diff --git a/Analytics-CSharp/Segment/Analytics/Version.cs b/Analytics-CSharp/Segment/Analytics/Version.cs index c1c498f..7b97d1f 100644 --- a/Analytics-CSharp/Segment/Analytics/Version.cs +++ b/Analytics-CSharp/Segment/Analytics/Version.cs @@ -2,6 +2,6 @@ namespace Segment.Analytics { internal static class Version { - internal const string SegmentVersion = "2.3.2"; + internal const string SegmentVersion = "2.3.4"; } } diff --git a/README.md b/README.md index 00d1456..8616a67 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,8 @@ # Analytics-CSharp + +### 🎉 Flagship 🎉 +This library is one of Segment’s most popular Flagship libraries. It is actively maintained by Segment, benefitting from new feature releases and ongoing support. + ![Nuget](https://img.shields.io/nuget/v/Segment.Analytics.CSharp) [![openupm](https://img.shields.io/npm/v/com.segment.analytics.csharp?label=openupm®istry_uri=https://package.openupm.com)](https://openupm.com/packages/com.segment.analytics.csharp/) [![](https://github.com/segmentio/analytics-csharp/actions/workflows/build.yml/badge.svg)](https://github.com/segmentio/analytics-csharp/actions) diff --git a/Tests/StateTest.cs b/Tests/StateTest.cs index d85fb91..e70e745 100644 --- a/Tests/StateTest.cs +++ b/Tests/StateTest.cs @@ -55,6 +55,20 @@ public void TestSystemDefaultState() Assert.False(actual._running); } + [Fact] + public void TestSystemDefaultStateEmpty() + { + _storage + .Setup(o => o.Read(It.IsAny())) + .Returns(""); + + var actual = Segment.Analytics.System.DefaultState(_configuration, _storage.Object); + + Assert.Equal(_configuration, actual._configuration); + Assert.Equal(_settings.Integrations.ToString(), actual._settings.Integrations.ToString()); + Assert.False(actual._running); + } + [Fact] public void TestSystemDefaultStateException() {