فهرست منبع

支持获取访问token

visuddhinanda 1 سال پیش
والد
کامیت
425fc6ba24
1فایلهای تغییر یافته به همراه43 افزوده شده و 0 حذف شده
  1. 43 0
      dashboard-v4/dashboard/src/components/article/TypePali.tsx

+ 43 - 0
dashboard-v4/dashboard/src/components/article/TypePali.tsx

@@ -25,6 +25,7 @@ import { TaskBuilderChapterModal } from "../task/TaskBuilderChapter";
 import { useAppSelector } from "../../hooks";
 import { currentUser } from "../../reducers/current-user";
 import { ArticleTplModal } from "../template/Builder/ArticleTpl";
+import { IPayload, ITokenCreate, ITokenCreateResponse } from "../api/token";
 
 interface IWidget {
   type?: ArticleType;
@@ -71,6 +72,7 @@ const TypePaliWidget = ({
   const [tplOpen, setTplOpen] = useState(false);
   const user = useAppSelector(currentUser);
   const channels = channelId?.split("_");
+  const _id = articleId?.split("-");
 
   const srcDataMode = mode === "edit" || mode === "wbw" ? "edit" : "read";
 
@@ -236,6 +238,37 @@ const TypePaliWidget = ({
     }
   }
 
+  const getAccessToken = async () => {
+    if (!channels || !_id || _id.length < 2) {
+      console.error(
+        "channels or book or para is undefined",
+        channels,
+        book,
+        para
+      );
+      return null;
+    }
+    const _book = _id[0];
+    const _para = _id[1];
+    let payload: IPayload[] = [];
+    payload.push({
+      res_id: channels[0],
+      res_type: "channel",
+      book: parseInt(_book),
+      para_start: parseInt(_para),
+      para_end: parseInt(_para) + 100,
+    });
+    const url = "/v2/access-token";
+    const values = { payload: payload };
+    console.info("token api request", url, values);
+    const res = await post<ITokenCreate, ITokenCreateResponse>(url, values);
+    console.info("token api response", res);
+    if (res.ok) {
+      return res.data.rows[0].token;
+    } else {
+      return null;
+    }
+  };
   return (
     <div>
       {loading ? (
@@ -272,6 +305,10 @@ const TypePaliWidget = ({
                     key: "task",
                     label: "生成任务",
                   },
+                  {
+                    key: "token",
+                    label: "获取访问密钥",
+                  },
                 ],
                 onClick: ({ key }) => {
                   switch (key) {
@@ -281,6 +318,12 @@ const TypePaliWidget = ({
                     case "tpl":
                       setTplOpen(true);
                       break;
+                    case "token":
+                      const token = getAccessToken();
+                      if (typeof token === "string") {
+                        alert(token);
+                      }
+                      break;
                   }
                 },
               }}