From c78b36ce729261093e4ebf8fc21b0f964b934cd3 Mon Sep 17 00:00:00 2001 From: Dorian MARCO <dorian.marco@e-is.pro> Date: Tue, 13 May 2025 13:55:20 +0200 Subject: [PATCH] multiple fix and enh --- package-lock.json | 4 +- src/app/account/accounts.service.ts | 29 +++++++------- src/app/account/auth/auth.controller.ts | 4 +- src/app/account/unlock/unlock.form.html | 1 + src/app/account/unlock/unlock.form.ts | 2 +- src/app/account/wallet/wallet.page.ts | 1 - .../verification/verification.modal.html | 38 +++++++++---------- .../verification/verification.modal.ts | 2 +- src/app/settings/settings.page.html | 18 ++++----- src/app/settings/settings.page.ts | 5 +-- src/assets/i18n/fr.json | 2 +- src/environments/environment.ts | 1 + 12 files changed, 53 insertions(+), 54 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7db0a57..962830e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cesium", - "version": "2.0.0-alpha50", + "version": "2.0.0-alpha51", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "cesium", - "version": "2.0.0-alpha50", + "version": "2.0.0-alpha51", "license": "AGPL-3.0", "dependencies": { "@angular/animations": "^18.2.13", diff --git a/src/app/account/accounts.service.ts b/src/app/account/accounts.service.ts index 6f7f71b..04d79ea 100644 --- a/src/app/account/accounts.service.ts +++ b/src/app/account/accounts.service.ts @@ -197,10 +197,10 @@ export class AccountsService extends RxStartableService<AccountsState> { }); // Add Dev account - // if (!environment.production) { - // const devAccount = await this.addDevAccount(accounts); - // if (devAccount) accounts.push(devAccount); - // } + if (!environment.production) { + const devAccount = await this.addDevAccount(accounts); + if (devAccount) accounts.push(devAccount); + } // Load account's data try { @@ -227,7 +227,7 @@ export class AccountsService extends RxStartableService<AccountsState> { const data = environment.dev?.auth; // Set password to AAAAA (or those defined in environment) - this._password = data?.password || 'AAAAA'; + this._password = data?.password || '12345'; if (!data || (!data.v1 && !data.v2)) return; // Skip if no dev account defined data.meta = { @@ -722,6 +722,8 @@ export class AccountsService extends RxStartableService<AccountsState> { const toAccountRefereePercent = await this.wot.getRefereePercentByAccount(to); if (toAccountRefereePercent > this.network.currency.params.minAccessibleReferees / 1000000000) { certType = CertType.CertRenewal; + } else { + certType = CertType.CertCreation; } break; } @@ -880,18 +882,16 @@ export class AccountsService extends RxStartableService<AccountsState> { return this.settings.get('biometricAuth') && isNotNilOrBlank(this.storage.get('validationCode')); } - async getActionConfirmation(mobile: boolean, from: Account, message?: string, retry?: number): Promise<boolean> { + async getActionConfirmation(mobile: boolean, from: Account, retryUsed?: number): Promise<boolean> { let validation = false; - let retryUsed = retry ?? 0; + const maxRetry = 3; + retryUsed = retryUsed ?? 0; const isBiometricEnabled = await this.isBiometricEnabled(); if (mobile && isBiometricEnabled) { validation = await this.getBiometricAuth(); } else { const modal = await this.modalCtrl.create({ component: ValidationModal, - componentProps: { - message, - }, }); await modal.present(); @@ -904,11 +904,14 @@ export class AccountsService extends RxStartableService<AccountsState> { } } - if (validation === false && retryUsed < 4) { + if (validation === false && retryUsed < maxRetry) { retryUsed++; - const { role } = await this.openRetryAlert(retryUsed); + // if (mobile) { + const { role } = await this.openRetryAlert(maxRetry - retryUsed); if (role === 'cancel') return false; - validation = await this.getActionConfirmation(mobile, from, message, retryUsed); + // } + + validation = await this.getActionConfirmation(mobile, from, retryUsed); } if (!validation && isBiometricEnabled) { diff --git a/src/app/account/auth/auth.controller.ts b/src/app/account/auth/auth.controller.ts index 76717b8..cbdf0fb 100644 --- a/src/app/account/auth/auth.controller.ts +++ b/src/app/account/auth/auth.controller.ts @@ -7,12 +7,12 @@ import { AuthModal, AuthModalOptions } from '@app/account/auth/auth.modal'; import { Router } from '@angular/router'; import { RegisterModal, RegisterModalOptions } from '@app/account/register/register.modal'; import { Account, LoginMethods, LoginMethodType, LoginOptions, SelectAccountOptions, UnlockOptions } from '@app/account/account.model'; -import { UnlockModal } from '@app/account/unlock/unlock.modal'; import { AccountListComponent, AccountListComponentInputs } from '@app/account/list/account-list.component'; import { setTimeout } from '@rx-angular/cdk/zone-less/browser'; import { AppEvent } from '@app/shared/types'; import { IAuthController } from '@app/account/auth/auth.model'; import { ListPopover, ListPopoverOptions } from '@app/shared/popover/list.popover'; +import { ValidationModal } from '@app/transfer/send/transfer-validation/validation.modal'; @Injectable() export class AuthController implements IAuthController { @@ -108,7 +108,7 @@ export class AuthController implements IAuthController { async unlock(opts?: UnlockOptions): Promise<string> { const modal = await this.modalCtrl.create({ - component: UnlockModal, + component: ValidationModal, componentProps: opts, }); await modal.present(); diff --git a/src/app/account/unlock/unlock.form.html b/src/app/account/unlock/unlock.form.html index 085f3a2..9a366d6 100644 --- a/src/app/account/unlock/unlock.form.html +++ b/src/app/account/unlock/unlock.form.html @@ -6,6 +6,7 @@ <ion-item lines="none" class="ion-padding-top"> <ion-input + type="tel" [formControl]="control" [label]="'AUTH.PASSPHRASE' | translate" labelPlacement="floating" diff --git a/src/app/account/unlock/unlock.form.ts b/src/app/account/unlock/unlock.form.ts index 99d1a00..ef6d4c3 100644 --- a/src/app/account/unlock/unlock.form.ts +++ b/src/app/account/unlock/unlock.form.ts @@ -90,7 +90,7 @@ export class UnlockForm extends AppForm<string> implements OnInit { let value = event.target['value'] || ''; // Removes non alphanumeric characters - value = value.toUpperCase().replace(/[^A-Z]+/g, ''); + value = value.toUpperCase().replace(/[^0-9]+/g, ''); if (value.length > this.maxLength) { event.preventDefault(); diff --git a/src/app/account/wallet/wallet.page.ts b/src/app/account/wallet/wallet.page.ts index b25a600..03b68e8 100644 --- a/src/app/account/wallet/wallet.page.ts +++ b/src/app/account/wallet/wallet.page.ts @@ -53,7 +53,6 @@ export class WalletPage extends AppPage<WalletState> implements OnInit { static NEW = Object.freeze(<Account>{ address: '', }); - IdentityStatusEnum = IdentityStatusEnum; protected qrCodeValue: string; diff --git a/src/app/certification/verification/verification.modal.html b/src/app/certification/verification/verification.modal.html index 241bb17..efdf917 100644 --- a/src/app/certification/verification/verification.modal.html +++ b/src/app/certification/verification/verification.modal.html @@ -32,24 +32,22 @@ } </ion-list> </ion-content> -@if (!mobile) { - <ion-footer> - <ion-toolbar> - <ion-row class="ion-no-padding"> - <ion-col size="4"></ion-col> - <!-- buttons --> - <ion-col size="8"> - <ion-button color="light" (click)="cancel()"> - <ion-label translate>COMMON.BTN_CLOSE</ion-label> - </ion-button> +<ion-footer> + <ion-toolbar> + <ion-row class="ion-no-padding"> + <ion-col size="4"></ion-col> + <!-- buttons --> + <ion-col size="8"> + <ion-button color="light" (click)="cancel()"> + <ion-label translate>COMMON.BTN_CLOSE</ion-label> + </ion-button> - <ion-button [disabled]="!isCompleted()" (click)="doSubmit()"> - <ion-icon slot="start" name="checkmark-outline"></ion-icon> - <ion-label translate>COMMON.BTN_YES_CONTINUE</ion-label> - </ion-button> - </ion-col> - <ion-col size="4"></ion-col> - </ion-row> - </ion-toolbar> - </ion-footer> -} + <ion-button [disabled]="!isCompleted()" (click)="doSubmit()"> + <ion-icon slot="start" name="checkmark-outline"></ion-icon> + <ion-label translate>COMMON.BTN_YES_CONTINUE</ion-label> + </ion-button> + </ion-col> + <ion-col size="4"></ion-col> + </ion-row> + </ion-toolbar> +</ion-footer> diff --git a/src/app/certification/verification/verification.modal.ts b/src/app/certification/verification/verification.modal.ts index 9396514..5170b53 100644 --- a/src/app/certification/verification/verification.modal.ts +++ b/src/app/certification/verification/verification.modal.ts @@ -103,7 +103,7 @@ export class VerificationModal extends AppPage<VerificationModalState> { doSubmit() { return this.viewCtrl.dismiss( - this.isCompleted() && this.certificationSteps.every((step) => this.answers.get(step.labelKey) === step.expectedResponse) + this.isCompleted() && this.certificationModalConfig.steps.every((step) => this.answers.get(step.labelKey) === step.expectedResponse) ); } } diff --git a/src/app/settings/settings.page.html b/src/app/settings/settings.page.html index c380572..4da7ed2 100644 --- a/src/app/settings/settings.page.html +++ b/src/app/settings/settings.page.html @@ -144,15 +144,15 @@ </ion-select> </ion-item> - <!-- @if (canBiometric) {--> - <ion-item> - <ion-icon slot="start" name="finger-print"></ion-icon> - <ion-label color="dark" translate>SETTINGS.BIOMETRIC</ion-label> - <ion-toggle [(ngModel)]="biometricAuth" (click)="toggleBiometricAuth()"> - <ion-label color="medium" translate></ion-label> - </ion-toggle> - </ion-item> - <!-- }--> + @if (canBiometric) { + <ion-item> + <ion-icon slot="start" name="finger-print"></ion-icon> + <ion-label color="dark" translate>SETTINGS.BIOMETRIC</ion-label> + <ion-toggle [(ngModel)]="biometricAuth" (click)="toggleBiometricAuth()"> + <ion-label color="medium" translate></ion-label> + </ion-toggle> + </ion-item> + } </ion-list> <!-- buttons --> diff --git a/src/app/settings/settings.page.ts b/src/app/settings/settings.page.ts index ff03108..6b04f77 100644 --- a/src/app/settings/settings.page.ts +++ b/src/app/settings/settings.page.ts @@ -123,10 +123,7 @@ export class SettingsPage extends AppPage<SettingsPageState> implements OnInit { // Detect changes this._state.hold( this._state - .select( - ['locale', 'peer', 'indexer', 'pod', 'ipfsGateway', 'unAuthDelayMs', 'displayUnit', 'selectedRedeemPeriod', 'expertMode', 'biometricAuth'], - (s) => s - ) + .select(['locale', 'peer', 'indexer', 'pod', 'ipfsGateway', 'unAuthDelayMs', 'displayUnit', 'selectedRedeemPeriod', 'expertMode'], (s) => s) .pipe(skip(1)), () => { if (this.mobile) { diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index 1303157..f60dd6c 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -730,7 +730,7 @@ "COMMENT": "Commentaire" }, "CERTIFICATION_MODAL": { - "CHECKLIST_TITLE": "Vérifications avant certification", + "CHECKLIST_TITLE": "Vérifications", "INFOS": "La sécurité de la monnaie Ğ1 repose sur chaque membre. Avant de certifier l'identité de cette personne, vous devez avoir fait quelques vérifications à son propos. Veuillez répondre aux questions suivantes :", "REMINDER_TITLE": "Rappel", "CHECKLIST_CONDITIONS_NOT_MET": "La certification n'a pas été envoyée. Les vérifications semblent insuffisantes. Veuillez vérifier de nouveau chaque point auprès de la personne à certifier.", diff --git a/src/environments/environment.ts b/src/environments/environment.ts index f7b7ae6..58f4da6 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -101,6 +101,7 @@ export const environment = <Environment>{ // 'http://localhost:8080' /* GDev endpoints */ 'https://pagu.re', + 'https://gyroi.de', ], defaultDistanceFileUrls: [ -- GitLab