commit: b82ba54addf0cd66419db478a93d1ee8350eeedd
parent: 8197c77f75929aad557c98a5f698159b1a6d0c90
Author: Shpuld Shpludson <shp@cock.li>
Date: Sat, 26 Jan 2019 21:11:02 +0000
Merge branch 'feature/media-timeline' into 'develop'
media timeline
See merge request pleroma/pleroma-fe!472
Diffstat:
6 files changed, 51 insertions(+), 0 deletions(-)
diff --git a/src/components/user_profile/user_profile.js b/src/components/user_profile/user_profile.js
@@ -6,8 +6,10 @@ const UserProfile = {
created () {
this.$store.commit('clearTimeline', { timeline: 'user' })
this.$store.commit('clearTimeline', { timeline: 'favorites' })
+ this.$store.commit('clearTimeline', { timeline: 'media' })
this.$store.dispatch('startFetching', ['user', this.fetchBy])
this.$store.dispatch('startFetching', ['favorites', this.fetchBy])
+ this.$store.dispatch('startFetching', ['media', this.fetchBy])
if (!this.user.id) {
this.$store.dispatch('fetchUser', this.fetchBy)
}
@@ -15,6 +17,7 @@ const UserProfile = {
destroyed () {
this.$store.dispatch('stopFetching', 'user')
this.$store.dispatch('stopFetching', 'favorites')
+ this.$store.dispatch('stopFetching', 'media')
},
computed: {
timeline () {
@@ -23,6 +26,9 @@ const UserProfile = {
favorites () {
return this.$store.state.statuses.timelines.favorites
},
+ media () {
+ return this.$store.state.statuses.timelines.media
+ },
userId () {
return this.$route.params.id || this.user.id
},
@@ -78,10 +84,13 @@ const UserProfile = {
}
this.$store.dispatch('stopFetching', 'user')
this.$store.dispatch('stopFetching', 'favorites')
+ this.$store.dispatch('stopFetching', 'media')
this.$store.commit('clearTimeline', { timeline: 'user' })
this.$store.commit('clearTimeline', { timeline: 'favorites' })
+ this.$store.commit('clearTimeline', { timeline: 'media' })
this.$store.dispatch('startFetching', ['user', this.fetchBy])
this.$store.dispatch('startFetching', ['favorites', this.fetchBy])
+ this.$store.dispatch('startFetching', ['media', this.fetchBy])
},
userId () {
if (!this.isExternal) {
@@ -89,10 +98,13 @@ const UserProfile = {
}
this.$store.dispatch('stopFetching', 'user')
this.$store.dispatch('stopFetching', 'favorites')
+ this.$store.dispatch('stopFetching', 'media')
this.$store.commit('clearTimeline', { timeline: 'user' })
this.$store.commit('clearTimeline', { timeline: 'favorites' })
+ this.$store.commit('clearTimeline', { timeline: 'media' })
this.$store.dispatch('startFetching', ['user', this.fetchBy])
this.$store.dispatch('startFetching', ['favorites', this.fetchBy])
+ this.$store.dispatch('startFetching', ['media', this.fetchBy])
},
user () {
if (this.user.id && !this.user.followers) {
diff --git a/src/components/user_profile/user_profile.vue b/src/components/user_profile/user_profile.vue
@@ -20,6 +20,7 @@
<i class="icon-spin3 animate-spin"></i>
</div>
</div>
+ <Timeline :label="$t('user_card.media')" :embedded="true" :title="$t('user_profile.media_title')" timeline-name="media" :timeline="media" :user-id="fetchBy" />
<Timeline v-if="isUs" :label="$t('user_card.favorites')" :embedded="true" :title="$t('user_profile.favorites_title')" timeline-name="favorites" :timeline="favorites"/>
</tab-switcher>
</div>
diff --git a/src/i18n/en.json b/src/i18n/en.json
@@ -335,6 +335,7 @@
"following": "Following!",
"follows_you": "Follows you!",
"its_you": "It's you!",
+ "media": "Media",
"mute": "Mute",
"muted": "Muted",
"per_day": "per day",
diff --git a/src/modules/statuses.js b/src/modules/statuses.js
@@ -37,6 +37,7 @@ export const defaultState = {
public: emptyTl(),
user: emptyTl(),
favorites: emptyTl(),
+ media: emptyTl(),
publicAndExternal: emptyTl(),
friends: emptyTl(),
tag: emptyTl(),
diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js
@@ -325,6 +325,7 @@ const fetchTimeline = ({timeline, credentials, since = false, until = false, use
notifications: QVITTER_USER_NOTIFICATIONS_URL,
'publicAndExternal': PUBLIC_AND_EXTERNAL_TIMELINE_URL,
user: QVITTER_USER_TIMELINE_URL,
+ media: QVITTER_USER_TIMELINE_URL,
favorites: MASTODON_USER_FAVORITES_TIMELINE_URL,
tag: TAG_TIMELINE_URL
}
@@ -345,6 +346,9 @@ const fetchTimeline = ({timeline, credentials, since = false, until = false, use
if (tag) {
url += `/${tag}.json`
}
+ if (timeline === 'media') {
+ params.push(['only_media', 1])
+ }
params.push(['count', 20])
diff --git a/test/unit/specs/components/user_profile.spec.js b/test/unit/specs/components/user_profile.spec.js
@@ -66,6 +66,22 @@ const externalProfileStore = new Vuex.Store({
viewing: 'statuses',
userId: 100,
flushMarker: 0
+ },
+ media: {
+ statuses: [],
+ statusesObject: {},
+ faves: [],
+ visibleStatuses: [],
+ visibleStatusesObject: {},
+ newStatusCount: 0,
+ maxId: 0,
+ minVisibleId: 0,
+ loading: false,
+ followers: [],
+ friends: [],
+ viewing: 'statuses',
+ userId: 100,
+ flushMarker: 0
}
}
},
@@ -116,6 +132,22 @@ const localProfileStore = new Vuex.Store({
viewing: 'statuses',
userId: 100,
flushMarker: 0
+ },
+ media: {
+ statuses: [],
+ statusesObject: {},
+ faves: [],
+ visibleStatuses: [],
+ visibleStatusesObject: {},
+ newStatusCount: 0,
+ maxId: 0,
+ minVisibleId: 0,
+ loading: false,
+ followers: [],
+ friends: [],
+ viewing: 'statuses',
+ userId: 100,
+ flushMarker: 0
}
}
},