import isBrowser from "is-in-browser";

import { isDevEnvironment } from "../../../drivers/CfSystem";
import { NetworkProxy } from "../../../drivers/network/typings";
import FakeNudgeRepository from "./FakeNudgeRepository";
import DummyNudgeRepository from "./DummyNudgeRepository";
import NudgeRepository from "./NudgeRepository";
import { INudgesRepository } from "./typings";
import { IStorage } from "../../../drivers/storage/typings";

export default class NudgeRepositoryFactory {

    static getNudgeRepository(url: string, cfNetwork: NetworkProxy, storageDriver: IStorage): INudgesRepository {

        if (!isBrowser) {
            return new DummyNudgeRepository(url, cfNetwork)
        }

        if (isDevEnvironment()) {
            return new FakeNudgeRepository(url, cfNetwork)
        } else {
            return new NudgeRepository(url, cfNetwork, storageDriver)
        }
    }
}