@benshi.ai/js-sdk
Version:
Benshi SDK
36 lines (28 loc) • 1.25 kB
text/typescript
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
}
}