Difficulty: Hard · Priority: Critical
Overview
Producers currently have no way to learn a beat sold other than manually reopening Profile and comparing the earnings number to before. Add in-app notifications driven by on-chain sale events.
Acceptance Criteria
Technical Approach
Poll Soroban getEvents for purchase_license/withdraw_earnings topics with a persisted cursor, filter to events involving the connected address, resolve sample info via get_sample, store dismissed/read state client-side.
New event-driven state layer with no existing precedent in this codebase (cursor persistence, de-dup, pagination against RPC retention limits) — a new subsystem, not a component tweak.
Difficulty: Hard · Priority: Critical
Overview
Producers currently have no way to learn a beat sold other than manually reopening Profile and comparing the earnings number to before. Add in-app notifications driven by on-chain sale events.
Acceptance Criteria
Technical Approach
Poll Soroban
getEventsforpurchase_license/withdraw_earningstopics with a persisted cursor, filter to events involving the connected address, resolve sample info viaget_sample, store dismissed/read state client-side.New event-driven state layer with no existing precedent in this codebase (cursor persistence, de-dup, pagination against RPC retention limits) — a new subsystem, not a component tweak.