feat: refresh current data on activities processed

This commit is contained in:
Sophie-Gaëlle CALLOCH
2026-07-07 15:12:59 +02:00
parent a7407b8e06
commit 2622d9f01e
7 changed files with 32 additions and 17 deletions
+1
View File
@@ -1,3 +1,4 @@
export {default as SourceLabel} from './SourceLabel.vue';
export {onActivitiesProcessed} from './activitiesProcessed';
export {useActivitiesProcessed} from './useActivitiesProcessed';
export {useProcessedResource} from './useProcessedResource';
+15
View File
@@ -0,0 +1,15 @@
import {ref, type Ref, watchEffect} from "vue";
import {useActivitiesProcessed} from "./useActivitiesProcessed";
export const useProcessedResource = <T>(loader: () => Promise<T>, initial: T): Ref<T> => {
const data = ref(initial) as Ref<T>;
const load = async () => {
data.value = await loader();
};
watchEffect(load);
useActivitiesProcessed(load);
return data;
};
+3
View File
@@ -13,6 +13,7 @@ import {defineStore} from "pinia";
import {computed, ref, triggerRef} from "vue";
import {ledgerApi, transactionApi} from "@/mammon";
import {useRouteParams} from "@vueuse/router";
import {onActivitiesProcessed} from "@/activity";
export const LedgerTypes = {
Main: 'MAIN',
@@ -71,6 +72,8 @@ export const useLedgersStore = defineStore('ledgers', () => {
refresh();
onActivitiesProcessed(refresh);
return {ledgers, findById, findAllById, createMain, createCombined, updateMain, updateCombined, refresh};
})
+5 -7
View File
@@ -7,19 +7,17 @@ import {IskLabel} from "@/market";
import {SortableHeader, useSort, VirtualScrollTable} from "@/components/table";
import {TransferList, TransferTypes} from "@/transaction";
import {Dropdown} from "@/components";
import {SourceLabel} from "@/activity";
import {SourceLabel, useProcessedResource} from "@/activity";
import {useCharactersStore} from "@/characters";
import {formatEveDate} from "@/formaters.ts";
const {ledgerId} = useLedgerParam();
const charactersStore = useCharactersStore();
const transactions = computedAsync<TransactionResponse[]>(async () => {
if (ledgerId.value) {
return await findAllTransactionInLeger(ledgerId.value);
}
return [];
}, []);
const transactions = useProcessedResource<TransactionResponse[]>(
() => ledgerId.value ? findAllTransactionInLeger(ledgerId.value) : Promise.resolve([]),
[],
);
const { sortedArray, headerProps } = useSort(computedAsync(() => Promise.all(transactions.value.map(async transaction => {
const source = transaction.source;
-1
View File
@@ -14,7 +14,6 @@ const editLedgerModal = ref<typeof EditLedgerModal>();
const processActivities = async () => {
await activityApi.fetchAllNewActivities();
await activityApi.processNewActivities();
await ledgersStore.refresh();
}
const { sortedArray, headerProps } = useSort<Ledger>(() => ledgersStore.ledgers);
+3 -3
View File
@@ -1,12 +1,12 @@
<script setup lang="ts">
import {AcquisitionsPanel, toAcquiredType} from '@/market/acquisition';
import {AcquisitionsPanel, RawAcquiredType, toAcquiredType} from '@/market/acquisition';
import {useLedgerParam} from "@/ledger";
import {acquisitionApi} from "@/mammon";
import {computedAsync} from "@vueuse/core";
import {useProcessedResource} from "@/activity";
const {ledgerId} = useLedgerParam();
const items = computedAsync(async () => {
const items = useProcessedResource<RawAcquiredType[]>(async () => {
if (!ledgerId.value) {
return [];
}
+5 -6
View File
@@ -4,15 +4,14 @@ import {computedAsync} from "@vueuse/core";
import {BalanceResponse} from "@/generated/mammon";
import {getMarketType, MarketTypeLabel} from "@/market";
import {SortableHeader, useSort, VirtualScrollTable} from "@/components/table";
import {useProcessedResource} from "@/activity";
const {ledgerId} = useLedgerParam();
const balance = computedAsync<BalanceResponse>(async () => {
if (ledgerId.value) {
return await getLedgerBalance(ledgerId.value);
}
return undefined;
});
const balance = useProcessedResource<BalanceResponse | undefined>(
() => ledgerId.value ? getLedgerBalance(ledgerId.value) : Promise.resolve(undefined),
undefined,
);
const { sortedArray, headerProps } = useSort(computedAsync(async () => {
const itemBalances = balance.value?.itemBalances;