🐛 Fix spotify presence lease again
This commit is contained in:
		@@ -23,9 +23,7 @@ public class SpotifyPresenceService(
 | 
			
		||||
            .ToListAsync();
 | 
			
		||||
 | 
			
		||||
        foreach (var connection in userConnections)
 | 
			
		||||
        {
 | 
			
		||||
            await UpdateSpotifyPresenceAsync(connection.Account);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
@@ -59,7 +57,7 @@ public class SpotifyPresenceService(
 | 
			
		||||
 | 
			
		||||
            // Get currently playing track
 | 
			
		||||
            var currentlyPlaying = await spotify.Player.GetCurrentlyPlaying(new PlayerCurrentlyPlayingRequest());
 | 
			
		||||
            if (currentlyPlaying?.Item == null || currentlyPlaying.IsPlaying == false)
 | 
			
		||||
            if (currentlyPlaying?.Item == null || !currentlyPlaying.IsPlaying)
 | 
			
		||||
            {
 | 
			
		||||
                // Nothing playing or paused, remove the presence
 | 
			
		||||
                await RemoveSpotifyPresenceAsync(account.Id);
 | 
			
		||||
@@ -68,24 +66,31 @@ public class SpotifyPresenceService(
 | 
			
		||||
 | 
			
		||||
            var presenceActivity = ParseCurrentlyPlayingToPresenceActivity(account.Id, currentlyPlaying);
 | 
			
		||||
 | 
			
		||||
            // Update or create the presence activity
 | 
			
		||||
            await accountEventService.UpdateActivityByManualId(
 | 
			
		||||
            // Try to update existing activity first
 | 
			
		||||
            var updatedActivity = await accountEventService.UpdateActivityByManualId(
 | 
			
		||||
                "spotify",
 | 
			
		||||
                account.Id,
 | 
			
		||||
                activity =>
 | 
			
		||||
                {
 | 
			
		||||
                    activity.Type = PresenceType.Music;
 | 
			
		||||
                    activity.Title = presenceActivity.Title;
 | 
			
		||||
                    activity.Subtitle = presenceActivity.Subtitle;
 | 
			
		||||
                    activity.Caption = presenceActivity.Caption;
 | 
			
		||||
                    activity.LargeImage = presenceActivity.LargeImage;
 | 
			
		||||
                    activity.SmallImage = presenceActivity.SmallImage;
 | 
			
		||||
                    activity.TitleUrl = presenceActivity.TitleUrl;
 | 
			
		||||
                    activity.SubtitleUrl = presenceActivity.SubtitleUrl;
 | 
			
		||||
                    activity.Meta = presenceActivity.Meta;
 | 
			
		||||
                },
 | 
			
		||||
                10 // 10 minute lease
 | 
			
		||||
                UpdateActivityWithPresenceData,
 | 
			
		||||
                5 
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
            // If update failed (no existing activity), create a new one
 | 
			
		||||
            if (updatedActivity == null)
 | 
			
		||||
                await accountEventService.SetActivity(presenceActivity, 5);
 | 
			
		||||
 | 
			
		||||
            // Local function to avoid capturing external variables in lambda
 | 
			
		||||
            void UpdateActivityWithPresenceData(SnPresenceActivity activity)
 | 
			
		||||
            {
 | 
			
		||||
                activity.Type = PresenceType.Music;
 | 
			
		||||
                activity.Title = presenceActivity.Title;
 | 
			
		||||
                activity.Subtitle = presenceActivity.Subtitle;
 | 
			
		||||
                activity.Caption = presenceActivity.Caption;
 | 
			
		||||
                activity.LargeImage = presenceActivity.LargeImage;
 | 
			
		||||
                activity.SmallImage = presenceActivity.SmallImage;
 | 
			
		||||
                activity.TitleUrl = presenceActivity.TitleUrl;
 | 
			
		||||
                activity.SubtitleUrl = presenceActivity.SubtitleUrl;
 | 
			
		||||
                activity.Meta = presenceActivity.Meta;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        catch (Exception ex)
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user