From 451803b230084d5553962c2b3e3b2a921e9545e8 Mon Sep 17 00:00:00 2001
From: tobi <31960611+tsmethurst@users.noreply.github.com>
Date: Wed, 8 Jan 2025 11:29:40 +0100
Subject: [feature] Fetch + create domain permissions from subscriptions
nightly (#3635)
* peepeepoopoo
* test domain perm subs
* swagger
* envparsing
* dries your wets
* start on docs
* finish up docs
* copy paste errors
* rename actions package
* rename force -> skipCache
* move obfuscate parse nearer to where err is checked
* make higherPrios a simple slice
* don't use receiver for permsFrom funcs
* add more context to error logs
* defer finished log
* use switch for permType instead of if/else
* thanks linter, love you <3
* validate csv headers before full read
* use bufio scanner
---
.../domain-permissions/subscriptions/detail.tsx | 78 +++++++++++++++++++++-
1 file changed, 75 insertions(+), 3 deletions(-)
(limited to 'web/source/settings/views/moderation')
diff --git a/web/source/settings/views/moderation/domain-permissions/subscriptions/detail.tsx b/web/source/settings/views/moderation/domain-permissions/subscriptions/detail.tsx
index 408d81b92..06f1582ae 100644
--- a/web/source/settings/views/moderation/domain-permissions/subscriptions/detail.tsx
+++ b/web/source/settings/views/moderation/domain-permissions/subscriptions/detail.tsx
@@ -17,19 +17,20 @@
along with this program. If not, see .
*/
-import React, { useState } from "react";
+import React, { ReactNode, useState } from "react";
import { useLocation, useParams } from "wouter";
import { useBaseUrl } from "../../../../lib/navigation/util";
import BackButton from "../../../../components/back-button";
-import { useGetDomainPermissionSubscriptionQuery, useRemoveDomainPermissionSubscriptionMutation, useUpdateDomainPermissionSubscriptionMutation } from "../../../../lib/query/admin/domain-permissions/subscriptions";
+import { useGetDomainPermissionSubscriptionQuery, useRemoveDomainPermissionSubscriptionMutation, useTestDomainPermissionSubscriptionMutation, useUpdateDomainPermissionSubscriptionMutation } from "../../../../lib/query/admin/domain-permissions/subscriptions";
import { useBoolInput, useNumberInput, useTextInput } from "../../../../lib/form";
import FormWithData from "../../../../lib/form/form-with-data";
-import { DomainPermSub } from "../../../../lib/types/domain-permission";
+import { DomainPerm, DomainPermSub } from "../../../../lib/types/domain-permission";
import MutationButton from "../../../../components/form/mutation-button";
import { Checkbox, NumberInput, Select, TextInput } from "../../../../components/form/inputs";
import useFormSubmit from "../../../../lib/form/submit";
import UsernameLozenge from "../../../../components/username-lozenge";
import { urlValidator } from "../../../../lib/util/formvalidators";
+import { PageableList } from "../../../../components/pageable-list";
export default function DomainPermissionSubscriptionDetail() {
const params = useParams();
@@ -56,6 +57,7 @@ function DomainPermSubForm({ data: permSub }: { data: DomainPermSub }) {
Domain Permission Subscription Detail
+
);
@@ -382,3 +384,73 @@ function DeleteDomainPermSub({ permSub, backLocation }: { permSub: DomainPermSub
);
}
+
+function TestDomainPermSub({ permSub }: { permSub: DomainPermSub }) {
+ const permType = permSub.permission_type;
+ if (!permType) {
+ throw "permission_type was undefined";
+ }
+
+ const [ testSub, testRes ] = useTestDomainPermissionSubscriptionMutation();
+ const onSubmit = (e) => {
+ e.preventDefault();
+ testSub(permSub.id);
+ };
+
+ // Function to map an item to a list entry.
+ function itemToEntry(perm: DomainPerm): ReactNode {
+ return (
+
+ { perm.domain }
+ { perm.public_comment && <>({ perm.public_comment })> }
+
+ );
+ }
+
+ return (
+ <>
+
+ { testRes.data && "error" in testRes.data
+ ?
+
+
+ The following issue was encountered when doing a fetch + parse:
+
{ testRes.data.error }
+
This may be due to a temporary outage at the remote URL,
+ or you may wish to check your subscription settings and test again.
+
+
+ : <>
+ { testRes.data && `${testRes.data?.length} ${permType}s would be created by this subscription:`}
+ No entries!}
+ />
+ >
+ }
+ >
+ );
+}
--
cgit v1.3