From 34a5f348087acd06c6064ed9ca95fcf0e537dfbb Mon Sep 17 00:00:00 2001 From: AkshayRao27 Date: Thu, 18 Jun 2026 20:53:24 +0200 Subject: [PATCH] feat: add hideOwnBalance option to hide own balance from views MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ⚠️ The code here is generated using OpenCode with DeepSeek V4 Flash Free and has not been formally vetted by an experienced programmer! Add "Hide my balance" toggle in settings → Misc. When enabled, your balance row is removed from the settlement view and your balance counter is hidden from the navigation sidebar member list. --- lib/Controller/PageController.php | 1 + src/Settlement.vue | 18 +++++++++++------- src/components/AppNavigationMemberItem.vue | 2 +- src/components/CospendSettingsDialog.vue | 8 ++++---- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php index a06584829..993054125 100644 --- a/lib/Controller/PageController.php +++ b/lib/Controller/PageController.php @@ -96,6 +96,7 @@ public function index(?string $projectId = null, ?int $billId = null): TemplateR } $state['useTime'] = ($state['useTime'] ?? '0') !== '0'; $state['showMyBalance'] = ($state['showMyBalance'] ?? '0') !== '0'; + $state['hideOwnBalance'] = ($state['hideOwnBalance'] ?? '0') !== '0'; $this->initialStateService->provideInitialState('cospend-state', $state); $this->eventDispatcher->dispatchTyped(new RenderReferenceEvent()); diff --git a/src/Settlement.vue b/src/Settlement.vue index ceedb4239..f81672ad6 100644 --- a/src/Settlement.vue +++ b/src/Settlement.vue @@ -267,6 +267,7 @@ import MemberAvatar from './components/avatar/MemberAvatar.vue' import { showSuccess, showError } from '@nextcloud/dialogs' import moment from '@nextcloud/moment' import { getLocale } from '@nextcloud/l10n' +import { getCurrentUser } from '@nextcloud/auth' import { getSmartMemberName } from './utils.js' import * as constants from './constants.js' import * as network from './network.js' @@ -352,14 +353,17 @@ export default { return this.stringify(this.maxDate) }, balances() { + const currentUserId = getCurrentUser()?.uid return this.balancesObject - ? Object.keys(this.balancesObject).map((k) => { - return { - mid: k, - balance: this.balancesObject[k], - memberName: this.getMemberName(k), - } - }) + ? Object.keys(this.balancesObject) + .filter((k) => !(this.cospend.hideOwnBalance && this.members[k]?.userid === currentUserId)) + .map((k) => { + return { + mid: k, + balance: this.balancesObject[k], + memberName: this.getMemberName(k), + } + }) : null }, dateInfoText() { diff --git a/src/components/AppNavigationMemberItem.vue b/src/components/AppNavigationMemberItem.vue index f6271c3ae..ca07e2990 100644 --- a/src/components/AppNavigationMemberItem.vue +++ b/src/components/AppNavigationMemberItem.vue @@ -30,7 +30,7 @@ :size="24" :force-is-no-user="project.federated" /> -