feat: Rename to Toju and add translation
Deploy Web Apps / deploy (push) Successful in 5m52s
Build Android APK / build-android-apk (push) Failing after 23m15s
Queue Release Build / prepare (push) Successful in 1m42s
Queue Release Build / build-linux (push) Failing after 9m33s
Queue Release Build / build-windows (push) Successful in 26m5s
Queue Release Build / finalize (push) Has been skipped
Deploy Web Apps / deploy (push) Successful in 5m52s
Build Android APK / build-android-apk (push) Failing after 23m15s
Queue Release Build / prepare (push) Successful in 1m42s
Queue Release Build / build-linux (push) Failing after 9m33s
Queue Release Build / build-windows (push) Successful in 26m5s
Queue Release Build / finalize (push) Has been skipped
This commit is contained in:
+4
-4
@@ -1,6 +1,6 @@
|
||||
<app-modal-backdrop
|
||||
[zIndex]="112"
|
||||
ariaLabel="Close profile image editor"
|
||||
ariaLabel="{{ 'profile.avatarEditor.closeAria' | translate }}"
|
||||
(dismissed)="cancelled.emit(undefined)"
|
||||
/>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
tabindex="-1"
|
||||
>
|
||||
<div class="border-b border-border p-5">
|
||||
<h3 class="text-lg font-semibold text-foreground">Adjust profile picture</h3>
|
||||
<h3 class="text-lg font-semibold text-foreground">{{ 'profile.avatarEditor.title' | translate }}</h3>
|
||||
<p class="mt-1 text-sm text-muted-foreground">
|
||||
@if (preservesAnimation()) {
|
||||
Animated GIF and WebP avatars keep their original animation and framing.
|
||||
@@ -133,7 +133,7 @@
|
||||
(click)="cancelled.emit(undefined)"
|
||||
[disabled]="processing()"
|
||||
>
|
||||
Cancel
|
||||
{{ 'shared.dialog.cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
@@ -141,7 +141,7 @@
|
||||
(click)="confirm()"
|
||||
[disabled]="processing()"
|
||||
>
|
||||
{{ processing() ? 'Saving...' : 'Apply picture' }}
|
||||
{{ processing() ? ('profile.avatarEditor.saving' | translate) : ('profile.avatarEditor.apply' | translate) }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+6
-4
@@ -10,6 +10,7 @@ import {
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { ProfileAvatarFacade } from '../../application/services/profile-avatar.facade';
|
||||
import { ModalBackdropComponent } from '../../../../shared';
|
||||
import { APP_TRANSLATE_IMPORTS, AppI18nService } from '../../../../core/i18n';
|
||||
import {
|
||||
EditableProfileAvatarSource,
|
||||
ProcessedProfileAvatar,
|
||||
@@ -22,12 +23,14 @@ import {
|
||||
@Component({
|
||||
selector: 'app-profile-avatar-editor',
|
||||
standalone: true,
|
||||
imports: [CommonModule, ModalBackdropComponent],
|
||||
imports: [CommonModule, ModalBackdropComponent, ...APP_TRANSLATE_IMPORTS],
|
||||
templateUrl: './profile-avatar-editor.component.html'
|
||||
})
|
||||
export class ProfileAvatarEditorComponent {
|
||||
readonly source = input.required<EditableProfileAvatarSource>();
|
||||
private readonly appI18n = inject(AppI18nService);
|
||||
private readonly avatar = inject(ProfileAvatarFacade);
|
||||
|
||||
readonly source = input.required<EditableProfileAvatarSource>();
|
||||
readonly cancelled = output<undefined>();
|
||||
readonly confirmed = output<ProcessedProfileAvatar>();
|
||||
|
||||
@@ -47,7 +50,6 @@ export class ProfileAvatarEditorComponent {
|
||||
return `translate(-50%, -50%) translate(${transform.offsetX}px, ${transform.offsetY}px) scale(${scale})`;
|
||||
});
|
||||
|
||||
private readonly avatar = inject(ProfileAvatarFacade);
|
||||
private dragPointerId: number | null = null;
|
||||
private dragOrigin: { x: number; y: number; offsetX: number; offsetY: number } | null = null;
|
||||
|
||||
@@ -150,7 +152,7 @@ export class ProfileAvatarEditorComponent {
|
||||
|
||||
this.confirmed.emit(avatar);
|
||||
} catch {
|
||||
this.errorMessage.set('Failed to process profile image.');
|
||||
this.errorMessage.set(this.appI18n.instant('profile.avatarEditor.processFailed'));
|
||||
} finally {
|
||||
this.processing.set(false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user