]> git.mxchange.org Git - friendica-addons.git/blobdiff - bluesky/bluesky.php
Bluesky: Support for transmitted languages
[friendica-addons.git] / bluesky / bluesky.php
index 2d497e8c2742b1af04769f86cb7975e72b12050e..82501594f90ed4eefe96a6a092e8c914d8028b36 100644 (file)
@@ -610,6 +610,13 @@ function bluesky_create_post(array $item, stdClass $root = null, stdClass $paren
                return;
        }
 
+       // Try to fetch the language from the post itself
+       if (!empty($item['language'])) {
+               $language = array_key_first(json_decode($item['language'], true));
+       } else {
+               $language = '';
+       }
+
        $did  = DI::pConfig()->get($uid, 'bluesky', 'did');
        $urls = bluesky_get_urls(Post\Media::removeFromBody($item['body']));
        $item['body'] = $urls['body'];
@@ -621,10 +628,14 @@ function bluesky_create_post(array $item, stdClass $root = null, stdClass $paren
 
                $record = [
                        'text'      => $facets['body'],
+                       '$type'     => 'app.bsky.feed.post',
                        'createdAt' => DateTimeFormat::utcNow(DateTimeFormat::ATOM),
-                       '$type'     => 'app.bsky.feed.post'
                ];
 
+               if (!empty($language)) {
+                       $record['langs'] = [$language];
+               }
+
                if (!empty($facets['facets'])) {
                        $record['facets'] = $facets['facets'];
                }
@@ -982,7 +993,10 @@ function bluesky_fetch_feed(int $uid, string $feed)
        }
 
        foreach (array_reverse($data->feed) as $entry) {
-               if (!Relay::isWantedLanguage($entry->post->record->text)) {
+               $contact   = bluesky_get_contact($entry->post->author, 0, $uid);
+               $languages = $entry->post->record->langs ?? [];
+
+               if (!Relay::isWantedLanguage($entry->post->record->text, 0, $contact['id'] ?? 0, $languages)) {
                        Logger::debug('Unwanted language detected', ['text' => $entry->post->record->text]);
                        continue;
                }
@@ -1094,6 +1108,7 @@ function bluesky_get_content(array $item, stdClass $record, string $uri, int $ui
 
        $item['body']    = bluesky_get_text($record);
        $item['created'] = DateTimeFormat::utc($record->createdAt, DateTimeFormat::MYSQL);
+       $item['transmitted-languages'] = $record->langs ?? [];
        return $item;
 }
 
@@ -1307,7 +1322,7 @@ function bluesky_fetch_missing_post(string $uri, int $uid, int $causer, int $lev
                return $fallback;
        }
 
-       Logger::debug('Reply count', ['replies' => $data->thread->post->replyCount, 'level' => $level, 'uid' => $uid, 'uri' => $uri]);
+       Logger::debug('Reply count', ['level' => $level, 'uid' => $uid, 'uri' => $uri]);
 
        if ($causer != 0) {
                $cdata = Contact::getPublicAndUserContactID($causer, $uid);