import {setEcoTimeout} from 'public/utils';


export default class {
    constructor(url, timeout) {
        this.url = url;
        this.timeout = timeout;
        this.promise = null;
        this.items = [];
    }

    drop() {
        this.promise = null;
    }

    fetch() {
        const promise = fetch(this.url).then(response =>
            response.ok ? response.json()
                        : Promise.reject(response)
        ).then(data => {
            this.items = data;
            return this.items
        })

        this.promise = promise;
        return promise;
    }

    refresh() {
        const promise = this.fetch();
        promise.then(data => {
            if(promise != this.promise)
                return [];

            setEcoTimeout(() => this.refresh(), this.timeout*1000)
        })
        return promise
    }
}
