diff --git a/CHANGELOG.md b/CHANGELOG.md
index c3cf5040d..17dbe58cf 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,8 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased
+### Added
+
+- Added the user interface for received access from others
+
### Changed
+- Improved the language localization for German (`de`)
- Upgraded the _Stripe_ dependencies
- Upgraded `angular` from version `18.2.8` to `19.0.5`
- Upgraded `husky` from version `9.1.6` to `9.1.7`
diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts
index bac6ed19b..33e9a67da 100644
--- a/apps/api/src/app/user/user.service.ts
+++ b/apps/api/src/app/user/user.service.ts
@@ -89,6 +89,7 @@ export class UserService {
}),
this.tagService.getTagsForUser(id)
]);
+
const access = userData[0];
const firstActivity = userData[1];
let tags = userData[2];
@@ -119,7 +120,8 @@ export class UserService {
access: access.map((accessItem) => {
return {
alias: accessItem.alias,
- id: accessItem.id
+ id: accessItem.id,
+ permissions: accessItem.permissions
};
}),
accounts: Account,
diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.ts b/apps/client/src/app/components/admin-settings/admin-settings.component.ts
index 4c6e7662e..be077c0e6 100644
--- a/apps/client/src/app/components/admin-settings/admin-settings.component.ts
+++ b/apps/client/src/app/components/admin-settings/admin-settings.component.ts
@@ -101,7 +101,8 @@ export class AdminSettingsComponent implements OnDestroy, OnInit {
autoFocus: false,
data: {
deviceType: this.deviceType,
- pricingUrl: this.pricingUrl
+ pricingUrl: this.pricingUrl,
+ user: this.user
},
height: this.deviceType === 'mobile' ? '98vh' : undefined,
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
diff --git a/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html b/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html
index f2f753750..ac777ffda 100644
--- a/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html
+++ b/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html
@@ -31,17 +31,19 @@
mat-flat-button
>Notify me
-
- or
-
-
+ @if (data.user?.settings?.isExperimentalFeatures) {
+
+ or
+
+
+ }
diff --git a/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/interfaces/interfaces.ts b/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/interfaces/interfaces.ts
index 0c629599e..157a6f414 100644
--- a/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/interfaces/interfaces.ts
+++ b/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/interfaces/interfaces.ts
@@ -1,4 +1,7 @@
+import { User } from '@ghostfolio/common/interfaces';
+
export interface GhostfolioPremiumApiDialogParams {
deviceType: string;
pricingUrl: string;
+ user: User;
}
diff --git a/apps/client/src/app/components/user-account-access/user-account-access.component.ts b/apps/client/src/app/components/user-account-access/user-account-access.component.ts
index 7c4033242..6f111f456 100644
--- a/apps/client/src/app/components/user-account-access/user-account-access.component.ts
+++ b/apps/client/src/app/components/user-account-access/user-account-access.component.ts
@@ -28,7 +28,8 @@ import { CreateOrUpdateAccessDialog } from './create-or-update-access-dialog/cre
standalone: false
})
export class UserAccountAccessComponent implements OnDestroy, OnInit {
- public accesses: Access[];
+ public accessesGet: Access[];
+ public accessesGive: Access[];
public deviceType: string;
public hasPermissionToCreateAccess: boolean;
public hasPermissionToDeleteAccess: boolean;
@@ -126,11 +127,21 @@ export class UserAccountAccessComponent implements OnDestroy, OnInit {
}
private update() {
+ this.accessesGet = this.user.access.map(({ alias, id, permissions }) => {
+ return {
+ alias,
+ id,
+ permissions,
+ grantee: $localize`Me`,
+ type: 'PRIVATE'
+ };
+ });
+
this.dataService
.fetchAccesses()
.pipe(takeUntil(this.unsubscribeSubject))
.subscribe((accesses) => {
- this.accesses = accesses;
+ this.accessesGive = accesses;
this.changeDetectorRef.markForCheck();
});
diff --git a/apps/client/src/app/components/user-account-access/user-account-access.html b/apps/client/src/app/components/user-account-access/user-account-access.html
index e5d43cadc..efb918984 100644
--- a/apps/client/src/app/components/user-account-access/user-account-access.html
+++ b/apps/client/src/app/components/user-account-access/user-account-access.html
@@ -1,14 +1,16 @@
-
+ @if (accessesGet.length > 0) {
+ Received Access
+
+ }
+
Granted Access
@if (user?.subscription?.type === 'Basic') {
}
Granted Access
apps/client/src/app/components/user-account-access/user-account-access.html
- 5
+ 7
@@ -7616,6 +7616,22 @@
82
+
+ Me
+ Me
+
+ apps/client/src/app/components/user-account-access/user-account-access.component.ts
+ 134
+
+
+
+ Received Access
+ Received Access
+
+ apps/client/src/app/components/user-account-access/user-account-access.html
+ 3
+
+