From 6bee5072d0d5ec250c4654ce4c401e9e8f4c5fb9 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 5 Feb 2021 21:13:52 -0700 Subject: [PATCH 1/7] Update pixelfed config, add media_fast_process setting --- config/pixelfed.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/config/pixelfed.php b/config/pixelfed.php index 2637e8d15..c492cf2c1 100644 --- a/config/pixelfed.php +++ b/config/pixelfed.php @@ -263,5 +263,19 @@ return [ 'bouncer' => [ 'enabled' => env('PF_BOUNCER_ENABLED', false), - ] + ], + + /* + |-------------------------------------------------------------------------- + | Media Fast Process + |-------------------------------------------------------------------------- + | + | Don't require photos & video to finish optimization & + | upload to S3 if enabled before posting. If disabled + | users will have to wait until processed before posting, + | sacrificing the user experience to ensure media is federated + | using S3 urls (if enabled). Default: off + | + */ + 'media_fast_process' => env('PF_MEDIA_FAST_PROCESS', true), ]; From 33b625f508360173a63ea0813aebf750919204d9 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 5 Feb 2021 21:15:13 -0700 Subject: [PATCH 2/7] Update ComposeController, add mediaProcessingCheck method --- app/Http/Controllers/ComposeController.php | 35 ++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/app/Http/Controllers/ComposeController.php b/app/Http/Controllers/ComposeController.php index bada3cd65..d2003dddc 100644 --- a/app/Http/Controllers/ComposeController.php +++ b/app/Http/Controllers/ComposeController.php @@ -513,4 +513,39 @@ class ComposeController extends Controller return $status->url(); } + + public function mediaProcessingCheck(Request $request) + { + $this->validate($request, [ + 'id' => 'required|integer|min:1' + ]); + + $media = Media::whereUserId($request->user()->id) + ->whereNull('status_id') + ->findOrFail($request->input('id')); + + if(config('pixelfed.media_fast_process')) { + return [ + 'finished' => true + ]; + } + + $finished = false; + + switch ($media->mime) { + case 'image/jpeg': + case 'image/png': + case 'video/mp4': + $finished = config('pixelfed.cloud_storage') ? (bool) $media->cdn_url : (bool) $media->processed_at; + break; + + default: + # code... + break; + } + + return [ + 'finished' => $finished + ]; + } } From e6e76e809d5b8469a4e2ad07de9df82be9310c86 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 5 Feb 2021 21:19:12 -0700 Subject: [PATCH 3/7] Update ComposeModal, add processing step disabled by default --- .../assets/js/components/ComposeModal.vue | 112 ++++++++++++++++-- 1 file changed, 101 insertions(+), 11 deletions(-) diff --git a/resources/assets/js/components/ComposeModal.vue b/resources/assets/js/components/ComposeModal.vue index 82499a14f..fc058a5f5 100644 --- a/resources/assets/js/components/ComposeModal.vue +++ b/resources/assets/js/components/ComposeModal.vue @@ -59,11 +59,13 @@ - - - {{media.length}} - - {{pageTitle}} + + + + {{media.length}} + + {{pageTitle}} + @@ -561,6 +563,34 @@

+
+
+
+ Loading... +
+

+ Processing Media +

+

+ This may take a few seconds. +

+
+
+ +
+
+
+ Loading... +
+

+ Processing Media +

+

+ This may take a few seconds. +

+
+
+ @@ -685,12 +715,17 @@ export default { 'editMedia', 'cameraRoll', 'tagPeopleHelp', - 'textOptions' + 'textOptions', + 'processingVideo', + 'processingPhoto' ], cameraRollMedia: [], taggedUsernames: [], taggedPeopleSearch: null, - textMode: false + textMode: false, + isProcessingMedia: false, + processPhotoInterval: undefined, + processVideoInterval: undefined } }, @@ -790,9 +825,14 @@ export default { self.ids.push(e.data.id); self.media.push(e.data); self.uploading = false; - setTimeout(function() { - self.page = 2; - }, 300); + + if(e.data.mime == 'video/mp4') { + self.processVideo(e.data); + return; + } else { + self.processPhoto(e.data); + return; + } }).catch(function(e) { switch(e.response.status) { case 451: @@ -1165,7 +1205,6 @@ export default { ctx.clearRect(0, 0, image.width, image.height); } } - }, tagSearch(input) { @@ -1208,7 +1247,58 @@ export default { showTextOptions() { this.page = 'textOptions'; this.pageTitle = 'Text Post Options'; + }, + + processPhoto(media) { + this.page = 'processingPhoto'; + this.pageTitle = ''; + this.processPhotoCheck(media); + }, + + processPhotoCheck(media) { + this.isProcessingMedia = true; + this.processMediaCheck(media); + this.processPhotoInterval = setInterval(() => { + this.processMediaCheck(media); + }, 2500); + }, + + processVideo(media) { + this.page = 'processingVideo'; + this.pageTitle = ''; + this.processVideoCheck(media); + }, + + processVideoCheck(media) { + this.isProcessingMedia = true; + this.processMediaCheck(media, 'video'); + this.processVideoInterval = setInterval(() => { + this.processMediaCheck(media, 'video'); + }, 2500); + }, + + processMediaCheck(media, type = 'photo') { + return axios.get('/api/compose/v0/media/processing', { + params: { + id: media.id + } + }).then(res => { + let data = res.data; + if(data.finished === true) { + this.isProcessingMedia = false; + this.page = 3; + if(type == 'photo') { + clearInterval(this.processPhotoInterval); + } else if (type == 'video') { + clearInterval(this.processVideoInterval); + } else { + } + return; + } + }); } + + } } From a1059a6e12103815e64b59e513fe9ee01980ba5a Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 5 Feb 2021 21:20:19 -0700 Subject: [PATCH 4/7] Update DiscoverComponent, allow unathenicated if enabled --- .../js/components/DiscoverComponent.vue | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/resources/assets/js/components/DiscoverComponent.vue b/resources/assets/js/components/DiscoverComponent.vue index e1fa217a4..b16bf3375 100644 --- a/resources/assets/js/components/DiscoverComponent.vue +++ b/resources/assets/js/components/DiscoverComponent.vue @@ -4,7 +4,7 @@
-
+
@@ -79,7 +79,7 @@
-
+
@@ -151,6 +151,7 @@ export default { data() { return { + authenticated: false, loaded: false, config: window.App.config, posts: {}, @@ -163,14 +164,21 @@ recommendedLoading: true } }, + + beforeMount() { + this.authenticated = $('body').hasClass('loggedIn'); + }, + mounted() { this.loaded = true; this.loadTrending(); - this.fetchData(); - axios.get('/api/pixelfed/v1/accounts/verify_credentials').then(res => { - window._sharedData.curUser = res.data; - window.App.util.navatar(); - }); + if($('body').hasClass('loggedIn') == true) { + this.fetchData(); + axios.get('/api/pixelfed/v1/accounts/verify_credentials').then(res => { + window._sharedData.curUser = res.data; + window.App.util.navatar(); + }); + } }, methods: { @@ -180,7 +188,7 @@ } axios.get('/api/pixelfed/v2/discover/posts') .then((res) => { - this.posts = res.data.posts; + this.posts = res.data.posts.filter(r => r != null); this.recommendedLoading = false; }); }, @@ -206,13 +214,16 @@ } }) .then(res => { + let data = res.data.filter(r => { + return r !== null; + }); if(this.trendingRange == 'daily') { - this.trendingDaily = res.data.filter(t => t.sensitive == false); + this.trendingDaily = data.filter(t => t.sensitive == false); } if(this.trendingRange == 'monthly') { - this.trendingMonthly = res.data.filter(t => t.sensitive == false); + this.trendingMonthly = data.filter(t => t.sensitive == false); } - this.trending = res.data; + this.trending = data; this.trendingLoading = false; }); }, From a9e98965abc7997c0823a8993911ca1d583b3455 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 5 Feb 2021 21:21:41 -0700 Subject: [PATCH 5/7] Update components, improve content warnings --- .../assets/js/components/PostComponent.vue | 6 ++--- resources/assets/js/components/Timeline.vue | 4 +-- .../components/presenter/PhotoPresenter.vue | 25 +++++++++++++------ 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/resources/assets/js/components/PostComponent.vue b/resources/assets/js/components/PostComponent.vue index 2c23b9bf0..83418090b 100644 --- a/resources/assets/js/components/PostComponent.vue +++ b/resources/assets/js/components/PostComponent.vue @@ -53,7 +53,7 @@
- +
@@ -113,12 +113,12 @@
-
+
{{truncate(status.account.username,15)}} This comment may contain sensitive material - Show + Show
diff --git a/resources/assets/js/components/Timeline.vue b/resources/assets/js/components/Timeline.vue index 35e371962..a14f4cfb0 100644 --- a/resources/assets/js/components/Timeline.vue +++ b/resources/assets/js/components/Timeline.vue @@ -167,7 +167,7 @@
- +
@@ -227,7 +227,7 @@ {{status.favourites_count == 1 ? 'like' : 'likes'}}
-

+

{{status.account.username}} diff --git a/resources/assets/js/components/presenter/PhotoPresenter.vue b/resources/assets/js/components/presenter/PhotoPresenter.vue index d96973600..0ac4ef2e2 100644 --- a/resources/assets/js/components/presenter/PhotoPresenter.vue +++ b/resources/assets/js/components/presenter/PhotoPresenter.vue @@ -1,5 +1,5 @@