Follow-up to mammon #16 ([domain-ownership] 5 — Polymorphic activity source).
Why
mammon #16 replaced the bare characterId on activities/transactions/acquisitions with a polymorphic source that can be a character, a corporation (with an optional wallet division), or nothing (a manual entry). The regenerated API client already reflects this:
The frontend still assumes the old character-only model, so it no longer type-checks / renders correctly.
Scope
src/pages/ledger/ListLedgerTransactions.vue — reads transaction.characterId (line ~24), which no longer exists. Resolve/display the source instead: character label when the source is a character, corporation when it is a corporation, and nothing for a manual/sourceless transaction. The "Character" column and its sort key should become a generic "Source" column.
src/market/acquisition/acquisition.ts — RawAcquiredType.source is typed as AcquisitionResponseSourceEnum but is now assigned an ActivitySourceResponse object; reconcile the type and downstream usage in src/pages/market/TypeInfo.vue.
Source rendering — introduce a shared way to render an ActivitySourceResponse (character portrait/label, corporation, or "—") reused by transactions and acquisitions. Corporation source may expose a division (1–7) that can be null (e.g. limit buy orders — see mammon #16 / the division-null fix).
Acceptance criteria
Transactions and acquisitions render for all three source kinds (character, corporation, none) without errors.
No remaining references to the removed characterId field on transaction/acquisition responses.
nulldivision on a corporation source is handled gracefully.
Follow-up to mammon #16 (*[domain-ownership] 5 — Polymorphic activity source*).
## Why
mammon #16 replaced the bare `characterId` on activities/transactions/acquisitions with a polymorphic **source** that can be a character, a corporation (with an optional wallet `division`), or nothing (a manual entry). The regenerated API client already reflects this:
- `TransactionResponse.characterId` → `TransactionResponse.source: ActivitySourceResponse`
- `AcquisitionResponse.source: ActivitySourceResponse`
- `ActivitySourceResponse = { type, characterId | null, corporationId | null, division | null }`
The frontend still assumes the old character-only model, so it no longer type-checks / renders correctly.
## Scope
1. **`src/pages/ledger/ListLedgerTransactions.vue`** — reads `transaction.characterId` (line ~24), which no longer exists. Resolve/display the source instead: character label when the source is a character, corporation when it is a corporation, and nothing for a manual/sourceless transaction. The "Character" column and its sort key should become a generic "Source" column.
2. **`src/market/acquisition/acquisition.ts`** — `RawAcquiredType.source` is typed as `AcquisitionResponseSourceEnum` but is now assigned an `ActivitySourceResponse` object; reconcile the type and downstream usage in `src/pages/market/TypeInfo.vue`.
3. **Source rendering** — introduce a shared way to render an `ActivitySourceResponse` (character portrait/label, corporation, or "—") reused by transactions and acquisitions. Corporation source may expose a `division` (1–7) that can be null (e.g. limit buy orders — see mammon #16 / the division-null fix).
## Acceptance criteria
- [x] Transactions and acquisitions render for all three source kinds (character, corporation, none) without errors.
- [x] No remaining references to the removed `characterId` field on transaction/acquisition responses.
- [x] `null` `division` on a corporation source is handled gracefully.
- [x] Type-check (`npm run build`) passes.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sirttas
added a new dependency 2026-07-03 13:41:52 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Follow-up to mammon #16 ([domain-ownership] 5 — Polymorphic activity source).
Why
mammon #16 replaced the bare
characterIdon activities/transactions/acquisitions with a polymorphic source that can be a character, a corporation (with an optional walletdivision), or nothing (a manual entry). The regenerated API client already reflects this:TransactionResponse.characterId→TransactionResponse.source: ActivitySourceResponseAcquisitionResponse.source: ActivitySourceResponseActivitySourceResponse = { type, characterId | null, corporationId | null, division | null }The frontend still assumes the old character-only model, so it no longer type-checks / renders correctly.
Scope
src/pages/ledger/ListLedgerTransactions.vue— readstransaction.characterId(line ~24), which no longer exists. Resolve/display the source instead: character label when the source is a character, corporation when it is a corporation, and nothing for a manual/sourceless transaction. The "Character" column and its sort key should become a generic "Source" column.src/market/acquisition/acquisition.ts—RawAcquiredType.sourceis typed asAcquisitionResponseSourceEnumbut is now assigned anActivitySourceResponseobject; reconcile the type and downstream usage insrc/pages/market/TypeInfo.vue.ActivitySourceResponse(character portrait/label, corporation, or "—") reused by transactions and acquisitions. Corporation source may expose adivision(1–7) that can be null (e.g. limit buy orders — see mammon #16 / the division-null fix).Acceptance criteria
characterIdfield on transaction/acquisition responses.nulldivisionon a corporation source is handled gracefully.npm run build) passes.🤖 Generated with Claude Code