Skip to content

Commit e4f6a7e

Browse files
ZhijieZhangjustinjung04
authored andcommitted
[bugfix, update] fixes #101 and resolves #102. Also moved key listener in PrintModal to onKeyDown.js. (#103)
1 parent ff4bc53 commit e4f6a7e

File tree

7 files changed

+28
-29
lines changed

7 files changed

+28
-29
lines changed

src/apis/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ import isToolDisabled from './isToolDisabled';
6969
import setNotesPanelSort from './setNotesPanelSort';
7070
import addSortStrategy from './addSortStrategy';
7171
import updateOutlines from './updateOutlines';
72+
import print from './print';
7273

7374
export default {
7475
loadDocument,
@@ -141,5 +142,6 @@ export default {
141142
isToolDisabled,
142143
setNotesPanelSort,
143144
addSortStrategy,
144-
updateOutlines
145+
updateOutlines,
146+
print
145147
};

src/apis/print.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import print from 'helpers/print';
2+
import selectors from 'selectors';
3+
4+
export default store => () => {
5+
print(store.dispatch, selectors.isEmbedPrintSupported(store.getState()));
6+
};

src/components/PrintModal/PrintModal.js

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import Input from 'components/Input';
77

88
import core from 'core';
99
import getPagesToPrint from 'helpers/getPagesToPrint';
10-
import print from 'helpers/print';
1110
import getClassName from 'helpers/getClassName';
1211
import actions from 'actions';
1312
import selectors from 'selectors';
@@ -41,34 +40,13 @@ class PrintModal extends React.PureComponent {
4140
};
4241
}
4342

44-
componentDidMount() {
45-
document.addEventListener('keydown', this.onKeyDown);
46-
}
47-
4843
componentDidUpdate(prevProps) {
4944
if (!prevProps.isOpen && this.props.isOpen) {
5045
this.onChange();
5146
this.props.closeElements([ 'signatureModal', 'loadingModal', 'progressModal', 'errorModal' ]);
5247
}
5348
}
5449

55-
componentWillUnmount() {
56-
document.removeEventListener('keydown', this.onKeyDown);
57-
}
58-
59-
onKeyDown = e => {
60-
const { dispatch, isEmbedPrintSupported } = this.props;
61-
62-
if ((e.metaKey || e.ctrlKey) && e.which === 80) { // (Cmd/Ctrl + P)
63-
e.preventDefault();
64-
if (this.props.isDisabled) {
65-
console.warn('Print has been disabled.');
66-
} else {
67-
print(dispatch, isEmbedPrintSupported);
68-
}
69-
}
70-
}
71-
7250
onChange = () => {
7351
const { currentPage, pageLabels } = this.props;
7452
let pagesToPrint = [];

src/event-listeners/onKeyDown.js

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,15 @@ import core from 'core';
22
import openFilePicker from 'helpers/openFilePicker';
33
import copyText from 'helpers/copyText';
44
import setToolModeAndGroup from 'helpers/setToolModeAndGroup';
5-
import { zoomIn, zoomOut} from 'helpers/zoom';
5+
import { zoomIn, zoomOut } from 'helpers/zoom';
6+
import print from 'helpers/print';
67
import createTextAnnotationAndSelect from 'helpers/createTextAnnotationAndSelect';
78
import actions from 'actions';
9+
import selectors from 'selectors';
810

9-
10-
export default dispatch => e => {
11+
export default store => e => {
12+
const { dispatch, getState } = store;
13+
const state = getState();
1114
const selectedTextFromCanvas = core.getSelectedText();
1215
const selectedTextFromDOM = window.getSelection().toString();
1316

@@ -51,6 +54,15 @@ export default dispatch => e => {
5154
} else {
5255
core.fitToWidth();
5356
}
57+
} else if (e.key === 'P' || e.which === 80) { // (Ctrl/Cmd + P)
58+
e.preventDefault();
59+
60+
const isPrintDisabled = selectors.isElementDisabled(state, 'printModal');
61+
if (isPrintDisabled) {
62+
console.warn('Print has been disabled.');
63+
} else {
64+
print(dispatch, selectors.isEmbedPrintSupported(state));
65+
}
5466
}
5567
}
5668
} else {

src/helpers/eventHandler.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export default store => {
1818
const onAnnotationChanged = eventListeners.onAnnotationChanged(dispatch);
1919
const onStampAnnotationAdded = eventListeners.onStampAnnotationAdded(dispatch);
2020
const onStickyAnnotationAdded = eventListeners.onStickyAnnotationAdded(store);
21-
const onKeyDown = eventListeners.onKeyDown(dispatch);
21+
const onKeyDown = eventListeners.onKeyDown(store);
2222
const onFullScreenChange = eventListeners.onFullScreenChange(dispatch);
2323
const onLayoutChanged = eventListeners.onLayoutChanged(dispatch);
2424

src/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ if (window.CanvasRenderingContext2D) {
184184
isReadOnly: apis.isReadOnly,
185185
isToolDisabled: apis.isToolDisabled,
186186
loadDocument: apis.loadDocument(store),
187+
print: apis.print(store),
187188
registerTool: apis.registerTool(store),
188189
removeSearchListener: apis.removeSearchListener(store),
189190
rotateClockwise: apis.rotateClockwise,

src/redux/actions/exposedActions.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,11 +114,11 @@ export const setSortNotesBy = sortStrategy => {
114114
export const setNoteDateFormat = noteDateFormat => ({ type: 'SET_NOTE_DATE_FORMAT', payload: { noteDateFormat } });
115115
export const updateTool = (toolName, properties) => ({ type: 'UPDATE_TOOL', payload: { toolName, properties } });
116116
export const setCustomPanel = newPanel => ({ type: 'SET_CUSTOM_PANEL', payload: { newPanel } });
117-
export const useEmbeddedPrint = useEmbeddedPrint => ({ type: 'USE_EMBEDDED_PRINT', payload: { useEmbeddedPrint } });
117+
export const useEmbeddedPrint = (useEmbeddedPrint = true) => ({ type: 'USE_EMBEDDED_PRINT', payload: { useEmbeddedPrint } });
118118
export const setPageLabels = pageLabels => dispatch => {
119119
if (pageLabels.length !== core.getTotalPages()) {
120120
console.warn('Number of page labels do not match with the total pages.');
121121
return;
122122
}
123-
dispatch({ type: 'SET_PAGE_LABELS', payload: { pageLabels } });
123+
dispatch({ type: 'SET_PAGE_LABELS', payload: { pageLabels: pageLabels.map(String) } });
124124
};

0 commit comments

Comments
 (0)