UNPKG

@benshi.ai/js-sdk

Version:

Benshi SDK

36 lines (28 loc) 1.25 kB
import { NetworkProxy } from "../../../drivers/network/typings" import { IStorage } from "../../../drivers/storage/typings" import { INudgesRepository, Nudge } from "./typings" const SHOWN_NUDGES = 'bslog-shown-nudges' export default class NudgesRepository implements INudgesRepository{ private apiURL private networkDriver private storageDriver public constructor(url: string, bsNetwork: NetworkProxy, storageDriver: IStorage) { this.apiURL = url this.networkDriver = bsNetwork this.storageDriver = storageDriver } public markNudgeAsShown = (nudgeId: string): void => { const shownNudges = JSON.parse(this.storageDriver.get(SHOWN_NUDGES)) || [] shownNudges.push(nudgeId) this.storageDriver.save(SHOWN_NUDGES, JSON.stringify(shownNudges)) } public haveBeenAlreadyShown = (nudgeId: string): boolean => { const shownNudges = JSON.parse(this.storageDriver.get(SHOWN_NUDGES)) || [] return shownNudges.includes(nudgeId) } public getNudges = async (userId: string): Promise<Nudge[]> => { const url = `${this.apiURL}/${userId}` const listOfNudges = (await this.networkDriver.get(`${url}`)) || [] return listOfNudges } }