Forms and Layouts (#998)#1157
Conversation
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@kyberorg.pm>
Signed-off-by: Aleksandr Muravja <aleks@karhu.ee>
Signed-off-by: Aleksandr Muravja <aleks@karhu.ee>
Signed-off-by: Aleksandr Muravja <aleks@karhu.ee>
There was a problem hiding this comment.
-
Telegram span should fit window at phone (only at profile page).
-
Password generator should fit window at phone (at least buttons should be at next line). All pages affected.
-
Axe1@Dev dark mode sync issue. Axe2 user works.
-
Session duration/landing page updated notification should be success notification.
-
Profile tab (maybe focus on email if it is empty).
-
Profile tab on edit email (email empty). Save button does nothing and no way to - return back to edit button. Same on every email (valid or not).
-
Information notification should be visible at least for 3-4 seconds.
-
Confirm account page: validate email and show "not implemented yet" notification.
-
Hide section if account is confirmed.
-
Maybe reuse telegram token as well (this prevents "token already expired" message).
-
Profile tab: show tooltip with status (pending, validated, failed) for email. Same for validation page. Maybe extend email field with ValidationStatus enum.
| align-self: center; | ||
| } | ||
|
|
||
| .toggle-with-prefix-postfix { |
There was a problem hiding this comment.
Toggle with prefix and postfix
| /** | ||
| * Method, that should be called at initialization phase. | ||
| * | ||
| * @param user bound {@link User}. Usually stored within current session. |
| * {@link OperationResult#generalFail()} with {@link #ERR_NO_EMAIL_ACCOUNT} message, | ||
| * when {@link User} has no {@link AccountType#EMAIL} {@link Account}. | ||
| */ | ||
| public OperationResult updateEmailAccount(final User user, final String email) { |
There was a problem hiding this comment.
Do nothing/return OpResult with Noop message, when account type is not email.
| */ | ||
| public void rollbackAccount(final Account oldAccount) { | ||
| if (oldAccount == null) throw new IllegalArgumentException("old account cannot be null"); | ||
| Optional<Account> currentAccount = this.getAccount(oldAccount.getUser(), oldAccount.getType()); |
There was a problem hiding this comment.
Not clear why current account got using old account data.
| if (currentAccount.isPresent()) { | ||
| currentAccount.get().copy(oldAccount); | ||
| } else { | ||
| accountDao.save(oldAccount); |
There was a problem hiding this comment.
Why do we need current account? Let's save current account instead
| tokenDao.existsByTokenTypeAndUser(TokenType.ACCOUNT_CONFIRMATION_TOKEN, user); | ||
| if (userAlreadyHasConfirmationToken) { | ||
| return OperationResult.banned().withMessage(ERR_USER_ALREADY_HAS_TOKEN); | ||
| Optional<Token> optionalToken = |
There was a problem hiding this comment.
Optional token -> existing token
| log.warn("{} Unable to send created {} to {}. OpResult: {}", | ||
| TAG, confirmationToken.getTokenType(), input.getEmail(), sendResult); | ||
| log.warn("{} Requesting Rollback", TAG); | ||
| Optional<Token> confirmationToken = createConfirmationToken(userAccount); |
There was a problem hiding this comment.
Do we really need own method here?
| if (currentAccount.isPresent()) { | ||
| currentAccount.get().copy(oldAccount); | ||
| } else { | ||
| accountDao.save(oldAccount); |
There was a problem hiding this comment.
Use update method instead
Signed-off-by: Aleksandr Muravja <aleks@karhu.ee>
Signed-off-by: Aleksandr Muravja <aleks@karhu.ee>
Signed-off-by: Aleksandr Muravja <aleks@karhu.ee>
Signed-off-by: Aleksandr Muravja <aleks@karhu.ee>
Signed-off-by: Aleksandr Muravja <aleks@karhu.ee>
Signed-off-by: Aleksandr Muravja <aleks@karhu.ee>
Signed-off-by: Aleksandr Muravja <aleks@karhu.ee>
Signed-off-by: Aleksandr Muravja <aleks@karhu.ee>
Signed-off-by: Aleksandr Muravja <aleks@karhu.ee>
Fix #998