...
Task 1 - create a feature flag
Create a flag ENABLE-DELIVERY-CLOSED-AT-MOMENT
...
Task 1 - Create a feature flag
Create a feature flag - ENABLE-DELIVERY-CLOSED-AT-MOMENT
...
We need change or create a new component for show message about closed restaurant. In this POC I’m use the component src/components/modal-no-delivery-stores-open/no-stores-open-delivery-modal.tsx this component don’t is used currently in the app, so we can change some thing and use, this is a example of component:
In the file of this component we need to change some things for work, for example we need to transform in a React component and pass the attribute for next open date.
The component to be create is this:
...
PS - the text for title and description is this:
...
Create this component in src/components/address-modal/new-component
We need to pass the next open date and next Day OpenThe button
About the messages of delivery will be available:
If today is Monday at 8 AM and the restaurant open at 10 AM, so we need show a message “Delivery will be avaliable today at 10:00 AM”.
If today is Monday and the restaurant open tomorrow (Tuesday) at 10 AM, so need show “Delivery will be avaliable tomorrow at 10:00 AM”.
If today is Monday and the restaurant open (Weadnesday) at 10 AM, so need show “Delivery will be avaliable Weadnesday at 10:00 AM”.
The button "Use Different Address“ return to screen of search delivery.
...
We have a problem for return the additional hours of delivery mode, currently the back-end don’t return this, the repository intl-delivery-service use the intl-packages of restaurant packages, in the file packages/restaurant/src/rbi-restaurant/operating-hours.ts have the formatOperatingHours
function, and in this function have just normal hours, so we need to add additional hours in this function.
Before:
...
After:
...
Remember to create a new scenario in unit tests.
Task 2 - Validate additional hours
In the file packages/restaurant/src/rbi-restaurant/operating-hours.ts, we need to change the isRestaurantOpen
, getNextEarliestOpen
and getHoursOfOperationForDay
functions, because this function to validate is restaurants is open and day work, but just validate the hours work normal, but now we need to validate the additional hours work too.
Add unit test for this new scenarios too.
Task 3 - Validate and update Bump for project
Validate if we need to make something for update, bump this package in delivery-service.
intl-whitelabel-graphql
In the repository whitelabel-graphql we don’t have the additional hours, so we need to add this information in the queries for GraphQL.
Task 1 - Create the interface for additional hours on GraphQL
In the file src/functions/graphql/schemas/restaurant.gql we need to add a new interface for additional time and add this additional times in the OperatingHours
interface.
Example:
...
After add all new fields, we need to run the command “yarn graphql:types” to generate the types for GraphQL.
...
function, and in this function have just normal hours, so we need to add additional hours in this function.
Before:
...
After:
...
Remember to create a new scenario in unit tests.
Task 2 - Validate additional hours
In the file packages/restaurant/src/rbi-restaurant/operating-hours.ts, we need to change the isRestaurantOpen
, getNextEarliestOpen
and getHoursOfOperationForDay
functions, because this function to validate is restaurants is open and day work, but just validate the hours work normal, but now we need to validate the additional hours work too.
Add unit test for this new scenarios too.
Task 3 - Validate and update Bump for project
Validate if we need to make something for update, bump this package in delivery-service.
intl-whitelabel-graphql
In the repository whitelabel-graphql we don’t have the additional hours, so we need to add this information in the queries for GraphQL.
Task 1 - Create the interface for additional hours on GraphQL
In the file src/functions/graphql/schemas/restaurant.gql we need to add a new interface for additional time and add this additional times in the OperatingHours
interface.
Example:
...
After add all new fields, we need to run the command “yarn graphql:types” to generate the types for GraphQL.
...
intl-partner-delivery
After intl-delivery-service found the restaurants, the system get the quotes in intl-partner-delivery repository. And in this repository it is get the times of Sanity again, and every time the system get the additional time in case this time exist.
So this is a error, because in case of we need to shutdown the flag for don’t see the addition time the quotes will continue looking this time and will occur bugs.
So we need add this flag in intl-partner-delivery respository too.
Task 1 - Add flag to control if will use additional time
Add Flag in src/modules/restaurants/availability/handlers/restaurant-delivery-time-handler.ts
Use the same flag of other enviroments of back-end:
delivery-closed-at-moment
We need to add the flag and adjusted unit tests and adjust other flow that have impact because this change.
How to integrate the environments localy
intl-packages, you need to remove some lines of node_modules/pino/lib/proto.js file:
...