diff --git a/packages/insomnia/src/ui/components/modals/cookie-modify-modal.tsx b/packages/insomnia/src/ui/components/modals/cookie-modify-modal.tsx index 3bb4131aca..748e68781e 100644 --- a/packages/insomnia/src/ui/components/modals/cookie-modify-modal.tsx +++ b/packages/insomnia/src/ui/components/modals/cookie-modify-modal.tsx @@ -1,5 +1,6 @@ import { autoBindMethodsForReact } from 'class-autobind-decorator'; import clone from 'clone'; +import { isValid } from 'date-fns'; import { cookieToString } from 'insomnia-cookies'; import React, { PureComponent } from 'react'; import { connect } from 'react-redux'; @@ -105,15 +106,12 @@ export class UnconnectedCookieModifyModal extends PureComponent { } const cookie = clone(nextCookie); - // Sanitize expires field - const expires = new Date(cookie.expires || '').getTime(); - - if (isNaN(expires)) { - cookie.expires = null; - } else { - cookie.expires = expires; + // transform to Date object or fallback to null + let dateFormat = null; + if (cookie.expires && isValid(new Date(cookie.expires))) { + dateFormat = new Date(cookie.expires); } - + cookie.expires = dateFormat; // Clone so we don't modify the original const cookieJar = clone(prevCookieJar); const { cookies } = cookieJar; @@ -173,25 +171,29 @@ export class UnconnectedCookieModifyModal extends PureComponent { } } - _renderInputField(field: string, error: string | null = null) { + _renderInputField(field: keyof Cookie) { const { cookie } = this.state; - const { - } = this.props; if (!cookie) { return null; } + let localDateTime; + if (field === 'expires' && cookie.expires && isValid(new Date(cookie.expires))) { + localDateTime = new Date(cookie.expires).toISOString().slice(0, 16); + } - // @ts-expect-error -- mapping unsoundness const val = (cookie[field] || '').toString(); return (
); @@ -225,10 +227,7 @@ export class UnconnectedCookieModifyModal extends PureComponent { {this._renderInputField('domain')} {this._renderInputField('path')} - {this._renderInputField( - 'expires', - isNaN(new Date(cookie.expires || 0).getTime()) ? 'Invalid Date' : null, - )} + {this._renderInputField('expires')}
{checkFields.map((field, i) => {