decoro
decoro copied to clipboard
RUS_PHONE_NUMBER логика работы
Привет!
Клиент может вводить телефон в любом формате, и всегда на выходе этот телефон должен получаться корректным.
MaskImpl mask = MaskImpl.createTerminated(PredefinedSlots.RUS_PHONE_NUMBER); mask.setHideHardcodedHead(true); FormatWatcher formatWatcher = new MaskFormatWatcher(mask); formatWatcher.installOn(editCustomerPhone);
Если я начинаю вводить телефон с 8, то получается +7 (8... Такой комбинации быть не может. Восьмерка в этом случае должна игнорироваться. В этом слоте может быть только 9.
Если я начинаю вводить +, то получается +7(... Но я уже разогнался и ввел еще 7, потому что хотел ввести +7916... На выходе получается +7(7..., что тоже быть не может. В идеале должна меняться маска на +#(###... Либо также захардкодить в слоте первой цифры префикса 9.
- По поводу 8 в номере телефона. https://github.com/TinkoffCreditSystems/decoro/blob/master/demo/src/main/java/ru/tinkoff/decoro/demo/SlotBehaviourActivity.java здесь в третьем примере показана манипуляция с интерпретированием символа при вставке в слот
slots[1].setValueInterpreter(new ValueInterpreter() { @Override public Character interpret(Character character) { if (character == null) { return null; } return character == '8' ? '7' : character; } });
- Описанное поведение не тривиально, нет уверенности что можно его добиться текущими средствами