From fda43737448e57cb4cd598ec1a593e0e099b59fd Mon Sep 17 00:00:00 2001 From: Filipe Mariano Date: Wed, 12 Aug 2020 18:40:09 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=A4=96=20Merge=20PR=20#46605=20[react-mai?= =?UTF-8?q?lchimp-subscribe]=20Split=20ResponseArgs=20by=20@mariano-filipe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Split into success and error responses. The 'message' of an error response can also be an instance of Error when the jsonp request to MailChimp fails (e.g. due to timeout errors). Also, bump minor version. --- types/react-mailchimp-subscribe/index.d.ts | 28 ++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/types/react-mailchimp-subscribe/index.d.ts b/types/react-mailchimp-subscribe/index.d.ts index ed0165ed00..562532b1a0 100644 --- a/types/react-mailchimp-subscribe/index.d.ts +++ b/types/react-mailchimp-subscribe/index.d.ts @@ -1,10 +1,10 @@ -// Type definitions for react-mailchimp-subscribe 2.0 +// Type definitions for react-mailchimp-subscribe 2.1 // Project: https://revolunet.github.io/react-mailchimp-subscribe/ // Definitions by: Omar Diab // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.9 -import { Component, ReactNode } from "react"; +import { Component, ReactNode } from 'react'; // A few common set of form fields, based on defaults in Mailchimp's website export interface EmailFormFields { @@ -17,20 +17,27 @@ export interface NameFormFields extends EmailFormFields { } export interface ClassicFormFields extends NameFormFields { - "BIRTHDAY[month]": number; - "BIRTHDAY[day]": number; + 'BIRTHDAY[month]': number; + 'BIRTHDAY[day]': number; } // library default form just sends EMAIL export type DefaultFormFields = EmailFormFields; -export interface ResponseArgs { - status: "success" | "error"; +export interface ErrorResponseArgs { + status: 'error'; + message: string | Error; +} + +export interface SuccessResponseArgs { + status: 'success'; message: string; } +export type ResponseArgs = ErrorResponseArgs | SuccessResponseArgs; + export interface PendingArgs { - status: "sending" | null; + status: 'sending' | null; message: null; } @@ -38,14 +45,11 @@ export interface SubscribeArg { subscribe: (data: FormFields) => void; } -export type FormHooks = SubscribeArg & - (ResponseArgs | PendingArgs); +export type FormHooks = SubscribeArg & (ErrorResponseArgs | SuccessResponseArgs | PendingArgs); export interface Props { render?: (hooks: FormHooks) => ReactNode; url: string; } -export default class MailchimpSubscribe extends Component< - Props -> {} +export default class MailchimpSubscribe extends Component> {}