From 270362db566f32f5bee081bf88ff6e6915f2948e Mon Sep 17 00:00:00 2001
From: Timothy Baldridge <tbaldridge@gmail.com>
Date: Sat, 18 Dec 2021 09:29:56 -0700
Subject: [PATCH] Update how we handle invalid tokens

---
 .../TokenProviders/WabbajackApiTokenProvider.cs   | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/Wabbajack.Services.OSIntegrated/TokenProviders/WabbajackApiTokenProvider.cs b/Wabbajack.Services.OSIntegrated/TokenProviders/WabbajackApiTokenProvider.cs
index c8b59553..c5a20c79 100644
--- a/Wabbajack.Services.OSIntegrated/TokenProviders/WabbajackApiTokenProvider.cs
+++ b/Wabbajack.Services.OSIntegrated/TokenProviders/WabbajackApiTokenProvider.cs
@@ -1,5 +1,6 @@
 using System;
 using System.Threading.Tasks;
+using SharpCompress.Crypto;
 using Wabbajack.DTOs.Logins;
 using Wabbajack.Hashing.xxHash64;
 using Wabbajack.Networking.Http.Interfaces;
@@ -18,9 +19,21 @@ public class WabbajackApiTokenProvider : ITokenProvider<WabbajackApiState>
         if (!MetricsPath.FileExists())
             await CreateMetricsKey();
 
+        string wjToken;
+        try
+        {
+            wjToken = (await MetricsPath.FromEncryptedJsonFile<string>())!;
+        }
+        catch (CryptoException)
+        {
+            MetricsPath.Delete();
+            await CreateMetricsKey();
+            wjToken = (await MetricsPath.FromEncryptedJsonFile<string>())!;
+        }
+
         return new WabbajackApiState
         {
-            MetricsKey = (await MetricsPath.FromEncryptedJsonFile<string>())!,
+            MetricsKey = wjToken,
             AuthorKey = AuthorKeyPath.FileExists() ? await AuthorKeyPath.ReadAllTextAsync() : null
         };
     }