Skip to content

Commit 6b9f7a7

Browse files
committed
Merge branch 'feedback-ui-2' into antonis/ios-accessibility
# Conflicts: # packages/core/src/js/feedback/ScreenshotButton.tsx # packages/core/test/feedback/ScreenshotButton.test.tsx # packages/core/test/feedback/__snapshots__/FeedbackWidgetManager.test.tsx.snap
2 parents 85d4f9e + 7f8e673 commit 6b9f7a7

File tree

2 files changed

+28
-21
lines changed

2 files changed

+28
-21
lines changed

packages/core/src/js/feedback/ScreenshotButton.tsx

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,23 @@ import { defaultScreenshotButtonConfiguration } from './defaults';
88
import { defaultScreenshotButtonStyles } from './FeedbackWidget.styles';
99
import { getTheme } from './FeedbackWidget.theme';
1010
import type { ScreenshotButtonProps, ScreenshotButtonStyles, ScreenshotButtonTextConfiguration } from './FeedbackWidget.types';
11-
import { hideScreenshotButton, showFeedbackWidget } from './FeedbackWidgetManager';
11+
import { hideScreenshotButton, showFeedbackWidget, showScreenshotButton } from './FeedbackWidgetManager';
1212
import { screenshotIcon } from './icons';
1313
import { lazyLoadFeedbackIntegration } from './lazy';
1414

1515
let capturedScreenshot: Screenshot | undefined;
1616

1717
const takeScreenshot = async (): Promise<void> => {
18-
const screenshots: Screenshot[] | null = await NATIVE.captureScreenshot();
19-
if (screenshots && screenshots.length > 0) {
20-
hideScreenshotButton();
21-
capturedScreenshot = screenshots[0];
22-
showFeedbackWidget();
23-
}
18+
hideScreenshotButton();
19+
setTimeout(async () => { // Delay capture to allow the button to hide
20+
const screenshots: Screenshot[] | null = await NATIVE.captureScreenshot();
21+
if (screenshots && screenshots.length > 0) {
22+
capturedScreenshot = screenshots[0];
23+
showFeedbackWidget();
24+
} else {
25+
showScreenshotButton();
26+
}
27+
}, 100);
2428
};
2529

2630
export const getCapturedScreenshot = (): Screenshot | undefined => {

packages/core/test/feedback/ScreenshotButton.test.tsx

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,24 +31,11 @@ const mockBase64Image = 'mockBase64ImageString';
3131
const mockCaptureScreenshot = NATIVE.captureScreenshot as jest.Mock;
3232
const mockEncodeToBase64 = NATIVE.encodeToBase64 as jest.Mock;
3333

34-
const defaultProps: ScreenshotButtonProps = {
35-
triggerLabel: 'Take Screenshot',
36-
};
37-
38-
export const customStyles: ScreenshotButtonStyles = {
39-
triggerButton: {
40-
backgroundColor: '#ffffff',
41-
},
42-
triggerText: {
43-
color: '#ff0000',
44-
},
45-
};
46-
4734
describe('ScreenshotButton', () => {
4835
beforeEach(() => {
4936
jest.clearAllMocks();
5037
FeedbackWidget.reset();
51-
getCapturedScreenshot();
38+
getCapturedScreenshot(); // cleans up stored screenshot if any
5239
resetFeedbackWidgetManager();
5340
resetFeedbackButtonManager();
5441
resetScreenshotButtonManager();
@@ -63,11 +50,22 @@ describe('ScreenshotButton', () => {
6350
});
6451

6552
it('matches the snapshot with custom texts', () => {
53+
const defaultProps: ScreenshotButtonProps = {
54+
triggerLabel: 'Take Screenshot',
55+
};
6656
const { toJSON } = render(<ScreenshotButton {...defaultProps}/>);
6757
expect(toJSON()).toMatchSnapshot();
6858
});
6959

7060
it('matches the snapshot with custom styles', () => {
61+
const customStyles: ScreenshotButtonStyles = {
62+
triggerButton: {
63+
backgroundColor: '#ffffff',
64+
},
65+
triggerText: {
66+
color: '#ff0000',
67+
},
68+
};
7169
const customStyleProps = {styles: customStyles};
7270
const { toJSON } = render(<ScreenshotButton {...customStyleProps}/>);
7371
expect(toJSON()).toMatchSnapshot();
@@ -183,6 +181,11 @@ describe('ScreenshotButton', () => {
183181
const takeScreenshotButtonAfterCapture = queryByText('Take a screenshot');
184182
expect(takeScreenshotButtonAfterCapture).toBeNull();
185183
});
184+
185+
await waitFor(() => {
186+
const removeScreenshotButtonAfterCapture = queryByText('Remove screenshot');
187+
expect(removeScreenshotButtonAfterCapture).toBeTruthy();
188+
});
186189
});
187190

188191
it('when the capture fails the capture button is still visible', async () => {

0 commit comments

Comments
 (0)