[{"data":1,"prerenderedAt":60},["ShallowReactive",2],{"docs:\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Services.Activity.IPlayerActivityManager":3},{"kind":4,"title":5,"namespace":6,"namespaceUrl":7,"trail":8,"typeKind":14,"availability":15,"signature":18,"displaySignature":19,"signatureHtml":20,"documentation":21,"documented":22,"bases":23,"inheritedMembers":24,"members":25,"release":57,"section":59},"type","IPlayerActivityManager","Unbroken.LaunchBox.Plugins.Services.Activity","\u002Fplugins\u002Fnamespaces\u002FUnbroken.LaunchBox.Plugins.Services.Activity",[9,12],{"title":10,"url":11},"Services","\u002Fplugins\u002Fnamespaces\u002FUnbroken.LaunchBox.Plugins.Services",{"title":13,"url":7},"Activity","Interface",{"firstSeen":16,"isBaseline":17,"declarationFirstSeen":16},"14.1",false,"public interface Unbroken.LaunchBox.Plugins.Services.Activity.IPlayerActivityManager","public interface IPlayerActivityManager","\u003Cpre class=\"shiki dark-plus\" style=\"background-color:#1E1E1E;color:#D4D4D4\" tabindex=\"0\" aria-label=\"C# code\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#569CD6\">public\u003C\u002Fspan>\u003Cspan style=\"color:#569CD6\"> interface\u003C\u002Fspan>\u003Cspan style=\"color:#4EC9B0\"> \u003C\u002Fspan>\u003Cspan title=\"Unbroken.LaunchBox.Plugins.Services.Activity.IPlayerActivityManager\">\u003Cspan style=\"color:#4EC9B0\">IPlayerActivityManager\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\n            \u003Cdiv class=\"api-summary\">Provides recent games and optional recent unlocks for the configured player, independently of profiles, achievements, and library playtime synchronization.\u003C\u002Fdiv>\n            \u003Ch4>Remarks\u003C\u002Fh4>Request this service by declaring a public constructor with an \u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Services.Activity.IPlayerActivityManager\" title=\"Unbroken.LaunchBox.Plugins.Services.Activity.IPlayerActivityManager\">IPlayerActivityManager\u003C\u002Fa> parameter and call asynchronously after activation. Reads never sign in, change accounts, or modify library statistics. Caller cancellation throws \u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.operationcanceledexception\" title=\"System.OperationCanceledException\">OperationCanceledException\u003C\u002Fa>; retrieval problems are reported in results. Each request resolves the selected account independently, so separate pages are not a fixed historical snapshot.\n        ",true,[],[],[26,37,47],{"availability":27,"id":28,"name":29,"label":29,"kind":30,"summary":31,"signature":32,"displaySignature":33,"signatureHtml":34,"anchor":35,"documentation":36,"documented":22},{"firstSeen":16,"isBaseline":17,"declarationFirstSeen":16},"M:Unbroken.LaunchBox.Plugins.Services.Activity.IPlayerActivityManager.GetAsync(System.String,Unbroken.LaunchBox.Plugins.Capabilities.Activity.PlayerActivityRequest,System.Threading.CancellationToken)","GetAsync","Method","Reads a page of the configured player's activity, reusing a recent observation after confirming the selected account.","System.Threading.Tasks.Task\u003CUnbroken.LaunchBox.Plugins.Services.PluginServiceResult\u003CUnbroken.LaunchBox.Plugins.Services.Activity.PlayerActivityPage>> GetAsync(string sourceId, Unbroken.LaunchBox.Plugins.Capabilities.Activity.PlayerActivityRequest? request, System.Threading.CancellationToken cancellationToken)","Task\u003CPluginServiceResult\u003CPlayerActivityPage>> GetAsync(\n    string sourceId,\n    PlayerActivityRequest? request,\n    CancellationToken cancellationToken\n)","\u003Cpre class=\"shiki dark-plus\" style=\"background-color:#1E1E1E;color:#D4D4D4\" tabindex=\"0\" aria-label=\"C# code\">\u003Ccode>\u003Cspan class=\"line\">\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.threading.tasks.task-1\" title=\"System.Threading.Tasks.Task (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">Task\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Services.PluginServiceResult-1\" title=\"Unbroken.LaunchBox.Plugins.Services.PluginServiceResult\">\u003Cspan style=\"color:#4EC9B0\">PluginServiceResult\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Services.Activity.PlayerActivityPage\" title=\"Unbroken.LaunchBox.Plugins.Services.Activity.PlayerActivityPage\">\u003Cspan style=\"color:#4EC9B0\">PlayerActivityPage\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">>> \u003C\u002Fspan>\u003Cspan style=\"color:#DCDCAA\">GetAsync\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#569CD6\">    string\u003C\u002Fspan>\u003Cspan style=\"color:#9CDCFE\"> sourceId\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4EC9B0\">    \u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Capabilities.Activity.PlayerActivityRequest\" title=\"Unbroken.LaunchBox.Plugins.Capabilities.Activity.PlayerActivityRequest\">\u003Cspan style=\"color:#4EC9B0\">PlayerActivityRequest\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">? \u003C\u002Fspan>\u003Cspan style=\"color:#9CDCFE\">request\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4EC9B0\">    \u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.threading.cancellationtoken\" title=\"System.Threading.CancellationToken (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">CancellationToken\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#9CDCFE\"> cancellationToken\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D4D4D4\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","member-4200fe59a3dab0fdfbc3","\n            \u003Cdiv class=\"api-summary\">Reads a page of the configured player&#39;s activity, reusing a recent observation after confirming the selected account.\u003C\u002Fdiv>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>sourceId\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>The activity source identity.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>request\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>Page bounds and recent unlock count, or null for the default window. Both counts must be from zero through 100; the offset must be nonnegative and its sum with the page size must fit in an Int32.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>cancellationToken\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>Cancels retrieval.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Ch4>Returns\u003C\u002Fh4>The requested page with its observed account identity and retrieval state. Fewer games than requested on Success means the end of the list. Null data is unavailable, distinct from an empty successful page with a known account. Achievement sections can be null when unsupported or unknown.\n            \u003Ch4>Remarks\u003C\u002Fh4>Account resolution and cache misses can make provider requests. The default 10-game, 10-achievement window at offset zero shares the persisted frontend cache. Other request windows use a bounded memory cache. Inspect Status, IsStale, and ObservedAt when using retained data.\n        ",{"availability":38,"id":39,"name":40,"label":40,"kind":30,"summary":41,"signature":42,"displaySignature":43,"signatureHtml":44,"anchor":45,"documentation":46,"documented":22},{"firstSeen":16,"isBaseline":17,"declarationFirstSeen":16},"M:Unbroken.LaunchBox.Plugins.Services.Activity.IPlayerActivityManager.GetSourcesAsync(System.Threading.CancellationToken)","GetSourcesAsync","Lists registered activity sources without querying accounts or making network requests.","System.Threading.Tasks.Task\u003CSystem.Collections.Generic.IReadOnlyList\u003CUnbroken.LaunchBox.Plugins.Services.PluginSourceInfo>> GetSourcesAsync(System.Threading.CancellationToken cancellationToken)","Task\u003CIReadOnlyList\u003CPluginSourceInfo>> GetSourcesAsync(\n    CancellationToken cancellationToken\n)","\u003Cpre class=\"shiki dark-plus\" style=\"background-color:#1E1E1E;color:#D4D4D4\" tabindex=\"0\" aria-label=\"C# code\">\u003Ccode>\u003Cspan class=\"line\">\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.threading.tasks.task-1\" title=\"System.Threading.Tasks.Task (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">Task\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.collections.generic.ireadonlylist-1\" title=\"System.Collections.Generic.IReadOnlyList (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">IReadOnlyList\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Services.PluginSourceInfo\" title=\"Unbroken.LaunchBox.Plugins.Services.PluginSourceInfo\">\u003Cspan style=\"color:#4EC9B0\">PluginSourceInfo\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">>> \u003C\u002Fspan>\u003Cspan style=\"color:#DCDCAA\">GetSourcesAsync\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4EC9B0\">    \u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.threading.cancellationtoken\" title=\"System.Threading.CancellationToken (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">CancellationToken\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#9CDCFE\"> cancellationToken\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D4D4D4\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","member-c4c2237ccedfd3aaee3b","\n            \u003Cdiv class=\"api-summary\">Lists registered activity sources without querying accounts or making network requests.\u003C\u002Fdiv>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>cancellationToken\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>Cancels discovery.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Ch4>Returns\u003C\u002Fh4>One entry per registered source, including disabled or conflicting sources marked unavailable. Removed sources are omitted.\n        ",{"availability":48,"id":49,"name":50,"label":50,"kind":30,"summary":51,"signature":52,"displaySignature":53,"signatureHtml":54,"anchor":55,"documentation":56,"documented":22},{"firstSeen":16,"isBaseline":17,"declarationFirstSeen":16},"M:Unbroken.LaunchBox.Plugins.Services.Activity.IPlayerActivityManager.RefreshAsync(System.String,Unbroken.LaunchBox.Plugins.Capabilities.Activity.PlayerActivityRequest,System.Threading.CancellationToken)","RefreshAsync","Refreshes the requested activity page, bypassing its recent observation cache.","System.Threading.Tasks.Task\u003CUnbroken.LaunchBox.Plugins.Services.PluginServiceResult\u003CUnbroken.LaunchBox.Plugins.Services.Activity.PlayerActivityPage>> RefreshAsync(string sourceId, Unbroken.LaunchBox.Plugins.Capabilities.Activity.PlayerActivityRequest? request, System.Threading.CancellationToken cancellationToken)","Task\u003CPluginServiceResult\u003CPlayerActivityPage>> RefreshAsync(\n    string sourceId,\n    PlayerActivityRequest? request,\n    CancellationToken cancellationToken\n)","\u003Cpre class=\"shiki dark-plus\" style=\"background-color:#1E1E1E;color:#D4D4D4\" tabindex=\"0\" aria-label=\"C# code\">\u003Ccode>\u003Cspan class=\"line\">\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.threading.tasks.task-1\" title=\"System.Threading.Tasks.Task (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">Task\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Services.PluginServiceResult-1\" title=\"Unbroken.LaunchBox.Plugins.Services.PluginServiceResult\">\u003Cspan style=\"color:#4EC9B0\">PluginServiceResult\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Services.Activity.PlayerActivityPage\" title=\"Unbroken.LaunchBox.Plugins.Services.Activity.PlayerActivityPage\">\u003Cspan style=\"color:#4EC9B0\">PlayerActivityPage\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">>> \u003C\u002Fspan>\u003Cspan style=\"color:#DCDCAA\">RefreshAsync\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#569CD6\">    string\u003C\u002Fspan>\u003Cspan style=\"color:#9CDCFE\"> sourceId\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4EC9B0\">    \u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Capabilities.Activity.PlayerActivityRequest\" title=\"Unbroken.LaunchBox.Plugins.Capabilities.Activity.PlayerActivityRequest\">\u003Cspan style=\"color:#4EC9B0\">PlayerActivityRequest\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">? \u003C\u002Fspan>\u003Cspan style=\"color:#9CDCFE\">request\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4EC9B0\">    \u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.threading.cancellationtoken\" title=\"System.Threading.CancellationToken (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">CancellationToken\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#9CDCFE\"> cancellationToken\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D4D4D4\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","member-e31550e958601e47c23e","\n            \u003Cdiv class=\"api-summary\">Refreshes the requested activity page, bypassing its recent observation cache.\u003C\u002Fdiv>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>sourceId\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>The activity source identity.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>request\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>Page bounds and recent unlock count, or null for the default window. Both counts must be from zero through 100; the offset must be nonnegative and its sum with the page size must fit in an Int32.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>cancellationToken\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>Cancels retrieval.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Ch4>Returns\u003C\u002Fh4>The refreshed page with its observed account identity or explicit retrieval state. Failed retrieval may retain the same account&#39;s exact cached request window and identity. Confirmed account changes discard the previous account&#39;s cached pages.\n        ",{"currentRelease":16,"currentReleaseState":58},"stable","plugins",1794763757740]