TP-23684 | added clickstream events (#203)
Need to release in night, hence merging with only 1 aprooval.
This commit is contained in:
committed by
GitHub Enterprise
parent
0e4189a6c8
commit
6e1b1ce0a5
Submodule RN-UI-LIB updated: e3068e099b...70084651bb
@@ -14,7 +14,8 @@ import axiosInstance, {
|
||||
getErrorMessage,
|
||||
} from '../components/utlis/apiHelper';
|
||||
import { toast } from '../../RN-UI-LIB/src/components/toast';
|
||||
import { LocalStorageKeys } from '../common/Constants';
|
||||
import { CLICKSTREAM_EVENT_NAMES } from '../common/Constants';
|
||||
import { addClickstreamEvent } from "../services/clickstreamEventService";
|
||||
|
||||
export interface GeneratePaymentPayload {
|
||||
alternateContactNumber: string;
|
||||
@@ -92,6 +93,10 @@ export const generatePaymentLinkAction =
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_SEND_PAYMENT_LINK_FAILED, {amount: payload.customAmount,lan : payload.loanAccountNumber, phoneNumber: payload.alternateContactNumber })
|
||||
if(err.response.status === 429) {
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_SEND_PAYMENT_LINK_FAILED_LIMIT_REACHED, {amount: payload.customAmount,lan : payload.loanAccountNumber, phoneNumber: payload.alternateContactNumber })
|
||||
}
|
||||
toast({
|
||||
type: 'error',
|
||||
text1: ToastMessages.PAYMENT_LINK_ERROR,
|
||||
|
||||
@@ -52,98 +52,128 @@ export const ClickstreamAPIToMonitor = {
|
||||
|
||||
export const CLICKSTREAM_EVENT_NAMES = {
|
||||
// GENERIC
|
||||
AV_NATIVE_BACK_PRESSED : {name: 'AV_NATIVE_BACK_PRESSED', description: 'Native back button pressed'},
|
||||
AV_NATIVE_HOME_PRESSED : {name: 'AV_NATIVE_HOME_PRESSED', description: 'Native home button pressed'},
|
||||
AV_APP_FOREGROUND : {name: 'AV_APP_FOREGROUND', description: 'App has come to foreground'},
|
||||
AV_APP_BACKGROUND : {name: 'AV_APP_BACKGROUND', description: 'App went to background'},
|
||||
AV_NATIVE_BACK_PRESSED : {name: 'FA_NATIVE_BACK_PRESSED', description: 'Native back button pressed'},
|
||||
AV_NATIVE_HOME_PRESSED : {name: 'FA_NATIVE_HOME_PRESSED', description: 'Native home button pressed'},
|
||||
AV_APP_FOREGROUND : {name: 'FA_APP_FOREGROUND', description: 'App has come to foreground'},
|
||||
AV_APP_BACKGROUND : {name: 'FA_APP_BACKGROUND', description: 'App went to background'},
|
||||
AV_ERROR_PAGE_LOADED : {name: 'ERROR_PAGE_LOADED', description: 'Error page loaded'},
|
||||
AV_NETWORK_STATUS_CHANGE: {name: 'AV_NETWORK_STATUS_CHANGE', description: 'Offline/online status change'},
|
||||
AV_NETWORK_STATUS_CHANGE: {name: 'FA_NETWORK_STATUS_CHANGE', description: 'Offline/online status change'},
|
||||
FA_ADD_TO_VISIT_PLAN_CTA: { name: 'FA_ADD_TO_VISIT_PLAN_CTA', description: 'Cases pinned' },
|
||||
FA_REMOVE_FROM_VISIT_PLAN_CTA: { name: 'FA_REMOVE_FROM_VISIT_PLAN_CTA', description: 'Cases unpinned' },
|
||||
FA_VISIT_PLAN_UPDATED: { name: 'FA_VISIT_PLAN_UPDATED', description: 'Updated cases pinned' },
|
||||
|
||||
// Login screen
|
||||
AV_LOGIN_SCREEN_LOAD: {name:'AV_LOGIN_SCREEN_LOAD', description: 'Login page loaded'},
|
||||
AV_LOGIN_SCREEN_NUMBER_INPUT: {name:'AV_LOGIN_SCREEN_NUMBER_INPUT', description: 'User entered 10 digits'},
|
||||
AV_LOGIN_SCREEN_SEND_OTP_CLICKED: {name:'AV_LOGIN_SCREEN_SEND_OTP_CLICKED', description: 'Send OTP CTA clicked'},
|
||||
AV_LOGIN_SCREEN_SEND_OTP_API_SUCCESS: {name:'AV_LOGIN_SCREEN_SEND_OTP_API_SUCCESS', description: 'Send OTP API successful'},
|
||||
AV_LOGIN_SCREEN_SEND_OTP_API_FAILED: {name:'AV_LOGIN_SCREEN_SEND_OTP_API_FAILED', description: 'Send OTP API failed'},
|
||||
AV_LOGIN_SCREEN_LOAD: {name:'FA_LOGIN_SCREEN_LOAD', description: 'Login page loaded'},
|
||||
AV_LOGIN_SCREEN_NUMBER_INPUT: {name:'FA_LOGIN_SCREEN_NUMBER_INPUT', description: 'User entered 10 digits'},
|
||||
AV_LOGIN_SCREEN_SEND_OTP_CLICKED: {name:'FA_LOGIN_SCREEN_SEND_OTP_CLICKED', description: 'Send OTP CTA clicked'},
|
||||
AV_LOGIN_SCREEN_SEND_OTP_API_SUCCESS: {name:'FA_LOGIN_SCREEN_SEND_OTP_API_SUCCESS', description: 'Send OTP API successful'},
|
||||
AV_LOGIN_SCREEN_SEND_OTP_API_FAILED: {name:'FA_LOGIN_SCREEN_SEND_OTP_API_FAILED', description: 'Send OTP API failed'},
|
||||
|
||||
// OTP screen
|
||||
AV_OTP_SCREEN_LOAD: {name:'AV_OTP_SCREEN_LOAD', description: 'OTP screen loaded'},
|
||||
AV_OTP_SCREEN_OTP_INPUT: {name:'AV_OTP_SCREEN_OTP_INPUT', description: 'User entered 4 digit OTP'},
|
||||
AV_OTP_SCREEN_VERIFY_OTP_CLICKED: {name:'AV_OTP_SCREEN_VERIFY_OTP_CLICKED', description: 'Verify OTP CTA Clicked'},
|
||||
AV_OTP_SCREEN_BACK_BUTTON_CLICKED: {name:'AV_OTP_SCREEN_BACK_BUTTON_CLICKED', description: 'OTP Screen back CTA clicked'},
|
||||
AV_OTP_SCREEN_VERIFY_OTP_API_SUCCESS: {name:'AV_OTP_SCREEN_VERIFY_OTP_API_SUCCESS', description: 'OTP verify API successful'},
|
||||
AV_OTP_SCREEN_VERIFY_OTP_API_FAILED: {name:'AV_OTP_SCREEN_VERIFY_OTP_API_FAILED', description: 'OTP verify API failed'},
|
||||
AV_OTP_SCREEN_LOAD: {name:'FA_OTP_SCREEN_LOAD', description: 'OTP screen loaded'},
|
||||
AV_OTP_SCREEN_OTP_INPUT: {name:'FA_OTP_SCREEN_OTP_INPUT', description: 'User entered 4 digit OTP'},
|
||||
AV_OTP_SCREEN_VERIFY_OTP_CLICKED: {name:'FA_OTP_SCREEN_VERIFY_OTP_CLICKED', description: 'Verify OTP CTA Clicked'},
|
||||
AV_OTP_SCREEN_BACK_BUTTON_CLICKED: {name:'FA_OTP_SCREEN_BACK_BUTTON_CLICKED', description: 'OTP Screen back CTA clicked'},
|
||||
AV_OTP_SCREEN_VERIFY_OTP_API_SUCCESS: {name:'FA_OTP_SCREEN_VERIFY_OTP_API_SUCCESS', description: 'OTP verify API successful'},
|
||||
AV_OTP_SCREEN_VERIFY_OTP_API_FAILED: {name:'FA_OTP_SCREEN_VERIFY_OTP_API_FAILED', description: 'OTP verify API failed'},
|
||||
|
||||
// Case list
|
||||
AV_CASE_LIST_LOAD : {name: 'AV_CASE_LIST_LOAD', description: 'Cases list loaded'},
|
||||
AV_CASE_LIST_CASE_CLICKED : {name: 'AV_CASE_LIST_CASE_CLICKED', description: 'Case clicked'},
|
||||
AV_CASE_LIST_PULLED_TO_REFRESH : {name: 'AV_CASE_LIST_PULLED_TO_REFRESH', description: 'Case list pulled to refresh'},
|
||||
AV_CASE_LIST_TODO_ITEM_SELECTED : {name: 'AV_CASE_LIST_TODO_ITEM_SELECTED', description: 'Case list todo item selected'},
|
||||
AV_CASE_LIST_TODO_ITEM_UNSELECTED : {name: 'AV_CASE_LIST_TODO_ITEM_UNSELECTED', description: 'Case list todo iten unselected'},
|
||||
AV_CASE_LIST_CASE_SELECTED : {name: 'AV_CASE_LIST_CASE_SELECTED', description: 'Other cases selected'},
|
||||
AV_CASE_LIST_CASE_UNSELECTED : {name: 'AV_CASE_LIST_CASE_UNSELECTED', description: 'Other cases unselected'},
|
||||
AV_CASE_LIST_PROCEED_BUTTON_CLICKED : {name: 'AV_CASE_LIST_PROCEED_BUTTON_CLICKED', description: 'Case list proceed CTA clicked'},
|
||||
AV_CASE_LIST_REMOVE_BUTTON_CLICKED : {name: 'AV_CASE_LIST_REMOVE_BUTTON_CLICKED', description: 'Case list remove CTA clicked'},
|
||||
AV_CASE_LIST_REMOVE_API_SUCCESS : {name: 'AV_CASE_LIST_REMOVE_API_SUCCESS', description: 'Remove todolist API successful'},
|
||||
AV_CASE_LIST_REMOVE_API_FAILED: {name: 'AV_CASE_LIST_REMOVE_API_FAILED', description: 'Remove todolist API failed'},
|
||||
AV_CASE_LIST_FILTER_BUTTON_CLICKED : {name: 'AV_CASE_LIST_FILTER_BUTTON_CLICKED', description: 'Case list filter CTA clicked'},
|
||||
AV_CASE_LIST_SEARCH_QUERY_CHANGED : {name: 'AV_CASE_LIST_SEARCH_QUERY_CHANGED', description: 'Search filter query changed'},
|
||||
AV_CASE_LIST_TAB_CHANGED : {name: 'AV_CASE_LIST_TAB_CHANGED', description: 'Case list tab changed'},
|
||||
AV_CASE_LIST_AGENT_PROFILE_CLICKED : {name: 'AV_CASE_LIST_AGENT_PROFILE_CLICKED', description: 'Case list agent profile CTA clicked'},
|
||||
AV_CASE_LIST_LOAD : {name: 'FA_CASE_LIST_LOAD', description: 'Cases list loaded'},
|
||||
AV_CASE_LIST_CASE_CLICKED : {name: 'FA_CASE_LIST_CASE_CLICKED', description: 'Case clicked'},
|
||||
AV_CASE_LIST_PULLED_TO_REFRESH : {name: 'FA_CASE_LIST_PULLED_TO_REFRESH', description: 'Case list pulled to refresh'},
|
||||
AV_CASE_LIST_TODO_ITEM_SELECTED : {name: 'FA_CASE_LIST_TODO_ITEM_SELECTED', description: 'Case list todo item selected'},
|
||||
AV_CASE_LIST_TODO_ITEM_UNSELECTED : {name: 'FA_CASE_LIST_TODO_ITEM_UNSELECTED', description: 'Case list todo iten unselected'},
|
||||
AV_CASE_LIST_CASE_SELECTED : {name: 'FA_CASE_LIST_CASE_SELECTED', description: 'Other cases selected'},
|
||||
AV_CASE_LIST_CASE_UNSELECTED : {name: 'FA_CASE_LIST_CASE_UNSELECTED', description: 'Other cases unselected'},
|
||||
AV_CASE_LIST_PROCEED_BUTTON_CLICKED : {name: 'FA_CASE_LIST_PROCEED_BUTTON_CLICKED', description: 'Case list proceed CTA clicked'},
|
||||
AV_CASE_LIST_REMOVE_BUTTON_CLICKED : {name: 'FA_CASE_LIST_REMOVE_BUTTON_CLICKED', description: 'Case list remove CTA clicked'},
|
||||
AV_CASE_LIST_REMOVE_API_SUCCESS : {name: 'FA_CASE_LIST_REMOVE_API_SUCCESS', description: 'Remove todolist API successful'},
|
||||
AV_CASE_LIST_REMOVE_API_FAILED: {name: 'FA_CASE_LIST_REMOVE_API_FAILED', description: 'Remove todolist API failed'},
|
||||
AV_CASE_LIST_FILTER_BUTTON_CLICKED : {name: 'FA_CASE_LIST_FILTER_BUTTON_CLICKED', description: 'Case list filter CTA clicked'},
|
||||
AV_CASE_LIST_SEARCH_QUERY_CHANGED : {name: 'FA_CASE_LIST_SEARCH_QUERY_CHANGED', description: 'Search filter query changed'},
|
||||
AV_CASE_LIST_TAB_CHANGED : {name: 'FA_CASE_LIST_TAB_CHANGED', description: 'Case list tab changed'},
|
||||
AV_CASE_LIST_AGENT_PROFILE_CLICKED : {name: 'FA_CASE_LIST_AGENT_PROFILE_CLICKED', description: 'Case list agent profile CTA clicked'},
|
||||
|
||||
// TODO LIST
|
||||
AV_TODO_LIST_LOAD : {name: 'AV_TODO_LIST_LOAD', description: 'Todo list confirmation screen loaded'},
|
||||
AV_TODO_LIST_CASE_DELETED : {name: 'AV_TODO_LIST_CASE_DELETED', description: 'Todo list case deleted'},
|
||||
AV_TODO_LIST_SUBMIT_CLICKED : {name: 'AV_TODO_LIST_SUBMIT_CLICKED', description: 'Submit CTA clicked'},
|
||||
AV_TODO_LIST_SUBMIT_SUCCESS : {name: 'AV_TODO_LIST_SUBMIT_SUCCESS', description: 'Todo list submit API successful'},
|
||||
AV_TODO_LIST_SUBMIT_FAILED : {name: 'AV_TODO_LIST_SUBMIT_FAILED', description: 'Todo list submit API failed'},
|
||||
AV_TODO_LIST_BACK_CLICKED : {name: 'AV_TODO_LIST_BACK_CLICKED', description: 'Back CTA clicked'},
|
||||
AV_TODO_LIST_LOAD : {name: 'FA_TODO_LIST_LOAD', description: 'Todo list confirmation screen loaded'},
|
||||
AV_TODO_LIST_CASE_DELETED : {name: 'FA_TODO_LIST_CASE_DELETED', description: 'Todo list case deleted'},
|
||||
AV_TODO_LIST_SUBMIT_CLICKED : {name: 'FA_TODO_LIST_SUBMIT_CLICKED', description: 'Submit CTA clicked'},
|
||||
AV_TODO_LIST_SUBMIT_SUCCESS : {name: 'FA_TODO_LIST_SUBMIT_SUCCESS', description: 'Todo list submit API successful'},
|
||||
AV_TODO_LIST_SUBMIT_FAILED : {name: 'FA_TODO_LIST_SUBMIT_FAILED', description: 'Todo list submit API failed'},
|
||||
AV_TODO_LIST_BACK_CLICKED : {name: 'FA_TODO_LIST_BACK_CLICKED', description: 'Back CTA clicked'},
|
||||
|
||||
//Filters
|
||||
AV_FILTERS_PAGE_LOAD : {name: 'AV_FILTERS_PAGE_LOAD', description: 'Filters screen loaded'},
|
||||
AV_FILTERS_TAB_CLICKED : {name: 'AV_FILTERS_TAB_CLICKED', description: 'Filter tab clicked'},
|
||||
AV_FILTERS_OPTIONS_SELECTED : {name: 'AV_FILTERS_OPTIONS_SELECTED', description: 'Filter options selected'},
|
||||
AV_FILTERS_CLOSE_CLICKED : {name: 'AV_FILTERS_CLOSE_CLICKED', description: 'Filters close CTA clicked'},
|
||||
AV_FILTERS_APPLY_CLICKED : {name: 'AV_FILTERS_APPLY_CLICKED', description: 'Filters apply CTA clicked'},
|
||||
AV_FILTERS_CLEAR_CLICKED : {name: 'AV_FILTERS_CLEAR_CLICKED', description: 'Filters clear CTA clicked'},
|
||||
AV_FILTERS_OPTION_SEARCH : {name: 'AV_FILTERS_OPTION_SEARCH', description: 'Filters options search query'},
|
||||
AV_FILTERS_PAGE_LOAD : {name: 'FA_FILTERS_PAGE_LOAD', description: 'Filters screen loaded'},
|
||||
AV_FILTERS_TAB_CLICKED : {name: 'FA_FILTERS_TAB_CLICKED', description: 'Filter tab clicked'},
|
||||
AV_FILTERS_OPTIONS_SELECTED : {name: 'FA_FILTERS_OPTIONS_SELECTED', description: 'Filter options selected'},
|
||||
AV_FILTERS_CLOSE_CLICKED : {name: 'FA_FILTERS_CLOSE_CLICKED', description: 'Filters close CTA clicked'},
|
||||
AV_FILTERS_APPLY_CLICKED : {name: 'FA_FILTERS_APPLY_CLICKED', description: 'Filters apply CTA clicked'},
|
||||
AV_FILTERS_CLEAR_CLICKED : {name: 'FA_FILTERS_CLEAR_CLICKED', description: 'Filters clear CTA clicked'},
|
||||
AV_FILTERS_OPTION_SEARCH : {name: 'FA_FILTERS_OPTION_SEARCH', description: 'Filters options search query'},
|
||||
|
||||
//Case Details
|
||||
AV_CASE_DETAILS_PAGE_LOADED : {name: 'AV_CASE_DETAILS_PAGE_LOADED', description: 'Case details page loaded'},
|
||||
AV_CASE_DETAILS_PULL_TO_REFRESH : {name: 'AV_CASE_DETAILS_PULL_TO_REFRESH', description: 'Case details page pulled to refresh'},
|
||||
AV_CASE_DETAILS_CALL_CUSTOMER_CLICKED : {name: 'AV_CASE_DETAILS_CALL_CUSTOMER_CLICKED', description: 'Call customer CTA clicked'},
|
||||
AV_CASE_DETAILS_OPEN_MAPS_CLICKED : {name: 'AV_CASE_DETAILS_OPEN_MAPS_CLICKED', description: 'Open map CTA clicked'},
|
||||
AV_CASE_DETAILS_ADD_FEEDBACK_CLICKED : {name: 'AV_CASE_DETAILS_ADD_FEEDBACK_CLICKED', description: 'Add feedback CTA clicked'},
|
||||
AV_CASE_DETAILS_PAGE_LOADED : {name: 'FA_CASE_DETAILS_PAGE_LOADED', description: 'Case details page loaded'},
|
||||
AV_CASE_DETAILS_PULL_TO_REFRESH : {name: 'FA_CASE_DETAILS_PULL_TO_REFRESH', description: 'Case details page pulled to refresh'},
|
||||
AV_CASE_DETAILS_CALL_CUSTOMER_CLICKED : {name: 'FA_CASE_DETAILS_CALL_CUSTOMER_CLICKED', description: 'Call customer CTA clicked'},
|
||||
AV_CASE_DETAILS_OPEN_MAPS_CLICKED : {name: 'FA_CASE_DETAILS_OPEN_MAPS_CLICKED', description: 'Open map CTA clicked'},
|
||||
AV_CASE_DETAILS_ADD_FEEDBACK_CLICKED : {name: 'FA_CASE_DETAILS_ADD_FEEDBACK_CLICKED', description: 'Add feedback CTA clicked'},
|
||||
|
||||
//CALLING BOTTOM SHEET
|
||||
AV_CALLING_BOTTOMSHEET_LOADED : {name: 'AV_CALLING_BOTTOMSHEET_LOADED', description: 'Calling bottomsheet loaded'},
|
||||
AV_CALLING_BOTTOMSHEET_CLOSE_CLICKED : {name: 'AV_CALLING_BOTTOMSHEET_CLOSE_CLICKED' , description: 'Close bottomsheet CTA clicked'},
|
||||
AV_CALLING_BOTTOMSHEET_CALL_VIA_PHONE_CLICKED : {name: 'AV_CALLING_BOTTOMSHEET_CALL_VIA_PHONE_CLICKED', description: 'Call via phone CTA clicked'},
|
||||
AV_CALLING_BOTTOMSHEET_CALL_VIA_WHATSAPP_CLICKED : {name: 'AV_CALLING_BOTTOMSHEET_CALL_VIA_WHATSAPP_CLICKED', description: 'Call via whatsapp CTA clicked'},
|
||||
AV_CALLING_BOTTOMSHEET_BEFORE_INTENT_EVENT : {name: 'AV_CALLING_BOTTOMSHEET_BEFORE_INTENT_EVENT' , description: 'Call bottomsheet before intent event'},
|
||||
AV_CALLING_BOTTOMSHEET_LOADED : {name: 'FA_CALLING_BOTTOMSHEET_LOADED', description: 'Calling bottomsheet loaded'},
|
||||
AV_CALLING_BOTTOMSHEET_CLOSE_CLICKED : {name: 'FA_CALLING_BOTTOMSHEET_CLOSE_CLICKED' , description: 'Close bottomsheet CTA clicked'},
|
||||
AV_CALLING_BOTTOMSHEET_CALL_VIA_PHONE_CLICKED : {name: 'FA_CALLING_BOTTOMSHEET_CALL_VIA_PHONE_CLICKED', description: 'Call via phone CTA clicked'},
|
||||
AV_CALLING_BOTTOMSHEET_CALL_VIA_WHATSAPP_CLICKED : {name: 'FA_CALLING_BOTTOMSHEET_CALL_VIA_WHATSAPP_CLICKED', description: 'Call via whatsapp CTA clicked'},
|
||||
AV_CALLING_BOTTOMSHEET_BEFORE_INTENT_EVENT : {name: 'FA_CALLING_BOTTOMSHEET_BEFORE_INTENT_EVENT' , description: 'Call bottomsheet before intent event'},
|
||||
|
||||
//PROFILE PAGE
|
||||
AV_PROFILE_PAGE_LOADED : {name: 'AV_PROFILE_PAGE_LOADED', description: 'Profile page loaded'},
|
||||
AV_PROFILE_PAGE_LOGOUT_BUTTON_CLICKED : {name: 'AV_PROFILE_PAGE_LOGOUT_BUTTON_CLICKED', description: 'Logout CTA clicked'},
|
||||
AV_PROFILE_PAGE_LOGOUT_CONFIRMATION_OPEN : {name: 'AV_PROFILE_PAGE_LOGOUT_CONFIRMATION_OPEN', description: 'Logout confirmation dialog open'},
|
||||
AV_PROFILE_PAGE_LOGOUT_CONFIRMATION_CLOSED : {name: 'AV_PROFILE_PAGE_LOGOUT_CONFIRMATION_CLOSED', description: 'Logout confirmation dialog closed'},
|
||||
AV_PROFILE_PAGE_LOGOUT_CONFIRMATION_CLICKED : {name: 'AV_PROFILE_PAGE_LOGOUT_CONFIRMATION_CLICKED', description: 'Logout confirmation clicked'},
|
||||
AV_PROFILE_PAGE_LOGOUT_API_SUCCESS : {name: 'AV_PROFILE_PAGE_LOGOUT_API_SUCCESS', description: 'Logout API successful'},
|
||||
AV_PROFILE_PAGE_LOGOUT_API_FAILED : {name: 'AV_PROFILE_PAGE_LOGOUT_API_FAILED', description: 'Logout API failed'},
|
||||
AV_PROFILE_PAGE_LOADED : {name: 'FA_PROFILE_PAGE_LOADED', description: 'Profile page loaded'},
|
||||
AV_PROFILE_PAGE_LOGOUT_BUTTON_CLICKED : {name: 'FA_PROFILE_PAGE_LOGOUT_BUTTON_CLICKED', description: 'Logout CTA clicked'},
|
||||
AV_PROFILE_PAGE_LOGOUT_CONFIRMATION_OPEN : {name: 'FA_PROFILE_PAGE_LOGOUT_CONFIRMATION_OPEN', description: 'Logout confirmation dialog open'},
|
||||
AV_PROFILE_PAGE_LOGOUT_CONFIRMATION_CLOSED : {name: 'FA_PROFILE_PAGE_LOGOUT_CONFIRMATION_CLOSED', description: 'Logout confirmation dialog closed'},
|
||||
AV_PROFILE_PAGE_LOGOUT_CONFIRMATION_CLICKED : {name: 'FA_PROFILE_PAGE_LOGOUT_CONFIRMATION_CLICKED', description: 'Logout confirmation clicked'},
|
||||
AV_PROFILE_PAGE_LOGOUT_API_SUCCESS : {name: 'FA_PROFILE_PAGE_LOGOUT_API_SUCCESS', description: 'Logout API successful'},
|
||||
AV_PROFILE_PAGE_LOGOUT_API_FAILED : {name: 'FA_PROFILE_PAGE_LOGOUT_API_FAILED', description: 'Logout API failed'},
|
||||
|
||||
//FORMS
|
||||
AV_FORM_LOADED : {name: 'AV_FORM_LOADED', description: 'Form loaded'},
|
||||
AV_FORM_CLOSE_CLICKED : {name: 'AV_FORM_CLOSE_CLICKED', description: 'Form close CTA clicked'},
|
||||
AV_FORM_ELEMENT_CHANGED : {name: 'AV_FORM_ELEMENT_CHANGED', description: 'Form element answer changed'},
|
||||
AV_FORM_NEXT_BUTTON_CLICKED : {name: 'AV_FORM_NEXT_BUTTON_CLICKED', description: 'Form next CTA clicked'},
|
||||
AV_FORM_BACK_BUTTON_CLICKED : {name: 'AV_FORM_BACK_BUTTON_CLICKED', description: 'Form back CTA clicked'},
|
||||
AV_FORM_SUMMARY_PAGE_LOADED : {name: 'AV_FORM_SUMMARY_PAGE_LOADED', description: 'Form summary page loaded'},
|
||||
AV_FORM_SUBMIT_BUTTON_CLICKED : {name: 'AV_FORM_SUBMIT_BUTTON_CLICKED', description: 'Form submit journey CTA clicked'},
|
||||
AV_FORM_SUBMIT_API_SUCCESS : {name: 'AV_FORM_SUBMIT_API_SUCCESS', description: 'Form submit API successful'},
|
||||
AV_FORM_SUBMIT_API_FAILED : {name: 'AV_FORM_SUBMIT_API_FAILED', description: 'Form submit API failed'},
|
||||
AV_FORM_LOADED : {name: 'FA_FORM_LOADED', description: 'Form loaded'},
|
||||
AV_FORM_CLOSE_CLICKED : {name: 'FA_FORM_CLOSE_CLICKED', description: 'Form close CTA clicked'},
|
||||
AV_FORM_ELEMENT_CHANGED : {name: 'FA_FORM_ELEMENT_CHANGED', description: 'Form element answer changed'},
|
||||
AV_FORM_NEXT_BUTTON_CLICKED : {name: 'FA_FORM_NEXT_BUTTON_CLICKED', description: 'Form next CTA clicked'},
|
||||
AV_FORM_BACK_BUTTON_CLICKED : {name: 'FA_FORM_BACK_BUTTON_CLICKED', description: 'Form back CTA clicked'},
|
||||
AV_FORM_SUMMARY_PAGE_LOADED : {name: 'FA_FORM_SUMMARY_PAGE_LOADED', description: 'Form summary page loaded'},
|
||||
AV_FORM_SUBMIT_BUTTON_CLICKED : {name: 'FA_FORM_SUBMIT_BUTTON_CLICKED', description: 'Form submit journey CTA clicked'},
|
||||
AV_FORM_SUBMIT_API_SUCCESS : {name: 'FA_FORM_SUBMIT_API_SUCCESS', description: 'Form submit API successful'},
|
||||
AV_FORM_SUBMIT_API_FAILED : {name: 'FA_FORM_SUBMIT_API_FAILED', description: 'Form submit API failed'},
|
||||
|
||||
// COLLECTIONS
|
||||
ADDRESSES_CLICKED: {name: 'ADDRESSES_CLICKED', description: 'ADDRESSES_CLICKED'},
|
||||
ADDRESSES_FAILED : {name: 'ADDRESSES_FAILED', description: 'ADDRESSES_FAILED'},
|
||||
FA_CASE_DETAILS_INDIVIDUAL_FEEDBACK_CLICKED : {name: 'FA_CASE_DETAILS_INDIVIDUAL_FEEDBACK_CLICKED', description: 'FA_CASE_DETAILS_INDIVIDUAL_FEEDBACK_CLICKED'},
|
||||
FA_CASE_DETAILS_INDIVIDUAL_FEEDBACK_FAILED : {name: 'FA_CASE_DETAILS_INDIVIDUAL_FEEDBACK_FAILED', description: 'FA_CASE_DETAILS_INDIVIDUAL_FEEDBACK_FAILED'},
|
||||
FA_COLLECT_MONEY_CLICKED : {name: 'FA_COLLECT_MONEY_CLICKED', description: 'FA_COLLECT_MONEY_CLICKED'},
|
||||
FA_COLLECT_MONEY_FAILED : {name: 'FA_COLLECT_MONEY_FAILED', description: 'FA_COLLECT_MONEY_FAILED'},
|
||||
FA_COLLECT_MONEY_NUMBER_CHANGED: {name: 'FA_COLLECT_MONEY_NUMBER_CHANGED', description: 'FA_COLLECT_MONEY_NUMBER_CHANGED'},
|
||||
FA_COPY_LAN_CLICKED : {name: 'FA_COPY_LAN_CLICKED', description: 'FA_COPY_LAN_CLICKED'},
|
||||
FA_COPY_LINK_CLICKED: {name: 'FA_COPY_LINK_CLICKED', description: 'FA_COPY_LINK_CLICKED'},
|
||||
FA_COPY_LINK_FAILED: {name: 'FA_COPY_LINK_FAILED', description: 'FA_COPY_LINK_FAILED'},
|
||||
FA_PAST_FEEDBACKS_FEEDBACK_CLICKED: {name: 'FA_PAST_FEEDBACKS_FEEDBACK_CLICKED', description: 'FA_PAST_FEEDBACKS_FEEDBACK_CLICKED'},
|
||||
FA_PAST_FEEDBACKS_FEEDBACK_FAILED : {name: 'FA_PAST_FEEDBACKS_FEEDBACK_FAILED', description: 'FA_PAST_FEEDBACKS_FEEDBACK_FAILED'},
|
||||
FA_SEND_PAYMENT_LINK: {name: 'FA_SEND_PAYMENT_LINK', description: 'FA_SEND_PAYMENT_LINK'},
|
||||
FA_SEND_PAYMENT_LINK_FAILED: {name: 'FA_SEND_PAYMENT_LINK_FAILED', description: 'FA_SEND_PAYMENT_LINK_FAILED'},
|
||||
FA_SEND_PAYMENT_LINK_FAILED_LIMIT_REACHED: {name: 'FA_SEND_PAYMENT_LINK_FAILED_LIMIT_REACHED', description: 'FA_SEND_PAYMENT_LINK_FAILED_LIMIT_REACHED'},
|
||||
FA_TOTAL_OUTSTANDING_BREAKUP_CLICKED: {name: 'FA_TOTAL_OUTSTANDING_BREAKUP_CLICKED', description: 'FA_TOTAL_OUTSTANDING_BREAKUP_CLICKED'},
|
||||
FA_VIEW_ADDRESSES_CLICKED: {name: 'FA_VIEW_ADDRESSES_CLICKED', description: 'FA_VIEW_ADDRESSES_CLICKED'},
|
||||
FA_VIEW_ADDRESSES_FAILED: {name: 'FA_VIEW_ADDRESSES_FAILED', description: 'FA_VIEW_ADDRESSES_FAILED'},
|
||||
FA_VIEW_EMI_SCHEDULE_CLICKED: {name: 'FA_VIEW_EMI_SCHEDULE_CLICKED', description: 'FA_VIEW_EMI_SCHEDULE_CLICKED'},
|
||||
FA_VIEW_EMI_SCHEDULE_FAILED: {name: 'FA_VIEW_EMI_SCHEDULE_FAILED', description: 'FA_VIEW_EMI_SCHEDULE_FAILED'},
|
||||
FA_VIEW_MAP_GEO_CLICKED: {name: 'FA_VIEW_MAP_GEO_CLICKED', description: 'FA_VIEW_MAP_GEO_CLICKED'},
|
||||
FA_VIEW_MORE: {name: 'FA_VIEW_MORE', description: 'FA_VIEW_MORE'},
|
||||
FA_VIEW_PAST_FEEDBACKS_CLICKED: {name: 'FA_VIEW_PAST_FEEDBACKS_CLICKED', description: 'FA_VIEW_PAST_FEEDBACKS_CLICKED'},
|
||||
FA_VIEW_PAST_FEEDBACKS_FAILED: {name: 'FA_VIEW_PAST_FEEDBACKS_FAILED', description: 'FA_VIEW_PAST_FEEDBACKS_FAILED'},
|
||||
FA_VIEW_PAST_FEEDBACK_NEXT_PAGE_CLICKED: {name: 'FA_VIEW_PAST_FEEDBACK_NEXT_PAGE_CLICKED', description: 'FA_VIEW_PAST_FEEDBACK_NEXT_PAGE_CLICKED'},
|
||||
FA_VIEW_PAST_FEEDBACK_PREV_PAGE_CLICKED: {name: 'FA_VIEW_PAST_FEEDBACK_PREV_PAGE_CLICKED', description: 'FA_VIEW_PAST_FEEDBACK_PREV_PAGE_CLICKED'},
|
||||
FA_VIEW_PAST_FEEDBACK_NAVIGATION_PAGE_FAILED: {name: 'FA_VIEW_PAST_FEEDBACK_PREV_PAGE_FAILED', description: 'FA_VIEW_PAST_FEEDBACK_PREV_PAGE_FAILED'},
|
||||
FA_VIEW_PHOTO_CLICKED: {name: 'FA_VIEW_PHOTO_CLICKED', description: 'FA_VIEW_PHOTO_CLICKED'}
|
||||
} as const;
|
||||
|
||||
export enum MimeType {
|
||||
|
||||
@@ -38,7 +38,7 @@ const ForceUninstallScreen = (props: IForceUninstallScreen) => {
|
||||
return <>{forceReinstallData?.reinstall_endpoint?
|
||||
<View style={styles.errorContainer}>
|
||||
<Heading type={'h4'} style={styles.errorHeading} bold dark>
|
||||
Seems like you are using an older app version.
|
||||
Seems like you are using an older app version. v{getAppVersion()}
|
||||
</Heading>
|
||||
<Text >Please follow these instructions.</Text>
|
||||
<Text>1. Download the new app by clicking the button at the bottom.</Text>
|
||||
|
||||
@@ -7,6 +7,8 @@ import { COLORS } from '../../../RN-UI-LIB/src/styles/colors';
|
||||
import HomeIcon from '../../assets/icons/HomeIcon';
|
||||
import { AddressL1Details } from '../../types/addressGeolocation.types'
|
||||
import AddressItem from './AddressItem'
|
||||
import { addClickstreamEvent } from "../../services/clickstreamEventService";
|
||||
import { CLICKSTREAM_EVENT_NAMES } from "../../common/Constants";
|
||||
|
||||
interface IAddressContainer {
|
||||
addressList?: AddressL1Details[]
|
||||
@@ -33,12 +35,20 @@ const AddressContainer: React.FC<IAddressContainer> = ({addressList}) => {
|
||||
<View>
|
||||
{
|
||||
addressList.map((address: AddressL1Details) => (
|
||||
<Accordion accordionStyle={{paddingVertical: 28, paddingHorizontal: 16 }}
|
||||
accordionHeader={<AddressItem key={address?.addressDTO?.externalReferenceId}
|
||||
addressItem={address?.addressDTO}
|
||||
geoLocationList={address.matchingGeoLocations}
|
||||
showGeolocationBtn={true}/>}
|
||||
customExpandUi={{whenCollapsed: <Text style={addressAccordionToggleStyle}>View Details</Text>, whenExpanded: <Text style={addressAccordionToggleStyle}>Hide Details</Text>}}
|
||||
<Accordion accordionStyle={{paddingVertical: 28, paddingHorizontal: 16}}
|
||||
accordionHeader={<AddressItem
|
||||
key={address?.addressDTO?.externalReferenceId || address?.addressDTO?.id}
|
||||
addressItem={address?.addressDTO}
|
||||
geoLocationList={address.matchingGeoLocations}
|
||||
showGeolocationBtn={true}/>}
|
||||
onExpanded={(isExpanded) => {
|
||||
if (isExpanded) {
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_VIEW_ADDRESSES_CLICKED, {addressId: address?.addressDTO?.id}) }
|
||||
}}
|
||||
customExpandUi={{
|
||||
whenCollapsed: <Text style={addressAccordionToggleStyle}>View Details</Text>,
|
||||
whenExpanded: <Text style={addressAccordionToggleStyle}>Hide Details</Text>
|
||||
}}
|
||||
>
|
||||
<View>
|
||||
<Text style={[styles.textContainer, styles.accordionDetailHeading]}>
|
||||
|
||||
@@ -5,6 +5,8 @@ import { COLORS } from '../../../RN-UI-LIB/src/styles/colors';
|
||||
import { BUSINESS_DATE_FORMAT, BUSINESS_TIME_FORMAT, dateFormat } from '../../../RN-UI-LIB/src/utlis/dates';
|
||||
import { sanitizeString } from '../../components/utlis/commonFunctions';
|
||||
import { IGeoLocation } from '../../types/addressGeolocation.types';
|
||||
import { addClickstreamEvent } from "../../services/clickstreamEventService";
|
||||
import { CLICKSTREAM_EVENT_NAMES } from "../../common/Constants";
|
||||
|
||||
interface IGeolocationItem {
|
||||
geolocationItem: IGeoLocation;
|
||||
@@ -20,6 +22,7 @@ const GeolocationItem = ({ geolocationItem, showSeparator = true }: IGeolocation
|
||||
const locationTime = dateFormat(new Date(geolocationItem?.timeStamp), BUSINESS_TIME_FORMAT);
|
||||
|
||||
const openGeolocation = () => {
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_VIEW_MAP_GEO_CLICKED, {latitude: geolocationItem.latitude, longitude: geolocationItem.longitude,})
|
||||
const geolocationUrl = `http://maps.google.com/?q=${geolocationItem?.latitude},${geolocationItem?.longitude}`;
|
||||
if(!geolocationUrl) return;
|
||||
|
||||
|
||||
@@ -40,6 +40,9 @@ import { setFeedbackHistory } from '../../reducer/feedbackHistorySlice';
|
||||
import OutstandingAmountBreakupBottomSheet from './OutstandingAmountBreakupBottomSheet';
|
||||
import { getCaseUnifiedData, UnifiedCaseDetailsTypes } from '../../action/caseApiActions';
|
||||
import useIsOnline from '../../hooks/useIsOnline';
|
||||
import { CLICKSTREAM_EVENT_NAMES } from "../../common/Constants";
|
||||
import { addClickstreamEvent } from "../../services/clickstreamEventService";
|
||||
import { getLoanAccountNumber } from "../../components/utlis/commonFunctions";
|
||||
|
||||
interface ICaseDetails {
|
||||
route: {
|
||||
@@ -216,6 +219,7 @@ const CollectionCaseDetails: React.FC<ICaseDetails> = props => {
|
||||
}
|
||||
|
||||
const collectMoneyCta = () => {
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_COLLECT_MONEY_CLICKED, {lan: loanAccountNumber})
|
||||
navigateToScreen('registerPayments', {
|
||||
caseId,
|
||||
numbers: phoneNumbers,
|
||||
@@ -268,8 +272,10 @@ const CollectionCaseDetails: React.FC<ICaseDetails> = props => {
|
||||
{addressString}
|
||||
</Text>
|
||||
<Button
|
||||
onPress={() =>
|
||||
handleRouting(PageRouteEnum.ADDRESS_GEO)
|
||||
onPress={() =>{
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_VIEW_ADDRESSES_CLICKED, {lan: getLoanAccountNumber(caseDetail)});
|
||||
handleRouting(PageRouteEnum.ADDRESS_GEO)
|
||||
}
|
||||
}
|
||||
title="View all addresses"
|
||||
variant="primaryText"
|
||||
@@ -335,7 +341,8 @@ const CollectionCaseDetails: React.FC<ICaseDetails> = props => {
|
||||
]}>
|
||||
<Pressable
|
||||
onPress={() => {
|
||||
setShowOutstandingAmountBottomSheet(
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_TOTAL_OUTSTANDING_BREAKUP_CLICKED, {lan: loanAccountNumber})
|
||||
setShowOutstandingAmountBottomSheet(
|
||||
true,
|
||||
);
|
||||
}}
|
||||
@@ -389,7 +396,8 @@ const CollectionCaseDetails: React.FC<ICaseDetails> = props => {
|
||||
]}>
|
||||
<Pressable
|
||||
onPress={() => {
|
||||
navigateToScreen(PageRouteEnum.EMI_SCHEDULE, { loanAccountNumber , caseId })
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_VIEW_EMI_SCHEDULE_CLICKED, {lan: loanAccountNumber})
|
||||
navigateToScreen(PageRouteEnum.EMI_SCHEDULE, { loanAccountNumber , caseId })
|
||||
}}
|
||||
style={[
|
||||
GenericStyles.row,
|
||||
@@ -470,7 +478,10 @@ const CollectionCaseDetails: React.FC<ICaseDetails> = props => {
|
||||
<View style={[{ flexBasis: '40%' }]}>
|
||||
<TouchableOpacity
|
||||
activeOpacity={0.7}
|
||||
onPress={() => handleRouting(PageRouteEnum.PAST_FEEDBACK_DETAIL)}
|
||||
onPress={() => {
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_VIEW_PAST_FEEDBACKS_CLICKED, {lan: loanAccountNumber})
|
||||
handleRouting(PageRouteEnum.PAST_FEEDBACK_DETAIL)}
|
||||
}
|
||||
style={GenericStyles.flex20}>
|
||||
<Text
|
||||
style={[
|
||||
|
||||
@@ -6,13 +6,16 @@ import { toast } from '../../../RN-UI-LIB/src/components/toast';
|
||||
import { copyToClipboard } from '../../components/utlis/commonFunctions';
|
||||
import Text from '../../../RN-UI-LIB/src/components/Text';
|
||||
import CopyIcon from '../../../RN-UI-LIB/src/Icons/CopyIcon';
|
||||
import { addClickstreamEvent } from "../../services/clickstreamEventService";
|
||||
import { CLICKSTREAM_EVENT_NAMES } from "../../common/Constants";
|
||||
|
||||
interface ILANChip {
|
||||
loanAccountNumber: string;
|
||||
}
|
||||
const LANChip: React.FC<ILANChip> = ({ loanAccountNumber }) => {
|
||||
const copyLAN = () => {
|
||||
if (loanAccountNumber) {
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_COPY_LAN_CLICKED, {lan: loanAccountNumber})
|
||||
if (loanAccountNumber) {
|
||||
copyToClipboard(loanAccountNumber);
|
||||
toast({
|
||||
text1: ToastMessages.SUCCESS_COPYING_LAN,
|
||||
|
||||
@@ -1,14 +1,5 @@
|
||||
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
||||
import {
|
||||
Animated,
|
||||
Image,
|
||||
Modal,
|
||||
SafeAreaView,
|
||||
StyleSheet,
|
||||
TouchableOpacity,
|
||||
View,
|
||||
} from 'react-native';
|
||||
import { GlobalDocumentMap } from '../../../App';
|
||||
import { Animated, Modal, SafeAreaView, StyleSheet, TouchableOpacity, View, } from 'react-native';
|
||||
import RNFastImage from '../../../RN-UI-LIB/src/components/FastImage';
|
||||
import Heading from '../../../RN-UI-LIB/src/components/Heading';
|
||||
import LineLoader from '../../../RN-UI-LIB/src/components/suspense_loader/LineLoader';
|
||||
@@ -18,13 +9,22 @@ import CloseIcon from '../../../RN-UI-LIB/src/Icons/CloseIcon';
|
||||
import { GenericStyles } from '../../../RN-UI-LIB/src/styles';
|
||||
import { COLORS } from '../../../RN-UI-LIB/src/styles/colors';
|
||||
import { dateFormat } from '../../../RN-UI-LIB/src/utlis/dates';
|
||||
import { decideLoadingState, findDocumentByDocumentType, getDocumentList, RELATIVE_PATH_PREFIX } from '../../components/utlis/commonFunctions';
|
||||
import {
|
||||
decideLoadingState,
|
||||
findDocumentByDocumentType,
|
||||
getDocumentList,
|
||||
getLoanAccountNumber,
|
||||
RELATIVE_PATH_PREFIX
|
||||
} from '../../components/utlis/commonFunctions';
|
||||
|
||||
import useFetchDocument from '../../hooks/useFetchDocument';
|
||||
import useIsOnline from '../../hooks/useIsOnline';
|
||||
import CaseItemAvatar from '../allCases/CaseItemAvatar';
|
||||
import AvCaseData from './AvCaseData';
|
||||
import CollectionCaseData from './CollectionCaseData';
|
||||
import { CaseDetail, DOCUMENT_TYPE } from './interface';
|
||||
import { addClickstreamEvent } from "../../services/clickstreamEventService";
|
||||
import { CLICKSTREAM_EVENT_NAMES } from "../../common/Constants";
|
||||
|
||||
interface IUserDetailsSection {
|
||||
caseDetail: CaseDetail;
|
||||
@@ -54,6 +54,10 @@ const UserDetailsSection: React.FC<IUserDetailsSection> = props => {
|
||||
);
|
||||
|
||||
const handleOpenClose = useCallback(() => {
|
||||
// if it's currently not open, then handleOpenClose() will open it, hence the !
|
||||
if(!openImage){
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_VIEW_PHOTO_CLICKED, {lan: getLoanAccountNumber(caseDetail)})
|
||||
}
|
||||
setOpenImage(prev => !prev);
|
||||
}, []);
|
||||
|
||||
|
||||
@@ -16,6 +16,8 @@ import { RootState } from '../../../store/store';
|
||||
import { IFeedback } from '../../../types/feedback.types';
|
||||
import FeedbackDetailAnswerContainer from './FeedbackDetailAnswerContainer';
|
||||
import FeedbackDetailItem from './FeedbackDetailItem';
|
||||
import { addClickstreamEvent } from "../../../services/clickstreamEventService";
|
||||
import { CLICKSTREAM_EVENT_NAMES } from "../../../common/Constants";
|
||||
|
||||
const PAGE_TITLE = 'All feedbacks';
|
||||
const SCROLL_LAYOUT_OFFSET = 10;
|
||||
@@ -49,6 +51,11 @@ const FeedbackDetailContainer: React.FC<IFeedbackDetailContainer> = ({ route: ro
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [currentPage, setCurrentPage] = useState(1);
|
||||
|
||||
|
||||
useEffect(()=>{
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_CASE_DETAILS_INDIVIDUAL_FEEDBACK_CLICKED, {lan: loanAccountNumber, feedbackId: activeFeedbackReferenceId})
|
||||
},[])
|
||||
|
||||
useEffect(() => {
|
||||
if (currentPage == 1) {
|
||||
setFeedbackList(feedbackListFromCache);
|
||||
@@ -69,6 +76,7 @@ const FeedbackDetailContainer: React.FC<IFeedbackDetailContainer> = ({ route: ro
|
||||
throw res;
|
||||
})
|
||||
.catch(err => {
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_VIEW_PAST_FEEDBACK_NAVIGATION_PAGE_FAILED, {targetPageNumber: currentPage, lan: loanAccountNumber})
|
||||
logError(err);
|
||||
})
|
||||
.finally(() => {
|
||||
@@ -132,8 +140,14 @@ const FeedbackDetailContainer: React.FC<IFeedbackDetailContainer> = ({ route: ro
|
||||
}
|
||||
</ScrollView>
|
||||
<Pagination
|
||||
onNext={() => setCurrentPage(page => page + 1)}
|
||||
onPrev={() => setCurrentPage(page => page - 1)}
|
||||
onNext={() => {
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_VIEW_PAST_FEEDBACK_NEXT_PAGE_CLICKED, {currentPageNumber: currentPage, lan: loanAccountNumber})
|
||||
setCurrentPage(page => page + 1)
|
||||
}}
|
||||
onPrev={() => {
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_VIEW_PAST_FEEDBACK_PREV_PAGE_CLICKED, {currentPageNumber: currentPage, lan: loanAccountNumber})
|
||||
setCurrentPage(page => page - 1)
|
||||
}}
|
||||
currentPage={currentPage}
|
||||
totalPages={feedbackTotalPages}
|
||||
/>
|
||||
|
||||
@@ -20,6 +20,8 @@ import DropdownItem from './DropdownItem';
|
||||
import { PhoneNumber } from '../caseDetails/interface';
|
||||
import { setPaymentLink } from '../../reducer/paymentSlice';
|
||||
import { ToastMessages } from '../allCases/constants';
|
||||
import { addClickstreamEvent } from "../../services/clickstreamEventService";
|
||||
import { CLICKSTREAM_EVENT_NAMES } from "../../common/Constants";
|
||||
|
||||
interface IRegisterForm {
|
||||
selectedPhoneNumber: string;
|
||||
@@ -77,7 +79,8 @@ const RegisterPayments: React.FC<IRegisterPayments> = ({ route }) => {
|
||||
});
|
||||
|
||||
const copyButtonClick = () => {
|
||||
if (paymentLink) {
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_COPY_LINK_CLICKED, {amount: Number(getValues('amount')),lan : caseDetail.loanAccountNumber!!, phoneNumber: getValues('selectedPhoneNumber'), paymentLink })
|
||||
if (paymentLink) {
|
||||
copyToClipboard(paymentLink);
|
||||
toast({
|
||||
type: 'info',
|
||||
@@ -102,6 +105,7 @@ const RegisterPayments: React.FC<IRegisterPayments> = ({ route }) => {
|
||||
}
|
||||
|
||||
const generatePaymentLink = () => {
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_SEND_PAYMENT_LINK, {amount: Number(getValues('amount')),lan : caseDetail.loanAccountNumber!!, phoneNumber: getValues('selectedPhoneNumber') })
|
||||
dispatch(
|
||||
generatePaymentLinkAction(
|
||||
{
|
||||
@@ -151,7 +155,8 @@ const RegisterPayments: React.FC<IRegisterPayments> = ({ route }) => {
|
||||
<Dropdown
|
||||
placeholder="Select phone number"
|
||||
onValueChange={number => {
|
||||
setValue('selectedPhoneNumber', number);
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_COLLECT_MONEY_NUMBER_CHANGED, {phoneNumber: number, lan: caseDetail.loanAccountNumber!!})
|
||||
setValue('selectedPhoneNumber', number);
|
||||
dispatch(setPaymentLink(''));
|
||||
trigger();
|
||||
}}
|
||||
|
||||
Reference in New Issue
Block a user