Tabnews.js - Versão 1.1.0, Todas as melhorias e mudanças 🎉

A versão 1.1.0 do Tabnews.js saiu e tem muita coisa nova, Se você quiser ver o Post de lançamento do Tabnews.js, ele tá aqui Se você quiser contribuir ou achou um bug, o projeto no GitHub é https://github.com/33gustavo33/tabnews.js :)

Como baixar

npm install tabnews.js --save

Novos métodos nas Estruturas de Dados

Foram adicionados muitos métodos.

Na Estrutura Content, foi adicionado os métodos

  • delete - Deleta o conteúdo
  • edit - Edita o conteúdo
  • upvote - Dá um upvote no conteúdo
  • downvote - Dá um downvote no conteúdo
  • fetchChildren - Obtém os comentários de um conteúdo
  • fetchParent - Obtém o conteúdo Pai do conteúdo
  • fetchOwner - Obtém o usuário dono do conteúdo

Já na Estrutura User, foi adicionado apenas 1 método

  • getContents - retorna os conteúdos do usuário

E também foi adicionado a todas as Estruturas, 2 métodos:

  • toJSON - esse método transforma a Estrutura em um Objeto padrão.
  • getRaw - esse método retorna os dados que foram usados pra criar a Estrutura(Os dados que o Client recebeu da API do TabNews)

Exemplo:

const content = await client.contents.get("username", "slug")
content.edit({title: "novo titulo"}) 
content.upvote() 

const contentChildren = await content.fetchChildren()
const user = await content.fetchOwner() 
const user2 = await contentChildren[0].fetchOwner() 
const contentsOfUser = await user.getContents()

contentsOfUser[0].downvote()

user2.toJSON() 

Eventos adicionados

Agora, você pode escutar por eventos, atualmente o Client só tem 2 eventos

  • ready
  • destroyed

O evento ready é emitido quando o Client faz login. E o evento destroyed é emitido quando o Client é destruído

import tabnews from "tabnews.js"
const client = new tabnews.Client()

client.on("ready", (user) => {
	console.log(`Logado em ${user.username}!`)
	client.destroy()
})

client.on("destroyed", (user) => {
	console.log("Client destruido")
})

client.login({email: "", password: ""})

Nova feature: Watchers

Um Watcher serve pra assistir um conteúdo ou usuário observando por mudanças. Em resumo, se você começar a assistir um conteúdo, e alguém dar uma tabcoin para ele, o watcher assim que detectar a mudança vai avisar você.


Um watcher de conteúdo aceita 4 parâmetros, sendo eles:

  1. O username do autor do conteúdo que você quer assistir
  2. O slug do conteúdo que você quer assistir
  3. Um Array com o que você quer assistir, em padrão ele assiste todas as propriedades do conteúdo.
  4. Em quantos milissegundos ele vai checar por mudanças.

Um exemplo:

const watcher = client.contents.watch("exampleUsername", "exampleSlug", ["tabcoins"], 10000) 
/* Assiste um conteúdo, checando a cada 10 segundos por mudanças nas tabcoins. */

watcher.on("watcherUpdate", (content) => { //a cada mudança no conteúdo, esse callback é chamado.
	console.log(`Tabcoins agora: ${content.tabcoins}. Tabcoins antes: ${content.tabcoins_before}`)
})

watcher.start() // Inicia o watcher.

Mudanças:

  • Na versões 1.0.x para obter as informações do Client, se usava:

    client.user.get()
    // Para obter o Username do client, por exemplo, se usaria:
    client.user.get().username
    

    Agora, se usa:

    client.user
    // Para obter o Username do client, por exemplo, se usa:
    client.user.username
    

    De resto, os outros métodos do client.user continuam igual.

  • Além disso, Testes foram adicionados!

Sempre que eu vejo um client do TabNews eu fico emocionado, e quando um client recebe atualizações eu fico duplamente emocionado, ainda mais com uma publicação como essas. Excelente trabalho Gustavo33!

Em paralelo, estou achando muito legal o padrão de logos que a comunidade criou, que é pegar o logo original e escrever ou colocar algo dentro. Está ficando tudo muito massa!

> Sempre que eu vejo um client do TabNews eu fico emocionado, e quando um client recebe atualizações eu fico duplamente emocionado, ainda mais com uma publicação como essas. Pode deixar que não é a ultima publicação! O meu objetivo com esse projeto é ele ser um Client que tem tudo que o TabNews tem a oferecer, pra facilitar a vida de quem quer integrar o TabNews em seu projeto. Em resumo, qualquer coisa que for adicionada ao Tabnews, vai ser adicionado ao **Tabnews.js**. > Em paralelo, estou achando muito legal o padrão de logos que a comunidade criou, que é pegar o logo original e escrever ou colocar algo dentro. Está ficando tudo muito massa! Eu acho que é porque isso torna a logo simples, olha aqui: * A logo do Tabnews faz entender que é um projeto com relação ao Tabnews * O que tá dentro faz entender sobre o que é o projeto.