import loading from '../../components/loading/loading';
import cardBuilder from '../../components/cardbuilder/cardBuilder';

function getQuery(params) {
    const key = getSavedQueryKey(params);
    let pageData = data[key];

    if (!pageData) {
        pageData = data[key] = {
            query: {
                SortBy: 'SortName',
                SortOrder: 'Ascending',
                IncludeItemTypes: 'Series',
                Recursive: true,
                Fields: 'DateCreated,PrimaryImageAspectRatio',
                StartIndex: 0
            }
        };
        pageData.query.ParentId = params.topParentId;
    }

    return pageData.query;
}

function getSavedQueryKey(params) {
    return `${params.topParentId}-studios`;
}

function getPromise(context, params) {
    const query = getQuery(params);
    loading.show();
    return ApiClient.getStudios(ApiClient.getCurrentUserId(), query);
}

function reloadItems(context, params, promise) {
    promise.then(function (result) {
        const elem = context.querySelector('#items');
        cardBuilder.buildCards(result.Items, {
            itemsContainer: elem,
            shape: 'backdrop',
            preferThumb: true,
            showTitle: true,
            scalable: true,
            centerText: true,
            overlayMoreButton: true,
            context: 'tvshows'
        });
        loading.hide();

        import('../../components/autoFocuser').then(({ default: autoFocuser }) => {
            autoFocuser.autoFocus(context);
        });
    });
}

const data = {};

export default function (view, params, tabContent) {
    let promise;
    const self = this;

    self.preRender = function () {
        promise = getPromise(view, params);
    };

    self.renderTab = function () {
        reloadItems(tabContent, params, promise);
    };
}

