You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ambar2/FrontEnd/src/routes/SearchPage/modules/FileVisibilityReducer.js

70 lines
2.2 KiB
JavaScript

import { stateValueExtractor } from 'utils'
import { hitsModel } from 'models/'
import { handleError } from 'routes/CoreLayout/modules/CoreLayout'
import { startLoadingIndicator, stopLoadingIndicator } from 'routes/MainLayout/modules/MainLayout'
export const TOGGLE_IS_HIDDEN_FILE = 'FILE_VISIBILITY.TOGGLE_IS_HIDDEN_FILE'
export const hideFile = (fileId) => {
return (dispatch, getState) => {
const urls = stateValueExtractor.getUrls(getState())
const defaultSettings = stateValueExtractor.getDefaultSettings(getState())
dispatch(toggleIsHiddenFile(fileId, true))
fetch(urls.ambarWebApiHideFile(fileId), {
method: 'PUT',
...defaultSettings
})
.then(resp => {
if (resp.status == 200) {
return
}
else { throw resp }
})
.catch((errorPayload) => {
dispatch(handleError(errorPayload))
console.error('hideFile', errorPayload)
})
}
}
export const showFile = (fileId) => {
return (dispatch, getState) => {
const urls = stateValueExtractor.getUrls(getState())
const defaultSettings = stateValueExtractor.getDefaultSettings(getState())
dispatch(toggleIsHiddenFile(fileId, false))
fetch(urls.ambarWebApiUnhideFile(fileId), {
method: 'PUT',
...defaultSettings
})
.then(resp => {
if (resp.status == 200) {
return
}
else { throw resp }
})
.catch((errorPayload) => {
dispatch(handleError(errorPayload))
console.error('showFile', errorPayload)
})
}
}
const toggleIsHiddenFile = (fileId, value) => {
return {
type: TOGGLE_IS_HIDDEN_FILE,
fileId: fileId,
value: value
}
}
export const ACTION_HANDLERS = {
[TOGGLE_IS_HIDDEN_FILE]: (state, action) => {
const oldHit = hitsModel.getHit(state, action.fileId)
const hit = { ...oldHit, isHidden: action.value, hidden_mark: action.value ? {} : null }
return hitsModel.updateHits(state, action.fileId, hit)
}
}