aboutsummaryrefslogtreecommitdiff
path: root/src/components/timeline
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/timeline')
-rw-r--r--src/components/timeline/timeline.js31
-rw-r--r--src/components/timeline/timeline.vue33
2 files changed, 61 insertions, 3 deletions
diff --git a/src/components/timeline/timeline.js b/src/components/timeline/timeline.js
index 3dc07f9e..06435745 100644
--- a/src/components/timeline/timeline.js
+++ b/src/components/timeline/timeline.js
@@ -1,6 +1,7 @@
import Status from '../status/status.vue'
import timelineFetcher from '../../services/timeline_fetcher/timeline_fetcher.service.js'
import StatusOrConversation from '../status_or_conversation/status_or_conversation.vue'
+import UserCard from '../user_card/user_card.vue'
const Timeline = {
props: [
@@ -10,11 +11,21 @@ const Timeline = {
'userId'
],
computed: {
- timelineError () { return this.$store.state.statuses.error }
+ timelineError () { return this.$store.state.statuses.error },
+ followers () {
+ return this.timeline.followers
+ },
+ friends () {
+ return this.timeline.friends
+ },
+ viewing () {
+ return this.timeline.viewing
+ }
},
components: {
Status,
- StatusOrConversation
+ StatusOrConversation,
+ UserCard
},
created () {
const store = this.$store
@@ -30,6 +41,12 @@ const Timeline = {
showImmediately,
userId: this.userId
})
+
+ // don't fetch followers for public, friend, twkn
+ if (this.timelineName === 'user') {
+ this.fetchFriends()
+ this.fetchFollowers()
+ }
},
methods: {
showNewStatuses () {
@@ -48,6 +65,16 @@ const Timeline = {
userId: this.userId
}).then(() => store.commit('setLoading', { timeline: this.timelineName, value: false }))
},
+ fetchFollowers () {
+ const id = this.userId
+ this.$store.state.api.backendInteractor.fetchFollowers({ id })
+ .then((followers) => this.$store.dispatch('addFollowers', { followers }))
+ },
+ fetchFriends () {
+ const id = this.userId
+ this.$store.state.api.backendInteractor.fetchFriends({ id })
+ .then((friends) => this.$store.dispatch('addFriends', { friends }))
+ },
scrollLoad (e) {
let height = Math.max(document.body.offsetHeight, document.body.scrollHeight)
if (this.timeline.loading === false && this.$store.state.config.autoLoad && (window.innerHeight + window.pageYOffset) >= (height - 750)) {
diff --git a/src/components/timeline/timeline.vue b/src/components/timeline/timeline.vue
index a9162120..bf64b935 100644
--- a/src/components/timeline/timeline.vue
+++ b/src/components/timeline/timeline.vue
@@ -1,5 +1,5 @@
<template>
- <div class="timeline panel panel-default">
+ <div class="timeline panel panel-default" v-if="viewing == 'statuses'">
<div class="panel-heading timeline-heading base01-background base04">
<div class="title">
{{title}}
@@ -24,6 +24,30 @@
</div>
</div>
</div>
+ <div class="timeline panel panel-default" v-else-if="viewing == 'followers'">
+ <div class="panel-heading timeline-heading base01-background base04">
+ <div class="title">
+ Followers
+ </div>
+ </div>
+ <div class="panel-body">
+ <div class="timeline">
+ <user-card v-for="follower in followers" :user="follower" :showFollows="false"></user-card>
+ </div>
+ </div>
+ </div>
+ <div class="timeline panel panel-default" v-else-if="viewing == 'friends'">
+ <div class="panel-heading timeline-heading base01-background base04">
+ <div class="title">
+ Following
+ </div>
+ </div>
+ <div class="panel-body">
+ <div class="timeline">
+ <user-card v-for="friend in friends" :user="friend" :showFollows="true"></user-card>
+ </div>
+ </div>
+ </div>
</template>
<script src="./timeline.js"></script>
@@ -65,6 +89,13 @@
}
}
+ .avatar {
+ padding-top: 0.3em;
+ width:32px;
+ height: 32px;
+ border-radius: 50%;
+ }
+
.new-status-notification {
position:relative;