logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe
commit: 9763009d8616765ce87f1dcf8d22e935c45a22c8
parent: f40653a49d6cb0bde683a4f93dbb632592e141b6
Author: Roger Braun <roger@rogerbraun.net>
Date:   Mon, 20 Feb 2017 18:06:01 +0100

Merge branch 'feature/mutes' into develop

Diffstat:

Msrc/components/user_card_content/user_card_content.vue1+
Msrc/main.js10+++++-----
Msrc/modules/users.js6++++++
Msrc/services/api/api.service.js31+++++++++++++++++++++++++++++--
Msrc/services/backend_interactor_service/backend_interactor_service.js10+++++++++-
5 files changed, 50 insertions(+), 8 deletions(-)

diff --git a/src/components/user_card_content/user_card_content.vue b/src/components/user_card_content/user_card_content.vue @@ -82,6 +82,7 @@ toggleMute () { const store = this.$store store.commit('setMuted', {user: this.user, muted: !this.user.muted}) + store.state.api.backendInteractor.setUserMute(this.user) } } } diff --git a/src/main.js b/src/main.js @@ -17,7 +17,7 @@ import configModule from './modules/config.js' import VueTimeago from 'vue-timeago' -// import createPersistedState from 'vuex-persistedstate' +import createPersistedState from 'vuex-persistedstate' Vue.use(Vuex) Vue.use(VueRouter) @@ -28,9 +28,9 @@ Vue.use(VueTimeago, { } }) -// const persistedStateOptions = { -// paths: ['users.users', 'statuses.notifications'] -// } +const persistedStateOptions = { + paths: ['users.users'] +} const store = new Vuex.Store({ modules: { @@ -39,7 +39,7 @@ const store = new Vuex.Store({ api: apiModule, config: configModule }, - // plugins: [createPersistedState(persistedStateOptions)], + plugins: [createPersistedState(persistedStateOptions)], strict: process.env.NODE_ENV !== 'production' }) diff --git a/src/modules/users.js b/src/modules/users.js @@ -82,6 +82,12 @@ const users = { // Start getting fresh tweets. store.dispatch('startFetching', 'friends') + // Get user mutes and follower info + store.rootState.api.backendInteractor.fetchMutes().then((mutedUsers) => { + each(mutedUsers, (user) => { user.muted = true }) + store.commit('addNewUsers', mutedUsers) + }) + // Fetch our friends store.rootState.api.backendInteractor.fetchFriends() .then((friends) => commit('addNewUsers', friends)) diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js @@ -16,6 +16,7 @@ const MENTIONS_URL = '/api/statuses/mentions.json' const FRIENDS_URL = '/api/statuses/friends.json' const FOLLOWING_URL = '/api/friendships/create.json' const UNFOLLOWING_URL = '/api/friendships/destroy.json' +const QVITTER_USER_PREF_URL = '/api/qvitter/set_profile_pref.json' // const USER_URL = '/api/users/show.json' const oldfetch = window.fetch @@ -58,7 +59,7 @@ const fetchFriends = ({credentials}) => { const fetchAllFollowing = ({username, credentials}) => { const url = `${ALL_FOLLOWING_URL}/${username}.json` return fetch(url, { headers: authHeaders(credentials) }) - .then((data) => data.json().users) + .then((data) => data.json()) } const fetchMentions = ({username, sinceId = 0, credentials}) => { @@ -79,6 +80,22 @@ const fetchStatus = ({id, credentials}) => { .then((data) => data.json()) } +const setUserMute = ({id, credentials, muted = true}) => { + const form = new FormData() + + const muteInteger = muted ? 1 : 0 + + form.append('namespace', 'qvitter') + form.append('data', muteInteger) + form.append('topic', `mute:${id}`) + + return fetch(QVITTER_USER_PREF_URL, { + method: 'POST', + headers: authHeaders(credentials), + body: form + }) +} + const fetchTimeline = ({timeline, credentials, since = false, until = false}) => { const timelineUrls = { public: PUBLIC_TIMELINE_URL, @@ -162,6 +179,14 @@ const uploadMedia = ({formData, credentials}) => { .then((text) => (new DOMParser()).parseFromString(text, 'application/xml')) } +const fetchMutes = ({credentials}) => { + const url = '/api/qvitter/mutes.json' + + return fetch(url, { + headers: authHeaders(credentials) + }).then((data) => data.json()) +} + const apiService = { verifyCredentials, fetchTimeline, @@ -177,7 +202,9 @@ const apiService = { postStatus, deleteStatus, uploadMedia, - fetchAllFollowing + fetchAllFollowing, + setUserMute, + fetchMutes } export default apiService diff --git a/src/services/backend_interactor_service/backend_interactor_service.js b/src/services/backend_interactor_service/backend_interactor_service.js @@ -34,6 +34,12 @@ const backendInteractorService = (credentials) => { return timelineFetcherService.startFetching({timeline, store, credentials}) } + const setUserMute = ({id, muted = true}) => { + return apiService.setUserMute({id, muted, credentials}) + } + + const fetchMutes = () => apiService.fetchMutes({credentials}) + const backendInteractorServiceInstance = { fetchStatus, fetchConversation, @@ -43,7 +49,9 @@ const backendInteractorService = (credentials) => { unfollowUser, fetchAllFollowing, verifyCredentials: apiService.verifyCredentials, - startFetching + startFetching, + setUserMute, + fetchMutes } return backendInteractorServiceInstance