Browse Source

Merge branch 'main' into feature/upgrade-to-nx-20.3

pull/4152/head
Thomas Kaul 8 months ago
committed by GitHub
parent
commit
daba15e6cb
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 5
      CHANGELOG.md
  2. 4
      apps/api/src/app/user/user.service.ts
  3. 3
      apps/client/src/app/components/admin-settings/admin-settings.component.ts
  4. 24
      apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html
  5. 3
      apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/interfaces/interfaces.ts
  6. 15
      apps/client/src/app/components/user-account-access/user-account-access.component.ts
  7. 10
      apps/client/src/app/components/user-account-access/user-account-access.html
  8. 18
      apps/client/src/locales/messages.ca.xlf
  9. 20
      apps/client/src/locales/messages.de.xlf
  10. 18
      apps/client/src/locales/messages.es.xlf
  11. 18
      apps/client/src/locales/messages.fr.xlf
  12. 18
      apps/client/src/locales/messages.it.xlf
  13. 18
      apps/client/src/locales/messages.nl.xlf
  14. 20
      apps/client/src/locales/messages.pl.xlf
  15. 18
      apps/client/src/locales/messages.pt.xlf
  16. 18
      apps/client/src/locales/messages.tr.xlf
  17. 16
      apps/client/src/locales/messages.xlf
  18. 18
      apps/client/src/locales/messages.zh.xlf
  19. 7
      libs/common/src/lib/interfaces/user.interface.ts

