diff --git a/app/Http/Controllers/PublicApiController.php b/app/Http/Controllers/PublicApiController.php
index b97c8508..2d6e4a77 100644
--- a/app/Http/Controllers/PublicApiController.php
+++ b/app/Http/Controllers/PublicApiController.php
@@ -110,7 +110,7 @@ class PublicApiController extends Controller
]);
$limit = $request->limit ?? 10;
$profile = Profile::whereUsername($username)->whereNull('status')->firstOrFail();
- $status = Status::whereProfileId($profile->id)->findOrFail($postId);
+ $status = Status::whereProfileId($profile->id)->whereCommentsDisabled(false)->findOrFail($postId);
$this->scopeCheck($profile, $status);
if($request->filled('min_id') || $request->filled('max_id')) {
if($request->filled('min_id')) {
@@ -578,9 +578,9 @@ class PublicApiController extends Controller
$following = Follower::whereProfileId($pid)->pluck('following_id');
return $following->push($pid)->toArray();
});
- $visibility = true == in_array($profile->id, $following) ? ['public', 'unlisted', 'private'] : ['public'];
+ $visibility = true == in_array($profile->id, $following) ? ['public', 'unlisted', 'private'] : ['public', 'unlisted'];
} else {
- $visibility = ['public'];
+ $visibility = ['public', 'unlisted'];
}
}
@@ -606,8 +606,8 @@ class PublicApiController extends Controller
->whereLocal(true)
->whereNull('uri')
->where('id', $dir, $id)
- ->whereIn('visibility',$visibility)
- ->orderBy('created_at', 'desc')
+ ->whereIn('visibility', $visibility)
+ ->latest()
->limit($limit)
->get();
diff --git a/app/Http/Controllers/StatusController.php b/app/Http/Controllers/StatusController.php
index a77d6aff..9c5a34df 100644
--- a/app/Http/Controllers/StatusController.php
+++ b/app/Http/Controllers/StatusController.php
@@ -12,8 +12,7 @@ use App\Status;
use App\Transformer\ActivityPub\StatusTransformer;
use App\Transformer\ActivityPub\Verb\Note;
use App\User;
-use Auth;
-use Cache;
+use Auth, Cache;
use Illuminate\Http\Request;
use League\Fractal;
use App\Util\Media\Filter;
@@ -22,6 +21,7 @@ class StatusController extends Controller
{
public function show(Request $request, $username, int $id)
{
+ // $id = strlen($id) < 17 ? array_first(\Hashids::decode($id)) : $id;
$user = Profile::whereNull('domain')->whereUsername($username)->firstOrFail();
if($user->status != null) {
@@ -363,4 +363,27 @@ class StatusController extends Controller
return 'photo:video:album';
}
}
+
+ public function toggleVisibility(Request $request) {
+ $this->authCheck();
+ $this->validate($request, [
+ 'item' => 'required|string|min:1|max:20',
+ 'disableComments' => 'required|boolean'
+ ]);
+
+ $user = Auth::user();
+ $id = $request->input('item');
+ $state = $request->input('disableComments');
+
+ $status = Status::findOrFail($id);
+
+ if($status->profile_id != $user->profile->id && $user->is_admin == false) {
+ abort(403);
+ }
+
+ $status->comments_disabled = $status->comments_disabled == true ? false : true;
+ $status->save();
+
+ return response()->json([200]);
+ }
}
diff --git a/app/Jobs/CommentPipeline/CommentPipeline.php b/app/Jobs/CommentPipeline/CommentPipeline.php
index bafe9baf..4876138c 100644
--- a/app/Jobs/CommentPipeline/CommentPipeline.php
+++ b/app/Jobs/CommentPipeline/CommentPipeline.php
@@ -51,7 +51,7 @@ class CommentPipeline implements ShouldQueue
$target = $status->profile;
$actor = $comment->profile;
- if ($actor->id === $target->id) {
+ if ($actor->id === $target->id || $status->comments_disabled == true) {
return true;
}
diff --git a/app/Transformer/Api/StatusTransformer.php b/app/Transformer/Api/StatusTransformer.php
index d37f7610..e9976815 100644
--- a/app/Transformer/Api/StatusTransformer.php
+++ b/app/Transformer/Api/StatusTransformer.php
@@ -43,6 +43,8 @@ class StatusTransformer extends Fractal\TransformerAbstract
'pinned' => null,
'pf_type' => $status->type ?? $status->setType(),
+ 'reply_count' => $status->reply_count,
+ 'comments_disabled' => $status->comments_disabled ? true : false
];
}
diff --git a/app/Util/ActivityPub/Helpers.php b/app/Util/ActivityPub/Helpers.php
index 0b73a907..5451a65e 100644
--- a/app/Util/ActivityPub/Helpers.php
+++ b/app/Util/ActivityPub/Helpers.php
@@ -135,6 +135,10 @@ class Helpers {
'127.0.0.1', 'localhost', '::1'
];
+ if(mb_substr($url, 0, 8) !== 'https://') {
+ return false;
+ }
+
$valid = filter_var($url, FILTER_VALIDATE_URL);
if(in_array(parse_url($valid, PHP_URL_HOST), $localhosts)) {
diff --git a/resources/assets/js/components.js b/resources/assets/js/components.js
index d5c83e89..570f7739 100644
--- a/resources/assets/js/components.js
+++ b/resources/assets/js/components.js
@@ -33,14 +33,14 @@ try {
}
window.filesize = require('filesize');
-window.Plyr = require('plyr');
+// window.Plyr = require('plyr');
import swal from 'sweetalert';
-require('./components/localstorage');
-require('./components/commentform');
+// require('./components/localstorage');
+// require('./components/commentform');
require('./components/searchform');
-require('./components/bookmarkform');
-require('./components/statusform');
+// require('./components/bookmarkform');
+// require('./components/statusform');
//require('./components/embed');
//require('./components/notifications');
@@ -63,51 +63,53 @@ require('./components/statusform');
// Initialize Notification Helper
window.pixelfed.n = {};
-Vue.component(
- 'photo-presenter',
- require('./components/presenter/PhotoPresenter.vue').default
-);
+// Vue.component(
+// 'photo-presenter',
+// require('./components/presenter/PhotoPresenter.vue').default
+// );
-Vue.component(
- 'video-presenter',
- require('./components/presenter/VideoPresenter.vue').default
-);
+// Vue.component(
+// 'video-presenter',
+// require('./components/presenter/VideoPresenter.vue').default
+// );
-Vue.component(
- 'photo-album-presenter',
- require('./components/presenter/PhotoAlbumPresenter.vue').default
-);
+// Vue.component(
+// 'photo-album-presenter',
+// require('./components/presenter/PhotoAlbumPresenter.vue').default
+// );
-Vue.component(
- 'video-album-presenter',
- require('./components/presenter/VideoAlbumPresenter.vue').default
-);
+// Vue.component(
+// 'video-album-presenter',
+// require('./components/presenter/VideoAlbumPresenter.vue').default
+// );
-Vue.component(
- 'mixed-album-presenter',
- require('./components/presenter/MixedAlbumPresenter.vue').default
-);
+// Vue.component(
+// 'mixed-album-presenter',
+// require('./components/presenter/MixedAlbumPresenter.vue').default
+// );
-Vue.component(
- 'post-menu',
- require('./components/PostMenu.vue').default
-);
+// Vue.component(
+// 'post-menu',
+// require('./components/PostMenu.vue').default
+// );
-Vue.component(
- 'passport-clients',
- require('./components/passport/Clients.vue').default
-);
+// Vue.component(
+// 'passport-clients',
+// require('./components/passport/Clients.vue').default
+// );
+
+// Vue.component(
+// 'passport-authorized-clients',
+// require('./components/passport/AuthorizedClients.vue').default
+// );
+
+// Vue.component(
+// 'passport-personal-access-tokens',
+// require('./components/passport/PersonalAccessTokens.vue').default
+// );
-Vue.component(
- 'passport-authorized-clients',
- require('./components/passport/AuthorizedClients.vue').default
-);
-Vue.component(
- 'passport-personal-access-tokens',
- require('./components/passport/PersonalAccessTokens.vue').default
-);
// Vue.component(
// 'follow-suggestions',
diff --git a/resources/assets/js/components/PostComments.vue b/resources/assets/js/components/PostComments.vue
deleted file mode 100644
index 24a71b8f..00000000
--- a/resources/assets/js/components/PostComments.vue
+++ /dev/null
@@ -1,172 +0,0 @@
-
-
-
-
- - {{truncate(reply.account.username,15)}} - - - - -
-
-
-