From 90f764224d7518da08653db285c5343ca5d078ac Mon Sep 17 00:00:00 2001 From: Ariadne Conill Date: Sat, 9 Nov 2019 00:09:32 -0600 Subject: [PATCH] about: add MRF transparency panel --- src/boot/after_store.js | 3 + src/components/about/about.js | 4 +- src/components/about/about.vue | 1 + .../mrf_transparency_panel.js | 33 +++++++ .../mrf_transparency_panel.vue | 91 +++++++++++++++++++ src/i18n/en.json | 18 +++- 6 files changed, 148 insertions(+), 2 deletions(-) create mode 100644 src/components/mrf_transparency_panel/mrf_transparency_panel.js create mode 100644 src/components/mrf_transparency_panel/mrf_transparency_panel.vue diff --git a/src/boot/after_store.js b/src/boot/after_store.js index e96baaf0e2..bba3288c48 100644 --- a/src/boot/after_store.js +++ b/src/boot/after_store.js @@ -227,6 +227,9 @@ const getNodeInfo = async ({ store }) => { store.dispatch('setInstanceOption', { name: 'frontendVersion', value: frontendVersion }) store.dispatch('setInstanceOption', { name: 'tagPolicyAvailable', value: metadata.federation.mrf_policies.includes('TagPolicy') }) + const federation = metadata.federation + store.dispatch('setInstanceOption', { name: 'federationPolicy', value: federation }) + const accounts = metadata.staffAccounts await resolveStaffAccounts({ store, accounts }) } else { diff --git a/src/components/about/about.js b/src/components/about/about.js index 5c95c07957..1df2584505 100644 --- a/src/components/about/about.js +++ b/src/components/about/about.js @@ -2,13 +2,15 @@ import InstanceSpecificPanel from '../instance_specific_panel/instance_specific_ import FeaturesPanel from '../features_panel/features_panel.vue' import TermsOfServicePanel from '../terms_of_service_panel/terms_of_service_panel.vue' import StaffPanel from '../staff_panel/staff_panel.vue' +import MRFTransparencyPanel from '../mrf_transparency_panel/mrf_transparency_panel.vue' const About = { components: { InstanceSpecificPanel, FeaturesPanel, TermsOfServicePanel, - StaffPanel + StaffPanel, + MRFTransparencyPanel }, computed: { showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel }, diff --git a/src/components/about/about.vue b/src/components/about/about.vue index ad520d11ee..518f6184da 100644 --- a/src/components/about/about.vue +++ b/src/components/about/about.vue @@ -3,6 +3,7 @@ + diff --git a/src/components/mrf_transparency_panel/mrf_transparency_panel.js b/src/components/mrf_transparency_panel/mrf_transparency_panel.js new file mode 100644 index 0000000000..3791dd1233 --- /dev/null +++ b/src/components/mrf_transparency_panel/mrf_transparency_panel.js @@ -0,0 +1,33 @@ +const MRFTransparencyPanel = { + components: { + }, + computed: { + federationPolicy() { + return this.$store.state.instance.federationPolicy + }, + mrfPolicies() { + return this.$store.state.instance.federationPolicy.mrf_policies + }, + acceptInstances() { + return this.$store.state.instance.federationPolicy.mrf_simple.accept + }, + rejectInstances() { + return this.$store.state.instance.federationPolicy.mrf_simple.reject + }, + quarantineInstances() { + return this.$store.state.instance.federationPolicy.quarantined_instances + }, + ftlRemovalInstances() { + return this.$store.state.instance.federationPolicy.mrf_simple.federated_timeline_removal + }, + mediaNsfwInstances() { + return this.$store.state.instance.federationPolicy.mrf_simple.media_nsfw + }, + mediaRemovalInstances() { + return this.$store.state.instance.federationPolicy.mrf_simple.media_removal + } + } +} + +export default MRFTransparencyPanel + diff --git a/src/components/mrf_transparency_panel/mrf_transparency_panel.vue b/src/components/mrf_transparency_panel/mrf_transparency_panel.vue new file mode 100644 index 0000000000..f3507591fb --- /dev/null +++ b/src/components/mrf_transparency_panel/mrf_transparency_panel.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/i18n/en.json b/src/i18n/en.json index 4cd661774d..ead333c136 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -1,6 +1,22 @@ { "about": { - "staff": "Staff" + "staff": "Staff", + "federation": "Federation", + "mrf_policies": "Enabled MRF Policies", + "mrf_policies_desc": "MRF policies manipulate the federation behaviour of the instance. The following policies are enabled:", + "mrf_policy_simple": "Instance-specific Policies", + "mrf_policy_simple_accept": "Accept", + "mrf_policy_simple_accept_desc": "This instance only accepts messages from the following instances:", + "mrf_policy_simple_reject": "Reject", + "mrf_policy_simple_reject_desc": "This instance will not accept messages from the following instances:", + "mrf_policy_simple_quarantine": "Quarantine", + "mrf_policy_simple_quarantine_desc": "This instance will send only public posts to the following instances:", + "mrf_policy_simple_ftl_removal": "Removal from \"The Whole Known Network\" Timeline", + "mrf_policy_simple_ftl_removal_desc": "This instance removes these instances from \"The Whole Known Network\" timeline:", + "mrf_policy_simple_media_removal": "Media Removal", + "mrf_policy_simple_media_removal_desc": "This instance removes media from posts on the following instances:", + "mrf_policy_simple_media_nsfw": "Media Force-set As Sensitive", + "mrf_policy_simple_media_nsfw_desc": "This instance forces media to be set sensitive in posts on the following instances:" }, "chat": { "title": "Chat"