mrf_transparency_panel.js (3077B)
- 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, reason: info[key][instance].reason }
- }
- return { 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