NTP-7916 | coach mark extendible
This commit is contained in:
@@ -10,7 +10,12 @@ import { GLOBAL } from '@constants/Global';
|
||||
dayjs.extend(utc);
|
||||
dayjs.extend(timezone);
|
||||
|
||||
export const CoachMarkFeatures = {
|
||||
CASE_STATUS_FILTERS: 'caseStatusFilters',
|
||||
};
|
||||
|
||||
export const showCoachMark = async (
|
||||
featureName: string,
|
||||
agentId: string,
|
||||
serverTimestamp: string,
|
||||
callback: () => Promise<unknown>
|
||||
@@ -20,7 +25,7 @@ export const showCoachMark = async (
|
||||
}
|
||||
const coachMarkDoc = firestore().collection('coachMarks').doc(agentId);
|
||||
const userSnapshot = await coachMarkDoc.get();
|
||||
let coachMarkData = userSnapshot.data()?.coachMarkData;
|
||||
let coachMarkData = userSnapshot.data()?.[featureName];
|
||||
const dayJsTime = dayjs().tz(TIMEZONE_ASIA).format(TIMESTAMP_IST);
|
||||
const timestamp = serverTimestamp || dayJsTime;
|
||||
|
||||
@@ -33,7 +38,7 @@ export const showCoachMark = async (
|
||||
callback().then(
|
||||
async () => {
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_FILTER_COACHMARKS_LOADED);
|
||||
await coachMarkDoc.set({ coachMarkData }, { merge: true });
|
||||
await coachMarkDoc.set({ [featureName]: coachMarkData }, { merge: true });
|
||||
},
|
||||
(error) => {
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_FILTER_COACHMARKS_FAILED);
|
||||
@@ -54,7 +59,7 @@ export const showCoachMark = async (
|
||||
callback().then(
|
||||
async () => {
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_FILTER_COACHMARKS_LOADED);
|
||||
await coachMarkDoc.set({ coachMarkData }, { merge: true });
|
||||
await coachMarkDoc.set({ [featureName]: coachMarkData }, { merge: true });
|
||||
},
|
||||
(error) => {
|
||||
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_FILTER_COACHMARKS_FAILED);
|
||||
|
||||
@@ -23,7 +23,7 @@ import { getSelectedFilters } from '../../../../screens/Dashboard/utils';
|
||||
import { CopilotStep } from '@components/Tour/components/CopilotStep';
|
||||
import { useCopilot } from '@components/Tour/contexts/CopilotProvider';
|
||||
import { ENABLE_COACHMARK } from './constants';
|
||||
import { showCoachMark } from '@actions/filterActions';
|
||||
import { CoachMarkFeatures, showCoachMark } from '@actions/filterActions';
|
||||
|
||||
const FiltersContainer: React.FC<FilterContainerProps> = (props) => {
|
||||
const { closeFilterModal, isVisitPlan, isAgentDashboard } = props;
|
||||
@@ -109,10 +109,10 @@ const FiltersContainer: React.FC<FilterContainerProps> = (props) => {
|
||||
};
|
||||
|
||||
const startCoachMark = async () => {
|
||||
if(onLayoutHandled.current) return;
|
||||
if (onLayoutHandled.current) return;
|
||||
if (userId) {
|
||||
onLayoutHandled.current = true;
|
||||
showCoachMark(userId, serverTimestamp, copilot.start);
|
||||
showCoachMark(CoachMarkFeatures.CASE_STATUS_FILTERS, userId, serverTimestamp, copilot.start);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -207,7 +207,10 @@ const FiltersContainer: React.FC<FilterContainerProps> = (props) => {
|
||||
text={ENABLE_COACHMARK[filterKey]?.description}
|
||||
>
|
||||
<Text
|
||||
style={[filterKey === selectedFilterKey.filterKey && styles.blueText, GenericStyles.flex80]}
|
||||
style={[
|
||||
filterKey === selectedFilterKey.filterKey && styles.blueText,
|
||||
GenericStyles.flex80,
|
||||
]}
|
||||
dark
|
||||
>
|
||||
{filters[filterGroupKey].filters[filterKey].displayText}
|
||||
@@ -215,7 +218,10 @@ const FiltersContainer: React.FC<FilterContainerProps> = (props) => {
|
||||
</CopilotStep>
|
||||
) : (
|
||||
<Text
|
||||
style={[filterKey === selectedFilterKey.filterKey && styles.blueText, GenericStyles.flex80]}
|
||||
style={[
|
||||
filterKey === selectedFilterKey.filterKey && styles.blueText,
|
||||
GenericStyles.flex80,
|
||||
]}
|
||||
dark
|
||||
>
|
||||
{filters[filterGroupKey].filters[filterKey].displayText}
|
||||
|
||||
Reference in New Issue
Block a user