+function bluesky_process_thread(stdClass $thread, int $uid, array $cdata, int $level): string
+{
+ $uri = bluesky_get_uri($thread->post);
+ $fetched_uri = bluesky_fetch_post($uri, $uid);
+ if (empty($fetched_uri)) {
+ Logger::debug('Process missing post', ['uri' => $uri]);
+ $item = bluesky_get_header($thread->post, $uri, $uid, $uid);
+ $item = bluesky_get_content($item, $thread->post->record, $uri, $uid, $level);
+ if (!empty($item)) {
+ $item['post-reason'] = Item::PR_FETCHED;
+
+ if (!empty($cdata['public'])) {
+ $item['causer-id'] = $cdata['public'];
+ }
+
+ if (!empty($thread->post->embed)) {
+ $item = bluesky_add_media($thread->post->embed, $item, $uid, $level);
+ }
+ $id = Item::insert($item);
+ if (!$id) {
+ Logger::info('Item has not not been stored', ['uri' => $uri]);
+ return '';
+ }
+ Logger::debug('Stored item', ['id' => $id, 'uri' => $uri]);
+ } else {
+ Logger::info('Post has not not been fetched', ['uri' => $uri]);
+ return '';