Interface ISupportPresence
- Namespace
- Tharga.Team
- Assembly
- Tharga.Team.dll
Whether anybody is on support right now.
public interface ISupportPresence
Remarks
Advisory, and never a gate. It answers "is somebody likely to see this soon", which changes what a customer expects — not whether they may ask. Nothing on the path that raises a case may wait on this or be refused by it.
Two sources: the support desk, where each support person sets a SupportStaffStatus, and
Slack, where a support channel is configured. Online when either says so. Registered with the support cases;
resolve it with GetService rather than GetRequiredService all the same, because absent means the
same thing as Unknown — say nothing.
It lives here, with the contracts, rather than in the support package for the same reason
ISupportCaseService does: a component has to be able to reach it without
Tharga.Team.Blazor taking a dependency on a package that carries a mail stack.
Methods
GetAsync(CancellationToken)
Whether support is reachable, as far as can be told.
Task<SupportPresenceState> GetAsync(CancellationToken cancellationToken = default)
Parameters
cancellationTokenCancellationToken
Returns
Remarks
Never throws and never blocks meaningfully: a transport failure, a rate limit or a missing configuration all come back as Unknown.
Events
Changed
Raised when the answer may have changed, so a page showing it asks again.
event EventHandler Changed
Event Type
Remarks
Raised on whichever thread made the change: marshal with InvokeAsync, and unsubscribe in Dispose.
The toolkit's own raises it when somebody on the support desk sets a status, goes idle or comes back; Slack's
answer is read again when a page next asks. An implementation of your own need not raise it.