NTP-7916 | coach mark extendible

This commit is contained in:
Aman Chaturvedi
2024-12-16 18:30:15 +05:30
parent f7076fce80
commit 0559fe1aee
2 changed files with 19 additions and 8 deletions

View File

@@ -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);

View File

@@ -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}