Delete reports when downvoting them
This commit is contained in:
parent
34e0fec016
commit
80b650c2a9
@ -4,6 +4,7 @@ import { distance } from '@/tools';
|
||||
import i18n from '@/i18n';
|
||||
|
||||
import {
|
||||
DELETE_REPORT,
|
||||
HAS_VIBRATED_ONCE,
|
||||
INTRO_WAS_SEEN,
|
||||
INTRO_WAS_UNSEEN,
|
||||
@ -27,7 +28,7 @@ export function fetchReports({ commit, state }) {
|
||||
commit(IS_LOADING);
|
||||
return api.getActiveReports()
|
||||
.then((reports) => {
|
||||
// Filter reports which are too far
|
||||
// Filter reports which are too far or have too many downvotes
|
||||
const reportsToCommit = reports.filter(
|
||||
(report) => {
|
||||
if (report.attributes.downvotes >= constants.REPORT_DOWNVOTES_THRESHOLD) {
|
||||
@ -56,7 +57,13 @@ export function downvote({ commit }, { id }) {
|
||||
// Hide details
|
||||
commit(SHOW_REPORT_DETAILS, { id: null, userAsked: null });
|
||||
return api.downvote(id)
|
||||
.then(report => commit(PUSH_REPORT, { report }));
|
||||
.then((report) => {
|
||||
if (report.attributes.downvotes >= constants.REPORT_DOWNVOTES_THRESHOLD) {
|
||||
commit(DELETE_REPORT, { report });
|
||||
} else {
|
||||
commit(PUSH_REPORT, { report });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
export function upvote({ commit }, { id }) {
|
||||
|
@ -1,3 +1,4 @@
|
||||
export const DELETE_REPORT = 'DELETE_REPORT';
|
||||
export const HAS_VIBRATED_ONCE = 'HAS_VIBRATED_ONCE';
|
||||
export const INTRO_WAS_SEEN = 'INTRO_WAS_SEEN';
|
||||
export const INTRO_WAS_UNSEEN = 'INTRO_WAS_UNSEEN';
|
||||
|
@ -128,6 +128,12 @@ export const initialState = {
|
||||
};
|
||||
|
||||
export const mutations = {
|
||||
[types.DELETE_REPORT](state, { report }) {
|
||||
const reportIndex = state.reports.findIndex(item => item.id === report.id);
|
||||
if (reportIndex !== -1) {
|
||||
Vue.delete(state.reports, reportIndex);
|
||||
}
|
||||
},
|
||||
[types.HAS_VIBRATED_ONCE](state) {
|
||||
state.hasVibratedOnce = true;
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user