74 lines
3 KiB
JavaScript
74 lines
3 KiB
JavaScript
import { mapState } from 'vuex'
|
|
import { get } from 'lodash'
|
|
|
|
/**
|
|
* This is for backwards compatibility. We originally didn't recieve
|
|
* extra info like a reason why an instance was rejected/quarantined/etc.
|
|
* Because we didn't want to break backwards compatibility it was decided
|
|
* to add an extra "info" key.
|
|
*/
|
|
const toInstanceReasonObject = (instances, info, key) => {
|
|
return instances.map(instance => {
|
|
if (info[key] && info[key][instance] && info[key][instance]['reason']) {
|
|
return { instance: instance, reason: info[key][instance]['reason'] }
|
|
}
|
|
return { instance: instance, reason: '' }
|
|
})
|
|
}
|
|
|
|
const MRFTransparencyPanel = {
|
|
computed: {
|
|
...mapState({
|
|
federationPolicy: state => get(state, 'instance.federationPolicy'),
|
|
mrfPolicies: state => get(state, 'instance.federationPolicy.mrf_policies', []),
|
|
quarantineInstances: state => toInstanceReasonObject(
|
|
get(state, 'instance.federationPolicy.quarantined_instances', []),
|
|
get(state, 'instance.federationPolicy.quarantined_instances_info', []),
|
|
'quarantined_instances'
|
|
),
|
|
acceptInstances: state => toInstanceReasonObject(
|
|
get(state, 'instance.federationPolicy.mrf_simple.accept', []),
|
|
get(state, 'instance.federationPolicy.mrf_simple_info', []),
|
|
'accept'
|
|
),
|
|
rejectInstances: state => toInstanceReasonObject(
|
|
get(state, 'instance.federationPolicy.mrf_simple.reject', []),
|
|
get(state, 'instance.federationPolicy.mrf_simple_info', []),
|
|
'reject'
|
|
),
|
|
ftlRemovalInstances: state => toInstanceReasonObject(
|
|
get(state, 'instance.federationPolicy.mrf_simple.federated_timeline_removal', []),
|
|
get(state, 'instance.federationPolicy.mrf_simple_info', []),
|
|
'federated_timeline_removal'
|
|
),
|
|
mediaNsfwInstances: state => toInstanceReasonObject(
|
|
get(state, 'instance.federationPolicy.mrf_simple.media_nsfw', []),
|
|
get(state, 'instance.federationPolicy.mrf_simple_info', []),
|
|
'media_nsfw'
|
|
),
|
|
mediaRemovalInstances: state => toInstanceReasonObject(
|
|
get(state, 'instance.federationPolicy.mrf_simple.media_removal', []),
|
|
get(state, 'instance.federationPolicy.mrf_simple_info', []),
|
|
'media_removal'
|
|
),
|
|
keywordsFtlRemoval: state => get(state, 'instance.federationPolicy.mrf_keyword.federated_timeline_removal', []),
|
|
keywordsReject: state => get(state, 'instance.federationPolicy.mrf_keyword.reject', []),
|
|
keywordsReplace: state => get(state, 'instance.federationPolicy.mrf_keyword.replace', [])
|
|
}),
|
|
hasInstanceSpecificPolicies () {
|
|
return this.quarantineInstances.length ||
|
|
this.acceptInstances.length ||
|
|
this.rejectInstances.length ||
|
|
this.ftlRemovalInstances.length ||
|
|
this.mediaNsfwInstances.length ||
|
|
this.mediaRemovalInstances.length
|
|
},
|
|
hasKeywordPolicies () {
|
|
return this.keywordsFtlRemoval.length ||
|
|
this.keywordsReject.length ||
|
|
this.keywordsReplace.length
|
|
}
|
|
}
|
|
}
|
|
|
|
export default MRFTransparencyPanel
|