logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe
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:

Msrc/components/user_profile/user_profile.js12++++++++++++
Msrc/components/user_profile/user_profile.vue1+
Msrc/i18n/en.json1+
Msrc/modules/statuses.js1+
Msrc/services/api/api.service.js4++++
Mtest/unit/specs/components/user_profile.spec.js32++++++++++++++++++++++++++++++++
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 } } },