. * */ namespace Friendica\Factory\Api\Mastodon; use Friendica\BaseFactory; use Friendica\Database\DBA; use Friendica\DI; use Friendica\Model\Contact; class Conversation extends BaseFactory { public function CreateFromConvId(int $id) { $accounts = []; $unread = false; $last_status = null; $ids = []; $mails = DBA::select('mail', ['id', 'from-url', 'uid', 'seen'], ['convid' => $id], ['order' => ['id' => true]]); while ($mail = DBA::fetch($mails)) { if (!$mail['seen']) { $unread = true; } $id = Contact::getIdForURL($mail['from-url'], 0, false); if (in_array($id, $ids)) { continue; } $ids[] = $id; if (empty($last_status)) { $last_status = DI::mstdnStatus()->createFromMailId($mail['id']); } $accounts[] = DI::mstdnAccount()->createFromContactId($id, 0); } return new \Friendica\Object\Api\Mastodon\Conversation($id, $accounts, $unread, $last_status); } }