From 0f5d8580300adee5a49df54eccacac8ec4798372 Mon Sep 17 00:00:00 2001 From: tangweikun <819573105@qq.com> Date: Tue, 5 Jul 2022 04:08:06 +0800 Subject: [PATCH] Fix edit cookie shows expires as an Invalid Date (#4897) * fix: edit cookie shows expires as an Invalid Date * refactor: using date-fns for validation * use datetime-local input and transform * use defaultValue Co-authored-by: tangweikun Co-authored-by: jackkav --- .../components/modals/cookie-modify-modal.tsx | 41 +++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) 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) => {