Usando a API do ButtonDown para registrar seus assinantes através do Next.JS – EDCA Treinamentos

Usando a API do ButtonDown para registrar seus assinantes através do Next.JS

Artigo publicado em 10 de março de 2021

––– visualizações


Eddwan Hallen

Eddwan Hallen

Instrutor & Co-fundador


O ButtonDown é uma ferramenta muito útil para registro e envio de newsletters. Já apresentamos anteriormente em um vídeo do nosso canal os passos para cadastro, configuração e envio da primeira newsletter utilizando a ferramenta. Agora, queremos avançar um pouquinho mais e utilizar a API do ButtonDown para registrar seus assinantes através do seu site, utilizando um componente no Next.js.

Criando o projeto

Abra uma janela do terminal e crie um projeto Next.js com o comando:

$ yarn create next-app

Durante a execução do comando ele perguntará o nome do projeto. Vamos chamá-lo de newsletter. Lembrando que o comando criará uma pasta no caminho onde você executou o comando com o nome do projeto.

$ yarn create next-app

yarn create v1.22.10

[1/4] 🔍 Resolving packages...

[2/4] 🚚 Fetching packages...

[3/4] 🔗 Linking dependencies...

[4/4] 🔨 Building fresh packages...

success Installed "create-next-app@10.0.8" with binaries:

- create-next-app

✔ What is your project named? … newsletter

....

Initialized a git repository.

Success! Created newsletter at /Users/ehallend/Desktop/Youtube/newsletter

Inside that directory, you can run several commands:

yarn dev

Starts the development server.

yarn build

Builds the app for production.

yarn start

Runs the built app in production mode.

We suggest that you begin by typing:

cd newsletter

yarn dev

✨ Done in 38.56s.

Editando o projeto

Abra seu projeto com seu editor de códigos preferido e vamos ao que interessa:

1. Dentro do diretório pages do seu projeto, edite o arquivo index.js.

2. Remova todo o conteúdo desnecessário e deixe somente o código abaixo, para manter o mais simplificado possível e facilitar a compreensão:

import styles from "../styles/Home.module.css";

export default function Home() {

return (

<div className={styles.container}>

<main className={styles.main}>

<h1 className={styles.title}>Registre-se na minha newsletter!</h1>

<p className={styles.description}>

<input type="email" placeholder="informe seu e-mail"></input>

<button type="submit">Registrar!</button>

</p>

</main>

</div>

);

}

3. Precisamos importar o componente useState do React para capturarmos o e-mail digitado na caixa de texto

import { useState } from "react";

4. Dentro da função Home(), vamos adicionar o estado inicial do email e uma função setEmail:

const [email, setEmail] = useState("");

5. No input e-mail vamos definir o valor inicial e também chamar a função setEmail quando alguma informação for inserida no campo:

<input

type="email"

placeholder="informe seu e-mail"

value={email}

onChange={(event) => {

setEmail(event.currentTarget.value);

}}

></input>

6. Vamos criar uma função subscribe que será executada quando o usuário clicar no botão "Registrar!":

Obs: A função subscribe faz uso de duas constantes que contém a API KEY e a URL do ButtonDown.

Obs2: Para saber mais detalhes sobre os campos passados dentro do body, acesse a documentação da API do ButtonDown aqui.

const API_KEY = "SUA API KEY";

const API_URL = "https://api.buttondown.email/v1/subscribers";

const subscribe = async (event) => {

event.preventDefault();

const response = await fetch(API_URL, {

body: JSON.stringify({

email: email,

tags: ["newsletter", "teste"],

}),

headers: {

"Content-Type": "application/json",

Authorization: `Token ${API_KEY}`,

},

method: "POST",

});

console.log(response);

return response;

};

7. Vamos chamar a função subscribe no botão "Registrar!":

<button type="submit" onClick={subscribe}>

Registrar!

</button>

8. Acesse o painel de gerenciamento do ButtonDown com a sua conta, navegue até o menu Programming, copie e cole sua API KEY na respectiva variável:

buttondown-apikey.png

const API_KEY = "COLE SUA API KEY AQUI";

9. Execute o projeto com o comando yarn dev:

$ yarn dev

yarn run v1.22.10

$ next dev

ready - started server on 0.0.0.0:3000, url: http://localhost:3000

event - compiled successfully

10. Acesse https://localhost:3000 com seu navegador preferido.

11. Abra as ferramentas de desenvolvedores e navegue até a Console.

buttondown-localhost.png

Ao registrar um e-mail, você verá que as mensagens de sucesso ou erro serão apresentadas na console. E com isso terminamos nossa integração com a API.

A versão final do nosso arquivo index.js ficou dessa forma:

import styles from "../styles/Home.module.css";

import { useState } from "react";

export default function Home() {

const [email, setEmail] = useState("");

const API_KEY = "COLE SUA API KEY AQUI";

const API_URL = "https://api.buttondown.email/v1/subscribers";

const subscribe = async (event) => {

event.preventDefault();

const response = await fetch(API_URL, {

body: JSON.stringify({

email: email,

tags: ["newsletter", "teste"],

}),

headers: {

"Content-Type": "application/json",

Authorization: `Token ${API_KEY}`,

},

method: "POST",

});

console.log(response);

return response;

};

return (

<div className={styles.container}>

<main className={styles.main}>

<h1 className={styles.title}>Registre-se na minha newsletter!</h1>

<p className={styles.description}>

<input

type="email"

placeholder="informe seu e-mail"

value={email}

onChange={(event) => {

setEmail(event.currentTarget.value);

}}

></input>

<button type="submit" onClick={subscribe}>

Registrar!

</button>

</p>

</main>

</div>

);

}

O próximo passo é tratar e exibir mensagens na tela do usuário, mas isso é assunto para um próximo post.

Até mais pessoal!!!

Referências:

Registre-se na nossa newsletter

e mantenha-se informado sobre nossos novos treinamentos e artigos.