UNPKG

@told.club/sdk-rn

Version:
77 lines (66 loc) 2.04 kB
import AsyncStorage from '@react-native-async-storage/async-storage'; import type { SurveyReplied } from './__generated__/graphql'; interface ToldSurveyData { surveyId: string; seenCount: number; replied: number; date: string | undefined; } let surveyData: ToldSurveyData[] = []; const storageKey = 'ToldSurveyData'; export async function loadSurveyData() { const data = await AsyncStorage.getItem(storageKey); if (data) surveyData = JSON.parse(data) as ToldSurveyData[]; } export function getRepliedSurvey(): SurveyReplied[] { return surveyData .filter((data) => data.replied > 0) .map((data) => ({ surveyId: data.surveyId, date: data.date, replied: data.replied > 0, })); } export function setSeen(surveyId: string) { const actualData = surveyData.find((data) => data.surveyId === surveyId); if (actualData) { // If the survey is already seen, increment the seenCount actualData.seenCount += 1; } else { // If the survey is not seen, add it to the list surveyData.push({ surveyId, seenCount: 1, replied: 0, date: undefined, }); } AsyncStorage.setItem(storageKey, JSON.stringify(surveyData)); } export function setReplied(surveyId: string) { const actualData = surveyData.find((data) => data.surveyId === surveyId); if (actualData) { // If the survey is already seen, increment the replied actualData.replied += 1; actualData.date = new Date().toISOString(); } else { // If the survey is not seen, add it to the list surveyData.push({ surveyId, seenCount: 0, replied: 1, date: new Date().toISOString(), }); } AsyncStorage.setItem(storageKey, JSON.stringify(surveyData)); } export function isSeen(surveyId: string): boolean { return surveyData.some( (data) => data.surveyId === surveyId && data.seenCount > 0 ); } export function isReplied(surveyId: string): boolean { return surveyData.some( (data) => data.surveyId === surveyId && data.replied > 0 ); }