Viewed Data Service
Overview
ViewedDataService tracks which dataIds have been marked as viewed in the
current session. Internally it stores ids in a Set<string> and publishes a
single event whenever viewed state changes.
Typical usage is to:
- mark a data item as viewed when users land on a slice
- query whether a data item has been viewed to seed UI state
- subscribe to viewed changes for incremental updates
- clear viewed state when a context reset is needed
Events
The following events are published by ViewedDataService.
| Event | Description |
|---|---|
VIEWED_DATA_CHANGED | Fired when one data item is newly marked viewed, or when all viewed data is cleared. |
Event payload
type ViewedDataPayload = {
viewedDataId?: string;
viewedDataCleared?: boolean;
};
- When a single data item is marked viewed:
{ viewedDataId: string } - When all viewed data is cleared:
{ viewedDataCleared: true }
API
-
markDataViewed(dataId: string): voidMarks one data item as viewed and emits
VIEWED_DATA_CHANGEDonly if:dataIdis truthy, and- it was not already marked viewed.
-
isDataViewed(dataId: string): booleanReturns
trueifdataIdis currently in the viewed set. -
clearViewedData(): voidClears all viewed dataIds and emits
VIEWED_DATA_CHANGEDwith{ viewedDataCleared: true }. -
subscribeViewedDataChanges(listener): SubscriptionSubscribes to
VIEWED_DATA_CHANGEDpayloads.const subscription = viewedDataService.subscribeViewedDataChanges(payload => {
if (payload.viewedDataCleared) {
// reset local viewed state
return;
}
if (payload.viewedDataId) {
// mark one data item as viewed locally
}
});
// later
subscription.unsubscribe();
Notes
- Service registration name:
viewedDataService - Alternate registration name:
ViewedDataService - The service is session-scoped in-memory state; it is not persisted by default.