← Back to Index

ABANDONED (2026-06-24). The "Did You Know?" feature is no longer planned — see Change 4 in the Backend API Mapping Report: "No endpoint will be built; remove from all planning." The rest of this page still presents the data source as active/provisional (a stale carry-over from before Change 4 was dropped) — kept here for historical reference to ListViewModel's scaffold/factory pattern (D11), not as an active spec. Do not implement DidYouKnowListFactory/DidYouKnowListService below.

Did You Know List - Data Source Analysis

Component: List — listy card generic (a generic list item)
Type: Domain control — Did You Know List: composes the generic ListViewModel scaffold via DidYouKnowListFactory (maps a list item onto the scaffold; it does not subclass it — see Decisions D11)
Work Item: AB#2126
Last Updated: 2026-06-05 (corrected — not a flight card)

Correction (2026-06-05): an earlier draft modelled listy card generic as a multi-leg flight card (DL 302 / status badge / 6px stroke). That was wrong. On the live design (node 5172:15482) the List item is a simple date · headline · subtitle row, used 6× on the "Did you know" screen. The rich multi-leg flight card (DEN→MIA, DL 302, layovers) is the separate Flight Finder result card (node 4713:25168) — a different component, not yet built.

What it renders

A compact list item — a timestamp date, a headline, and a subtitle date (favorite heart shown per D31). Figma: listy card generic (345×105px).

   May 26, 2026                      ◄── TimestampDate (date label)
   Lorem ipsum dolor                 ◄── HeadlineText
   Fri April 24                      ◄── SubtitleDate

Summary

PropertyStatusSourceNotes
TimestampDate⚠️ TBD"Did you know" itemTop date label
HeadlineText⚠️ TBD"Did you know" itemPrimary line
SubtitleDate⚠️ TBD"Did you know" itemSecondary date / line
IsFavorite✅ ClientSettings.FavoriteItemIdsJSONHeart rendered on the row (D31, 2026-06-26)
IsLoading✅ AvailableViewModel stateDefault strategy (no skeleton)

Data source is provisional. The concrete "Did you know" item type (a notification / update / tip) is confirmed during the Notifications screen deep-dive. Until then, treat the three text fields above as the contract.

Mapping — Factory + Domain Service

The generic ListViewModel scaffold stays domain-free; a pure factory maps a "Did you know" item onto it; a domain service fetches the items (DI-injected), then calls the factory (decision D11).

// Scaffold — generic list item, domain-free
public class ListViewModel : ContainerSurfaceViewModel
{
    public string? TimestampDate { get; set; }
    public string? HeadlineText { get; set; }
    public string? SubtitleDate { get; set; }
    public bool IsFavorite { get; set; }
}

// Domain control — PURE MAPPER: item in, scaffold VM out
public sealed class DidYouKnowListFactory : RawRepresentationFactory<ListViewModel>
{
    public ListViewModel Create(DidYouKnowItem item, bool isFavorite) => new()
    {
        TimestampDate = item.Date,
        HeadlineText  = item.Headline,
        SubtitleDate  = item.SubtitleDate,
        IsFavorite    = isFavorite,
    };
}

// Domain service — fetches the items (DI), then maps
public sealed class DidYouKnowListService(DataManager dataManager, DidYouKnowListFactory factory)
{
    public async Task<IReadOnlyList<ListViewModel>> BuildAsync()
    {
        var items = await dataManager.GetDidYouKnowItemsAsync(); // source TBD — Notifications deep-dive
        return items
            .Select(i => factory.Create(i, isFavorite: IsSaved(i))) // Settings.FavoriteItemIdsJSON
            .ToList();
    }
}

Document Owner: ALPA Mobile Team
Purpose: Data-source analysis for the List (Did You Know) domain control — data source provisional pending the Notifications deep-dive.