diff --git a/neode-ui/src/components/TransactionsModal.vue b/neode-ui/src/components/TransactionsModal.vue index e7e516f7..ad28b79c 100644 --- a/neode-ui/src/components/TransactionsModal.vue +++ b/neode-ui/src/components/TransactionsModal.vue @@ -122,19 +122,23 @@ const props = defineProps<{ const emit = defineEmits<{ close: [] }>() const { t } = useI18n() -type FilterKey = 'all' | 'onchain' | 'lightning' | 'ecash' -const filters: Array<{ key: FilterKey; label: string }> = [ +type FilterKey = 'all' | 'onchain' | 'lightning' | 'ecash' | 'ark' +// The Ark chip only appears once an Ark transaction exists — most nodes +// don't run the barkd sidecar. +const filters = computed>(() => [ { key: 'all', label: 'All' }, { key: 'onchain', label: 'On-chain' }, { key: 'lightning', label: '⚡ Lightning' }, { key: 'ecash', label: 'Ecash' }, -] + ...(props.transactions.some(tx => tx.kind === 'ark') ? [{ key: 'ark' as const, label: 'Ark' }] : []), +]) const activeFilter = ref('all') function matchesFilter(tx: WalletTransaction, f: FilterKey): boolean { if (f === 'all') return true if (f === 'onchain') return isOnchain(tx) if (f === 'lightning') return tx.kind === 'lightning' + if (f === 'ark') return tx.kind === 'ark' return tx.kind === 'cashu' || tx.kind === 'fedimint' }