import { Collection } from 'framework/collection';
import { SettingsStore } from 'comp/settings/settings-store';
import { FileInfoModel } from 'models/file-info-model';

class FileInfoCollection extends Collection {
    static model = FileInfoModel;

    load() {
        return SettingsStore.load('file-info').then(data => {
            if (data) {
                for (const item of data) {
                    this.push(new FileInfoModel(item));
                }
            }
        });
    }

    save() {
        SettingsStore.save('file-info', this);
    }

    getMatch(storage, name, path) {
        return this.find(fi => {
            return (
                (fi.storage || '') === (storage || '') &&
                (fi.name || '') === (name || '') &&
                (fi.path || '') === (path || '')
            );
        });
    }

    getByName(name) {
        return this.find(file => file.name.toLowerCase() === name.toLowerCase());
    }
}

const instance = new FileInfoCollection();

export { instance as FileInfoCollection };
