Files
frontend-app-authoring/src/editors/hooks.js
2022-09-07 12:22:27 -04:00

57 lines
1.2 KiB
JavaScript

import { useEffect } from 'react';
import { sendTrackEvent } from '@edx/frontend-platform/analytics';
import analyticsEvt from './data/constants/analyticsEvt';
import { thunkActions } from './data/redux';
import * as module from './hooks';
export const initializeApp = ({ dispatch, data }) => useEffect(
() => dispatch(thunkActions.app.initialize(data)),
[data],
);
export const navigateTo = (destination) => {
window.location.assign(destination);
};
export const navigateCallback = ({
destination,
analyticsEvent,
analytics,
}) => () => {
if (process.env.NODE_ENV !== 'development' && analyticsEvent && analytics) {
sendTrackEvent(analyticsEvent, analytics);
}
module.navigateTo(destination);
};
export const nullMethod = () => ({});
export const saveBlock = ({
analytics,
content,
destination,
dispatch,
validateEntry,
}) => {
let attemptSave = false;
if (validateEntry) {
if (validateEntry()) {
attemptSave = true;
}
} else {
attemptSave = true;
}
if (attemptSave) {
dispatch(thunkActions.app.saveBlock({
returnToUnit: module.navigateCallback({
destination,
analyticsEvent: analyticsEvt.editorSaveClick,
analytics,
}),
content,
}));
}
};