diff --git a/app/Http/Controllers/Api/ApiV1Controller.php b/app/Http/Controllers/Api/ApiV1Controller.php index d9dd6a0f4..0923d718f 100644 --- a/app/Http/Controllers/Api/ApiV1Controller.php +++ b/app/Http/Controllers/Api/ApiV1Controller.php @@ -1972,6 +1972,11 @@ class ApiV1Controller extends Controller return $following->push($pid)->toArray(); }); + $includeReplies = false; + if(config('exp.top')) { + $includeReplies = (bool) Redis::zscore('pf:tl:replies', $pid); + } + if(config('instance.timeline.home.cached') && (!$min && !$max)) { $ttl = config('instance.timeline.home.cache_ttl'); $res = Cache::remember( @@ -1980,7 +1985,8 @@ class ApiV1Controller extends Controller function() use( $following, $limit, - $pid + $pid, + $includeReplies ) { return Status::select( 'id', @@ -2002,6 +2008,11 @@ class ApiV1Controller extends Controller 'created_at', 'updated_at' ) + ->when($includeReplies, function($q, $includeReplies) { + return $q; + }, function($q, $includeReplies) { + return $q->whereNull('in_reply_to_id'); + }) ->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album']) ->whereIn('profile_id', $following) ->whereIn('visibility',['public', 'unlisted', 'private']) @@ -2053,6 +2064,11 @@ class ApiV1Controller extends Controller ) ->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album']) ->where('id', $dir, $id) + ->when($includeReplies, function($q, $includeReplies) { + return $q; + }, function($q, $includeReplies) { + return $q->whereNull('in_reply_to_id'); + }) ->whereIn('profile_id', $following) ->whereIn('visibility',['public', 'unlisted', 'private']) ->latest() diff --git a/app/Http/Controllers/PublicApiController.php b/app/Http/Controllers/PublicApiController.php index 18bb7e0b7..5aabb6c99 100644 --- a/app/Http/Controllers/PublicApiController.php +++ b/app/Http/Controllers/PublicApiController.php @@ -472,10 +472,10 @@ class PublicApiController extends Controller // $types = ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album', 'text']; $textOnlyReplies = false; + $textOnlyReplies = (bool) Redis::zscore('pf:tl:replies', $pid); if(config('exp.top')) { $textOnlyPosts = (bool) Redis::zscore('pf:tl:top', $pid); - $textOnlyReplies = (bool) Redis::zscore('pf:tl:replies', $pid); if($textOnlyPosts) { array_push($types, 'text'); @@ -587,7 +587,7 @@ class PublicApiController extends Controller 'updated_at' ) ->whereIn('type', $types) - ->when($textOnlyReplies != true, function($q, $textOnlyReplies) { + ->when(!$textOnlyReplies, function($q, $textOnlyReplies) { return $q->whereNull('in_reply_to_id'); }) ->where('id', $dir, $id) diff --git a/app/Media.php b/app/Media.php index 8f9f3a5a7..9b91f42be 100644 --- a/app/Media.php +++ b/app/Media.php @@ -38,7 +38,8 @@ class Media extends Model public function url() { if($this->cdn_url) { - return Storage::disk(config('filesystems.cloud'))->url($this->media_path); + // return Storage::disk(config('filesystems.cloud'))->url($this->media_path); + return $this->cdn_url; } if($this->remote_media && $this->remote_url) {