Browse Source

Merge branch 'main' into task/debounce-portfolio-and-asset-profile-change-listeners

pull/6505/head
Thomas Kaul 3 weeks ago
committed by GitHub
parent
commit
a9fa8bc6cc
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 4
      CHANGELOG.md
  2. 8
      apps/api/src/app/activities/activities.controller.ts
  3. 2
      apps/api/src/app/import/import.controller.ts
  4. 2
      apps/api/src/app/portfolio/portfolio.controller.ts
  5. 12
      apps/client/src/app/app.component.ts
  6. 2
      apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
  7. 2
      apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts
  8. 2
      apps/client/src/app/components/home-holdings/home-holdings.component.ts
  9. 2
      apps/client/src/app/components/home-overview/home-overview.component.ts
  10. 2
      apps/client/src/app/pages/accounts/accounts-page.component.ts
  11. 4
      apps/client/src/app/pages/portfolio/activities/activities-page.component.ts
  12. 2
      apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts
  13. 2
      apps/client/src/locales/messages.nl.xlf
  14. 18
      libs/common/src/lib/permissions.ts

4
CHANGELOG.md

@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Added a debounce to the `PortfolioChangedListener` and `AssetProfileChangedListener` to minimize redundant _Redis_ and database operations
### Changed
- Improved the language localization for Dutch (`nl`)
## 2.248.0 - 2026-03-07
### Added

8
apps/api/src/app/activities/activities.controller.ts

@ -59,7 +59,7 @@ export class ActivitiesController {
) {}
@Delete()
@HasPermission(permissions.deleteOrder)
@HasPermission(permissions.deleteActivity)
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)
@UseInterceptors(TransformDataSourceInRequestInterceptor)
public async deleteActivities(
@ -84,7 +84,7 @@ export class ActivitiesController {
}
@Delete(':id')
@HasPermission(permissions.deleteOrder)
@HasPermission(permissions.deleteActivity)
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)
public async deleteActivity(@Param('id') id: string): Promise<Order> {
const activity = await this.activitiesService.order({
@ -191,7 +191,7 @@ export class ActivitiesController {
return activity;
}
@HasPermission(permissions.createOrder)
@HasPermission(permissions.createActivity)
@Post()
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)
@UseInterceptors(TransformDataSourceInRequestInterceptor)
@ -274,7 +274,7 @@ export class ActivitiesController {
return activity;
}
@HasPermission(permissions.updateOrder)
@HasPermission(permissions.updateActivity)
@Put(':id')
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)
@UseInterceptors(TransformDataSourceInRequestInterceptor)

2
apps/api/src/app/import/import.controller.ts

@ -38,7 +38,7 @@ export class ImportController {
@Post()
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)
@HasPermission(permissions.createOrder)
@HasPermission(permissions.createActivity)
@UseInterceptors(TransformDataSourceInRequestInterceptor)
@UseInterceptors(TransformDataSourceInResponseInterceptor)
public async import(

2
apps/api/src/app/portfolio/portfolio.controller.ts

@ -639,7 +639,7 @@ export class PortfolioController {
return report;
}
@HasPermission(permissions.updateOrder)
@HasPermission(permissions.updateActivity)
@Put('holding/:dataSource/:symbol/tags')
@UseInterceptors(TransformDataSourceInRequestInterceptor)
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)

12
apps/client/src/app/app.component.ts

@ -296,15 +296,21 @@ export class GfAppComponent implements OnDestroy, OnInit {
),
hasPermissionToCreateActivity:
!this.hasImpersonationId &&
hasPermission(this.user?.permissions, permissions.createOrder) &&
hasPermission(
this.user?.permissions,
permissions.createActivity
) &&
!this.user?.settings?.isRestrictedView,
hasPermissionToReportDataGlitch: hasPermission(
this.user?.permissions,
permissions.reportDataGlitch
),
hasPermissionToUpdateOrder:
hasPermissionToUpdateActivity:
!this.hasImpersonationId &&
hasPermission(this.user?.permissions, permissions.updateOrder) &&
hasPermission(
this.user?.permissions,
permissions.updateActivity
) &&
!this.user?.settings?.isRestrictedView,
locale: this.user?.settings?.locale
},

2
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html

@ -414,7 +414,7 @@
<gf-tags-selector
formControlName="tags"
[hasPermissionToCreateTag]="hasPermissionToCreateOwnTag"
[readonly]="!data.hasPermissionToUpdateOrder"
[readonly]="!data.hasPermissionToUpdateActivity"
[tagsAvailable]="tagsAvailable"
/>
</form>

2
apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts

@ -11,7 +11,7 @@ export interface HoldingDetailDialogParams {
hasPermissionToAccessAdminControl: boolean;
hasPermissionToCreateActivity: boolean;
hasPermissionToReportDataGlitch: boolean;
hasPermissionToUpdateOrder: boolean;
hasPermissionToUpdateActivity: boolean;
locale: string;
symbol: string;
}

2
apps/client/src/app/components/home-holdings/home-holdings.component.ts

