CampaignPresentation class abstract

A claim ticket for one delivered trigger, owned exclusively by the plugin that delivered it.

This is the read face. Core creates, emits and settles through the matching write face, PresentationController. Plugins may read outcome and holdReleased, subscribe to signals, and cancel; they must never settle — that guarantee is core's, and it is what makes releasing a CEP slot a single line:

final presentation = host.deliver(trigger);   // never throws
await presentation.holdReleased;              // never rejects, settles once
await releaseTheCepSlot();                    // every path reaches here

Constructors

CampaignPresentation()

Properties

hashCode → int
The hash code for this object.
no setterinherited
holdReleased → Future<void>
"The CEP may release its hold — slot, queue, gate — now."
no setter
id → String
Minted by core when the trigger was delivered. UUID-grade: it is also the first-party analytics dedup key, so it must not collide across sessions or devices.
no setter
outcome → Future<PresentationOutcome>
Completes exactly once with the terminal result, and never with an error.
no setter
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
state → PresentationState
A synchronous peek, for logs and debugging. Control flow must use outcome — never poll this.
no setter
trigger → CEPTriggerPayload
The trigger exactly as delivered.
no setter

Methods

cancel() → void
Owner-initiated termination — the CEP closed its template, the user logged out. Idempotent, safe in any state, and a no-op once settled.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
onSignal(void listener(PresentationSignal signal)) → void Function()
Subscribes to this presentation's signals.
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited