export default function libraryManagerReducer()

in src/views/app/reducers/libraryManagerReducer.ts [18:86]


export default function libraryManagerReducer(state = initalState, action) {
    switch (action.type) {
        case actions.LIBRARIES_REQUEST:
            return {
                ...state,
                requesting: true,
                errorMessage: "",
            };
        case actions.LIBRARIES_SUCCESS: {
            const types = util.parseGroups(action.libraries, "types");
            const categories = util.parseGroups(action.libraries, (item) => {
                return item.category || "Uncategorized";
            });
            // Sorting versions in descending order.
            // for loop is faster than forEach iterator.
            for (const element of action.libraries) {
                element.versions = element.versions ? element.versions.sort(versionCompare).reverse() : element.versions;
            }
            return {
                ...state,
                libraries: action.libraries,
                types: ["All", "Updatable", "Installed"].concat(types.sort()),
                categories: ["All"].concat(categories.sort()),
                requesting: false,
                errorMessage: "",
            };
        }
        case actions.LIBRARIES_FAILURE:
            return {
                ...state,
                libraries: [],
                requesting: false,
                errorMessage: action.errorMessage,
            };
        case actions.INSTALL_LIBRARY_REQUEST:
            return {
                ...state,
                installingLibraryName: action.libraryName,
            };
        case actions.INSTALL_LIBRARY_SUCCESS:
            return {
                ...state,
                installingLibraryName: "",
            };
        case actions.INSTALL_LIBRARY_FAILURE:
            return {
                ...state,
                installingLibraryName: "",
            };

        case actions.UNINSTALL_LIBRARY_REQUEST:
            return {
                ...state,
                uninstallingLibraryName: action.libraryName,
            };
        case actions.UNINSTALL_LIBRARY_SUCCESS:
            return {
                ...state,
                uninstallingLibraryName: "",
            };
        case actions.UNINSTALL_LIBRARY_FAILURE:
            return {
                ...state,
                uninstallingLibraryName: "",
            };
        default:
            return state;
    }
}