/* tslint:disable */
/* eslint-disable */
/**
 * Jellyfin API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 10.8.9
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { exists, mapValues } from '../runtime';
import type { ScrollDirection } from './ScrollDirection';
import {
    ScrollDirectionFromJSON,
    ScrollDirectionFromJSONTyped,
    ScrollDirectionToJSON,
} from './ScrollDirection';
import type { SortOrder } from './SortOrder';
import {
    SortOrderFromJSON,
    SortOrderFromJSONTyped,
    SortOrderToJSON,
} from './SortOrder';

/**
 * Defines the display preferences for any item that supports them (usually Folders).
 * @export
 * @interface DisplayPreferencesDto
 */
export interface DisplayPreferencesDto {
    /**
     * Gets or sets the user id.
     * @type {string}
     * @memberof DisplayPreferencesDto
     */
    id?: string | null;
    /**
     * Gets or sets the type of the view.
     * @type {string}
     * @memberof DisplayPreferencesDto
     */
    viewType?: string | null;
    /**
     * Gets or sets the sort by.
     * @type {string}
     * @memberof DisplayPreferencesDto
     */
    sortBy?: string | null;
    /**
     * Gets or sets the index by.
     * @type {string}
     * @memberof DisplayPreferencesDto
     */
    indexBy?: string | null;
    /**
     * Gets or sets a value indicating whether [remember indexing].
     * @type {boolean}
     * @memberof DisplayPreferencesDto
     */
    rememberIndexing?: boolean;
    /**
     * Gets or sets the height of the primary image.
     * @type {number}
     * @memberof DisplayPreferencesDto
     */
    primaryImageHeight?: number;
    /**
     * Gets or sets the width of the primary image.
     * @type {number}
     * @memberof DisplayPreferencesDto
     */
    primaryImageWidth?: number;
    /**
     * Gets or sets the custom prefs.
     * @type {{ [key: string]: string; }}
     * @memberof DisplayPreferencesDto
     */
    customPrefs?: { [key: string]: string; };
    /**
     * 
     * @type {ScrollDirection}
     * @memberof DisplayPreferencesDto
     */
    scrollDirection?: ScrollDirection;
    /**
     * Gets or sets a value indicating whether to show backdrops on this item.
     * @type {boolean}
     * @memberof DisplayPreferencesDto
     */
    showBackdrop?: boolean;
    /**
     * Gets or sets a value indicating whether [remember sorting].
     * @type {boolean}
     * @memberof DisplayPreferencesDto
     */
    rememberSorting?: boolean;
    /**
     * 
     * @type {SortOrder}
     * @memberof DisplayPreferencesDto
     */
    sortOrder?: SortOrder;
    /**
     * Gets or sets a value indicating whether [show sidebar].
     * @type {boolean}
     * @memberof DisplayPreferencesDto
     */
    showSidebar?: boolean;
    /**
     * Gets or sets the client.
     * @type {string}
     * @memberof DisplayPreferencesDto
     */
    client?: string | null;
}

/**
 * Check if a given object implements the DisplayPreferencesDto interface.
 */
export function instanceOfDisplayPreferencesDto(value: object): boolean {
    let isInstance = true;

    return isInstance;
}

export function DisplayPreferencesDtoFromJSON(json: any): DisplayPreferencesDto {
    return DisplayPreferencesDtoFromJSONTyped(json, false);
}

export function DisplayPreferencesDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): DisplayPreferencesDto {
    if ((json === undefined) || (json === null)) {
        return json;
    }
    return {
        
        'id': !exists(json, 'Id') ? undefined : json['Id'],
        'viewType': !exists(json, 'ViewType') ? undefined : json['ViewType'],
        'sortBy': !exists(json, 'SortBy') ? undefined : json['SortBy'],
        'indexBy': !exists(json, 'IndexBy') ? undefined : json['IndexBy'],
        'rememberIndexing': !exists(json, 'RememberIndexing') ? undefined : json['RememberIndexing'],
        'primaryImageHeight': !exists(json, 'PrimaryImageHeight') ? undefined : json['PrimaryImageHeight'],
        'primaryImageWidth': !exists(json, 'PrimaryImageWidth') ? undefined : json['PrimaryImageWidth'],
        'customPrefs': !exists(json, 'CustomPrefs') ? undefined : json['CustomPrefs'],
        'scrollDirection': !exists(json, 'ScrollDirection') ? undefined : ScrollDirectionFromJSON(json['ScrollDirection']),
        'showBackdrop': !exists(json, 'ShowBackdrop') ? undefined : json['ShowBackdrop'],
        'rememberSorting': !exists(json, 'RememberSorting') ? undefined : json['RememberSorting'],
        'sortOrder': !exists(json, 'SortOrder') ? undefined : SortOrderFromJSON(json['SortOrder']),
        'showSidebar': !exists(json, 'ShowSidebar') ? undefined : json['ShowSidebar'],
        'client': !exists(json, 'Client') ? undefined : json['Client'],
    };
}

export function DisplayPreferencesDtoToJSON(value?: DisplayPreferencesDto | null): any {
    if (value === undefined) {
        return undefined;
    }
    if (value === null) {
        return null;
    }
    return {
        
        'Id': value.id,
        'ViewType': value.viewType,
        'SortBy': value.sortBy,
        'IndexBy': value.indexBy,
        'RememberIndexing': value.rememberIndexing,
        'PrimaryImageHeight': value.primaryImageHeight,
        'PrimaryImageWidth': value.primaryImageWidth,
        'CustomPrefs': value.customPrefs,
        'ScrollDirection': ScrollDirectionToJSON(value.scrollDirection),
        'ShowBackdrop': value.showBackdrop,
        'RememberSorting': value.rememberSorting,
        'SortOrder': SortOrderToJSON(value.sortOrder),
        'ShowSidebar': value.showSidebar,
        'Client': value.client,
    };
}

