- if ($contact['avatar'] != $avatar) {
- self::update(['avatar' => $avatar], ['id' => $cid]);
+ if (($contact['avatar'] != $avatar) || empty($contact['blurhash'])) {
+ $update_fields = ['avatar' => $avatar];
+ $fetchResult = HTTPSignature::fetchRaw($avatar, 0, [HttpClientOptions::ACCEPT_CONTENT => [HttpClientAccept::IMAGE]]);
+
+ $img_str = $fetchResult->getBody();
+ if (!empty($img_str)) {
+ $image = new Image($img_str, Images::getMimeTypeByData($img_str));
+ if ($image->isValid()) {
+ $update_fields['blurhash'] = $image->getBlurHash();
+ }
+ }
+
+ self::update($update_fields, ['id' => $cid]);