Skip to content

Commit c9c77df

Browse files
committed
chore(): moved dark mode component in share module
1 parent 27ee61f commit c9c77df

File tree

7 files changed

+37
-4
lines changed

7 files changed

+37
-4
lines changed

src/app/app.module.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import { BasePageComponent } from './homepage/pages/page/page.component';
2929
import { PipesComponent } from './homepage/pages/pipes/pipes.component';
3030
import { SupportComponent } from './homepage/pages/support/support.component';
3131
import { SharedModule } from './shared/shared.module';
32-
import { DarkModeToggleComponent } from './homepage/dark-mode-toggle/dark-mode-toggle.component';
3332

3433
@NgModule({
3534
imports: [
@@ -65,7 +64,6 @@ import { DarkModeToggleComponent } from './homepage/dark-mode-toggle/dark-mode-t
6564
EnterpriseComponent,
6665
SocialWrapperComponent,
6766
NewsletterComponent,
68-
DarkModeToggleComponent,
6967
],
7068
bootstrap: [AppComponent],
7169
providers: [],

src/app/homepage/dark-mode-toggle/dark-mode-toggle.component.ts renamed to src/app/shared/components/dark-mode-toggle/dark-mode-toggle.component.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Component, Inject, OnInit } from '@angular/core';
22
import { DOCUMENT } from '@angular/common';
33
import { MediaMatcher } from '@angular/cdk/layout';
4+
import { StorageService } from '../../services/storage.service';
45

56
@Component({
67
selector: 'app-dark-mode-toggle',
@@ -14,6 +15,7 @@ export class DarkModeToggleComponent implements OnInit {
1415
@Inject(DOCUMENT)
1516
private readonly document: Document,
1617
private readonly mediaMatcher: MediaMatcher,
18+
private readonly storageService: StorageService,
1719
) {}
1820

1921
ngOnInit() {
@@ -27,12 +29,12 @@ export class DarkModeToggleComponent implements OnInit {
2729

2830
toggleDarkMode() {
2931
const isDarkMode = !this.isDarkMode;
30-
localStorage.setItem('theme-mode', isDarkMode.toString());
32+
this.storageService.set('theme-mode', isDarkMode.toString());
3133
this.setDarkMode(isDarkMode);
3234
}
3335

3436
private getUserSettingsIsDarkMode(): boolean {
35-
return localStorage.getItem('theme-mode') === 'true';
37+
return this.storageService.get('theme-mode') === 'true';
3638
}
3739

3840
private setDarkMode(isDarkMode: boolean) {
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { Injectable } from '@angular/core';
2+
3+
@Injectable({
4+
providedIn: 'root',
5+
})
6+
export class StorageService {
7+
set(key, val: unknown): void {
8+
localStorage.setItem(key, JSON.stringify(val));
9+
}
10+
11+
/**
12+
* Returns the localStorage item for the given key, if any.
13+
* Returns null elsewhere
14+
*/
15+
get(key: string): unknown | null {
16+
const result = localStorage.getItem(key);
17+
18+
return result ? JSON.parse(result) : null;
19+
}
20+
21+
remove(key: string): void {
22+
const hasStorageKey = this.get(key);
23+
24+
if (hasStorageKey) {
25+
localStorage.removeItem(key);
26+
}
27+
}
28+
}

src/app/shared/shared.module.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { CommonModule } from '@angular/common';
22
import { NgModule } from '@angular/core';
3+
import { StorageService } from './services/storage.service';
4+
import { DarkModeToggleComponent } from './components/dark-mode-toggle/dark-mode-toggle.component';
35
import { BannerCoursesAuthComponent } from './components/banner-courses-auth/banner-courses-auth.component';
46
import { BannerCoursesGraphQLCodeFirstComponent } from './components/banner-courses-graphql-cf/banner-courses-graphql-cf.component';
57
import { BannerDevtoolsComponent } from './components/banner-devtools/banner-devtools.component';
@@ -24,6 +26,7 @@ import { ExtensionPipe } from './pipes/extension.pipe';
2426
BannerCoursesGraphQLCodeFirstComponent,
2527
BannerDevtoolsComponent,
2628
BannerCoursesAuthComponent,
29+
DarkModeToggleComponent,
2730
],
2831
exports: [
2932
ExtensionPipe,
@@ -36,6 +39,8 @@ import { ExtensionPipe } from './pipes/extension.pipe';
3639
BannerCoursesGraphQLCodeFirstComponent,
3740
BannerDevtoolsComponent,
3841
BannerCoursesAuthComponent,
42+
DarkModeToggleComponent,
3943
],
44+
providers: [StorageService],
4045
})
4146
export class SharedModule {}

0 commit comments

Comments
 (0)