Pages
Last updated
Was this helpful?
Last updated
Was this helpful?
Homepage is a blank page where you can add . Widgets are selected and managed on the Omnitron administration panel.
With the help of the automatically controlled pageContainer structure in the mobile application, the selected widgets are brought from the backend and added to the main page under the name of "widget" under props.
Widgets that are transmitted to the homepage under props are transformed into components that will be visible on the screen with the help of therenderWidget function.
Scene is the structure used to make vertical or horizontal alignments between these components when more than one component is asked to be displayed in React Native.
The renderScenes function helps us with this.
Creating Widgets
Please see the Custom Widget Manual below to create widgets rendered on the homepage. In order to create a widget, the code must be developed first. A new addition will be made such as the default widgets defined on the boilerplate application. After development, a schema will be defined to create Widget Type and Widget Content via Omnitron.
Creating Container Widget
Container widgets are the widgets that specify the ones to be rendered on the homepage. This widget is created once, and its content is updated with the addition of new widgets. Please follow the steps explained in Widget Type and Widget Content to create a container widget. When creating the Widget Type, a schema must be created similar to the json file below:
! This created container Widget Content must have the same value in the slug field as the value of the “WIDGETS” field under platformConfigs/urls.json.
Custom Widget Manual
In the boilerplate application, the default widgets are located within the widgets folder in the folder that contains the HomePage page. This folder contains widgets such as story, categorylist, etc. Below you can find an example in which a folder named customWidget is created for a widget named customWidget, and the index.js is added to this folder.
The code base of the created index.js file must be similar to the one below:
Slug
This is the URL extension of the widget created on the Omnitron - Widget Management panel. Let's take the base URL demo.akinon.net as an example. A request is sent with demo.akinon.net/widgets(WIDGET_BASE)/mobile-widgets(SLUG) to fetch the widgets defined when the homePage is rendered to this URL and access is given to the widgets rendered on the page. These widgets can be called the container of the widgets created. Similarly, when the request demo.akinon.net/widgets/custom-widget(slug) is sent for a widget with a defined type, the returning result is based on the schema defined via Omnitron.
Fetching
As in the example given above, pass the slug parameter with the useWidgetFetch hook to fetch the widget data.
Data Mapping - Widget Modeling
As in the example given above, the fetched widget data is constructed in the getCustomData function with the BaseWidgetModel class in order to be used to work from a single base. If a custom model is to be added, it can be defined and used in the widgets/_baseWidgetModel folder. Example: _baseWidgetModel/homeRecommendationProduct.js
Import to Render
The customWidgets is imported to the widgets/index.js folder in order to render the created widget named customWidget, and is added, as shown below, to the widgets object. Thus the renderScenes function on the HomePage page maps based on the defined widgets key (custom_widget (slug)) and renders the widget.
Passing Custom Props
The HomeWidget component rendered on the HomePage passes the props below. Follow the steps below if an additional x prop needs to be passed to the widgets.
Creating Widget Type (Omnitron)
After adding a new widget type, the added widget type must also be added to the container widget. Otherwise, the application wouldn’t be able to tell which widgets should be rendered on the page. Since schema is specified with the finalization of development, a schema can be defined to the customWidget by following the steps below via Omnitron.
Log into Omnitron.
Click Content Management under Sales Channels in the left menu.
Then click Widget Schema Management on the page that opens.
Click the + Add Widget Schema button in the upper right corner of the page to add a Scheme/Type.
Enter Widget Type (e.g. Custom Widget Type)
Enter Schema (e.g. json data)
Lastly, click the Save button to create a Widget Schema.
Creating Widget Content (Omnitron)
After creating Widget Type, the next step is to create Widget Content based on the created schema (unless it’s Recommendation widgets). This page enables creating dynamic content based on the created schema. Follow the steps below to create the customWidget data:
Log into Omnitron.
Click Content Management under Sales Channels in the left menu.
Then click Widget Management on the page that opens.
Click the + Add New Widget button in the upper right corner of the page to add widget content.
Enter Widget Name (e.g. Custom Widget Content)
Enter Widget Slug (e.g. custom_widget)
Enter Widget Type (e.g. Custom Widget Type)
Enter Template (e.g. /)
A button appears at the bottom left section of the form (e.g. + Custom Content) to add Dynamic Content to the schema of the selected type. Click this button to fetch another form based on the created schema and create unlimited content.
Recommendation - Collection Widgets
In this example, Widget Content is selected from collections. First, a Widget Type needs to be created. Enter Type, and leave Schema empty (since the collection schema is used). Follow the steps below to map widget type with product collection:
Log into Omnitron.
Click Content Management under Sales Channels in the left menu.
Click Recommendation System on the page that opens.
Click the + Add New Collection Widget button in the upper right corner of the page.
A form will appear on the new page.
Enter Widget Name.
Select Widget Type (the one created without a schema).
Enter Template (e.g. /).
Select Collection (e.g. x collection).
Enter Collection Limit (e.g. 24).
Collections can be added/edited in the Collections page under Products and Catalogs in the left menu.
Click the Save button.
Widget List
The data of each widget is fetched during rendering. This fetching is carried out by the useWidgetFetch
hook.
Story
It’s the component that lists widgets in the type of story
.
Recommendation
It’s the component that lists widgets in the type of home_recommendation
.
Category List
It’s the component that lists widgets in the type of category_list
.
Swiper
It’s the component that lists widgets in the type of home_swiper
.
Category Banners
It’s the component that lists widgets in the type of image_link_category_banner
.
On the product detail page, you can access detailed information about the product, add it to favorites, select variant and quantity, and add it to the cart.
The entire page is managed with detail page container. The productDetail and basket data containers are sent to the page container via parameter.
The available parameters received via page container
Actions
addToCart
Used when you wish to add the product to the cart
addToFavouriteHandler
Used to add the product to favorites
pk, product
removeFromFavouriteHandler
Used to remove the product from favorites
favouritePk, product
handleChangeVariant
Used to select variant
searchKey, variant, status
handleFavouriteError
Used to turn off favorite modal
hideProductAddedModalHandler
Used to turn off added to cart modal
setQuantity
Used to update product quantity
quantity
validationReset
Used to reset the errors created while adding to cart
Data
state
The react state of the page
object
props
The data coming from store and modal
object
In this section display the images, name, brand, and stock availability of the product and update favorite status.
In this section, color, size and quantity selection is made for the product. If the user does not make mandatory selections, the ModalVariant component is created in Variants.
In this section, the product can be added to cart along with the price and discount information. If the user successfully adds a product to cart, AddedToCartModal is displayed.
Basket page comprises the features below:
Displaying the products added to cart,
Updating product quantity,
Removing from cart,
Removing the product from cart by swiping (swipeToDelete),
Displaying discounts and total price information,
Confirming the cart and checkout.
Displaying the “Cart is Empty” warning if no product is added to cart
Basket page is managed with basketContainer. As you can see below, the basket and checkout dataContainers are sent from the Basket page as parameters. Thus basketContainer can manage the functions, actions, and states to be used on the UI, making a differentiation between UI and logic.
The props information received via page container.
navigation
route
handleDiscount
Used to apply discounts and vouchers
couponCode, discountRemove
handleSubmitGiftNote
Used to submit a product-based gift note
pk, giftNote
handleRemoveGiftNote
Used to remove a product-based gift note
pk
handleChangeQuantity
Used when the number of products in cart changes
pk, quantity, basketItem
handleAddToFavourite
Used when the product removal modal is opened and the product is added to favorites
pk, product
confirmBasket
Used when the cart is confirmed
hasFavourite
The HAS_FAVOURITE field value under platformConfigs/app.json
basket
Includes the fields related to the cart, which are listed below
basket.amounts
Includes the price information of the products in the cart. The contents are explained below.
basket.amounts.getTotalAmount()
Presents the total amount by applying discount and campaign calculations
basket.amounts.getTotalDiscountAmount()
Total discount amount
basket.amounts.getTotalProductAmount()
Total product amount
basket.amounts.getCampaignTotalAmount()
Total campaign amount
basket.products
Products added to cart
basket.upsell
Campaign messages
basket.voucherCode
Voucher code applied to cart
basket.discounts
Discounts applied to cart
basket.totalQuantity
Total product quantity added to cart
basket.quantity
Product quantity added to cart
basket.totalDiscountAmount
Total discount amount applied to cart
pending
This returns true when any network request is made, and the Spinner is loaded in this state. If it returns false, the page has been loaded.
validation
This checks validity when a coupon or a voucher is applied to the cart and submitted.
apiError
If an error occurs as a result of any network request, an error message returns to this object.
Example: apiError.nonFieldErrors
initialSuccess
This field returns true when the cart is fulfilled (loaded without error).
favourites
This returns to the products added to favorites. A “move to favorites” actionSheet is opened if the product that is requested to be removed has not been added to favorites.
isLogin
The information whether the user has logged in
CampaignSwiper
This component displays campaigns that are exclusive to the cart. The upsell series within the basket object fetched from pageContainer includes campaign messages. This component enables the rendering of messages on the basket page as shown below.
BasketItem
This component renders the products in the products series returning from the basket object. This component renders the sections where you can update quantity, remove, remove by swiping, warn with modal when removed, and display information about the product. This component renders certain components we can describe as children, and distributes the props transmitted to the components to the subcomponents. Subcomponents are explained below.
If the swipeToDelete feature is to be used, the swipeToDelete flag in the path below should be switched to True.
openModalForDelete: If a modal is to be opened as a warning when swipeToDelete is triggered, the openModalForDelete flag should similarly be switched to True.src/rules/basket/basketItem.js
ItemImage
This component renders the image of the product. The product image path (product.image) is accessed via the props from the BasketItem component and rendered. If the image is clicked, the user is guided to product detail. Since image size may vary, it can be changed from the object in the path below.
src/rules/basket/itemImage.js
ItemName
This component renders the name of the product. The product name path (product.name) is accessed via the props from the BasketItem component and rendered. Similarly, if the name is clicked, the user is guided to product detail.
ItemVariants
This component renders the characteristics of the product (size, color, etc.). The product variants path (product.variants) is accessed via the props from the BasketItem component and rendered. It’s rendered in the form of key and value. Color: Black Size: M
ItemRetailPrice
This component renders the retail sales price of the product. The retail sales price of the product path (product.retailPrice) is accessed via the props from the BasketItem component and rendered.
The options object added to the component checks whether the total retail price will be displayed and rendered accordingly. You can switch the showTotalPrice flag in the path below.src/rules/basket/itemRetailPrice.js
ItemPrice
This component renders the sales price of the product. The price of the product path (product.price) is accessed via the props from the BasketItem component and rendered.
The options object added to the component controls whether the total price is displayed and rendered accordingly. You can switch the showTotalPrice flag from the following path.src/rules/basket/itemPrice.js
ItemQuantitySelector
This component displays and updates product quantity. The stock information of the product path is accessed via the props from the BasketItem component and rendered. If product stock is larger than 1, a selection modal is opened (actionSheet), and, if not, it’s displayed as “disabled.” If the number of stock is larger than 15, an option is offered to select up to 15, and, if not, to select the number of stock.
ItemRemoveButton
This component renders the button used to remove the product from the cart.
SummaryTotalCount
SubTotalPrice
This component renders the total price amount (including discounts, campaigns, etc.) for products.
Discounts
This component renders the discounts applied to cart.
DiscountOrGiftVoucher
This component renders the form with which discounts or vouchers are submitted. If the discount or the voucher is valid, a discount is applied to the total price.
TotalPrice
This component renders the total price of the products in the cart as well as the discounts and campaigns applied.
EmptyBasketView
This component renders a button with the text “Cart is Empty” and the subheading “Shop by Category” to inform the user when there is no product in the cart, and the cart page opens.
CheckoutButton
This component renders the button used to confirm the cart and proceed to checkout. The login page is called if the user hasn’t logged in.
Profile page comprises the features below;
Displaying the user information below
Updating this information
Using two-factor authentication when updating the form with an SMS code
User Information;
First Name
Last Name
Phone
Date of birth
Sex
The Profile page is managed with a page container. The profile data container is sent as a parameter from the Profile page as shown below. Thus, the profile page container can distinguish between UI and logic by managing the functions, actions, and states to be used in the UI.
The props information received via page container.
props
The object that includes certain features that will be used on the page
props.validation
The object that includes the limitations of the fields within the profile form (first and last name, etc.)
props.apiError
If an error occurs as a result of any network request, an error message returns to this object. Example: apiError.first_name
props.pending
This returns true when any network request is made, and the Spinner is loaded in this state. If it returns false, the page has been loaded.
props.isSuccess
This state switches to true when the profile page form is updated, and an informative message is displayed for success.
props.navigation
props.smsVerificationModal
If this field is true, an SMS verification modal is opened, and the form is verified with an SMS code.
props.route
handleOnChange
Since forms have a dynamic structure, not each field is given a state. Instead, form fields are accessed via the form state. This function enables the updating of the form state when the fields in the form (SMS code, etc.) are updated.
key (example: ‘first_name’), value
handleOnSmsFormChange
Since forms have a dynamic structure, not each field is given a state. Instead, form fields are accessed via the form state. This function enables the updating of the form state when the fields in the form (SMS code, etc.) are updated.
key (example: ‘code’), value
getFormValue
Used to get the value of any field in the form
key (example: ‘first_name’)
hideSmsModal
The function called to close the SMS verification modal
hasResendSms
This flag is checked if resending SMS is requested on the SMS verification modal.HAS_RESEND_SMS under platformConfigs/app.json
resendSms
The function called to resend SMS via the SMS verification modal
handleSubmit
The function that enables the posting of the form by running the necessary validations upon clicking the Save button on the profile form
handleSubmitSmsForm
The function that enables the posting of the form by running the necessary validations upon entering the SMS code in the SMS verification form and clicking the Verify button
getOptions
The function used to get the options in multiple-choice fields in the profile form
key (i.e.; ‘gender’)
state
The object that includes the properties of the profile page
state.seconds
Show how many seconds remain for verification when the timer on the SMS verification modal starts running
state.form
The object that includes the form fields on the profile page
state.smsForm
The object that includes the form fields on the SMS verification form
state.countDownStarted
The flag which indicates whether the timer has started after the opening of the SMS verification form
This page is used to update the email addresses of users who have logged in.
There are three form fields on the page. These are:
New Email
Reenter New Email
Password
After the completion and submitting of the form, the validity of the fields are checked via validations. If no errors are found, the form is posted. Finally, if it’s successful (isSuccess), the form on the page is hidden and replaced with a success message.
The ChangeEmail page is managed with a page container. The data container is sent as a parameter from the ChangeEmail page, as shown below. Thus, the change email page can manage the functions, actions and states to be used in the UI and distinguish between the UI and logic.
The props information received via page container.
props
The object that includes certain features that will be used on the page
props.email
The reducer object on the change email page
props.email.isSuccess
This state switches to true when the form on the page is submitted, and an informative message is displayed for success.
props.pending
This returns true when any network request is made, and the Spinner is loaded in this state. If it returns false, the page has been loaded.
props.navigation
props.validation
The object that includes the limitations of the fields within the form on the page (email, password, etc.) Example: It’s checked whether the input entered for validation.email is an email address.
props.apiError
If an error occurs as a result of any network request, an error message returns to this object. Example: apiError.email
props.currentEmail
The user’s current email address returns.
props.route
handleOnChange
Since forms have a dynamic structure, not each field is given a state. Instead, form fields are accessed via the form state. This function enables the updating of the form state when the fields in the form (email, password, etc.) are updated.
key (example: email), value
sendForm
The function that enables the posting of the form by running the necessary validations upon clicking the Save button of the form on the page
state.form
The object that includes the information filled in the form (email, repeat_email, password)
This page is used to update the passwords of users who have logged in.
There are two form fields on the page. These are:
Old Password
New Password
Reenter New Password
After the completion and submitting of the form, the validity of the fields are checked via validations. If no errors are found, the form is posted. Finally, if it’s successful (isSuccess), the form on the page is hidden and replaced with a success message.
The ChangePassword page is managed with a page container. The data container is sent as a parameter from the ChangePassword page, as shown below. Thus, the password change page can differentiate between the UI and the logic by managing the functions, actions, and states to be used on the UI.
props
The object that includes certain features that will be used on the page
props.password
The reducer object on the change password page
props.password.isSuccess
This state switches to true when the form on the page is submitted, and an informative message is displayed for success.
props.pending
This returns true when any network request is made, and the Spinner is loaded in this state. If it returns false, the page has been loaded.
props.navigation
props.validation
The object that includes the limitations of the fields within the form on the page (old password, new password, etc.) Example: It’s checked whether the input entered for validation.password matches the old password.
props.apiError
If an error occurs as a result of any network request, an error message returns to this object. Example: apiError.password
props.route
handleOnChange
Since forms have a dynamic structure, not each field is given a state. Instead, form fields are accessed via the form state. This function enables the updating of the form state when the fields in the form (old password, new password etc.) are updated.
key (example: ‘password’), value
sendForm
The function that enables the posting of the form by running the necessary validations upon clicking the Save button of the form on the page
This page is used to update the notification settings of users who have logged in.
There is a form on the page with two radio buttons. These radio buttons are:
SMS
The Notifications page updates the information whether the user will be notified and, if so, through which channels. Users who do not want to receive notifications can disable these radio buttons. Otherwise, notifications are included in channels.
Notifications page is managed with a page container. As shown below, the data container is sent as a parameter from the Notifications page. Thus, the notifications page container can manage functions, actions, and states to be used in the UI and distinguish between UI and logic.
The props information received via page container.
navigation
route
handleSubmit
The function that enables the posting of the form by running the necessary validations upon clicking the Save button of the form on the page
pending
This returns true when any network request is made, and the Spinner is loaded in this state. If it returns false, the page has been loaded.
setEmailChecked
The function used to update the active status of notification via email thanks to the switch radio button on the form
setSmsChecked
The function used to update the active status of notification via SMS thanks to the switch radio button on the form
emailChecked
The boolean variable that indicates whether email notifications are active
smsChecked
The boolean variable that indicates whether SMS notifications are active
This page is used to display the vouchers of users who have logged in, in the states specified below.
Active Vouchers
Future
Used
Expired
Vouchers page is managed with a page container. As shown below, its data container is sent from the Voucher page as a parameter. Thus, the voucher page container can manage the functions, actions, and states to be used on the UI, making a differentiation between UI and logic.
The props information received via page container.
navigation
route
pending
This returns true when any network request is made, and the Spinner is loaded in this state. If it returns false, the page has been loaded.
basketOffers
The array that includes vouchers with active status
discountOffers
The array that includes vouchers with used status
expiredOffers
The array that includes vouchers with expired status
futureOffers
The array that includes vouchers with future status
CouponCard
This component is used to render the vouchers received via pageContainer.
title
object
headers
This indicates the equivalent of each data (key) while rendering voucher data and is defined via platformConfigs/coupons.json.
array
offerData
Vouchers
array
selector
While rendering vouchers, the “expireDate” is by default rendered next to the voucher date. If this data is to be overridden with another field, that key needs to be written in this props. The example above uses “orderNumber”.
string
emptyMessage
If no vouchers can be found in an X situation defined for the user, this props is given a message such as “No Voucher Found”.
object
This page enables the user to communicate by filling out a contact form.
There are five form fields on the page. These are:
First and Last Name
Phone
Subject
Message
Fields other than subject are reserved for text input. The subject is selected with the help of a selector. Here are a few examples for the subjects.
Complaint
Suggestion
Order
Product
Online Store
After the form is filled out and submitted, the validity of the fields are checked via validations. If all works well and is finalized (isSuccess), the form on the page is hidden, and an informative message is displayed for success.
The Contact page is managed with a page container. The data container is sent as a parameter from the Contact page, as shown below. Thus, the contact page container can manage functions, actions, and states to be used in the UI, making a distinction between UI and logic.
props
The object that includes certain features that will be used on the page
props.pending
This returns true when any network request is made, and the Spinner is loaded in this state. If it returns false, the page has been loaded.
props.isSuccess
This state switches to true when the form on the page is submitted, and an informative message is displayed for success.
props.navigation
props.route
props.validation
The object that includes the limitations of the fields within the form on the page (first and last name, email, etc.) Example: It’s checked whether the input entered for validation.email is an email address.
props.apiError
If an error occurs as a result of any network request, an error message returns to this object. Example: apiError.email
hasLocalError
getFormValue
This function is used to access the value of any field from form fields.
key (example: ‘full_name’)
handleOnChange
Since forms have a dynamic structure, not each field is given a state. Instead, form fields are accessed via the form state. This function enables the updating of the form state when the fields in the form (first and last name, email etc.) are updated.
key (example: ‘full_name’), value
handleFormSubmit
The function that enables the posting of the form by running the necessary validations upon clicking the Save button of the form on the page
errors
This object receives error messages in case of any error on the form on the page, and it’s displayed below the Submit button at the bottom of the form.
getPickerData
Used to retrieve the data of the pickers on the form
key (example: ‘subjects’
state
The object that includes the data within the page
state.localNonFieldErrors
This field receives a validation message if the orders are selected via the picker, and the user hasn’t logged in.
state.form
This is the form object within the page and includes form fields.
This page is displayed when the user wishes to proceed to checkout without login. After login, the user is directly taken to checkout.
Login with email and password.
Login with Apple (on iOS platforms).
Login with Facebook
Guest Login (directs to GuestLoginForm)
“Proceed as Guest” button
After successfully logging in, the user is directed to the Checkout page or can click the Proceed as Guest button and create an order simply by entering an email address.
GuestLogin page is managed with a page container. The data container is sent as a parameter from the GuestLogin page, as shown below. Thus, the GuestLogin page container can manage functions, actions, and states to be used in the UI and distinguish between UI and logic.
The props information received via page container.
validation
The object that includes the limitations of the fields within the form on the page (email, password, etc.) Example: It’s checked whether the input entered for validation.email is an email address.
apiError
If an error occurs as a result of any network request, an error message returns to this object. Example: apiError.non_field_errors
navigation
route
pending
This returns true when any network request is made, and the Spinner is loaded in this state. If it returns false, the page has been loaded.
handleAppleLogin
This function runs if the platform is iOS and the user clicks the Login with Apple button. It dispatches the necessary action to open the Apple Signin Modal.
handleFBLogin
This function runs if the user clicks the Login with Facebook button. It dispatches the necessary action to open the modal for Facebook login.
handleLogin
This function runs if the user clicks the Login with Email and Password button. It posts the submitted values (email, password).
setEmail
This works when data is entered into the email text input and sets the email state.
setPassword
This works when data is entered into the password text input and sets the password state.
AppleSignin
If the platform is iOS, this component creates the button to login with the Apple Authentication package provided by the expo. If the user clicks the button, the handleAppleLogin function in the login prop will run. The login mode is displayed, allowing the user to log in with their Apple credentials.
If the user wishes to proceed to checkout without logging in on the cart page, the GuestLogin page is displayed. Upon clicking the Proceed as Guest button, the user is directed to this page. There’s a form on the page with two fields: a text box (email) and a checkbox (Clarification Text).
After the form is filled and successfully submitted, the user is redirected to the Checkout page.
The GuestLoginForm page is managed with a page container. The data container is sent as a parameter from the GuestLoginForm page, as shown below. Thus, the GuestLoginForm page container can manage functions, actions, and states to be used in the UI and distinguish between UI and logic.
The props information received via page container.
navigation
route
sendForm
This function enables the posting of the form by handling the necessary validations upon filling out the form data on the page and clicking the Save button.
validation
The object that includes the limitations of the fields within the form on the page (email, checkbox, etc.) Example: It’s checked whether the input entered for validation.email is an email address.
apiError
If an error occurs as a result of any network request, an error message returns to this object. Example: apiError.userEmail
handleFormChange
Since forms have a dynamic structure, not each field is given a state. Instead, form fields are accessed via the form state. This function enables the updating of the form state when the fields in the form (email, confirm, etc.) are updated.
getFormValue
This function is used to access the value of any field from form fields.
key (example: ‘user_email’
If the user forgets their password, they can enter their email on this page and click the Send button A password reset email is sent to the user to reset password and to log in.
After the form is filled out and submitted, the validity of the fields are checked via validations. If all works well and is finalized (isSuccess), the form on the page is hidden, and an informative message is displayed for success.
The ForgotPassword page is managed with a page container. The data container is sent as a parameter from the ForgotPassword page, as shown below. Thus, the ForgotPassword page container can manage functions, actions, and states to be used in the UI and distinguish between UI and logic.
The props information received via page container
props
The object that includes certain features that will be used on the page
props.pending
This returns true when any network request is made, and the Spinner is loaded in this state. If it returns false, the page has been loaded.
props.isSuccess
This state switches to true when the form on the page is submitted, and an informative message is displayed for success.
props.apiError
If an error occurs as a result of any network request, an error message returns to this object. Example: apiError.non_field_errors)
props.navigation
props.validation
The object that includes the limitations of the fields within the form on the page (email) Example: It’s checked whether the input entered for validation.email is an email address.
props.route
handleOnChange
Since forms have a dynamic structure, not each field is given a state. Instead, form fields are accessed via the form state. This function enables the updating of the form state when the fields in the form (email) are updated.
key (i.e.; email), value
handleFormSubmit
The function that enables the posting of the form by running the necessary validations upon clicking the Save button of the form on the page
This page is used to make a selection among the languages to be used on the application. It renders the languages defined in Platform Configs - Languages and enables a selection.
If more than one language is defined on the platform, a button appears to represent the selected language on the left menu. This button directs the user to the Languages page. If the user selects one of the defined languages (Turkish, English, etc.), the application is reset, and the user is redirected to the homepage, with the language of the application changed.
The static texts used within the application (platformConfigs/staticTextMaps) should be defined based on the language. If a static text is defined only in “tr” and without “en”, the rendered texts will display a “Missing_Translation” message when English is selected as the language. The Languages page is managed with a page container.
The props information received via page container
props.navigation
props.route
currentLanguage
The object that is the equivalent of the current language
handleChange
This function sets the language selected from among rendered languages and resets the application. It receives the language object from the platform as a parameter.
language
This is the page where the user signs in. The email and password information received from the user are transferred to the system. If the user successfully logs in, they are directed to the application.
A form structure can be created with the handleOnChange function sent from pageContainer. This function receives two parameters entitled key and value and can send the values of this function in the specified input structures. The form object is dynamically created with this key and value. The login method only works with key values entitled email and password.
This is the login process with the email and password values received from the user. If the values fail the validity check, the user receives an error message. The values cleared for validation are sent to the LOGIN URL. If the response is unsuccessful, the user receives an error message. If the user successfully logs in, the user information is stored in the auth.user object.
Validation
The validation of the inputs on this page are in the type of email and password. If the validation object from the dataContainer returns full, error messages are displayed in the Input component. The validation object is filled if an error is detected as a result of checking the data sent from input.
This method enables the user to log into the application with Facebook. The RN_FACEBOOK_BUILD module needs to be activated to use this method.
This method enables the user to log into the application with Apple.
This method enables the user to log into the application with FaceID structure if their device is compatible.
This page enables the users to register. It collects the information required for registration and sends them to the registration system on the application.
It receives the information from the user and sends them to the register method after validation checks. If an SMS verification is requested in the settings, an SMS is sent to the phone number specified by the user for verification. If the process is successful, the user is registered and redirected to the application.
From this page the user sees a list of addresses and edit/remove an address.
Sets the selected address as default and uses the handleAddress method from the page container.
Removes the selected address and uses the removeAddress method from the page container.
This page displays the user’s account information. The JSON file entitled menuItems is parsed, and the pages where the user will be directed are presented. On this page, the user can log out or be redirected to the languages page.
This process runs when the user logs out. The auth.user value is erased, and the user session is terminated on the application. The user’s cart information is also erased if available.
This component redirects the user to the screen where they can change the language. The screen is displayed if there’s more than one available language.
Product List page includes a list of products. Users can filter or sort the listed products based on certain parameters. This page comprises four components:
Product Sort : Enables the sorting of products based on certain parameters.
Total Count : Indicates the number of products listed.
Product List : The main component where products are listed.
Product Filter : Enables the filtering of products within the Product List based on various parameters.
Product List page sends basket and productList dataContainers to page container as parameters.
The props information received via page container.
selectedSortOption
This should be used when the products are sorted based on certain features.
param
handleSelectFilter
This should be used when any filter is selected.
handleApllySelectedFilters
This should be used to apply filters.
handleRemoveFilter
This should be used when any filter is removed.
addToCart
This should be used to add the product to cart.
product
getCurrentFilters
Used to bring the current filters
addToFavouriteHandler
Used to add the product to favorites
pk, product
removeFromFavouriteHandler
Used to remove the product from favorites
pk, product
This enables the sorting of listed products based on certain filters.
Prop Types
sort
Includes sorting options
Array
onSort
This is triggered if no sorting option is clicked.
Function
This shows the number of products on the list.
Prop Types
count
Indicates the number of products on the list
Number
text
This is the text that will be placed next to the number of products.
Object
This enables the listing of products.
Prop Types
containerClassName
A custom className can be specified for the Container.
String or Array
contentContainerClassName
A custom className can be specified for the Content Container.
String or Array
scrollToTopButtonClassName
A custom className can be specified for the button that takes the user back to the top of the list.
String or Array
scrollToTopIconClassName
A custom className can be specified for the icon within the button.
String or Array
scrollToTopIconName
An icon type can be specified for the scroll button.
String
numberOfColumns
The number of columns can be selected for the grid view.
Number
itemTemplate
An item template can be specified for the data to be listed.
React.Component
ListFooterComponent
A custom component can be specified in the footer area of the list.
React.Component
ListEmptyComponent
A custom component can be specified to be displayed when no data is available on the list.
React.Component
This component lists each product by rendering them within the ProductList component. It’s possible to display any message related to the product’s price, image, variants, or current campaigns on this component. It can also run processes to add the products to cart and to favorites.
Prop Types
item
Requires the information of the product to be rendered
Object
addToCart
The function that needs to be triggered to add the product to cart
Function
favouriteAdd
Triggered to add the product to favorites
Function
favouriteRemove
Triggered to remove the product from favorites
Function
isLogin
Requires the user’s login status
Boolean
navigation
Used for react navigation management
favouritePending
Indicates the pending status for the product’s addition to favorites
Boolean
This filters listed products based on certain parameters.
Prop Types
facets
Retrieves filtering types and options
Array
currentFilters
Retrieves active filters
Array
applyFilters
Triggered to apply the filters based on the user’s selection
Function
selectFilter
Triggered when any filtering option is selected
Function
pending
Indicates the pending status for the application of filtering options
Boolean
onFilterSelect : Triggered to add any filters
onClear : Triggered when all filters are cleared
onApplyButtonClick : Activates selected filters and closes the modal
Filtering options are rendered within Flatlist
If any of the filtering options is clicked, related options are rendered in the FilterItem component.
This page enables listing created orders, searching by order number, and accessing order details.
The entire page is managed with the Orders page container. The orders data container is sent to the page container via the parameter.
The available parameters received via page container.
Actions
handleOnPress
Used to trigger searching with order number
handleOnChange
Used to update the orderNumber data
value
handleEndReached
Used to load more orders
Data
orders
Includes the data for all created orders
array
navigation
object
route
object
pending
Indicates the pending process for loading orders
boolean
infinitePending
Indicates the pending process for loading more orders
boolean
initialSuccess
Indicates the successful retrieval of orders
boolean
orderNumber
The react state that is used when searching with order number
string
next
The data that indicates the capacity to load more orders
boolean
This is where orders are listed.
This is where orders can be searched with an order number.
This is used to load more orders.
This page enables displaying detailed information about the order, listing ordered products, and accessing order cancellation page.
The entire page is managed with the OrderDetail page containerı. The orders data container is sent to the page container via parameter.
The available parameters received via page container
Actions
goToOrderCancel
Used for directing to order cancellation page
goToWebView
Used for directing to the WebView page which displays order invoice
goToShippingDetail
Used for directing to the WebView page which displays order tracking
Data
order
The detail data of the order
object
navigation
object
route
object
pendingOrderDetail
Indicates the pending process for loading order data
boolean
This is used for directing to shipping tracking for shipped orders.
This is used to list ordered products.
This is used for directing the user to the Order Cancel page if the order is canceled.
This is used for directing the user to Order Invoice if the order has one.
This is the page where orders are canceled.
The entire page is managed with the CancelRefund page container. The orders data container is sent to the page container via parameter.
The available parameters received via page container.
Actions
setAgreementIsChecked
Used to confirm order cancellation
status
postOrderCancel
Used to initiate order cancellation
setReasonModal
Used to check the visibility status of the modal used in selecting reason for cancellation
status
handleOnChange
This method enables retrieving a written reason for cancellation
value
handleItem
Used when a product is selected. Sends product ID and selection status
id, value (example: 7283, false )
handleSelectedItem
Used to select a product’s reason for cancellation. Sends product ID as parameter
id
selectedReason
Used to update reasons for cancellation for selected products. Sends the data for reasons for cancellation as parameter
object
Data
order
The detail data of the order
object
navigation
object
route
object
pendingReasons
Indicates the pending process for loading reasons for cancellation
boolean
cancelled
Indicates whether the order is canceled
boolean
reasons
The data for reasons for cancellation
array
agreementIsChecked
The approval status for the agreement that needs to be approved to create an order
boolean
reasonModal
The visibility status of the modal where the reason for cancellation can be selected for order product
boolean
This is where the ordered products are listed. It is a component that creates a cancellation request for each element. A cancellation reason must be selected for each order and this selection is managed by the ReasonsModal component.
An approval is required to create order cancellations for users. This approval logic is resolved with the CheckBox component.
When the user selects the order(s) they wish to cancel and approve the cancellation, an order cancellation needs to be created. This creation is done with the postOrderCancel action.
This page lists the orders created before Akinon and provides access to their details.
The entire page is managed with the OldOrders page container. The orders and oldOrders data containers are sent to the page container via parameter.
The available parameters received via page container.
Actions
handleEndReached
Used to load more orders
Data
oldOrders
The data of orders
array
navigation
object
route
object
pending
Indicates the pending process for loading orders
boolean
infinitePending
Indicates the pending process for loading more orders
boolean
initialSuccess
Indicates the successful retrieval of all orders
boolean
next
The data that indicates the capacity to load more orders
boolean
This is where orders are listed.
This is the section used to load more orders.
This page displays detailed information about the orders created before Akinon, lists ordered products, and provides access to the order cancellation page.
The entire page is managed with the OldOrderDetail page container. The orders data container is sent to the page container via parameter.
The props information received via page container.
Data
order
The detail data of the order
object
navigation
object
route
object
pending
Indicates the pending process for loading the order
boolean
List
This is where ordered products are listed. The OldDetailItem component is used to list all products.
This page lists refunded products.
The entire page is managed with the Refunds page container. The orders data container is sent to the page container via parameter.
The available parameters received via page container.
Actions
handleEndReached
Used to load more refunds.
pk, product
Data
order
The detail data of the order
object
navigation
object
route
object
pending
Indicates the pending process for loading the order
boolean
infinitePending
Indicates the pending process for loading more orders
boolean
initialSuccess
Indicates the successful retrieval of all orders
boolean
next
The data that indicates the capacity to load more orders
boolean
This is where refunded orders are listed.
This section is used to load more refunded orders.
This page enables displaying the products added to favorites, removing products from favorites, and adding products to cart.
The entire page is managed with the FavouriteList page container. The basket and favouriteList data containers are sent to the page container via parameter.
The available parameters received via page container.
Actions
handleRemoveProduct
Used to remove the product from favorites. Sends product pk and product data as parameter
pk, product
handleEndReached
Used to load more products added to favorites
onRefresh
Used to reload all products added to favorites
handleAddToCart
Used when the product added to favorites is to be added to cart
product
Data
favourites
Indicates all products added to favorites
object
navigation
object
route
object
pending
Indicates the pending process for loading the order
boolean
infinitePending
Indicates the pending process for loading more orders
boolean
initialSuccess
Indicates the successful retrieval of all orders
boolean
The ProductList component is used to list the products added to favorites.
If a product has a combination, this page displays the product and other products that can be combined with it.
The entire page is managed with the Combine page container. The combineDetail data container is sent to the page container via parameter.
The available parameters received via page container.
Data
product
The data for the main product
object
navigation
object
route
object
pending
Indicates the pending process for loading the order
boolean
combineProducts
Indicates other products that can be combined
array
This section lists the images of the main product.
This section displays the price of the main product.
This section lists other products that can be combined. The CombineItem component is used to list all products.
This page is used for purchase processes, which are managed with WebView.
The entire page is managed with the WebCheckout page container. The webCheckout data container is sent to the page container via parameter.
The available parameters received via page container.
Actions
onNavigationStateChange
Used to detect and process the change of URL location on the web page
webViewState
onMessage
message
Data
navigation
object
route
object
loading
Indicates the loading status for the WebView initial events
boolean
This page is displayed when the user successfully completes the purchase.
The entire page is managed with the CheckoutSuccess page container. The webCheckout and orders data containers are sent to the page container via parameter.
The available parameters received via page container.
Actions
goToHome
Used to return to the homepage
Data
order
The detail data of the order
object
navigation
object
route
object
pending
Indicates the pending process for loading the order
boolean
Order Items
This is used to list ordered products.
Prop Types
orderItems
The parameter required to list order items
Array
This page is used to list product categories.
The entire page is managed with the Category page container.
The available parameters received via page container.
Actions
listDirector
The method used to prepare the parameters that will be send to product listing page
title, url, id
getItems
The method used to prepare scene elements for rendering
level, parent
Data
categories
The data of all categories
array
navigation
object
route
object
pending
Indicates the pending process for loading the categories
boolean
Animated List
This component lists items in an animated way.
Prop Types
ref
React.Ref
ref.goToBackScence
The method used to go back to the previous slide scene
Function
ref.handleSlide
The method used to go to the next scene. It should only be used for parent items.
Function (scene, pk, id, title, url)
ref.isParentButton
Checks whether the item is a parent item
Function (scene, subItem)
ref.goToHome
Used to return to the main scene
Function
navigation
object
sceneWidth
The parameter to specify the width of each scene
Number
depth
The parameter to specify the required number of intertwined scenes
Number
categories
Used to check isParentButton. It’s the data of the categories listed on the page.
Array
setItemVal
Used to update the data of the current scene within the container.
Function (item)
setIndexVal
Used to update the index of the current scene within the container.
Function (index)
className
Used to update the container class name
String
This section lists category items in the form of buttons. Button types can be learned via the isParentButton method where processes are also specified.
This page enables users to search products and categories.
The entire page is managed with the Search page container. The search data container is sent to the page container via parameter.
The available parameters received via page container.
Actions
handleOnChangeText
Used to change the searchText state when the data in search input is changed
value
barcodeScanner
Used to visit the Barcode Scanner page
Data
categories
The data of the categories in the search result
array
menuCategories
The data of all the categories in the menu
array
products
The data of the products in the search result
array
groups
The group data of the data types in the search result
array
searchText
React.State
inputRef
React.State
navigation
object
route
object
pending
Indicates the pending process for loading process for searching
boolean
Category Menu
This component lists all categories in the form of horizontal cards.
Prop Types
navigation
object
route
object
menus
The menu items to be listed
array
Category Results
This component lists the categories in search results.
Prop Types
navigation
object
productListNavigateUrl
The URL of the data to be fetched in the category list
object
group
The group item in category type
array
searchText
Indicates the data of search input
string
Product Results
This component lists the products in search results.
Prop Types
navigation
object
group
The group item in category type
array
This input is used for searching.
This section lists groups data based on type in search results.
This page is used for redirection.
The entire page is managed with the RedirectorPage page container.
Displays the locations of the stores on the application on a map. Markers are uploaded to the system via platformConfig.
The renderMarker function takes the callout function as a parameter. Based on requests, the actions required for the callout process can be added as parameters.
This page enables the user to scan product barcodes. After scanning the barcode, the user is redirected to the screen with scanning results via the specified navitageAfterScan parameter.
This page enables the user to watch videos within WebView. When redirecting the user to this page, the video link within the URL parameter will be automatically opened within the page.
This page enables the user to examine the product and add it to cart within WebView. After the user adds any product to cart, the onMessage function is triggered from the related pageContext. This function sends the data of related events as parameters and triggers basket actions.
The flow is linear. A menu icon is added to the header on the home screen (default HomePage). While navigating the pages, the user can return to the homepage by clicking the button on the header.
The initial screen of the application is the index screen. Other scenes of the application should be created with a different Stack Navigator called App.
All the screens in the app navigator are defined, and the initial screen is set as HomePage. Since a custom header is used in the application, the created Stack Navigators are given the headerMode=”none” parameter.
The HomePage screen is overridden as Drawer Navigator instead of component.
The drawerContent props are added to define custom components to the drawer navigator. The custom UI component and drawer navigator props are assigned from Akinon mobile framework to the SidebarContainer.
The initialParams={{ isDrawerScreen: true }} parameter is added to the home screen to display the menu icon and to open the menu.
There’s a submenu on the home screen (default HomePage). This menu can be edited in any way; for instance, with only icons or icons with titles. The submenu can offer quick access to various screens; for instance, a banner on the HomePage screen can open a product list and a search icon in the submenu can open a product list page for a quick process regarding product list on two different screens.
Similar to a linear flow, a nested stack navigator structure is established and the InitialPage (HomePage) is defined as Tab Navigator.
A custom component is defined for the submenu with the tabBar props. The custom UI component is given from Akinon mobile framework to the BottomTabBarContainer as a parameter and is assigned to the tabBar props.
The screens added to the tab navigator can be given the following values as initialParams.
label
Type: Object
This key defines the label of the screens displayed in the submenu.
icon
Type: String
This defines the icons displayed in the submenu.
authRequired
Type: Boolean
This defines the screens required for authentication.
redirect
Type: Object
This is defined to redirect unauthorized users. The redirected screen is specified with the route key, and a parameter can be sent to the redirected screen with the params value.
routeName
Type: String
If there are more than one ProductList screens in the Stack navigators created in the Tab navigator, add values such as “HomeProductList” and “SearchProductList” on the ProductList screens.
The routeNames specified for the ProductList screens are sent to the product list’s base reducer as a parameter.
Path: src/router/screens.js
The pages of the application are imported to this file and exported to be defined in navigation.
Create New Screen
A component is added to the src/pages path about the new screen:
// pages/_newPages/index.js
The new component is exported from the src/pages/index.js path.
The page that is newly added to the src/router/screens.js
path is exported and added to the App navigator as Stack screen.
import pages from '../pages';
Then, these components are turned into scenes with the help of the renderScenes function so that they are a part of a stack structure. In the render method of the page, you can render and use widgets with the help of the renderScenes() function. Based on requests, can also be used on the page.
Find a detailed description of the management of widgets on the Omnitron administration panel in this .
If you need information on how to create a Product in Omnitron, follow the steps at this .
Based on requests, can also be used on the page.
Used to manage .
Includes the information related to the page’s
Used for management
Includes the information about the of the page
Used for management
Includes the information about the of the page
Used for management
Includes the information about the of the page
Used for management
Includes the information about the of the page
Used for management
Includes the information about the of the page
The title of the voucher
Used for management
Includes the information about the of the page
This field switches to true if any error occurs while fetching the during picker selection on the form.
Used for management
Includes the information about the of the page
Used for management
Includes the information about the of the page
Used for management
Includes the information about the of the page
Used for management
Includes the information about the of the page
Based on requests, the page can use .
Used for management
Includes the information about the of the page
Based on requests, can also be used on the page.
Used for management
Includes the information about the of the page
Based on requests, can also be used on the page.
Used for management
Includes the information about the of the page
Based on requests, can also be used on the page.
Used for management
Includes the information about the of the page
Based on requests, can also be used on the page.
Used for management
Includes the information about the of the page
Based on requests, can also be used on the page.
Used for management
Includes the information about the of the page
Based on requests, can also be used on the page.
Used for management
Includes the information about the of the page
Based on requests, can also be used on the page.
Used for management
Includes the information about the of the page
Used to handle and process the data received from the web page. ,
Used for management
Includes the information about the of the page
This section displays the checkout page. and methods check whether the order is successfully completed on the web page. If the order is successfully completed, the user is directed to the CheckoutSuccess page.
The user’s cookie information is embedded in the checkout page that is opened with the and parameters. Thus, the web page can tell which cart data to display based on the user, and which user has completed the order.
Based on requests, can also be used on the page.
Used for management
Includes the information about the of the page
Used for management
Includes the information about the of the page
The parameter when the component is to be controlled externally. ,
Used for management
Based on requests, can also be used on the page.
The that determines the text in search input
The created to enable controlling search input
Used for management
Includes the information about the of the page
Used for management
Includes the information about the of the page
Used for management
Used for management
There are two navigation flows defined with . These are linear flow and bottom tab flow and can be added with new screens and navigators. The function that returns stack navigator is sent to the createApp function as a parameter via router key.
The parameters are sent to the custom component with the tabBarOptions props. The list of parameters can be seen .