aboutsummaryrefslogtreecommitdiff
path: root/src/components/mrf_transparency_panel
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2020-06-12 14:17:56 +0000
committerlain <lain@soykaf.club>2020-06-12 14:17:56 +0000
commitfd109fa355ac491b86d1e10fcbfcdd577f1ac4d7 (patch)
treec27c2f3b684540b10ef9d4477349b4a8681eb7b2 /src/components/mrf_transparency_panel
parent1946661911c97651ba5356db22a0ddd00ba04864 (diff)
parent48365819d14d80d2aeb7174bca05bf76eee2e8e0 (diff)
Merge branch 'develop' into 'chore/improve-default-tos'
# Conflicts: # static/terms-of-service.html
Diffstat (limited to 'src/components/mrf_transparency_panel')
-rw-r--r--src/components/mrf_transparency_panel/mrf_transparency_panel.js35
-rw-r--r--src/components/mrf_transparency_panel/mrf_transparency_panel.vue167
2 files changed, 202 insertions, 0 deletions
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 00000000..a0b600d2
--- /dev/null
+++ b/src/components/mrf_transparency_panel/mrf_transparency_panel.js
@@ -0,0 +1,35 @@
+import { mapState } from 'vuex'
+import { get } from 'lodash'
+
+const MRFTransparencyPanel = {
+ computed: {
+ ...mapState({
+ federationPolicy: state => get(state, 'instance.federationPolicy'),
+ mrfPolicies: state => get(state, 'instance.federationPolicy.mrf_policies', []),
+ quarantineInstances: state => get(state, 'instance.federationPolicy.quarantined_instances', []),
+ acceptInstances: state => get(state, 'instance.federationPolicy.mrf_simple.accept', []),
+ rejectInstances: state => get(state, 'instance.federationPolicy.mrf_simple.reject', []),
+ ftlRemovalInstances: state => get(state, 'instance.federationPolicy.mrf_simple.federated_timeline_removal', []),
+ mediaNsfwInstances: state => get(state, 'instance.federationPolicy.mrf_simple.media_nsfw', []),
+ mediaRemovalInstances: state => get(state, 'instance.federationPolicy.mrf_simple.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
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 00000000..acdf822e
--- /dev/null
+++ b/src/components/mrf_transparency_panel/mrf_transparency_panel.vue
@@ -0,0 +1,167 @@
+<template>
+ <div
+ v-if="federationPolicy"
+ class="mrf-transparency-panel"
+ >
+ <div class="panel panel-default base01-background">
+ <div class="panel-heading timeline-heading base02-background">
+ <div class="title">
+ {{ $t("about.mrf.federation") }}
+ </div>
+ </div>
+ <div class="panel-body">
+ <div class="mrf-section">
+ <h2>{{ $t("about.mrf.mrf_policies") }}</h2>
+ <p>{{ $t("about.mrf.mrf_policies_desc") }}</p>
+
+ <ul>
+ <li
+ v-for="policy in mrfPolicies"
+ :key="policy"
+ v-text="policy"
+ />
+ </ul>
+
+ <h2 v-if="hasInstanceSpecificPolicies">
+ {{ $t("about.mrf.simple.simple_policies") }}
+ </h2>
+
+ <div v-if="acceptInstances.length">
+ <h4>{{ $t("about.mrf.simple.accept") }}</h4>
+
+ <p>{{ $t("about.mrf.simple.accept_desc") }}</p>
+
+ <ul>
+ <li
+ v-for="instance in acceptInstances"
+ :key="instance"
+ v-text="instance"
+ />
+ </ul>
+ </div>
+
+ <div v-if="rejectInstances.length">
+ <h4>{{ $t("about.mrf.simple.reject") }}</h4>
+
+ <p>{{ $t("about.mrf.simple.reject_desc") }}</p>
+
+ <ul>
+ <li
+ v-for="instance in rejectInstances"
+ :key="instance"
+ v-text="instance"
+ />
+ </ul>
+ </div>
+
+ <div v-if="quarantineInstances.length">
+ <h4>{{ $t("about.mrf.simple.quarantine") }}</h4>
+
+ <p>{{ $t("about.mrf.simple.quarantine_desc") }}</p>
+
+ <ul>
+ <li
+ v-for="instance in quarantineInstances"
+ :key="instance"
+ v-text="instance"
+ />
+ </ul>
+ </div>
+
+ <div v-if="ftlRemovalInstances.length">
+ <h4>{{ $t("about.mrf.simple.ftl_removal") }}</h4>
+
+ <p>{{ $t("about.mrf.simple.ftl_removal_desc") }}</p>
+
+ <ul>
+ <li
+ v-for="instance in ftlRemovalInstances"
+ :key="instance"
+ v-text="instance"
+ />
+ </ul>
+ </div>
+
+ <div v-if="mediaNsfwInstances.length">
+ <h4>{{ $t("about.mrf.simple.media_nsfw") }}</h4>
+
+ <p>{{ $t("about.mrf.simple.media_nsfw_desc") }}</p>
+
+ <ul>
+ <li
+ v-for="instance in mediaNsfwInstances"
+ :key="instance"
+ v-text="instance"
+ />
+ </ul>
+ </div>
+
+ <div v-if="mediaRemovalInstances.length">
+ <h4>{{ $t("about.mrf.simple.media_removal") }}</h4>
+
+ <p>{{ $t("about.mrf.simple.media_removal_desc") }}</p>
+
+ <ul>
+ <li
+ v-for="instance in mediaRemovalInstances"
+ :key="instance"
+ v-text="instance"
+ />
+ </ul>
+ </div>
+
+ <h2 v-if="hasKeywordPolicies">
+ {{ $t("about.mrf.keyword.keyword_policies") }}
+ </h2>
+
+ <div v-if="keywordsFtlRemoval.length">
+ <h4>{{ $t("about.mrf.keyword.ftl_removal") }}</h4>
+
+ <ul>
+ <li
+ v-for="keyword in keywordsFtlRemoval"
+ :key="keyword"
+ v-text="keyword"
+ />
+ </ul>
+ </div>
+
+ <div v-if="keywordsReject.length">
+ <h4>{{ $t("about.mrf.keyword.reject") }}</h4>
+
+ <ul>
+ <li
+ v-for="keyword in keywordsReject"
+ :key="keyword"
+ v-text="keyword"
+ />
+ </ul>
+ </div>
+
+ <div v-if="keywordsReplace.length">
+ <h4>{{ $t("about.mrf.keyword.replace") }}</h4>
+
+ <ul>
+ <li
+ v-for="keyword in keywordsReplace"
+ :key="keyword"
+ >
+ {{ keyword.pattern }}
+ {{ $t("about.mrf.keyword.is_replaced_by") }}
+ {{ keyword.replacement }}
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script src="./mrf_transparency_panel.js"></script>
+
+<style lang="scss">
+.mrf-section {
+ margin: 1em;
+}
+</style>