From 2cda9010df6192b008515b2138a2e071473bc40b Mon Sep 17 00:00:00 2001 From: taehoon Date: Tue, 19 Mar 2019 04:53:11 -0400 Subject: add user reporting modal --- src/modules/reports.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/modules/reports.js (limited to 'src/modules/reports.js') diff --git a/src/modules/reports.js b/src/modules/reports.js new file mode 100644 index 00000000..b712cfeb --- /dev/null +++ b/src/modules/reports.js @@ -0,0 +1,33 @@ +import filter from 'lodash/filter' + +const reports = { + state: { + userId: null, + statuses: [], + modalActivated: false + }, + mutations: { + openUserReportingModal (state, { userId, statuses }) { + state.userId = userId + state.statuses = statuses + state.modalActivated = true + }, + closeUserReportingModal (state) { + state.modalActivated = false + } + }, + actions: { + openUserReportingModal ({ rootState, commit }, userId) { + const statuses = filter(rootState.statuses.allStatuses, status => status.user.id === userId) + commit('openUserReportingModal', { userId, statuses }) + }, + closeUserReportingModal ({ commit }) { + commit('closeUserReportingModal') + }, + reportUser ({ commit }, payload) { + console.log('payload', payload) + } + } +} + +export default reports -- cgit v1.2.3-70-g09d2 From cea6ea42f0f882864e01f79a8af08c8bc59272fb Mon Sep 17 00:00:00 2001 From: taehoon Date: Wed, 20 Mar 2019 11:45:19 -0400 Subject: add api service function --- .../user_reporting_modal/user_reporting_modal.js | 6 +++--- src/modules/reports.js | 5 +++-- src/services/api/api.service.js | 22 +++++++++++++++++++++- .../backend_interactor_service.js | 4 +++- 4 files changed, 30 insertions(+), 7 deletions(-) (limited to 'src/modules/reports.js') diff --git a/src/components/user_reporting_modal/user_reporting_modal.js b/src/components/user_reporting_modal/user_reporting_modal.js index fb9ea16d..87b6fde9 100644 --- a/src/components/user_reporting_modal/user_reporting_modal.js +++ b/src/components/user_reporting_modal/user_reporting_modal.js @@ -44,12 +44,12 @@ const UserReportingModal = { this.$store.dispatch('closeUserReportingModal') }, reportUser () { - const payload = { + const params = { comment: this.comment, forward: this.forward, - statusIdsToReport: this.statusIdsToReport + statusIds: this.statusIdsToReport } - this.$store.dispatch('reportUser', payload) + this.$store.dispatch('reportUser', params) }, isChecked (statusId) { return this.statusIdsToReport.indexOf(statusId) !== -1 diff --git a/src/modules/reports.js b/src/modules/reports.js index b712cfeb..0470b3be 100644 --- a/src/modules/reports.js +++ b/src/modules/reports.js @@ -24,8 +24,9 @@ const reports = { closeUserReportingModal ({ commit }) { commit('closeUserReportingModal') }, - reportUser ({ commit }, payload) { - console.log('payload', payload) + reportUser ({ state, rootState, commit }, params) { + rootState.api.backendInteractor.reportUser({ userId: state.userId, ...params }) + .then(result => console.log(result)) } } } diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js index c5e2280d..9753049f 100644 --- a/src/services/api/api.service.js +++ b/src/services/api/api.service.js @@ -50,6 +50,7 @@ const MASTODON_MEDIA_UPLOAD_URL = '/api/v1/media' const MASTODON_STATUS_FAVORITEDBY_URL = id => `/api/v1/statuses/${id}/favourited_by` const MASTODON_STATUS_REBLOGGEDBY_URL = id => `/api/v1/statuses/${id}/reblogged_by` const MASTODON_PROFILE_UPDATE_URL = '/api/v1/accounts/update_credentials' +const MASTODON_REPORT_USER_URL = 'api/v1/reports' import { each, map, concat, last } from 'lodash' import { parseStatus, parseUser, parseNotification, parseAttachment } from '../entity_normalizer/entity_normalizer.service.js' @@ -722,6 +723,24 @@ const fetchRebloggedByUsers = ({id}) => { return promisedRequest(MASTODON_STATUS_REBLOGGEDBY_URL(id)).then((users) => users.map(parseUser)) } +const reportUser = ({credentials, userId, statusIds, comment, forward}) => { + const payload = { + 'account_id': userId, + 'status_ids': statusIds, + comment, + forward + } + return fetch(MASTODON_REPORT_USER_URL, { + body: JSON.stringify(payload), + headers: { + ...authHeaders(credentials), + 'Accept': 'application/json', + 'Content-Type': 'application/json' + }, + method: 'POST' + }).then((data) => data.json()) +} + const apiService = { verifyCredentials, fetchTimeline, @@ -773,7 +792,8 @@ const apiService = { suggestions, markNotificationsAsSeen, fetchFavoritedByUsers, - fetchRebloggedByUsers + fetchRebloggedByUsers, + reportUser } 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 index d2b581ca..58bb1248 100644 --- a/src/services/backend_interactor_service/backend_interactor_service.js +++ b/src/services/backend_interactor_service/backend_interactor_service.js @@ -115,6 +115,7 @@ const backendInteractorService = (credentials) => { const fetchFavoritedByUsers = (id) => apiService.fetchFavoritedByUsers({id}) const fetchRebloggedByUsers = (id) => apiService.fetchRebloggedByUsers({id}) + const reportUser = (params) => apiService.reportUser({credentials, ...params}) const backendInteractorServiceInstance = { fetchStatus, @@ -159,7 +160,8 @@ const backendInteractorService = (credentials) => { approveUser, denyUser, fetchFavoritedByUsers, - fetchRebloggedByUsers + fetchRebloggedByUsers, + reportUser } return backendInteractorServiceInstance -- cgit v1.2.3-70-g09d2 From 1b07c6ae4f0d06e25b124bba2f088d3a02f78ecc Mon Sep 17 00:00:00 2001 From: taehoon Date: Wed, 20 Mar 2019 12:20:31 -0400 Subject: add processing state and close modal after api request is completed --- src/components/user_reporting_modal/user_reporting_modal.js | 12 ++++++++++-- src/components/user_reporting_modal/user_reporting_modal.vue | 2 +- src/modules/reports.js | 4 ---- 3 files changed, 11 insertions(+), 7 deletions(-) (limited to 'src/modules/reports.js') diff --git a/src/components/user_reporting_modal/user_reporting_modal.js b/src/components/user_reporting_modal/user_reporting_modal.js index ed7e74f0..ac5b5192 100644 --- a/src/components/user_reporting_modal/user_reporting_modal.js +++ b/src/components/user_reporting_modal/user_reporting_modal.js @@ -11,7 +11,8 @@ const UserReportingModal = { return { comment: '', forward: false, - statusIdsToReport: [] + statusIdsToReport: [], + processing: false } }, computed: { @@ -40,6 +41,7 @@ const UserReportingModal = { this.comment = '' this.forward = false this.statusIdsToReport = [] + this.processing = false } }, methods: { @@ -47,12 +49,18 @@ const UserReportingModal = { this.$store.dispatch('closeUserReportingModal') }, reportUser () { + this.processing = true const params = { + userId: this.userId, comment: this.comment, forward: this.forward, statusIds: this.statusIdsToReport } - this.$store.dispatch('reportUser', params) + this.$store.state.api.backendInteractor.reportUser(params) + .then(() => { + this.processing = false + this.closeModal() + }) }, isChecked (statusId) { return this.statusIdsToReport.indexOf(statusId) !== -1 diff --git a/src/components/user_reporting_modal/user_reporting_modal.vue b/src/components/user_reporting_modal/user_reporting_modal.vue index 49839da3..30d3ab19 100644 --- a/src/components/user_reporting_modal/user_reporting_modal.vue +++ b/src/components/user_reporting_modal/user_reporting_modal.vue @@ -19,7 +19,7 @@ Forward to {{remoteInstance}}
- +
diff --git a/src/modules/reports.js b/src/modules/reports.js index 0470b3be..904022f1 100644 --- a/src/modules/reports.js +++ b/src/modules/reports.js @@ -23,10 +23,6 @@ const reports = { }, closeUserReportingModal ({ commit }) { commit('closeUserReportingModal') - }, - reportUser ({ state, rootState, commit }, params) { - rootState.api.backendInteractor.reportUser({ userId: state.userId, ...params }) - .then(result => console.log(result)) } } } -- cgit v1.2.3-70-g09d2