Browse Source

Merge remote-tracking branch 'origin/main' into task/upgrade-to-prisma-7

pull/6027/head
Kenrick Tandrian 15 hours ago
parent
commit
4b6a737415
  1. 12
      CHANGELOG.md
  2. 10
      apps/api/src/services/symbol-profile/symbol-profile.service.ts
  3. 7
      apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
  4. 6
      apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
  5. 5
      apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
  6. 2
      apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
  7. 1
      libs/common/src/lib/interfaces/enhanced-symbol-profile.interface.ts
  8. 25
      libs/common/src/lib/personal-finance-tools.ts
  9. 11137
      package-lock.json
  10. 2
      package.json

12
CHANGELOG.md

@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased
### Changed
- Lifted the asset profile identifier editing restriction for `MANUAL` data sources in the asset profile details dialog of the admin control panel
- Upgraded `shx` from version `0.3.4` to `0.4.0`
### Fixed
- Added the missing currency suffix to the cash balance field in the create or update account dialog
- Fixed the delete button in the asset profile details dialog of the admin control panel by providing the missing `watchedByCount` parameter
## 2.224.2 - 2025-12-20
### Added

10
apps/api/src/services/symbol-profile/symbol-profile.service.ts

@ -77,7 +77,7 @@ export class SymbolProfileService {
.findMany({
include: {
_count: {
select: { activities: true }
select: { activities: true, watchedBy: true }
},
activities: {
orderBy: {
@ -109,7 +109,7 @@ export class SymbolProfileService {
.findMany({
include: {
_count: {
select: { activities: true }
select: { activities: true, watchedBy: true }
},
SymbolProfileOverrides: true
},
@ -184,7 +184,7 @@ export class SymbolProfileService {
private enhanceSymbolProfiles(
symbolProfiles: (SymbolProfile & {
_count: { activities: number };
_count: { activities: number; watchedBy?: number };
activities?: {
date: Date;
}[];
@ -206,10 +206,12 @@ export class SymbolProfileService {
sectors: this.getSectors(
symbolProfile?.sectors as unknown as Prisma.JsonArray
),
symbolMapping: this.getSymbolMapping(symbolProfile)
symbolMapping: this.getSymbolMapping(symbolProfile),
watchedByCount: 0
};
item.activitiesCount = symbolProfile._count.activities;
item.watchedByCount = symbolProfile._count.watchedBy ?? 0;
delete item._count;
item.dateOfFirstActivity = symbolProfile.activities?.[0]?.date;

7
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts

@ -260,13 +260,6 @@ export class GfAssetProfileDialogComponent implements OnDestroy, OnInit {
addIcons({ createOutline, ellipsisVertical, readerOutline, serverOutline });
}
public get canEditAssetProfileIdentifier() {
return (
this.assetProfile?.assetClass &&
!['MANUAL'].includes(this.assetProfile?.dataSource)
);
}
public get canSaveAssetProfileIdentifier() {
return !this.assetProfileForm.dirty;
}

6
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html

@ -73,7 +73,8 @@
!adminMarketDataService.hasPermissionToDeleteAssetProfile({
activitiesCount: assetProfile?.activitiesCount,
isBenchmark: isBenchmark,
symbol: data.symbol
symbol: data.symbol,
watchedByCount: assetProfile?.watchedByCount
})
"
(click)="
@ -186,9 +187,6 @@
mat-button
type="button"
[disabled]="!canSaveAssetProfileIdentifier"
[ngClass]="{
'd-none': !canEditAssetProfileIdentifier
}"
(click)="onSetEditAssetProfileIdentifierMode()"
>
<ion-icon name="create-outline" />

5
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts

@ -11,6 +11,7 @@ import { ConfirmationDialogType } from '@ghostfolio/common/enums';
import { downloadAsFile } from '@ghostfolio/common/helper';
import { User } from '@ghostfolio/common/interfaces';
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { internalRoutes } from '@ghostfolio/common/routes/routes';
import { NotificationService } from '@ghostfolio/ui/notifications';
import {
@ -169,9 +170,9 @@ export class GfUserAccountSettingsComponent implements OnDestroy, OnInit {
if (aKey === 'language') {
if (aValue) {
window.location.href = `../${aValue}/account`;
window.location.href = `../${aValue}/${internalRoutes.account.path}`;
} else {
window.location.href = `../`;
window.location.href = '../';
}
}
});

2
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html

@ -39,7 +39,7 @@
(keydown.enter)="$event.stopPropagation()"
/>
<span class="ml-2" matTextSuffix>{{
accountForm.get('currency')?.value?.value
accountForm.get('currency')?.value
}}</span>
</mat-form-field>
</div>

1
libs/common/src/lib/interfaces/enhanced-symbol-profile.interface.ts

@ -33,4 +33,5 @@ export interface EnhancedSymbolProfile {
updatedAt: Date;
url?: string;
userId?: string;
watchedByCount?: number;
}

25
libs/common/src/lib/personal-finance-tools.ts

@ -107,6 +107,15 @@ export const personalFinanceTools: Product[] = [
pricingPerYear: '$100',
slogan: 'Stock Portfolio Tracker for Smart Investors'
},
{
founded: 2024,
hasSelfHostingAbility: false,
key: 'bluebudget',
languages: ['Deutsch', 'English', 'Français', 'Italiano'],
name: 'BlueBudget',
origin: 'Switzerland',
slogan: 'Schweizer Budget App für einfache & smarte Budgetplanung'
},
{
key: 'budgetpulse',
name: 'BudgetPulse',
@ -641,6 +650,15 @@ export const personalFinanceTools: Product[] = [
origin: 'Germany',
slogan: 'Dein smarter Finance Assistant'
},
{
founded: 2007,
key: 'moneyspire',
name: 'Moneyspire',
note: 'License is a perpetual license',
origin: 'United States',
pricingPerYear: '$59.99',
slogan: 'Have total control of your financial life'
},
{
key: 'moneywiz',
name: 'MoneyWiz',
@ -716,6 +734,13 @@ export const personalFinanceTools: Product[] = [
origin: 'Singapore',
slogan: 'Feel in control of your money without spreadsheets or shame'
},
{
key: 'pennies',
name: 'Pennies',
origin: 'United States',
pricingPerYear: '$39.99',
slogan: 'Your money. Made simple.'
},
{
founded: 2022,
hasFreePlan: true,

11137
package-lock.json

File diff suppressed because it is too large

2
package.json

@ -193,7 +193,7 @@
"react": "18.2.0",
"react-dom": "18.2.0",
"replace-in-file": "8.3.0",
"shx": "0.3.4",
"shx": "0.4.0",
"storybook": "9.1.5",
"ts-jest": "29.4.0",
"ts-node": "10.9.2",

Loading…
Cancel
Save