Table of Contents

Class ReminderService

Namespace
The.Web.Search
Assembly
Instagile.Web.Client.dll

Multiplexes reminder subscriptions for one circuit, delivering batched updates to interested links or menus. General reminders are registered app-wide; their cached counts are pushed by the IReminderSource where a server-side job runs, and polled by this service under the current user's session in WebAssembly, where it does not. Personal reminders are materialised once per authenticated principal from the factory registered by AddPersonalReminders(IServiceCollection, Func<IServices, Task<IEnumerable<IReminder>>>) and refreshed by this service, uncached, as the current user.

The save-driven and periodic refresh mirrors the WPF RemindersController: counts are queried through IReminderStore (which resolves to a local or remote/RPC implementation) rather than by subscribing to the ORM query cache, so one batched read per refresh serves both 1-tier and 2-tier frontend (including WebAssembly).

public class ReminderService : IAmReminded, IDisposable
Inheritance
ReminderService
Implements
Inherited Members

Constructors

ReminderService(IServices, IReminderStore, IReminderSource, Func<IServices, Task<IEnumerable<IReminder>>>?, TimeSpan)

public ReminderService(IServices services, IReminderStore store, IReminderSource source, Func<IServices, Task<IEnumerable<IReminder>>>? personalReminders, TimeSpan refreshInterval)

Parameters

services IServices
store IReminderStore
source IReminderSource
personalReminders Func<IServices, Task<IEnumerable<IReminder>>>
refreshInterval TimeSpan

Properties

HasPersonalReminders

Whether the current user may have personal reminders: a factory is registered and has not materialised an empty set.

public bool HasPersonalReminders { get; }

Property Value

bool

PersonalReminders

The current user's personal reminders, if they have been materialised for this circuit; empty otherwise.

public IEnumerable<IReminder> PersonalReminders { get; }

Property Value

IEnumerable<IReminder>

RegisteredReminders

The app-wide general reminders.

public IEnumerable<IReminder> RegisteredReminders { get; }

Property Value

IEnumerable<IReminder>

Methods

FindReminderAsync(string)

Find a registered general or personal reminder by description (case-insensitively, for use from URLs), materialising personal reminders if necessary.

public Task<IReminder?> FindReminderAsync(string description)

Parameters

description string

Returns

Task<IReminder>

RemindersUpdated(IEnumerable<ReminderUpdate>)

public void RemindersUpdated(IEnumerable<ReminderUpdate> updates)

Parameters

updates IEnumerable<ReminderUpdate>

Subscribe(IPrincipal, IAmReminded, IReminder)

Subscribe to a single registered reminder, matched by description; returns null if the reminder is not registered or not visible to principal.

public ReminderUpdate? Subscribe(IPrincipal principal, IAmReminded subscriber, IReminder reminder)

Parameters

principal IPrincipal
subscriber IAmReminded
reminder IReminder

Returns

ReminderUpdate?

SubscribeAll(IPrincipal, IAmReminded)

Subscribe to every currently-registered reminder visible to principal. Does not materialise personal reminders; prefer SubscribeAllAsync(IPrincipal, IAmReminded).

public IEnumerable<ReminderUpdate> SubscribeAll(IPrincipal principal, IAmReminded subscriber)

Parameters

principal IPrincipal
subscriber IAmReminded

Returns

IEnumerable<ReminderUpdate>

SubscribeAllAsync(IPrincipal, IAmReminded)

Subscribe to every reminder visible to principal, materialising personal reminders if necessary.

public Task<IEnumerable<ReminderUpdate>> SubscribeAllAsync(IPrincipal principal, IAmReminded subscriber)

Parameters

principal IPrincipal
subscriber IAmReminded

Returns

Task<IEnumerable<ReminderUpdate>>

SubscribeAsync(IPrincipal, IAmReminded, IReminder)

Subscribe to a single reminder, matched by description against the registered general and personal reminders, materialising personal reminders if necessary.

public Task<ReminderUpdate?> SubscribeAsync(IPrincipal principal, IAmReminded subscriber, IReminder reminder)

Parameters

principal IPrincipal
subscriber IAmReminded
reminder IReminder

Returns

Task<ReminderUpdate?>

Unsubscribe(IAmReminded, IReminder)

public void Unsubscribe(IAmReminded subscriber, IReminder reminder)

Parameters

subscriber IAmReminded
reminder IReminder

UnsubscribeAll(IAmReminded)

public void UnsubscribeAll(IAmReminded subscriber)

Parameters

subscriber IAmReminded