Merge pull request #2622 from pixelfed/staging

Staging
pull/2630/head
daniel 2021-02-05 21:26:03 -07:00 zatwierdzone przez GitHub
commit 9cd9b68664
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
15 zmienionych plików z 213 dodań i 47 usunięć

Wyświetl plik

@ -31,6 +31,11 @@
- Updated ComposeController, use MediaStorageService for media deletes. ([ab5469ff](https://github.com/pixelfed/pixelfed/commit/ab5469ff))
- Updated StatusDeletePipeline, use MediaStorageService for media deletes. ([9fd90e17](https://github.com/pixelfed/pixelfed/commit/9fd90e17))
- Updated Discover, allow public discover access. ([1404ac6e](https://github.com/pixelfed/pixelfed/commit/1404ac6e))
- Updated pixelfed config, add media_fast_process setting. ([6bee5072](https://github.com/pixelfed/pixelfed/commit/6bee5072))
- Updated ComposeController, add mediaProcessingCheck method. ([33b625f5](https://github.com/pixelfed/pixelfed/commit/33b625f5))
- Updated ComposeModal, add processing step disabled by default. ([e6e76e80](https://github.com/pixelfed/pixelfed/commit/e6e76e80))
- Updated DiscoverComponent, allow unathenicated if enabled. ([a1059a6e](https://github.com/pixelfed/pixelfed/commit/a1059a6e))
- Updated components, improve content warnings. ([a9e98965](https://github.com/pixelfed/pixelfed/commit/a9e98965))
- ([](https://github.com/pixelfed/pixelfed/commit/))
## [v0.10.10 (2021-01-28)](https://github.com/pixelfed/pixelfed/compare/v0.10.9...v0.10.10)

Wyświetl plik

@ -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
];
}
}

Wyświetl plik

@ -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),
];

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
public/js/rempos.js vendored

File diff suppressed because one or more lines are too long

2
public/js/status.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Wyświetl plik

@ -11,24 +11,24 @@
"/js/collectioncompose.js": "/js/collectioncompose.js?id=c6a07cb79dd7d6c7b8a0",
"/js/collections.js": "/js/collections.js?id=6f64a9032085ebac28b3",
"/js/components.js": "/js/components.js?id=51f4666393c2eee7a284",
"/js/compose.js": "/js/compose.js?id=995965cdcd1265bda2af",
"/js/compose.js": "/js/compose.js?id=641b098e730356316e75",
"/js/compose-classic.js": "/js/compose-classic.js?id=283f19c895f4118a2a8b",
"/js/developers.js": "/js/developers.js?id=f75deca5ccf47d43eb07",
"/js/direct.js": "/js/direct.js?id=e1e4a830bfedc1870db1",
"/js/discover.js": "/js/discover.js?id=20cfec71be5a1e4c5fc5",
"/js/discover.js": "/js/discover.js?id=0e6a97dc8171aaee5767",
"/js/hashtag.js": "/js/hashtag.js?id=f22994116815f17a4ad0",
"/js/loops.js": "/js/loops.js?id=1dcb3790eb9ea4ea5848",
"/js/memoryprofile.js": "/js/memoryprofile.js?id=75ea0503eca4f7ad3642",
"/js/mode-dot.js": "/js/mode-dot.js?id=dd9c87024fbaa8e75ac4",
"/js/my2020.js": "/js/my2020.js?id=31aeb1c22e0a5a99b0a8",
"/js/profile.js": "/js/profile.js?id=a1f66841d7ff4e5fb737",
"/js/profile.js": "/js/profile.js?id=c787e9f712ca6e9e6a27",
"/js/profile-directory.js": "/js/profile-directory.js?id=2386392b464e9088a859",
"/js/quill.js": "/js/quill.js?id=4769f11fc9a6c32dde50",
"/js/rempos.js": "/js/rempos.js?id=f4325d9c7ee4b5165a00",
"/js/rempos.js": "/js/rempos.js?id=7bdf1b763726cfd80233",
"/js/rempro.js": "/js/rempro.js?id=38ad09b48b084cd82995",
"/js/search.js": "/js/search.js?id=edd612b83049bf276b19",
"/js/status.js": "/js/status.js?id=5fc1e46961585fd79519",
"/js/status.js": "/js/status.js?id=0fe4f1dbce69d907d08e",
"/js/story-compose.js": "/js/story-compose.js?id=b31904f8fd5b397f8c54",
"/js/theme-monokai.js": "/js/theme-monokai.js?id=85f0af57479412548223",
"/js/timeline.js": "/js/timeline.js?id=09579f9e2ad35b97b4b6"
"/js/timeline.js": "/js/timeline.js?id=c0d6f37d91cb6e56aa11"
}

Wyświetl plik

@ -59,11 +59,13 @@
</b-tooltip>
</span>
<span v-else-if="page == 3">
<a class="text-lighter text-decoration-none mr-3 d-flex align-items-center" href="#" @click.prevent="goBack()">
<i class="fas fa-long-arrow-alt-left fa-lg mr-2"></i>
<span class="btn btn-outline-secondary btn-sm px-2 py-0 disabled" disabled="">{{media.length}}</span>
</a>
<span class="font-weight-bold mb-0">{{pageTitle}}</span>
<span v-if="media[0].mime != 'video/mp4'">
<a class="text-lighter text-decoration-none mr-3 d-flex align-items-center" href="#" @click.prevent="goBack()">
<i class="fas fa-long-arrow-alt-left fa-lg mr-2"></i>
<span class="btn btn-outline-secondary btn-sm px-2 py-0 disabled" disabled="">{{media.length}}</span>
</a>
<span class="font-weight-bold mb-0">{{pageTitle}}</span>
</span>
</span>
<span v-else>
<a class="text-lighter text-decoration-none mr-3" href="#" @click.prevent="goBack()"><i class="fas fa-long-arrow-alt-left fa-lg"></i></a>
@ -561,6 +563,34 @@
</p>
</div>
<div v-if="page == 'processingVideo'" class="w-100 h-100 px-3 d-flex justify-content-center align-items-center" style="height: 50vh !important;">
<div v-if="isProcessingMedia" class="text-center">
<div class="spinner-border text-primary" role="status">
<span class="sr-only">Loading...</span>
</div>
<p class="text-center font-weight-bold mb-1 mt-2">
Processing Media
</p>
<p class="text-center text-muted small mb-0">
This may take a few seconds.
</p>
</div>
</div>
<div v-if="page == 'processingPhoto'" class="w-100 h-100 px-3 d-flex justify-content-center align-items-center" style="height: 50vh !important;">
<div v-if="isProcessingMedia" class="text-center">
<div class="spinner-border text-primary" role="status">
<span class="sr-only">Loading...</span>
</div>
<p class="text-center font-weight-bold mb-1 mt-2">
Processing Media
</p>
<p class="text-center text-muted small mb-0">
This may take a few seconds.
</p>
</div>
</div>
</div>
<!-- card-footers -->
@ -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;
}
});
}
}
}
</script>

Wyświetl plik

@ -4,7 +4,7 @@
<img src="/img/pixelfed-icon-grey.svg">
</div>
<div v-else>
<div class="d-block d-md-none border-top-0 pt-3">
<div v-if="authenticated" class="d-block d-md-none border-top-0 pt-3">
<input class="form-control rounded-pill shadow-sm" placeholder="Search" v-model="searchTerm" v-on:keyup.enter="searchSubmit">
</div>
@ -79,7 +79,7 @@
</div>
</section>
<section class="pt-5 mb-5 section-explore">
<section v-if="authenticated" class="pt-5 mb-5 section-explore">
<div class="profile-timeline pt-3">
<div class="row p-0 mt-5">
<div class="col-12 mb-3 d-flex justify-content-between align-items-center">
@ -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;
});
},

Wyświetl plik

@ -53,7 +53,7 @@
</div>
</div>
<div v-else-if="status.pf_type === 'photo'" class="w-100">
<photo-presenter :status="status" v-on:lightbox="lightbox"></photo-presenter>
<photo-presenter :status="status" v-on:lightbox="lightbox" v-on:togglecw="status.sensitive = false"></photo-presenter>
</div>
<div v-else-if="status.pf_type === 'video'" class="w-100">
@ -113,12 +113,12 @@
<div class="card-body status-comments pt-0">
<div v-if="status.pf_type != 'text'" class="status-comment">
<div v-if="status.content.length" class="pt-3">
<div v-if="showCaption != true">
<div v-if="status.sensitive">
<span class="py-3">
<a class="text-dark font-weight-bold mr-1" :href="status.account.url" v-bind:title="status.account.username">{{truncate(status.account.username,15)}}</a>
<span class="text-break">
<span class="font-italic text-muted">This comment may contain sensitive material</span>
<span class="text-primary cursor-pointer pl-1" @click="showCaption = true">Show</span>
<span class="text-primary cursor-pointer pl-1" @click="status.sensitive = false">Show</span>
</span>
</span>
</div>

Wyświetl plik

@ -167,7 +167,7 @@
</div>
<div v-else-if="status.pf_type === 'photo'" class="w-100">
<photo-presenter :status="status" v-on:lightbox="lightbox"></photo-presenter>
<photo-presenter :status="status" v-on:lightbox="lightbox" v-on:togglecw="status.sensitive = false"></photo-presenter>
</div>
<div v-else-if="status.pf_type === 'video'" class="w-100">
@ -227,7 +227,7 @@
<span class="like-count">{{status.favourites_count}}</span> {{status.favourites_count == 1 ? 'like' : 'likes'}}
</div>
<div v-if="status.pf_type != 'text'" class="caption">
<p class="mb-2 read-more" style="overflow: hidden;">
<p v-if="!status.sensitive" class="mb-2 read-more" style="overflow: hidden;">
<span class="username font-weight-bold">
<bdi><a class="text-dark" :href="profileUrl(status)">{{status.account.username}}</a></bdi>
</span>

Wyświetl plik

@ -1,5 +1,5 @@
<template>
<div v-if="status.sensitive == true">
<div v-if="status.sensitive == true" class="content-label-wrapper">
<div class="text-light content-label">
<p class="text-center">
<i class="far fa-eye-slash fa-2x"></i>
@ -8,17 +8,16 @@
Sensitive Content
</p>
<p class="text-center py-2">
This photo contains sensitive content which <br/>
some people may find offsensive or disturbing.
{{ status.spoiler_text ? status.spoiler_text : 'This post may contain sensitive content.'}}
</p>
<p class="mb-0">
<button @click="status.sensitive = false" class="btn btn-outline-light btn-block btn-sm font-weight-bold">See Photo</button>
<button @click="toggleContentWarning()" class="btn btn-outline-light btn-block btn-sm font-weight-bold">See Post</button>
</p>
</div>
<blur-hash-image
width="32"
height="32"
punch="1"
:punch="1"
:hash="status.media_attachments[0].blurhash"
:alt="altText(status)"/>
</div>
@ -37,10 +36,18 @@
.content-label {
margin: 0;
position: absolute;
top:45%;
top:50%;
left:50%;
z-index: 999;
z-index: 2;
transform: translate(-50%, -50%);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
z-index: 2;
background: rgba(0, 0, 0, 0.2)
}
</style>
@ -56,6 +63,10 @@
}
return 'Photo was not tagged with any alt text.';
},
toggleContentWarning(status) {
this.$emit('togglecw');
}
}
}