From 430fd196d7b55753863b5703288237c7790aed80 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Wed, 5 Feb 2025 17:23:54 -0600 Subject: [PATCH] Return streak data through the accounts API --- src/entities/MastodonAccount.ts | 4 ++++ src/views/mastodon/accounts.ts | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/src/entities/MastodonAccount.ts b/src/entities/MastodonAccount.ts index 99409c6a..9cef0ba7 100644 --- a/src/entities/MastodonAccount.ts +++ b/src/entities/MastodonAccount.ts @@ -36,6 +36,10 @@ export interface MastodonAccount { }; ditto: { captcha_solved: boolean; + streak: { + days: number; + broken: number; + }; }; }; statuses_count: number; diff --git a/src/views/mastodon/accounts.ts b/src/views/mastodon/accounts.ts index 025737c3..5beb8d81 100644 --- a/src/views/mastodon/accounts.ts +++ b/src/views/mastodon/accounts.ts @@ -69,6 +69,11 @@ async function renderAccount( verified_at: null, })) ?? []; + const streakStart = parseInt(event.user?.tags.find(([name]) => name === 'ditto.streak.start')?.[1]!); + const streakEnd = parseInt(event.user?.tags.find(([name]) => name === 'ditto.streak.end')?.[1]!); + const streakDays = Math.ceil((streakEnd - streakStart) / 86400); + const streakBroken = Math.floor((nostrNow() - streakEnd) / 86400); + return { id: pubkey, acct, @@ -103,6 +108,10 @@ async function renderAccount( }, ditto: { captcha_solved: names.has('captcha_solved'), + streak: { + days: streakDays || 0, + broken: streakBroken || 0, + }, }, } : undefined,