From 4cbdddb12e491e9da2aa921524432e4edffd62bd Mon Sep 17 00:00:00 2001 From: Felipe Coutinho Date: Tue, 9 Jun 2026 20:41:41 -0300 Subject: [PATCH] corrige importacao de lancamentos compartilhados --- CHANGELOG.md | 7 +++++ README.md | 2 +- package.json | 2 +- .../table/transaction-actions-menu.tsx | 2 +- .../components/table/transactions-columns.tsx | 1 + .../components/table/transactions-table.tsx | 29 +++++++++++++------ 6 files changed, 31 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 45c7873..cf4d0fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ Todas as mudanças notáveis deste projeto serão documentadas neste arquivo. O formato é baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.1.0/), e este projeto adere ao [Versionamento Semântico](https://semver.org/lang/pt-BR/). +## [2.7.4] - 2026-06-09 + +Esta versão corrige o fluxo de revisão de lançamentos compartilhados para que o acesso somente leitura proteja os dados originais sem impedir que a pessoa copie movimentos para a própria conta. + +### Corrigido +- Pessoas: lançamentos de uma pessoa compartilhada em modo somente leitura agora podem ser selecionados e importados para a conta do usuário logado, tanto individualmente quanto em lote, mantendo edição e remoção bloqueadas no lançamento original. + ## [2.7.3] - 2026-06-05 Esta versão melhora pequenos pontos de leitura e configuração para o uso diário e self-hosted. As faturas pagas ficam mais fáceis de identificar na lista de cartões, a configuração de origins confiáveis do Better Auth passa a ficar documentada para Docker e túneis, o dashboard corrige a leitura de tempo dos pré-lançamentos e as dependências seguem atualizadas sem quebrar o build da imagem. diff --git a/README.md b/README.md index 363d6c7..a28d069 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ > **Não há versão online hospedada.** Você precisa clonar o repositório e rodar localmente ou no seu próprio servidor. -[![Version](https://img.shields.io/badge/version-2.7.3-blue?style=flat-square)](CHANGELOG.md) +[![Version](https://img.shields.io/badge/version-2.7.4-blue?style=flat-square)](CHANGELOG.md) [![Next.js](https://img.shields.io/badge/Next.js-black?style=flat-square&logo=next.js)](https://nextjs.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-blue?style=flat-square&logo=typescript)](https://www.typescriptlang.org/) [![PostgreSQL](https://img.shields.io/badge/PostgreSQL-blue?style=flat-square&logo=postgresql)](https://www.postgresql.org/) diff --git a/package.json b/package.json index 0d88d33..08d1238 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "openmonetis", - "version": "2.7.3", + "version": "2.7.4", "private": true, "packageManager": "pnpm@11.1.3", "scripts": { diff --git a/src/features/transactions/components/table/transaction-actions-menu.tsx b/src/features/transactions/components/table/transaction-actions-menu.tsx index 985363f..2ced394 100644 --- a/src/features/transactions/components/table/transaction-actions-menu.tsx +++ b/src/features/transactions/components/table/transaction-actions-menu.tsx @@ -92,7 +92,7 @@ export function TransactionActionsMenu({ ) : null} - {!item.readonly && !isOwnData ? ( + {!isOwnData ? ( onImport?.(item)} disabled={!onImport} diff --git a/src/features/transactions/components/table/transactions-columns.tsx b/src/features/transactions/components/table/transactions-columns.tsx index d51b06f..ff6657a 100644 --- a/src/features/transactions/components/table/transactions-columns.tsx +++ b/src/features/transactions/components/table/transactions-columns.tsx @@ -139,6 +139,7 @@ function buildColumns({ cell: ({ row }) => ( row.toggleSelected(!!value)} aria-label="Selecionar linha" /> diff --git a/src/features/transactions/components/table/transactions-table.tsx b/src/features/transactions/components/table/transactions-table.tsx index 416d517..cd48b9c 100644 --- a/src/features/transactions/components/table/transactions-table.tsx +++ b/src/features/transactions/components/table/transactions-table.tsx @@ -175,7 +175,10 @@ export function TransactionsTable({ : getPaginationRowModel(), manualPagination: isServerPaginated, pageCount: serverPagination?.totalPages, - enableRowSelection: (row) => !row.original.readonly, + enableRowSelection: (row) => + row.original.userId === currentUserId + ? !row.original.readonly + : Boolean(onBulkImport), }); const rowModel = table.getRowModel(); @@ -184,11 +187,21 @@ export function TransactionsTable({ ? (serverPagination?.totalItems ?? 0) : table.getCoreRowModel().rows.length; const selectedRows = table.getFilteredSelectedRowModel().rows; + const selectedOwnRows = selectedRows.filter( + (row) => row.original.userId === currentUserId, + ); + const selectedImportRows = selectedRows.filter( + (row) => row.original.userId !== currentUserId, + ); const selectedCount = selectedRows.length; const selectedTotal = selectedRows.reduce( (total, row) => total + (row.original.amount ?? 0), 0, ); + const selectedImportTotal = selectedImportRows.reduce( + (total, row) => total + (row.original.amount ?? 0), + 0, + ); const currentPage = isServerPaginated ? (serverPagination?.page ?? 1) : table.getState().pagination.pageIndex + 1; @@ -211,8 +224,8 @@ export function TransactionsTable({ }; const handleBulkImport = () => { - if (onBulkImport && selectedCount > 0) { - onBulkImport(selectedRows.map((row) => row.original)); + if (onBulkImport && selectedImportRows.length > 0) { + onBulkImport(selectedImportRows.map((row) => row.original)); setRowSelection({}); } }; @@ -326,7 +339,7 @@ export function TransactionsTable({ {selectedCount > 0 && onBulkDelete && - selectedRows.every((row) => row.original.userId === currentUserId) ? ( + selectedOwnRows.length === selectedCount ? ( ) : null} - {selectedCount > 0 && - onBulkImport && - selectedRows.some((row) => row.original.userId !== currentUserId) ? ( + {selectedCount > 0 && onBulkImport && selectedImportRows.length > 0 ? (