forked from mirror/pixelfed
Update PostComponent, add recent posts
This commit is contained in:
parent
b9670b4940
commit
b289f2f6c1
1 changed files with 81 additions and 2 deletions
|
@ -253,6 +253,39 @@
|
|||
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="showProfileMorePosts">
|
||||
<div class="py-4">
|
||||
<hr>
|
||||
</div>
|
||||
<p class="text-lighter px-3" style="font-weight: 600;font-size: 15px;">More posts from <a :href="'/'+statusUsername" class="text-dark">{{this.statusUsername}}</a></p>
|
||||
<div class="profile-timeline mt-md-4">
|
||||
<div class="row">
|
||||
<div class="col-4 p-1 p-md-3" v-for="(s, index) in profileMorePosts" :key="'tlob:'+index">
|
||||
<a class="card info-overlay card-md-border-0" :href="getStatusUrl(s)" v-once>
|
||||
<div :class="[s.sensitive ? 'square' : 'square ' + s.media_attachments[0].filter_class]">
|
||||
<span v-if="s.pf_type == 'photo:album'" class="float-right mr-3 post-icon"><i class="fas fa-images fa-2x"></i></span>
|
||||
<span v-if="s.pf_type == 'video'" class="float-right mr-3 post-icon"><i class="fas fa-video fa-2x"></i></span>
|
||||
<span v-if="s.pf_type == 'video:album'" class="float-right mr-3 post-icon"><i class="fas fa-film fa-2x"></i></span>
|
||||
<div class="square-content" v-bind:style="previewBackground(s)">
|
||||
</div>
|
||||
<div class="info-overlay-text">
|
||||
<h5 class="text-white m-auto font-weight-bold">
|
||||
<span>
|
||||
<span class="far fa-heart fa-lg p-2 d-flex-inline"></span>
|
||||
<span class="d-flex-inline">{{s.favourites_count}}</span>
|
||||
</span>
|
||||
<span>
|
||||
<span class="fas fa-retweet fa-lg p-2 d-flex-inline"></span>
|
||||
<span class="d-flex-inline">{{s.reblogs_count}}</span>
|
||||
</span>
|
||||
</h5>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="layout == 'moment'" class="momentui">
|
||||
|
@ -676,7 +709,9 @@ export default {
|
|||
ctxEmbedShowLikes: false,
|
||||
ctxEmbedCompactMode: false,
|
||||
layout: this.profileLayout,
|
||||
canEdit: false
|
||||
canEdit: false,
|
||||
showProfileMorePosts: false,
|
||||
profileMorePosts: []
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
@ -782,6 +817,7 @@ export default {
|
|||
}
|
||||
}
|
||||
this.loaded = true;
|
||||
this.fetchProfilePosts();
|
||||
}).catch(error => {
|
||||
swal('Oops!', 'An error occured, please try refreshing the page.', 'error');
|
||||
});
|
||||
|
@ -1270,7 +1306,50 @@ export default {
|
|||
reply.url :
|
||||
'/i/web/post/_/' + profile.id + '/' + reply.id;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
fetchProfilePosts() {
|
||||
let self = this;
|
||||
let apiUrl = '/api/pixelfed/v1/accounts/' + this.statusProfileId + '/statuses';
|
||||
axios.get(apiUrl, {
|
||||
params: {
|
||||
only_media: true,
|
||||
min_id: 1,
|
||||
limit: 9
|
||||
}
|
||||
})
|
||||
.then(res => {
|
||||
let data = res.data.filter(function(status) {
|
||||
return status.media_attachments.length > 0 &&
|
||||
status.id != self.statusId &&
|
||||
status.sensitive == false
|
||||
});
|
||||
let ids = data.map(status => status.id);
|
||||
if(data.length >= 3) {
|
||||
self.showProfileMorePosts = true;
|
||||
}
|
||||
self.profileMorePosts = data.slice(0,6);
|
||||
})
|
||||
},
|
||||
|
||||
previewUrl(status) {
|
||||
return status.sensitive ? '/storage/no-preview.png?v=' + new Date().getTime() : status.media_attachments[0].preview_url;
|
||||
},
|
||||
|
||||
previewBackground(status) {
|
||||
let preview = this.previewUrl(status);
|
||||
return 'background-image: url(' + preview + ');';
|
||||
},
|
||||
|
||||
getStatusUrl(status) {
|
||||
return status.url;
|
||||
|
||||
if(status.local == true) {
|
||||
return status.url;
|
||||
}
|
||||
|
||||
return '/i/web/post/_/' + status.account.id + '/' + status.id;
|
||||
},
|
||||
|
||||
},
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue