Skip to content

Commit

Permalink
Fix crash on LoadLocalNotificationData
Browse files Browse the repository at this point in the history
  • Loading branch information
neon-nyan committed Feb 1, 2025
1 parent 1ce88dd commit b5eaf18
Showing 1 changed file with 44 additions and 14 deletions.
58 changes: 44 additions & 14 deletions CollapseLauncher/Classes/Properties/InnerLauncherConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -241,24 +241,54 @@ public static void SaveLocalNotificationData()

public static async Task LoadLocalNotificationData()
{
await using FileStream fileStream = File.Open(AppNotifIgnoreFile, FileMode.OpenOrCreate, FileAccess.ReadWrite);
if (!File.Exists(AppNotifIgnoreFile))
FileStream? fileStream = null;

bool forceCreate = false;
while (true)
{
await new NotificationPush().SerializeAsync(fileStream, NotificationPushJsonContext.Default.NotificationPush).ConfigureAwait(false);
}
try
{
fileStream = File.Open(AppNotifIgnoreFile, forceCreate ? FileMode.Create : FileMode.OpenOrCreate, FileAccess.ReadWrite);
if (fileStream.Length == 0)
{
await new NotificationPush()
.SerializeAsync(fileStream, NotificationPushJsonContext.Default.NotificationPush)
.ConfigureAwait(false);
}

fileStream.Position = 0;
NotificationPush? localNotificationData = await fileStream.DeserializeAsync(NotificationPushJsonContext.Default.NotificationPush).ConfigureAwait(false);
fileStream.Position = 0;
NotificationPush? localNotificationData = await fileStream
.DeserializeAsync(NotificationPushJsonContext.Default.NotificationPush)
.ConfigureAwait(false);

if (NotificationData == null)
{
return;
}
if (NotificationData == null)
{
return;
}

NotificationData.AppPushIgnoreMsgIds = localNotificationData?.AppPushIgnoreMsgIds;
NotificationData.RegionPushIgnoreMsgIds = localNotificationData?.RegionPushIgnoreMsgIds;
NotificationData.CurrentShowMsgIds = localNotificationData?.CurrentShowMsgIds;
NotificationData.EliminatePushList();

NotificationData.AppPushIgnoreMsgIds = localNotificationData?.AppPushIgnoreMsgIds;
NotificationData.RegionPushIgnoreMsgIds = localNotificationData?.RegionPushIgnoreMsgIds;
NotificationData.CurrentShowMsgIds = localNotificationData?.CurrentShowMsgIds;
NotificationData.EliminatePushList();
return;
}
catch
{
if (forceCreate)
{
throw;
}
forceCreate = true;
}
finally
{
if (fileStream != null)
{
await fileStream.DisposeAsync();
}
}
}
}
}
}

0 comments on commit b5eaf18

Please sign in to comment.