@ -107,7 +107,7 @@ export class GfHomeHoldingsComponent implements OnDestroy, OnInit {
this.hasPermissionToCreateActivity = hasPermission(
this.user.permissions,
permissions.createOrder
permissions.createActivity
);
this.initialize();

2
apps/client/src/app/components/home-overview/home-overview.component.ts

@ -80,7 +80,7 @@ export class GfHomeOverviewComponent implements OnDestroy, OnInit {
this.hasPermissionToCreateActivity = hasPermission(
this.user.permissions,
permissions.createOrder
permissions.createActivity
);
this.update();

2
apps/client/src/app/pages/accounts/accounts-page.component.ts

@ -245,7 +245,7 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
hasImpersonationId: this.hasImpersonationId,
hasPermissionToCreateActivity:
!this.hasImpersonationId &&
hasPermission(this.user?.permissions, permissions.createOrder) &&
hasPermission(this.user?.permissions, permissions.createActivity) &&
!this.user?.settings?.isRestrictedView
},
height: this.deviceType === 'mobile' ? '98vh' : '80vh',

4
apps/client/src/app/pages/portfolio/activities/activities-page.component.ts

@ -407,9 +407,9 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
this.hasPermissionToCreateActivity =
!this.hasImpersonationId &&
hasPermission(this.user.permissions, permissions.createOrder);
hasPermission(this.user.permissions, permissions.createActivity);
this.hasPermissionToDeleteActivity =
!this.hasImpersonationId &&
hasPermission(this.user.permissions, permissions.deleteOrder);
hasPermission(this.user.permissions, permissions.deleteActivity);
}
}

2
apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts

@ -567,7 +567,7 @@ export class GfAllocationsPageComponent implements OnInit {
hasImpersonationId: this.hasImpersonationId,
hasPermissionToCreateActivity:
!this.hasImpersonationId &&
hasPermission(this.user?.permissions, permissions.createOrder) &&
hasPermission(this.user?.permissions, permissions.createActivity) &&
!this.user?.settings?.isRestrictedView
},
height: this.deviceType === 'mobile' ? '98vh' : '80vh',

2
apps/client/src/locales/messages.nl.xlf

@ -3823,7 +3823,7 @@
</trans-unit>
<trans-unit id="7702646444963497962" datatype="html">
<source>By</source>
<target state="translated">Door</target>
<target state="translated">Tegen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">139</context>

18
libs/common/src/lib/permissions.ts

@ -9,10 +9,10 @@ export const permissions = {
createAccess: 'createAccess',
createAccount: 'createAccount',
createAccountBalance: 'createAccountBalance',
createActivity: 'createActivity',
createApiKey: 'createApiKey',
createMarketData: 'createMarketData',
createMarketDataOfOwnAssetProfile: 'createMarketDataOfOwnAssetProfile',
createOrder: 'createOrder',
createOwnTag: 'createOwnTag',
createPlatform: 'createPlatform',
createTag: 'createTag',
@ -21,8 +21,8 @@ export const permissions = {
deleteAccess: 'deleteAccess',
deleteAccount: 'deleteAccount',
deleteAccountBalance: 'deleteAccountBalance',
deleteActivity: 'deleteActivity',
deleteAuthDevice: 'deleteAuthDevice',
deleteOrder: 'deleteOrder',
deleteOwnUser: 'deleteOwnUser',
deletePlatform: 'deletePlatform',
deleteTag: 'deleteTag',
@ -53,10 +53,10 @@ export const permissions = {
toggleReadOnlyMode: 'toggleReadOnlyMode',
updateAccount: 'updateAccount',
updateAccess: 'updateAccess',
updateActivity: 'updateActivity',
updateAuthDevice: 'updateAuthDevice',
updateMarketData: 'updateMarketData',
updateMarketDataOfOwnAssetProfile: 'updateMarketDataOfOwnAssetProfile',
updateOrder: 'updateOrder',
updateOwnAccessToken: 'updateOwnAccessToken',
updatePlatform: 'updatePlatform',
updateTag: 'updateTag',
@ -74,19 +74,19 @@ export function getPermissions(aRole: Role): string[] {
permissions.createAccess,
permissions.createAccount,
permissions.createAccountBalance,
permissions.createActivity,
permissions.createWatchlistItem,
permissions.deleteAccountBalance,
permissions.deleteWatchlistItem,
permissions.createMarketData,
permissions.createMarketDataOfOwnAssetProfile,
permissions.createOrder,
permissions.createOwnTag,
permissions.createPlatform,
permissions.createTag,
permissions.deleteAccess,
permissions.deleteAccount,
permissions.deleteActivity,
permissions.deleteAuthDevice,
permissions.deleteOrder,
permissions.deletePlatform,
permissions.deleteTag,
permissions.deleteUser,
@ -99,10 +99,10 @@ export function getPermissions(aRole: Role): string[] {
permissions.readWatchlist,
permissions.updateAccount,
permissions.updateAccess,
permissions.updateActivity,
permissions.updateAuthDevice,
permissions.updateMarketData,
permissions.updateMarketDataOfOwnAssetProfile,
permissions.updateOrder,
permissions.updatePlatform,
permissions.updateTag,
permissions.updateUserSettings,
@ -125,15 +125,15 @@ export function getPermissions(aRole: Role): string[] {
permissions.createAccess,
permissions.createAccount,
permissions.createAccountBalance,
permissions.createActivity,
permissions.createMarketDataOfOwnAssetProfile,
permissions.createOrder,
permissions.createOwnTag,
permissions.createWatchlistItem,
permissions.deleteAccess,
permissions.deleteAccount,
permissions.deleteAccountBalance,
permissions.deleteActivity,
permissions.deleteAuthDevice,
permissions.deleteOrder,
permissions.deleteWatchlistItem,
permissions.readAiPrompt,
permissions.readMarketDataOfOwnAssetProfile,
@ -141,9 +141,9 @@ export function getPermissions(aRole: Role): string[] {
permissions.readWatchlist,
permissions.updateAccount,
permissions.updateAccess,
permissions.updateActivity,
permissions.updateAuthDevice,
permissions.updateMarketDataOfOwnAssetProfile,
permissions.updateOrder,
permissions.updateUserSettings,
permissions.updateViewMode
];

Loading…
Cancel
Save