Browse Source

Add appearance option in settings

pull/1348/head
yksolanki9 3 years ago
parent
commit
6f72fa80ae
  1. 4
      apps/api/src/app/user/update-user-setting.dto.ts
  2. 5
      apps/api/src/app/user/user.service.ts
  3. 11
      apps/client/src/app/app.component.ts
  4. 8
      apps/client/src/app/pages/account/account-page.html
  5. 1
      libs/common/src/lib/interfaces/user-settings.interface.ts
  6. 2
      libs/common/src/lib/types/appearance.type.ts
  7. 3
      libs/common/src/lib/types/index.ts
  8. 5
      prisma/migrations/20221009120121_added_appearance_column_to_settings_table/migration.sql
  9. 6
      prisma/schema.prisma

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

@ -51,4 +51,8 @@ export class UpdateUserSettingDto {
@IsIn(<ViewMode[]>['DEFAULT', 'ZEN']) @IsIn(<ViewMode[]>['DEFAULT', 'ZEN'])
@IsOptional() @IsOptional()
viewMode?: ViewMode; viewMode?: ViewMode;
@IsIn(<Appearance[]>['AUTO', 'DARK', 'LIGHT'])
@IsOptional()
appearance?: Appearance;
} }

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

@ -154,6 +154,11 @@ export class UserService {
(user.Settings.settings as UserSettings).viewMode = 'DEFAULT'; (user.Settings.settings as UserSettings).viewMode = 'DEFAULT';
} }
// Set default appearance value to AUTO
if (!(user.Settings.settings as UserSettings).appearance) {
(user.Settings.settings as UserSettings).appearance = 'AUTO';
}
if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) {
user.subscription = user.subscription =
this.subscriptionService.getSubscription(Subscription); this.subscriptionService.getSubscription(Subscription);

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

@ -100,12 +100,13 @@ export class AppComponent implements OnDestroy, OnInit {
this.unsubscribeSubject.complete(); this.unsubscribeSubject.complete();
} }
private initializeTheme(userPreferredAppearance?: Appearance) { private initializeTheme(userPreferredAppearance: Appearance = 'AUTO') {
const isDarkTheme = userPreferredAppearance const setDarkTheme =
? userPreferredAppearance === 'DARK' userPreferredAppearance === 'DARK' ||
: window.matchMedia('(prefers-color-scheme: dark)').matches; (userPreferredAppearance === 'AUTO' &&
window.matchMedia('(prefers-color-scheme: dark)').matches);
this.materialCssVarsService.setDarkTheme(isDarkTheme); this.materialCssVarsService.setDarkTheme(setDarkTheme);
window.matchMedia('(prefers-color-scheme: dark)').addListener((event) => { window.matchMedia('(prefers-color-scheme: dark)').addListener((event) => {
if (!this.user?.settings.appearance) { if (!this.user?.settings.appearance) {

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

@ -201,15 +201,13 @@
> >
<mat-select <mat-select
name="appearance" name="appearance"
class="with-placeholder-as-option"
[disabled]="!hasPermissionToUpdateUserSettings" [disabled]="!hasPermissionToUpdateUserSettings"
[placeholder]="appearancePlaceholder"
[value]="user.settings.appearance" [value]="user.settings.appearance"
(selectionChange)="onChangeUserSetting('appearance', $event.value)" (selectionChange)="onChangeUserSetting('appearance', $event.value)"
> >
<mat-option i18n [value]="null">Auto</mat-option> <mat-option value="AUTO">AUTO</mat-option>
<mat-option i18n value="LIGHT">Light</mat-option> <mat-option value="LIGHT">LIGHT</mat-option>
<mat-option i18n value="DARK">Dark</mat-option> <mat-option value="DARK">DARK</mat-option>
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
</div> </div>

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

@ -11,4 +11,5 @@ export interface UserSettings {
language?: string; language?: string;
locale?: string; locale?: string;
viewMode?: ViewMode; viewMode?: ViewMode;
appearance?: Appearance;
} }

2
libs/common/src/lib/types/appearance.type.ts

@ -1 +1 @@
export type Appearance = 'DARK' | 'LIGHT'; export type Appearance = 'AUTO' | 'LIGHT' | 'DARK';

3
libs/common/src/lib/types/index.ts

@ -23,5 +23,6 @@ export type {
OrderWithAccount, OrderWithAccount,
RequestWithUser, RequestWithUser,
ToggleOption, ToggleOption,
ViewMode ViewMode,
Appearance
}; };

5
prisma/migrations/20221009120121_added_appearance_column_to_settings_table/migration.sql

@ -0,0 +1,5 @@
-- CreateEnum
CREATE TYPE "Appearance" AS ENUM ('AUTO', 'LIGHT', 'DARK');
-- Update Settings table
ALTER TABLE "Settings" ADD COLUMN "appearance" "Appearance";

6
prisma/schema.prisma

@ -215,6 +215,12 @@ enum ViewMode {
ZEN ZEN
} }
enum Appearance {
AUTO
LIGHT
DARK
}
enum Provider { enum Provider {
ANONYMOUS ANONYMOUS
GOOGLE GOOGLE

Loading…
Cancel
Save