Browse Source

Refactor DisplayMode to ViewMode

pull/110/head
Thomas 4 years ago
parent
commit
545fd0c097
  1. 4
      apps/api/src/app/user/update-user-settings.dto.ts
  2. 4
      apps/api/src/app/user/user.controller.ts
  3. 20
      apps/api/src/app/user/user.service.ts
  4. 4
      apps/client/src/app/components/header/header.component.html
  5. 8
      apps/client/src/app/core/auth.guard.ts
  6. 2
      apps/client/src/app/pages/account/account-page.component.ts
  7. 8
      apps/client/src/app/pages/account/account-page.html
  8. 4
      libs/common/src/lib/interfaces/user-settings.interface.ts
  9. 12
      prisma/schema.prisma

4
apps/api/src/app/user/update-user-settings.dto.ts

@ -1,4 +1,4 @@
import { Currency, DisplayMode } from '@prisma/client';
import { Currency, ViewMode } from '@prisma/client';
import { IsString } from 'class-validator';
export class UpdateUserSettingsDto {
@ -6,5 +6,5 @@ export class UpdateUserSettingsDto {
baseCurrency: Currency;
@IsString()
displayMode: DisplayMode;
viewMode: ViewMode;
}

4
apps/api/src/app/user/user.controller.ts

@ -94,8 +94,8 @@ export class UserController {
return await this.userService.updateUserSettings({
currency: data.baseCurrency,
displayMode: data.displayMode,
userId: this.request.user.id
userId: this.request.user.id,
viewMode: data.viewMode
});
}
}

20
apps/api/src/app/user/user.service.ts

@ -5,7 +5,7 @@ import { resetHours } from '@ghostfolio/common/helper';
import { User as IUser, UserWithSettings } from '@ghostfolio/common/interfaces';
import { getPermissions, permissions } from '@ghostfolio/common/permissions';
import { Injectable } from '@nestjs/common';
import { Currency, DisplayMode, Prisma, Provider, User } from '@prisma/client';
import { Currency, Prisma, Provider, User, ViewMode } from '@prisma/client';
import { add } from 'date-fns';
const crypto = require('crypto');
@ -54,7 +54,7 @@ export class UserService {
settings: {
locale,
baseCurrency: Settings?.currency ?? UserService.DEFAULT_CURRENCY,
displayMode: Settings.displayMode ?? DisplayMode.DEFAULT
viewMode: Settings.viewMode ?? ViewMode.DEFAULT
},
subscription: {
expiresAt: resetHours(add(new Date(), { days: 7 })),
@ -80,9 +80,9 @@ export class UserService {
// Set default settings if needed
user.Settings = {
currency: UserService.DEFAULT_CURRENCY,
displayMode: DisplayMode.DEFAULT,
updatedAt: new Date(),
userId: user?.id
userId: user?.id,
viewMode: ViewMode.DEFAULT
};
}
@ -189,26 +189,26 @@ export class UserService {
public async updateUserSettings({
currency,
displayMode,
userId
userId,
viewMode
}: {
currency?: Currency;
displayMode?: DisplayMode;
userId: string;
viewMode?: ViewMode;
}) {
await this.prisma.settings.upsert({
create: {
currency,
displayMode,
User: {
connect: {
id: userId
}
}
},
viewMode
},
update: {
currency,
displayMode
viewMode
},
where: {
userId: userId

4
apps/client/src/app/components/header/header.component.html

@ -15,7 +15,7 @@
>Overview</a
>
<a
*ngIf="user?.settings?.displayMode === 'DEFAULT'"
*ngIf="user?.settings?.viewMode === 'DEFAULT'"
class="d-none d-sm-block mx-1"
i18n
mat-flat-button
@ -24,7 +24,7 @@
>Analysis</a
>
<a
*ngIf="user?.settings?.displayMode === 'DEFAULT'"
*ngIf="user?.settings?.viewMode === 'DEFAULT'"
class="d-none d-sm-block mx-1"
i18n
mat-flat-button

8
apps/client/src/app/core/auth.guard.ts

@ -5,7 +5,7 @@ import {
Router,
RouterStateSnapshot
} from '@angular/router';
import { DisplayMode } from '@prisma/client';
import { ViewMode } from '@prisma/client';
import { EMPTY } from 'rxjs';
import { catchError } from 'rxjs/operators';
@ -46,12 +46,12 @@ export class AuthGuard implements CanActivate {
.subscribe((user) => {
if (
state.url === '/home' &&
user.settings.displayMode === DisplayMode.ZEN
user.settings.viewMode === ViewMode.ZEN
) {
this.router.navigate(['/zen']);
resolve(false);
} else if (state.url === '/start') {
if (user.settings.displayMode === DisplayMode.ZEN) {
if (user.settings.viewMode === ViewMode.ZEN) {
this.router.navigate(['/zen']);
} else {
this.router.navigate(['/home']);
@ -60,7 +60,7 @@ export class AuthGuard implements CanActivate {
resolve(false);
} else if (
state.url === '/zen' &&
user.settings.displayMode === DisplayMode.DEFAULT
user.settings.viewMode === ViewMode.DEFAULT
) {
this.router.navigate(['/home']);
resolve(false);

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

@ -74,7 +74,7 @@ export class AccountPageComponent implements OnDestroy, OnInit {
this.dataService
.putUserSettings({
baseCurrency: settings?.baseCurrency,
displayMode: settings?.displayMode
viewMode: settings?.viewMode
})
.pipe(takeUntil(this.unsubscribeSubject))
.subscribe(() => {

8
apps/client/src/app/pages/account/account-page.html

@ -47,12 +47,12 @@
</mat-select>
</mat-form-field>
<mat-form-field appearance="outline" class="w-100">
<mat-label i18n>Display Mode</mat-label>
<mat-label i18n>View Mode</mat-label>
<mat-select
name="displayMode"
name="viewMode"
[disabled]="!hasPermissionToUpdateUserSettings"
[value]="user.settings.displayMode"
(selectionChange)="onChangeUserSettings('displayMode', $event.value)"
[value]="user.settings.viewMode"
(selectionChange)="onChangeUserSettings('viewMode', $event.value)"
>
<mat-option value="DEFAULT">Default</mat-option>
<mat-option value="ZEN">Zen</mat-option>

4
libs/common/src/lib/interfaces/user-settings.interface.ts

@ -1,7 +1,7 @@
import { Currency, DisplayMode } from '@prisma/client';
import { Currency, ViewMode } from '@prisma/client';
export interface UserSettings {
baseCurrency: Currency;
displayMode: DisplayMode;
locale: string;
viewMode: ViewMode;
}

12
prisma/schema.prisma

@ -92,11 +92,11 @@ model Property {
}
model Settings {
currency Currency?
displayMode DisplayMode?
updatedAt DateTime @updatedAt
User User @relation(fields: [userId], references: [id])
userId String @id
currency Currency?
viewMode ViewMode?
updatedAt DateTime @updatedAt
User User @relation(fields: [userId], references: [id])
userId String @id
}
model User {
@ -134,7 +134,7 @@ enum DataSource {
YAHOO
}
enum DisplayMode {
enum ViewMode {
DEFAULT
ZEN
}

Loading…
Cancel
Save