mails
This commit is contained in:
@@ -4,12 +4,24 @@ import { MatButtonModule } from '@angular/material/button';
|
||||
import { MatCardModule } from '@angular/material/card';
|
||||
import { MatIconModule } from '@angular/material/icon';
|
||||
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
||||
import { MatSelectModule } from '@angular/material/select';
|
||||
import { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';
|
||||
import { finalize } from 'rxjs';
|
||||
import { getAuthErrorMessage } from '../auth/error-message';
|
||||
import { AuthService } from '../auth/auth.service';
|
||||
import { TaskDigestPreference } from '../auth/auth.models';
|
||||
import { OnboardingService } from '../onboarding/onboarding.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-account',
|
||||
imports: [MatButtonModule, MatCardModule, MatIconModule, MatProgressSpinnerModule],
|
||||
imports: [
|
||||
MatButtonModule,
|
||||
MatCardModule,
|
||||
MatIconModule,
|
||||
MatProgressSpinnerModule,
|
||||
MatSelectModule,
|
||||
MatSnackBarModule,
|
||||
],
|
||||
templateUrl: './account.component.html',
|
||||
styleUrl: './account.component.scss',
|
||||
})
|
||||
@@ -17,11 +29,57 @@ export class AccountComponent {
|
||||
protected readonly auth = inject(AuthService);
|
||||
protected readonly onboarding = inject(OnboardingService);
|
||||
private readonly router = inject(Router);
|
||||
private readonly snackBar = inject(MatSnackBar);
|
||||
protected savingTaskDigestPreference = false;
|
||||
protected readonly taskDigestPreferenceOptions: ReadonlyArray<{
|
||||
value: TaskDigestPreference;
|
||||
label: string;
|
||||
description: string;
|
||||
}> = [
|
||||
{
|
||||
value: 'both',
|
||||
label: 'Morgens und nachmittags',
|
||||
description: 'E-Mail um 9:00 und 15:00 Uhr, wenn Tasks offen sind.',
|
||||
},
|
||||
{
|
||||
value: 'morning',
|
||||
label: 'Nur morgens',
|
||||
description: 'E-Mail um 9:00 Uhr, wenn Tasks offen sind.',
|
||||
},
|
||||
{
|
||||
value: 'none',
|
||||
label: 'Keine Task-Mail',
|
||||
description: 'Es werden keine taeglichen Task-Mails gesendet.',
|
||||
},
|
||||
];
|
||||
|
||||
resetOnboarding(): void {
|
||||
this.onboarding.resetForCurrentUser();
|
||||
}
|
||||
|
||||
updateTaskDigestPreference(preference: TaskDigestPreference): void {
|
||||
if (this.savingTaskDigestPreference || preference === this.auth.user()?.taskDigestPreference) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.savingTaskDigestPreference = true;
|
||||
this.auth
|
||||
.updateTaskDigestPreference(preference)
|
||||
.pipe(finalize(() => (this.savingTaskDigestPreference = false)))
|
||||
.subscribe({
|
||||
next: () => {
|
||||
this.snackBar.open('Task-Mail-Einstellung gespeichert.', 'OK', {
|
||||
duration: 3000,
|
||||
});
|
||||
},
|
||||
error: (error: unknown) => {
|
||||
this.snackBar.open(getAuthErrorMessage(error), 'OK', {
|
||||
duration: 5000,
|
||||
});
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
logout(): void {
|
||||
this.auth.logout();
|
||||
void this.router.navigateByUrl('/login');
|
||||
|
||||
Reference in New Issue
Block a user