5
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`

4
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,

3
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'

24
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</a
>
<div>
<small class="text-muted" i18n>or</small>
</div>
<button
color="accent"
i18n
mat-stroked-button
(click)="onSetGhostfolioApiKey()"
>
I have an API key
</button>
@if (data.user?.settings?.isExperimentalFeatures) {
<div>
<small class="text-muted" i18n>or</small>
</div>
<button
color="accent"
i18n
mat-stroked-button
(click)="onSetGhostfolioApiKey()"
>
I have an API key
</button>
}
</div>
</div>

3
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;
}

15
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();
});

10
apps/client/src/app/components/user-account-access/user-account-access.html

@ -1,14 +1,16 @@
<div class="container">
<h1
class="align-items-center d-none d-sm-flex h3 justify-content-center mb-3 text-center"
>
@if (accessesGet.length > 0) {
<h1 class="h3 mb-3 text-center" i18n>Received Access</h1>
<gf-access-table class="mb-5" [accesses]="accessesGet" [user]="user" />
}
<h1 class="align-items-center d-flex h3 justify-content-center mb-3">
<span i18n>Granted Access</span>
@if (user?.subscription?.type === 'Basic') {
<gf-premium-indicator class="ml-1" />
}
</h1>
<gf-access-table
[accesses]="accesses"
[accesses]="accessesGive"
[showActions]="hasPermissionToDeleteAccess"
[user]="user"
(accessDeleted)="onDeleteAccess($event)"

18
apps/client/src/locales/messages.ca.xlf

@ -3307,7 +3307,7 @@
<target state="new">Granted Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">5</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="5196970976032945030" datatype="html">
@ -7616,6 +7616,22 @@
<context context-type="linenumber">82</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">
<source>Me</source>
<target state="new">Me</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="110cc6cb39e1806d3775fd76f1d0753c9bc0e062" datatype="html">
<source>Received Access</source>
<target state="new">Received Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">3</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

20
apps/client/src/locales/messages.de.xlf

@ -1815,10 +1815,10 @@
</trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
<source>Granted Access</source>
<target state="translated">Zugangsberechtigung</target>
<target state="translated">Gewährte Zugangsberechtigung</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">5</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -7616,6 +7616,22 @@
<context context-type="linenumber">82</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">
<source>Me</source>
<target state="translated">Ich</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="110cc6cb39e1806d3775fd76f1d0753c9bc0e062" datatype="html">
<source>Received Access</source>
<target state="translated">Erhaltene Zugangsberechtigung</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">3</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

18
apps/client/src/locales/messages.es.xlf

@ -1819,7 +1819,7 @@
<target state="translated">Acceso concedido</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">5</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -7617,6 +7617,22 @@
<context context-type="linenumber">82</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">
<source>Me</source>
<target state="new">Me</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="110cc6cb39e1806d3775fd76f1d0753c9bc0e062" datatype="html">
<source>Received Access</source>
<target state="new">Received Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">3</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

18
apps/client/src/locales/messages.fr.xlf

@ -2174,7 +2174,7 @@
<target state="translated">Accès donné</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">5</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -7616,6 +7616,22 @@
<context context-type="linenumber">82</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">
<source>Me</source>
<target state="new">Me</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="110cc6cb39e1806d3775fd76f1d0753c9bc0e062" datatype="html">
<source>Received Access</source>
<target state="new">Received Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">3</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

18
apps/client/src/locales/messages.it.xlf

@ -1819,7 +1819,7 @@
<target state="translated">Accesso concesso</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">5</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -7617,6 +7617,22 @@
<context context-type="linenumber">82</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">
<source>Me</source>
<target state="new">Me</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="110cc6cb39e1806d3775fd76f1d0753c9bc0e062" datatype="html">
<source>Received Access</source>
<target state="new">Received Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">3</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

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

@ -1818,7 +1818,7 @@
<target state="translated">Verleende toegang</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">5</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -7616,6 +7616,22 @@
<context context-type="linenumber">82</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">
<source>Me</source>
<target state="new">Me</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="110cc6cb39e1806d3775fd76f1d0753c9bc0e062" datatype="html">
<source>Received Access</source>
<target state="new">Received Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">3</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

20
apps/client/src/locales/messages.pl.xlf

@ -3031,7 +3031,7 @@
<target state="translated">Przyznano dostęp</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">5</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="5196970976032945030" datatype="html">
@ -3812,7 +3812,7 @@
</trans-unit>
<trans-unit id="f251aca95a00756de48b14172b02d33f175661fc" datatype="html">
<source> Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. </source>
<target state="translated"> Ghostfolio to zapewniający prywatność, open source'owy panel do zarządzania finansami osobistymi. Przeanalizuj szczegółowo swoją alokację aktywów, określ swoją wartość netto i podejmuj przemyślane decyzje inwestycyjne oparte na danych. </target>
<target state="translated"> Ghostfolio to zapewniający prywatność, open source&apos;owy panel do zarządzania finansami osobistymi. Przeanalizuj szczegółowo swoją alokację aktywów, określ swoją wartość netto i podejmuj przemyślane decyzje inwestycyjne oparte na danych. </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">9</context>
@ -7616,6 +7616,22 @@
<context context-type="linenumber">82</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">
<source>Me</source>
<target state="new">Me</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="110cc6cb39e1806d3775fd76f1d0753c9bc0e062" datatype="html">
<source>Received Access</source>
<target state="new">Received Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">3</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

18
apps/client/src/locales/messages.pt.xlf

@ -2122,7 +2122,7 @@
<target state="translated">Acesso Concedido</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">5</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -7616,6 +7616,22 @@
<context context-type="linenumber">82</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">
<source>Me</source>
<target state="new">Me</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="110cc6cb39e1806d3775fd76f1d0753c9bc0e062" datatype="html">
<source>Received Access</source>
<target state="new">Received Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">3</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

18
apps/client/src/locales/messages.tr.xlf

@ -5171,7 +5171,7 @@
<target state="translated">xErişim İzni Verildi</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">5</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="495a0574bd9a3d619a8b16dd5b893c6f617beded" datatype="html">
@ -7616,6 +7616,22 @@
<context context-type="linenumber">82</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">
<source>Me</source>
<target state="new">Me</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="110cc6cb39e1806d3775fd76f1d0753c9bc0e062" datatype="html">
<source>Received Access</source>
<target state="new">Received Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">3</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

16
apps/client/src/locales/messages.xlf

@ -2832,7 +2832,7 @@
<source>Granted Access</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">5</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="5196970976032945030" datatype="html">
@ -6891,6 +6891,20 @@
<context context-type="linenumber">82</context>
</context-group>
</trans-unit>
<trans-unit id="110cc6cb39e1806d3775fd76f1d0753c9bc0e062" datatype="html">
<source>Received Access</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">3</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">
<source>Me</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

18
apps/client/src/locales/messages.zh.xlf

@ -3048,7 +3048,7 @@
<target state="translated">授予访问权限</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">5</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="5196970976032945030" datatype="html">
@ -7617,6 +7617,22 @@
<context context-type="linenumber">82</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">
<source>Me</source>
<target state="new">Me</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="110cc6cb39e1806d3775fd76f1d0753c9bc0e062" datatype="html">
<source>Received Access</source>
<target state="new">Received Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.html</context>
<context context-type="linenumber">3</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

7
libs/common/src/lib/interfaces/user.interface.ts

@ -1,17 +1,14 @@
import { SubscriptionOfferKey } from '@ghostfolio/common/types';
import { SubscriptionType } from '@ghostfolio/common/types/subscription-type.type';
import { Account, Tag } from '@prisma/client';
import { Access, Account, Tag } from '@prisma/client';
import { SystemMessage } from './system-message.interface';
import { UserSettings } from './user-settings.interface';
// TODO: Compare with UserWithSettings
export interface User {
access: {
alias?: string;
id: string;
}[];
access: Pick<Access, 'alias' | 'id' | 'permissions'>[];
accounts: Account[];
dateOfFirstActivity: Date;
id: string;

Loading…
Cancel
Save