Aller au contenu principal

Conversations et sondages

Conversations

L'API client.conversations gère les conversations en message direct — des fils composés de statuts avec visibility: direct.

Récupérer les conversations

final page = await client.conversations.fetch(limit: 20);

for (final conversation in page.items) {
print(conversation.id);
print(conversation.unread);
print(conversation.accounts.map((a) => a.acct).join(', '));
if (conversation.lastStatus != null) {
print(conversation.lastStatus!.content);
}
}

Retourne MastodonPage<MastodonConversation>. Utilisez nextMaxId et prevMinId pour la pagination :

MastodonPage<MastodonConversation>? page = await client.conversations.fetch();

while (page != null && page.nextMaxId != null) {
page = await client.conversations.fetch(maxId: page.nextMaxId);
for (final conversation in page.items) {
print(conversation.id);
}
}

Paramètres de pagination :

ParamètreDescription
limitNombre maximum de résultats (défaut : 20, max : 40)
maxIdRetourner les conversations plus anciennes que cet ID
sinceIdRetourner les conversations plus récentes que cet ID
minIdRetourner les conversations immédiatement après cet ID (pagination en avant)

Marquer une conversation comme lue

final conversation = await client.conversations.markAsRead('7');
print(conversation.unread); // false

Retourne la MastodonConversation mise à jour.

Supprimer une conversation

await client.conversations.delete('7');

Le modèle MastodonConversation

ChampTypeDescription
idStringID interne de la conversation
unreadboolIndique si la conversation contient des messages non lus
accountsList<MastodonAccount>Participants (excluant l'utilisateur authentifié)
lastStatusMastodonStatus?Statut le plus récent de la conversation, ou null

Sondages

L'API client.polls permet de récupérer des sondages et de soumettre des votes. Les sondages sont généralement attachés à des statuts ; utilisez status.poll pour obtenir l'ID du sondage.

Récupérer un sondage

final poll = await client.polls.fetch('34');
print(poll.votesCount);
print(poll.expired);

for (final option in poll.options) {
print('${option.title}: ${option.votesCount ?? "hidden"}');
}

Voter dans un sondage

Passez une liste d'indices d'options (base zéro). Pour les sondages à choix unique, passez exactement un indice.

// Single choice
final poll = await client.polls.vote('34', [0]);

// Multiple choices (allowed when poll.multiple == true)
final poll = await client.polls.vote('34', [0, 2]);

print(poll.voted); // true
print(poll.ownVotes); // e.g. [0, 2]

Lève MastodonAlreadyVotedException si l'utilisateur authentifié a déjà voté.

Le modèle MastodonPoll

ChampTypeDescription
idStringID interne du sondage
expiresAtDateTime?Horodatage d'expiration
expiredboolIndique si le sondage est terminé
multipleboolIndique si plusieurs choix sont autorisés
votesCountintNombre total de votes exprimés
votersCountint?Nombre de votants uniques (diffère de votesCount pour les sondages à choix multiple)
optionsList<MastodonPollOption>Options disponibles
emojisList<MastodonCustomEmoji>Emojis personnalisés utilisés dans le texte des options
votedbool?Indique si l'utilisateur authentifié a voté
ownVotesList<int>?Indices des options choisies par l'utilisateur authentifié

Champs de MastodonPollOption :

ChampTypeDescription
titleStringTexte de l'option
votesCountint?Votes pour cette option ; null pour les sondages non publics