From d1237bf1d2a61477ffde83fdd095bac05b2c62a9 Mon Sep 17 00:00:00 2001 From: Sirttas Date: Sun, 26 Jul 2026 20:57:05 +0200 Subject: [PATCH] feat(#41): Resolve corporation names in CorporationLabel --- docs/mammon-api.yml | 77 ++++++++++ src/activity/SourceLabel.vue | 12 +- src/corporations/CorporationLabel.vue | 5 +- src/corporations/corporations.ts | 38 +++++ src/corporations/index.ts | 2 + src/generated/mammon/api.ts | 193 ++++++++++++++++++++++++++ src/mammon/mammonService.ts | 2 + 7 files changed, 326 insertions(+), 3 deletions(-) create mode 100644 src/corporations/corporations.ts diff --git a/docs/mammon-api.yml b/docs/mammon-api.yml index c09a8d6..2fd3677 100644 --- a/docs/mammon-api.yml +++ b/docs/mammon-api.yml @@ -955,6 +955,56 @@ paths: $ref: "#/components/schemas/BalanceResponse" "404": description: No ledger with this id + /corporations: + get: + tags: + - corporation + summary: "Resolve public information for several corporation ids at once, silently\ + \ omitting ids ESI cannot resolve" + operationId: findCorporations + parameters: + - name: ids + in: query + description: "Corporation ids to resolve, e.g. ids=98000001,98000002" + required: true + schema: + type: array + items: + type: integer + format: int64 + responses: + "200": + description: The corporations that resolved; unknown ids are omitted + content: + '*/*': + schema: + type: array + items: + $ref: "#/components/schemas/CorporationResponse" + /corporations/{corporationId}: + get: + tags: + - corporation + summary: "Resolve public information (name, ticker, alliance) for a corporation\ + \ id" + operationId: findCorporation + parameters: + - name: corporationId + in: path + description: "Corporation id to resolve, e.g. 98000001" + required: true + schema: + type: integer + format: int64 + responses: + "200": + description: The resolved corporation + content: + '*/*': + schema: + $ref: "#/components/schemas/CorporationResponse" + "404": + description: Returned when ESI has no corporation with the given id /characters: get: tags: @@ -1998,6 +2048,33 @@ components: required: - quantity - typeId + CorporationResponse: + type: object + description: An EVE Online corporation. + properties: + corporationId: + type: integer + format: int64 + description: EVE corporation id. + example: 98000001 + name: + type: string + description: Corporation name. + example: Center for Advanced Studies + ticker: + type: string + description: Corporation ticker. + example: CAS + allianceId: + type: integer + format: int64 + description: "EVE alliance id, null when the corporation is not in an alliance." + example: 99000001 + required: + - allianceId + - corporationId + - name + - ticker SseEmitter: type: object properties: diff --git a/src/activity/SourceLabel.vue b/src/activity/SourceLabel.vue index b8fc8cc..87fd3f7 100644 --- a/src/activity/SourceLabel.vue +++ b/src/activity/SourceLabel.vue @@ -4,7 +4,7 @@ import {computed} from "vue"; import {computedAsync} from "@vueuse/core"; import {ActivitySourceResponse, ActivitySourceResponseTypeEnum} from "@/generated/mammon"; import {CharacterLabel, useCharactersStore} from "@/characters"; -import {CorporationLabel} from "@/corporations"; +import {CorporationLabel, useCorporationsStore} from "@/corporations"; import {LedgerLabel, useLedgersStore} from "@/ledger"; interface Props { @@ -17,6 +17,7 @@ const props = withDefaults(defineProps(), { }); const charactersStore = useCharactersStore(); +const corporationsStore = useCorporationsStore(); const ledgersStore = useLedgersStore(); const character = computedAsync(async () => { @@ -26,6 +27,13 @@ const character = computedAsync(async () => { return undefined; }, undefined); +const corporation = computedAsync(async () => { + if (props.source.type === ActivitySourceResponseTypeEnum.Corporation && props.source.corporationId) { + return await corporationsStore.findById(props.source.corporationId); + } + return undefined; +}, undefined); + const ledger = computed(() => props.source.type === ActivitySourceResponseTypeEnum.Ledger && props.source.ledgerId ? ledgersStore.findById(props.source.ledgerId) @@ -34,6 +42,6 @@ const ledger = computed(() => diff --git a/src/corporations/CorporationLabel.vue b/src/corporations/CorporationLabel.vue index d1b2a19..09b296e 100644 --- a/src/corporations/CorporationLabel.vue +++ b/src/corporations/CorporationLabel.vue @@ -1,7 +1,10 @@