import * as types from 'app/types' import { store, history, dispatch } from 'app/store' import { api, post, pad, preloadImage } from 'app/utils' import actions from 'app/actions' // import { session } from 'app/session' import throttle from 'lodash.throttle' import debounce from 'lodash.debounce' import { ZOOM_STEPS } from 'app/constants' import { getFirstPunctuationMarkIndex, cutFirstSentence } from 'app/views/align/align.util' export const setScrollPosition = start_ts => dispatch => ( dispatch({ type: types.align.set_display_setting, key: 'start_ts', value: start_ts }) ) export const setZoom = zoom => dispatch => { if (0 <= zoom && zoom < ZOOM_STEPS.length) { dispatch({ type: types.align.set_display_setting, key: 'zoom', value: zoom }) } } export const throttledSetZoom = throttle(zoom => dispatch => { setZoom(zoom)(dispatch) }, 250, { leading: true }) export const setCursor = cursor_ts => dispatch => ( dispatch({ type: types.align.set_display_setting, key: 'cursor_ts', value: cursor_ts }) ) export const setSelectedAnnotation = annotation => dispatch => { dispatch({ type: types.align.set_selected_annotation, data: annotation }) debouncedUpdateAnnotation.flush() } export const clearSelectedAnnotation = () => dispatch => { dispatch({ type: types.align.clear_selected_annotation }) debouncedUpdateAnnotation.flush() } export const updateSelectedAnnotation = annotation => dispatch => { dispatch({ type: types.align.set_selected_annotation, data: { ...annotation } }) debouncedUpdateAnnotation(annotation) } export const debouncedUpdateAnnotation = debounce(annotation => { console.log('updating annotation', annotation) actions.annotation.update(annotation) }, 2000, { leading: false, trailing: true }) export const setSelectedParagraph = paragraph_id => dispatch => { dispatch({ type: types.align.set_display_setting, key: 'selected_paragraph_id', value: paragraph_id }) } export const clearSelectedParagraph = paragraph_id => dispatch => { dispatch({ type: types.align.set_display_setting, key: 'selected_paragraph_id', value: -1 }) } export const showNewAnnotationForm = (start_ts, text) => dispatch => { let croppedText; if (store.getState().align.annotation.start_ts) { croppedText = store.getState().align.annotation.text } else { croppedText = cutFirstSentence(text) } // console.log(croppedText) dispatch({ type: types.align.set_temporary_annotation, data: { id: 'new', start_ts, end_ts: 0.0, text: croppedText, type: 'sentence', settings: {}, } }) } export const showEditAnnotationForm = (annotation) => dispatch => { dispatch({ type: types.align.set_temporary_annotation, data: annotation, }) } export const updateAnnotationForm = (key, value) => dispatch => { dispatch({ type: types.align.update_temporary_annotation, key, value }) } export const updateAnnotationSettings = (key, value) => dispatch => { dispatch({ type: types.align.update_temporary_annotation_settings, key, value }) } export const hideAnnotationForm = () => dispatch => { dispatch({ type: types.align.set_temporary_annotation, data: {} }) }