Skip to content

Commit 1a698c5

Browse files
authored
fix(sharedlinksettings): fix expiration timestamp (#3179)
* fix(sharedlinksettings): fix expiration timestamp * fix(sharedlinksettings): fix expiration timestamp * fix(sharedlinksettings): fix expiration timestamp * fix(sharedlinksettings): fix expiration timestamp * fix(sharedlinksettings): fix expiration timestamp
1 parent e918b5f commit 1a698c5

File tree

4 files changed

+31
-9
lines changed

4 files changed

+31
-9
lines changed

src/features/shared-link-settings-modal/ExpirationSection.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const displayFormat = {
1717

1818
const ExpirationSection = ({
1919
canChangeExpiration,
20+
dateFormat,
2021
error,
2122
expirationCheckboxProps = {},
2223
expirationDate,
@@ -29,6 +30,7 @@ const ExpirationSection = ({
2930
const datepicker = (
3031
<div>
3132
<DatePicker
33+
dateFormat={dateFormat}
3234
displayFormat={displayFormat}
3335
error={error}
3436
hideLabel
@@ -63,6 +65,8 @@ const ExpirationSection = ({
6365

6466
ExpirationSection.propTypes = {
6567
canChangeExpiration: PropTypes.bool.isRequired,
68+
/** The format of the date value for form submit */
69+
dateFormat: PropTypes.string,
6670
error: PropTypes.string,
6771
expirationCheckboxProps: PropTypes.object,
6872
expirationDate: PropTypes.instanceOf(Date),

src/features/shared-link-settings-modal/SharedLinkSettingsModal.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ function getAccessNoticeMessageId(accessLevel, canDownload) {
4949

5050
class SharedLinkSettingsModal extends Component {
5151
static propTypes = {
52+
/** The format of the expiration date value for form submit */
53+
dateFormat: PropTypes.string,
5254
hideVanityNameSection: PropTypes.bool,
5355
isOpen: PropTypes.bool,
5456
onRequestClose: PropTypes.func,
@@ -145,6 +147,7 @@ class SharedLinkSettingsModal extends Component {
145147
this.state = {
146148
expirationDate: props.expirationTimestamp ? new Date(props.expirationTimestamp) : null,
147149
expirationError: props.expirationError,
150+
expirationFormattedDate: props.expirationTimestamp ? new Date(props.expirationTimestamp) : null,
148151
isVanityEnabled: !!props.vanityName,
149152
isDownloadEnabled: props.isDownloadEnabled,
150153
isExpirationEnabled: !!props.expirationTimestamp,
@@ -176,7 +179,7 @@ class SharedLinkSettingsModal extends Component {
176179
event.preventDefault();
177180

178181
const {
179-
expirationDate,
182+
expirationFormattedDate,
180183
isDownloadEnabled,
181184
isExpirationEnabled,
182185
isPasswordEnabled,
@@ -185,7 +188,7 @@ class SharedLinkSettingsModal extends Component {
185188
} = this.state;
186189

187190
this.props.onSubmit({
188-
expirationTimestamp: expirationDate ? expirationDate.getTime() : undefined,
191+
expirationTimestamp: expirationFormattedDate || undefined,
189192
isDownloadEnabled,
190193
isExpirationEnabled,
191194
isPasswordEnabled,
@@ -212,8 +215,8 @@ class SharedLinkSettingsModal extends Component {
212215
this.setState({ isPasswordEnabled: event.target.checked });
213216
};
214217

215-
onExpirationDateChange = date => {
216-
this.setState({ expirationDate: date, expirationError: undefined });
218+
onExpirationDateChange = (date, formattedDate) => {
219+
this.setState({ expirationDate: date, expirationFormattedDate: formattedDate, expirationError: undefined });
217220
};
218221

219222
onExpirationCheckboxChange = event => {
@@ -288,12 +291,13 @@ class SharedLinkSettingsModal extends Component {
288291
}
289292

290293
renderExpirationSection() {
291-
const { canChangeExpiration, expirationCheckboxProps, expirationInputProps } = this.props;
294+
const { canChangeExpiration, dateFormat, expirationCheckboxProps, expirationInputProps } = this.props;
292295
const { expirationDate, isExpirationEnabled, expirationError } = this.state;
293296

294297
return (
295298
<ExpirationSection
296299
canChangeExpiration={canChangeExpiration}
300+
dateFormat={dateFormat}
297301
error={expirationError}
298302
expirationCheckboxProps={expirationCheckboxProps}
299303
expirationDate={expirationDate}

src/features/shared-link-settings-modal/__tests__/ExpirationSection.test.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,5 +95,14 @@ describe('features/shared-link-settings-modal/ExpirationSection', () => {
9595

9696
expect(wrapper.prop('inputProps')['data-prop']).toEqual('input');
9797
});
98+
99+
test('should pass dateFormat to DatePicker', () => {
100+
const dateFormat = 'utcTime';
101+
const wrapper = getSubsection({
102+
dateFormat,
103+
});
104+
105+
expect(wrapper.prop('dateFormat')).toEqual(dateFormat);
106+
});
98107
});
99108
});

src/features/shared-link-settings-modal/__tests__/SharedLinkSettingsModal.test.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,9 @@ describe('features/shared-link-settings-modal/SharedLinkSettingsModal', () => {
8585

8686
describe('onSubmit()', () => {
8787
test('should preventDefault and call props.onSubmit', () => {
88-
const expirationDate = new Date();
88+
const expirationFormattedDate = new Date().getTime();
8989
const formState = {
90-
expirationDate,
90+
expirationFormattedDate,
9191
isDownloadEnabled: true,
9292
isExpirationEnabled: true,
9393
isPasswordEnabled: true,
@@ -96,7 +96,7 @@ describe('features/shared-link-settings-modal/SharedLinkSettingsModal', () => {
9696
};
9797
const wrapper = getWrapper({
9898
onSubmit: sandbox.mock().withArgs({
99-
expirationTimestamp: expirationDate.getTime(),
99+
expirationTimestamp: expirationFormattedDate,
100100
isDownloadEnabled: true,
101101
isExpirationEnabled: true,
102102
isPasswordEnabled: true,
@@ -153,12 +153,14 @@ describe('features/shared-link-settings-modal/SharedLinkSettingsModal', () => {
153153
describe('onExpirationDateChange()', () => {
154154
test('should set state.expirationDate', () => {
155155
const newDate = new Date();
156+
const newFormattedDate = 1671202800000;
156157

157158
const wrapper = getWrapper({ expirationError: 'hi' });
158159

159-
wrapper.instance().onExpirationDateChange(newDate);
160+
wrapper.instance().onExpirationDateChange(newDate, newFormattedDate);
160161

161162
expect(wrapper.state('expirationDate')).toEqual(newDate);
163+
expect(wrapper.state('expirationFormattedDate')).toEqual(newFormattedDate);
162164
expect(wrapper.state('expirationError')).toBeFalsy();
163165
});
164166
});
@@ -240,9 +242,11 @@ describe('features/shared-link-settings-modal/SharedLinkSettingsModal', () => {
240242

241243
describe('renderExpirationSection()', () => {
242244
test('should render an ExpirationSection', () => {
245+
const dateFormat = 'utcTime';
243246
const expirationDate = new Date('11/7/17');
244247

245248
const wrapper = getWrapper({
249+
dateFormat,
246250
expirationTimestamp: 123,
247251
});
248252

@@ -255,6 +259,7 @@ describe('features/shared-link-settings-modal/SharedLinkSettingsModal', () => {
255259
const section = wrapper.find('ExpirationSection');
256260
expect(section.length).toBe(1);
257261
expect(section.prop('canChangeExpiration')).toEqual(canChangeExpiration);
262+
expect(section.prop('dateFormat')).toEqual(dateFormat);
258263
expect(section.prop('expirationDate')).toEqual(expirationDate);
259264
expect(section.prop('isExpirationEnabled')).toBe(true);
260265
expect(section.prop('onCheckboxChange')).toEqual(wrapper.instance().onExpirationCheckboxChange);

0 commit comments

Comments
 (0)