На этот раз я остался в Стамбуле дольше, потому что чувствую себя здесь как дома. Город никогда не спит, здесь можно делать и получать все, что угодно 24 часа в сутки. У меня нет установленного распорядка, когда я путешествую. Я могу кодить где угодно и когда угодно. Даже на Хэллоуин, когда все веселились, я работал в баре над приложением. Я люблю программировать и занимаюсь этим с 13 лет (конец 1996 года).

Я отправил свой код в облако Heroku, переместил все API-интерфейсы в хуки, завершил бронирование корзины с помощью веб-хуков, использовал сторонний мобильный шлюз для уведомлений по SMS, расширение shopify теперь сделано в реакции и преобразовано в веб-компонент, а также добавлен перевод , переработано выделение пользовательского интерфейса, чтобы следовать руководствам по дизайну shopify.

Героку

Я сосредоточился на запуске приложения в облаке. У меня было два варианта: flyio или heroku. Я начал с flyio, но это было трудно понять, поэтому после нескольких попыток я снова переключился на heroku. Все работало хорошо, но было несколько проблем с запуском приложения:

1. При сборке приложения на бесплатных dynos нужно увеличить размер кучи javaScript, иначе вылезет ошибка.
2. Node плохо работал с tsconfig-алиасом, поэтому пришлось использовать tsconfig-path.
3. Запросы от Shopify к Heroku не разрешались, поэтому мне пришлось использовать пакет cors, чтобы разрешить доступ CORS.
4. Интерфейсное приложение не работало, потому что для этого требовался ключ среды API, который мне пришлось добавить в heroky.xml.

Всего получилось 4 легко решаемых проблемы, а затем мое приложение оказалось в облаке.

Фасадные хуки React

Рефакторинг — один из самых важных шагов в процессе разработки; не откладывай. Мы пытаемся создать чистый код с самого начала, но мы знаем, что код можно написать намного чище. Всегда легче проводить рефакторинг, когда у вас есть E2E-тестирование и модульные тесты, поэтому мой главный приоритет — добиться цели.

Добейтесь цели => Напишите тест E2E => Напишите модульный тест => Рефакторинг

Я просмотрел все компоненты и страницы, которые имели вызовы API, и переместил вызовы API в хуки, чтобы их можно было использовать повторно.

Корзина Бронирование Бронирование

Мне нужно было реализовать резервирование корзины на 15 минут на витрине, чтобы гарантировать, что два покупателя не запишутся на одну и ту же встречу. Когда клиент добавляет какую-либо встречу для бронирования в корзину, дата и время резервируются, и другой клиент не может забронировать ту же встречу. Это очень важно, иначе это вызовет кауос.

Мне понадобилось два вызова API: когда покупатель что-то добавляет в свою корзину, мы вызываем addCart с нужными свойствами, а когда он что-то удаляет из своей корзины, мы вызываем removeCart. Чтобы справиться с этим, мне пришлось изменить витрину; Я просто перехватил вызовы API и вызвал свой API, как показано в примере ниже для удаления корзины.

Обновлено 19 ноября
Я заменил вызовы API на вебхуки, которых раньше не замечал, поэтому нам не нужно менять витрину; веб-перехватчик shopify будет отправлять перехватчик каждый раз, когда покупатель добавляет или обновляет свою корзину.

SMS-уведомления

Мне нужен был SMS-шлюз для отправки пользовательских SMS-сообщений клиентам, а поскольку Shopify больше не позволяет настраивать SMS-сообщения, мне пришлось искать другого провайдера. Я просмотрел надстройки Heroku, но там было только два варианта: один за пределами Европы, которым я не мог воспользоваться, и другой, где мне нужно было заплатить 180 долларов США только за то, чтобы получить свой личный номер, поэтому я отправился на поиск за пределы heroku. и я нашел sms.dk, который предоставлял хороший API, более низкую стоимость за каждое SMS и был прост в использовании. Я также могу запланировать SMS-сообщение, чтобы напомнить клиенту о предстоящей встрече, как только он заплатит за нее.