Profile Page Component
class ProfilePageComponent
profile-page.component.ts
import { DatePipe, NgOptimizedImage, NgStyle } from '@angular/common';
import {
Component,
effect,
ElementRef,
inject,
Signal,
untracked,
viewChild,
} from '@angular/core';
import {
FormBuilder,
FormControl,
FormGroup,
ReactiveFormsModule,
Validators,
} from '@angular/forms';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card';
import { MatRippleModule } from '@angular/material/core';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatIconModule } from '@angular/material/icon';
import { MatInputModule } from '@angular/material/input';
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
import { RouterLink } from '@angular/router';
import { Profile } from '@jet/interfaces/profile.interface';
import { AlertService } from '@jet/services/alert/alert.service';
import { LoggerService } from '@jet/services/logger/logger.service';
import { ProfileService } from '@jet/services/profile/profile.service';
import { ProgressBarService } from '@jet/services/progress-bar/progress-bar.service';
import { UserService } from '@jet/services/user/user.service';
import { TranslocoModule, TranslocoService } from '@jsverse/transloco';
import { User } from '@supabase/supabase-js';
import { PageComponent } from '../page/page.component';
@Component({
imports: [
NgStyle,
DatePipe,
NgOptimizedImage,
ReactiveFormsModule,
MatButtonModule,
MatCardModule,
MatRippleModule,
MatFormFieldModule,
MatIconModule,
MatInputModule,
MatProgressSpinnerModule,
RouterLink,
TranslocoModule,
PageComponent,
],
selector: 'jet-profile-page',
styleUrl: './profile-page.component.scss',
templateUrl: './profile-page.component.html',
})
export class ProfilePageComponent {
private readonly _formBuilder = inject(FormBuilder);
private readonly _alertService = inject(AlertService);
private readonly _loggerService = inject(LoggerService);
private readonly _profileService = inject(ProfileService);
private readonly _progressBarService = inject(ProgressBarService);
private readonly _userService = inject(UserService);
private readonly _translocoService = inject(TranslocoService);
private readonly _avatarInput =
viewChild.required<ElementRef<HTMLInputElement>>('avatarInput');
public isUpdateProfilePending: boolean;
public readonly profile: Signal<Profile | null>;
public readonly profileFormGroup: FormGroup<{
username: FormControl<string | null>;
}>;
public readonly user: Signal<User | null>;
public constructor() {
// Buy to unlock
}
public async replaceAvatar(): Promise<void> {
// Buy to unlock
}
public async updateProfile(partialProfile: Partial<Profile>): Promise<void> {
// Buy to unlock
}
}
Last updated
Was this helpful?