decoro icon indicating copy to clipboard operation
decoro copied to clipboard

RUS_PHONE_NUMBER логика работы

Open Hodov opened this issue 6 years ago • 1 comments

Привет!

Клиент может вводить телефон в любом формате, и всегда на выходе этот телефон должен получаться корректным.

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.

Hodov avatar Mar 31 '18 07:03 Hodov

  1. По поводу 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; } });

  1. Описанное поведение не тривиально, нет уверенности что можно его добиться текущими средствами

al-dr avatar Apr 24 '18 10:04 al-dr