Skip to content

Exchange work flow

AndreyGrowl edited this page Jun 26, 2018 · 17 revisions

Общая логика работы экрана Exchange

  1. Вход на экран(можно зайти ТОЛЬКО из кошелька, выбранная цепочка - цепочка кошелька)
    Отправляем запрос getExchangePairs

  2. Экран выбора блокчейна для обмена(на что менять)
    На экране отображаются доступные для обмена цепочки, полученные из ответа getExchangePairs.

  3. После выбора цепочки, НА которую хотим поменять Проверяем есть ли у пользователя кошелек с цепочкой, НА которую хотим менять

    Если есть: открываем экран со всеми подходящими кошельками переходим назад, после выбора переходим на первый экран Exchange. На экране должна быть кнопка 'Create new', по клику автоматически создаём кошелёк с предустановленным именем '%имя цепочки на которую хотим менять% from Exchange'.

    Если кошелька нет: показываем алерт о том что кошелек будет создан автоматически (создаем кошелек с именем '%имя цепочки на которую хотим менять% from Exchange'), переходим назад, на первый экран Exhcange.

  4. По действию Slide to exchange, отправляем api запрос sendTransaction с пометкой, что это exchange.

  5. Показываем Complete экран

Запрос getExchangePairs: в него передаем выбранный кошелек. В ответе ожидается список доступных для обмена цепочек.

Запрос sendTransaction - будет дополнено

Работа с textField

Для каждой введенной суммы мы должны проверять, есть ли на бирже запрос на точно такую же сумму. Поэтому после ввода символа отправляем api запрос на введенную сумму с задержкой в 1 секунду. Каждый введенный символ должен отменять предыдущий запрос.

При изменении суммы в одной из секций (You are sending либо You will receive), меняем альтернативную сумму (фиат либо крипто согласно currencies rate, обратная зависимость). Далее идёт запрос на новую сумму и подставляется во вторую секцию.

Нужно предусмотреть два случая:

  1. Выбрали количество валюты с нашего кошелька (сколько хотим продать-поменять):

    • автоматически поменяли fiat секции You are sending (нужна обратная зависимость, если вводим fiat)
    • отправили запрос, что хотим отправить N валюты и подставили значение в секцию You will receive
  2. Выбрали количество валюты которые получим (сколько хотим получить-поменять):

    • автоматически поменяли fiat секции You will receive (нужна обратная зависимость если вводим fiat)
    • отправили запрос, что хотим получить K валюты и подставили значение, сколько N валюты мы должны отправить в секции You are sending.

Ограничение на ввод символов:

  • общее количество значимых символов(не учитывать" $,.") не может превышать 12. Если ок, проверяем количество символов после запятой, для фитаных TF - 2, для крипты - 8.
  • после ввода только точки, подставляем 0. (в случае если не было ничего введено)
  • ограничить ввод дублированных точек и запятых
  • не терять знак фиатных денег в соотв. TF

При редактировании любого из textField(TF), значения должны менять во всех.

Для реализации этой фичи лучше будет сделать свитч по вводимым символам.

  • При вводе backspace/удалить:
    Необходимо проверить что осталось в tf - если осталось "0," или "0." я удаляю из tf все.
    Так же tf которые отвечают за фиатные значения всегда содержат "$ ", соответсвенно для фиатных tf
    я проверяю на "$ 0," или "$ 0." и удаляю все кроме "$ ".

  • При вводе точки/запятой ",."
    Сначала проверяем на содержание в tf "," или "."(если уже есть - не подставлять), а затем проверяю на пустоту(для фиатных "$ "), если пусто ставлю "0."(для фиатных "$ 0.").

  • При вводе любой цифры:
    Проверяем общее количество значимых символов(не учитывать" $,.") не может превышать 12. Если ок, проверяем количество символов после запятой, для фитаных TF - 2, для крипты - 8.

Это все основные проверки.
При изменении значения в send crypto tf изменяется значение send fiat tf(по курсу), и соответсвенно нужно реализовать обратную зависимость.
Для того чтобы пересчитывать крос зависимость(eth->btc, btc->eth например) нужны реальные данные, т.к курс обмена будет присылать changelly.

Clone this wiki locally