visuddhinanda %!s(int64=2) %!d(string=hai) anos
pai
achega
9b43bf2c28
Modificáronse 47 ficheiros con 34 adicións e 112 borrados
  1. 0 1
      dashboard/src/components/anthology/AnthologyList.tsx
  2. 0 2
      dashboard/src/components/article/ArticleEdit.tsx
  3. 0 1
      dashboard/src/components/auth/StudioName.tsx
  4. 1 1
      dashboard/src/components/blog/BlogNav.tsx
  5. 9 11
      dashboard/src/components/channel/ChapterInChannelList.tsx
  6. 0 1
      dashboard/src/components/corpus/BookTree.tsx
  7. 4 7
      dashboard/src/components/corpus/TopChapter.tsx
  8. 0 1
      dashboard/src/components/course/AddLesson.tsx
  9. 0 1
      dashboard/src/components/course/AddMember.tsx
  10. 0 1
      dashboard/src/components/course/AddStudent.tsx
  11. 0 1
      dashboard/src/components/course/CourseMember.tsx
  12. 1 1
      dashboard/src/components/dict/DictCreate.tsx
  13. 0 1
      dashboard/src/components/dict/DictEdit.tsx
  14. 0 1
      dashboard/src/components/group/AddMember.tsx
  15. 0 1
      dashboard/src/components/group/GroupCreate.tsx
  16. 0 1
      dashboard/src/components/group/GroupFile.tsx
  17. 0 1
      dashboard/src/components/group/GroupMember.tsx
  18. 0 1
      dashboard/src/components/invite/InviteCreate.tsx
  19. 1 1
      dashboard/src/components/library/FooterBar.tsx
  20. 0 2
      dashboard/src/components/library/HeadBar.tsx
  21. 0 1
      dashboard/src/components/share/Collaborator.tsx
  22. 0 2
      dashboard/src/components/share/CollaboratorAdd.tsx
  23. 0 1
      dashboard/src/components/term/TermList.tsx
  24. 0 18
      dashboard/src/pages/library/anthology/article.tsx
  25. 0 1
      dashboard/src/pages/library/anthology/list.tsx
  26. 0 1
      dashboard/src/pages/library/blog/anthology.tsx
  27. 1 6
      dashboard/src/pages/library/blog/course.tsx
  28. 16 17
      dashboard/src/pages/library/blog/index.tsx
  29. 0 3
      dashboard/src/pages/library/blog/overview.tsx
  30. 1 6
      dashboard/src/pages/library/blog/term.tsx
  31. 0 2
      dashboard/src/pages/library/blog/translation.tsx
  32. 0 1
      dashboard/src/pages/library/community/index.tsx
  33. 0 1
      dashboard/src/pages/library/course/course.tsx
  34. 0 1
      dashboard/src/pages/library/course/index.tsx
  35. 0 1
      dashboard/src/pages/library/dict/index.tsx
  36. 0 1
      dashboard/src/pages/library/discussion/index.tsx
  37. 0 1
      dashboard/src/pages/library/discussion/show.tsx
  38. 0 1
      dashboard/src/pages/library/download/index.tsx
  39. 0 1
      dashboard/src/pages/library/palicanon/chapter.tsx
  40. 0 1
      dashboard/src/pages/library/palicanon/index.tsx
  41. 0 1
      dashboard/src/pages/library/search/index.tsx
  42. 0 1
      dashboard/src/pages/library/search/search.tsx
  43. 0 1
      dashboard/src/pages/library/term/index.tsx
  44. 0 1
      dashboard/src/pages/studio/course/list.tsx
  45. 0 1
      dashboard/src/pages/studio/group/edit.tsx
  46. 0 1
      dashboard/src/pages/studio/group/list.tsx
  47. 0 1
      dashboard/src/pages/studio/invite/list.tsx

+ 0 - 1
dashboard/src/components/anthology/AnthologyList.tsx

@@ -279,7 +279,6 @@ const AnthologyListWidget = ({
           },
         ]}
         request={async (params = {}, sorter, filter) => {
-          // TODO
           console.log(params, sorter, filter);
           let url = `/v2/anthology?view=studio&view2=${activeKey}&name=${studioName}`;
           const offset =

+ 0 - 2
dashboard/src/components/article/ArticleEdit.tsx

@@ -72,8 +72,6 @@ const ArticleEditWidget = ({
       ) : undefined}
       <ProForm<IFormData>
         onFinish={async (values: IFormData) => {
-          // TODO
-
           const request = {
             uid: articleId ? articleId : "",
             title: values.title,

+ 0 - 1
dashboard/src/components/auth/StudioName.tsx

@@ -23,7 +23,6 @@ const StudioNameWidget = ({
   popOver,
   onClick,
 }: IWidget) => {
-  // TODO
   const avatar = <Avatar size="small">{data?.nickName?.slice(0, 1)}</Avatar>;
   return (
     <StudioCard popOver={popOver} studio={data}>

+ 1 - 1
dashboard/src/components/blog/BlogNav.tsx

@@ -11,7 +11,7 @@ interface IWidgetBlogNav {
 const BlogNavWidget = ({ selectedKey, studio }: IWidgetBlogNav) => {
   //Library head bar
   const intl = useIntl(); //i18n
-  // TODO
+  // TODO 换图标
 
   const items: MenuProps["items"] = [
     {

+ 9 - 11
dashboard/src/components/channel/ChapterInChannelList.tsx

@@ -22,14 +22,14 @@ interface IItem {
   path: string;
   progress: number;
   view: number;
-  createdAt: number;
-  updatedAt: number;
+  created_at: string;
+  updated_at: string;
 }
 interface IWidget {
   channelId?: string;
   onSelect?: Function;
 }
-const ChpaterInChannelListWidget = ({ channelId, onSelect }: IWidget) => {
+const ChapterInChannelListWidget = ({ channelId, onSelect }: IWidget) => {
   const intl = useIntl();
 
   return (
@@ -118,9 +118,9 @@ const ChpaterInChannelListWidget = ({ channelId, onSelect }: IWidget) => {
           key: "created-at",
           width: 100,
           search: false,
-          dataIndex: "createdAt",
+          dataIndex: "created_at",
           valueType: "date",
-          sorter: (a, b) => a.createdAt - b.createdAt,
+          sorter: false,
         },
         {
           title: intl.formatMessage({ id: "buttons.option" }),
@@ -167,7 +167,7 @@ const ChpaterInChannelListWidget = ({ channelId, onSelect }: IWidget) => {
         },
       ]}
       request={async (params = {}, sorter, filter) => {
-        // TODO
+        // TODO 加排序
         console.log(params, sorter, filter);
         const offset = (params.current || 1 - 1) * (params.pageSize || 20);
         const res = await get<IChapterListResponse>(
@@ -175,8 +175,6 @@ const ChpaterInChannelListWidget = ({ channelId, onSelect }: IWidget) => {
         );
         console.log(res.data.rows);
         const items: IItem[] = res.data.rows.map((item, id) => {
-          const createdAt = new Date(item.created_at);
-          const updatedAt = new Date(item.updated_at);
           return {
             sn: id + offset + 1,
             book: item.book,
@@ -187,8 +185,8 @@ const ChpaterInChannelListWidget = ({ channelId, onSelect }: IWidget) => {
             summary: item.summary,
             path: item.path,
             progress: item.progress,
-            createdAt: createdAt.getTime(),
-            updatedAt: updatedAt.getTime(),
+            created_at: item.created_at,
+            updated_at: item.updated_at,
           };
         });
         return {
@@ -211,4 +209,4 @@ const ChpaterInChannelListWidget = ({ channelId, onSelect }: IWidget) => {
   );
 };
 
-export default ChpaterInChannelListWidget;
+export default ChapterInChannelListWidget;

+ 0 - 1
dashboard/src/components/corpus/BookTree.tsx

@@ -81,7 +81,6 @@ const BookTreeWidget = ({
     });
   }
 
-  // TODO
   return (
     <Space direction="vertical" style={{ padding: 10, width: "100%" }}>
       <Space style={{ display: "flex", justifyContent: "space-between" }}>

+ 4 - 7
dashboard/src/components/corpus/TopChapter.tsx

@@ -18,8 +18,8 @@ interface IItem {
   channelId: string;
   progress: number;
   view: number;
-  createdAt: number;
-  updatedAt: number;
+  created_at: string;
+  updated_at: string;
 }
 interface IWidget {
   studioName?: string;
@@ -61,7 +61,6 @@ const TopChapterWidget = ({ studioName }: IWidget) => {
       showActions="hover"
       grid={{ gutter: 16, column: 2, md: 1 }}
       request={async (params = {}, sorter, filter) => {
-        // TODO
         console.log(params, sorter, filter);
         const offset = (params.current || 1 - 1) * (params.pageSize || 20);
         const res = await get<IChapterListResponse>(
@@ -69,8 +68,6 @@ const TopChapterWidget = ({ studioName }: IWidget) => {
         );
         console.log(res.data.rows);
         const items: IItem[] = res.data.rows.map((item, id) => {
-          const createdAt = new Date(item.created_at);
-          const updatedAt = new Date(item.updated_at);
           return {
             sn: id + offset + 1,
             book: item.book,
@@ -82,8 +79,8 @@ const TopChapterWidget = ({ studioName }: IWidget) => {
             channelId: item.channel_id,
             path: item.path,
             progress: item.progress,
-            createdAt: createdAt.getTime(),
-            updatedAt: updatedAt.getTime(),
+            created_at: item.created_at,
+            updated_at: item.updated_at,
           };
         });
         return {

+ 0 - 1
dashboard/src/components/course/AddLesson.tsx

@@ -19,7 +19,6 @@ const AddLessonWidget = ({ groupId }: IWidget) => {
   const form = (
     <ProForm<IFormData>
       onFinish={async (values: IFormData) => {
-        // TODO
         console.log(values);
         message.success(intl.formatMessage({ id: "flashes.success" }));
       }}

+ 0 - 1
dashboard/src/components/course/AddMember.tsx

@@ -24,7 +24,6 @@ const AddMemeberWidget = ({ courseId, onCreated }: IWidget) => {
   const form = (
     <ProForm<IFormData>
       onFinish={async (values: IFormData) => {
-        // TODO
         console.log(values);
         if (typeof courseId !== "undefined") {
           post<ICourseMemberData, ICourseMemberResponse>("/v2/course-member", {

+ 0 - 1
dashboard/src/components/course/AddStudent.tsx

@@ -20,7 +20,6 @@ const AddStudentWidget = ({ courseId }: IWidget) => {
   const form = (
     <ProForm<IFormData>
       onFinish={async (values: IFormData) => {
-        // TODO
         console.log(values);
         message.success(intl.formatMessage({ id: "flashes.success" }));
       }}

+ 0 - 1
dashboard/src/components/course/CourseMember.tsx

@@ -68,7 +68,6 @@ const CourseMemberWidget = ({ courseId }: IWidget) => {
         }}
         showActions="hover"
         request={async (params = {}, sorter, filter) => {
-          // TODO
           console.log(params, sorter, filter);
 
           let url = `/v2/course-member?view=course&id=${courseId}`;

+ 1 - 1
dashboard/src/components/dict/DictCreate.tsx

@@ -29,7 +29,7 @@ const DictCreateWidget = (prop: IWidgetDictCreate) => {
     <>
       <ProForm<IDictFormData>
         onFinish={async (values: IDictFormData) => {
-          // TODO
+          // TODO 是否要删掉?
           console.log(values);
           message.success(intl.formatMessage({ id: "flashes.success" }));
         }}

+ 0 - 1
dashboard/src/components/dict/DictEdit.tsx

@@ -18,7 +18,6 @@ const DictEditWidget = ({ wordId }: IWidget) => {
     <>
       <ProForm<IDictFormData>
         onFinish={async (values: IDictFormData) => {
-          // TODO
           console.log(values);
           const request: IDictRequest = {
             id: values.id,

+ 0 - 1
dashboard/src/components/group/AddMember.tsx

@@ -22,7 +22,6 @@ const AddMemberWidget = ({ groupId, onCreated }: IWidget) => {
   const form = (
     <ProForm<IFormData>
       onFinish={async (values: IFormData) => {
-        // TODO
         console.log(values);
         if (typeof groupId !== "undefined") {
           post<IGroupMemberData, IGroupMemberResponse>("/v2/group-member", {

+ 0 - 1
dashboard/src/components/group/GroupCreate.tsx

@@ -25,7 +25,6 @@ const GroupCreateWidget = ({ studio, onCreate }: IWidgetGroupCreate) => {
     <ProForm<IFormData>
       formRef={formRef}
       onFinish={async (values: IFormData) => {
-        // TODO
         if (typeof studio === "undefined") {
           return;
         }

+ 0 - 1
dashboard/src/components/group/GroupFile.tsx

@@ -102,7 +102,6 @@ const GroupFileWidget = ({ groupId }: IWidget) => {
           },
         }}
         request={async (params = {}, sorter, filter) => {
-          // TODO
           console.log(params, sorter, filter);
 
           let url = `/v2/share?view=group&id=${groupId}`;

+ 0 - 1
dashboard/src/components/group/GroupMember.tsx

@@ -56,7 +56,6 @@ const GroupMemberWidget = ({ groupId }: IWidgetGroupFile) => {
         }}
         showActions="hover"
         request={async (params = {}, sorter, filter) => {
-          // TODO
           console.log(params, sorter, filter);
 
           let url = `/v2/group-member?view=group&id=${groupId}`;

+ 0 - 1
dashboard/src/components/invite/InviteCreate.tsx

@@ -37,7 +37,6 @@ const InviteCreateWidget = ({ studio, onCreate }: IWidget) => {
     <ProForm<IFormData>
       formRef={formRef}
       onFinish={async (values: IFormData) => {
-        // TODO
         if (typeof studio === "undefined") {
           return;
         }

+ 1 - 1
dashboard/src/components/library/FooterBar.tsx

@@ -6,7 +6,7 @@ const { Paragraph } = Typography;
 
 const FooterBarWidget = () => {
   //Library foot bar
-  // TODO
+  // TODO 补充项目信息
   return (
     <Footer>
       <Row>

+ 0 - 2
dashboard/src/components/library/HeadBar.tsx

@@ -122,8 +122,6 @@ type IWidgetHeadBar = {
 };
 const HeadBarWidget = ({ selectedKeys = "" }: IWidgetHeadBar) => {
   //Library head bar
-  // TODO
-
   return (
     <Header
       className="header"

+ 0 - 1
dashboard/src/components/share/Collaborator.tsx

@@ -61,7 +61,6 @@ const CollaboratorWidget = ({ resId, load = false, onReload }: IWidget) => {
       }
       showActions="hover"
       request={async (params = {}, sorter, filter) => {
-        // TODO
         console.log(params, sorter, filter);
 
         let url = `/v2/share?view=res&id=${resId}`;

+ 0 - 2
dashboard/src/components/share/CollaboratorAdd.tsx

@@ -34,8 +34,6 @@ const CollaboratorAddWidget = ({ resId, resType, onSuccess }: IWidget) => {
     <ProForm<IFormData>
       formRef={formRef}
       onFinish={async (values: IFormData) => {
-        // TODO
-
         if (typeof resId !== "undefined") {
           const postData: IShareRequest = {
             user_id:

+ 0 - 1
dashboard/src/components/term/TermList.tsx

@@ -253,7 +253,6 @@ const TermListWidget = ({ studioName, channelId }: IWidget) => {
           );
         }}
         request={async (params = {}, sorter, filter) => {
-          // TODO
           console.log(params, sorter, filter);
           const offset =
             ((params.current ? params.current : 1) - 1) *

+ 0 - 18
dashboard/src/pages/library/anthology/article.tsx

@@ -1,18 +0,0 @@
-import { Space } from "antd";
-import { useParams } from "react-router-dom";
-
-const Widget = () => {
-	// TODO
-	const { article_id } = useParams(); //url 参数
-
-	return (
-		<div>
-			<div>文章阅读器{article_id}</div>
-			<div>
-				<Space>主显示区</Space>
-			</div>
-		</div>
-	);
-};
-
-export default Widget;

+ 0 - 1
dashboard/src/pages/library/anthology/list.tsx

@@ -10,7 +10,6 @@ const { Content, Header } = Layout;
 const { Search } = Input;
 
 const Widget = () => {
-  // TODO
   const [searchKey, setSearchKey] = useState<string>();
 
   return (

+ 0 - 1
dashboard/src/pages/library/blog/anthology.tsx

@@ -4,7 +4,6 @@ import AnthologyList from "../../../components/article/AnthologyList";
 import BlogNav from "../../../components/blog/BlogNav";
 
 const Widget = () => {
-  // TODO
   const { studio } = useParams(); //url 参数
 
   return (

+ 1 - 6
dashboard/src/pages/library/blog/course.tsx

@@ -3,14 +3,9 @@ import { useParams } from "react-router-dom";
 import BlogNav from "../../../components/blog/BlogNav";
 
 const Widget = () => {
-  // TODO
   const { studio } = useParams(); //url 参数
 
-  return (
-    <>
-      <BlogNav selectedKey="course" studio={studio} />
-    </>
-  );
+  return <BlogNav selectedKey="course" studio={studio} />;
 };
 
 export default Widget;

+ 16 - 17
dashboard/src/pages/library/blog/index.tsx

@@ -5,24 +5,23 @@ import HeadBar from "../../../components/library/HeadBar";
 import FooterBar from "../../../components/library/FooterBar";
 
 const Widget = () => {
-	// TODO
-	return (
-		<Layout>
-			<HeadBar />
-			<div>cover</div>
-			<Layout>
-				<Row>
-					<Col flex="auto"></Col>
-					<Col flex="1260px">
-						<Outlet />
-					</Col>
-					<Col flex="auto"></Col>
-				</Row>
-			</Layout>
+  return (
+    <Layout>
+      <HeadBar />
+      <div>cover</div>
+      <Layout>
+        <Row>
+          <Col flex="auto"></Col>
+          <Col flex="1260px">
+            <Outlet />
+          </Col>
+          <Col flex="auto"></Col>
+        </Row>
+      </Layout>
 
-			<FooterBar />
-		</Layout>
-	);
+      <FooterBar />
+    </Layout>
+  );
 };
 
 export default Widget;

+ 0 - 3
dashboard/src/pages/library/blog/overview.tsx

@@ -5,13 +5,10 @@ import { Affix } from "antd";
 import BlogNav from "../../../components/blog/BlogNav";
 import Profile from "../../../components/blog/Profile";
 import AuthorTimeLine from "../../../components/blog/TimeLine";
-import TopArticles from "../../../components/blog/TopArticles";
 import TopChapter from "../../../components/corpus/TopChapter";
 
 const Widget = () => {
-  // TODO
   const { studio } = useParams(); //url 参数
-  //<TopArticles studio={studio ? studio : ""} />
   return (
     <>
       <Affix offsetTop={0}>

+ 1 - 6
dashboard/src/pages/library/blog/term.tsx

@@ -3,14 +3,9 @@ import { useParams } from "react-router-dom";
 import BlogNav from "../../../components/blog/BlogNav";
 
 const Widget = () => {
-  // TODO
   const { studio } = useParams(); //url 参数
 
-  return (
-    <>
-      <BlogNav selectedKey="term" studio={studio ? studio : ""} />
-    </>
-  );
+  return <BlogNav selectedKey="term" studio={studio ? studio : ""} />;
 };
 
 export default Widget;

+ 0 - 2
dashboard/src/pages/library/blog/translation.tsx

@@ -4,9 +4,7 @@ import BlogNav from "../../../components/blog/BlogNav";
 import CommunityChapter from "../../../components/corpus/CommunityChapter";
 
 const Widget = () => {
-  // TODO
   const { studio } = useParams(); //url 参数
-
   return (
     <>
       <BlogNav selectedKey="palicanon" studio={studio ? studio : ""} />

+ 0 - 1
dashboard/src/pages/library/community/index.tsx

@@ -5,7 +5,6 @@ import HeadBar from "../../../components/library/HeadBar";
 import FooterBar from "../../../components/library/FooterBar";
 
 const Widget = () => {
-  // TODO
   return (
     <Layout>
       <HeadBar selectedKeys="community" />

+ 0 - 1
dashboard/src/pages/library/course/course.tsx

@@ -33,7 +33,6 @@ export interface ICourse {
   exp?: TCourseExpRequest;
 }
 const Widget = () => {
-  // TODO
   const { id } = useParams(); //url 参数
   const [courseInfo, setCourseInfo] = useState<ICourse>();
   useEffect(() => {

+ 0 - 1
dashboard/src/pages/library/course/index.tsx

@@ -5,7 +5,6 @@ import FooterBar from "../../../components/library/FooterBar";
 import { Layout } from "antd";
 
 const Widget = () => {
-  // TODO
   return (
     <Layout>
       <HeadBar selectedKeys="course" />

+ 0 - 1
dashboard/src/pages/library/dict/index.tsx

@@ -5,7 +5,6 @@ import HeadBar from "../../../components/library/HeadBar";
 import FooterBar from "../../../components/library/FooterBar";
 
 const Widget = () => {
-  // TODO
   return (
     <Layout>
       <HeadBar selectedKeys="dict" />

+ 0 - 1
dashboard/src/pages/library/discussion/index.tsx

@@ -5,7 +5,6 @@ import FooterBar from "../../../components/library/FooterBar";
 import { Col, Layout, Row } from "antd";
 
 const Widget = () => {
-  // TODO
   return (
     <Layout>
       <HeadBar selectedKeys="discussion" />

+ 0 - 1
dashboard/src/pages/library/discussion/show.tsx

@@ -7,7 +7,6 @@ import DiscussionListCard, {
 } from "../../../components/discussion/DiscussionListCard";
 
 const Widget = () => {
-  // TODO
   const { type, id } = useParams(); //url 参数
   const navigate = useNavigate();
 

+ 0 - 1
dashboard/src/pages/library/download/index.tsx

@@ -5,7 +5,6 @@ import FooterBar from "../../../components/library/FooterBar";
 import { Col, Layout, Row } from "antd";
 
 const Widget = () => {
-  // TODO
   return (
     <Layout>
       <HeadBar selectedKeys="discussion" />

+ 0 - 1
dashboard/src/pages/library/palicanon/chapter.tsx

@@ -7,7 +7,6 @@ import BookViewer, { IChapter } from "../../../components/corpus/BookViewer";
 const { Sider, Content } = Layout;
 
 const Widget = () => {
-  // TODO
   const { id } = useParams(); //url 参数
   const navigate = useNavigate();
 

+ 0 - 1
dashboard/src/pages/library/palicanon/index.tsx

@@ -5,7 +5,6 @@ import FooterBar from "../../../components/library/FooterBar";
 import { Outlet } from "react-router-dom";
 
 const Widget = () => {
-  // TODO
   return (
     <>
       <Layout>

+ 0 - 1
dashboard/src/pages/library/search/index.tsx

@@ -5,7 +5,6 @@ import FooterBar from "../../../components/library/FooterBar";
 import { Outlet } from "react-router-dom";
 
 const Widget = () => {
-  // TODO
   return (
     <>
       <Layout>

+ 0 - 1
dashboard/src/pages/library/search/search.tsx

@@ -27,7 +27,6 @@ const Widget = () => {
     }
     setBookRoot(currRoot);
   }, []);
-  // TODO
   return (
     <>
       <Row>

+ 0 - 1
dashboard/src/pages/library/term/index.tsx

@@ -5,7 +5,6 @@ import HeadBar from "../../../components/library/HeadBar";
 import FooterBar from "../../../components/library/FooterBar";
 
 const Widget = () => {
-  // TODO
   return (
     <Layout>
       <HeadBar selectedKeys="term" />

+ 0 - 1
dashboard/src/pages/studio/course/list.tsx

@@ -335,7 +335,6 @@ const Widget = () => {
         }}
         //从服务端获取数据
         request={async (params = {}, sorter, filter) => {
-          // TODO
           console.log(params, sorter, filter);
           console.log(activeKey);
           let url = `/v2/course?view=${activeKey}&studio=${studioname}`;

+ 0 - 1
dashboard/src/pages/studio/group/edit.tsx

@@ -28,7 +28,6 @@ const Widget = () => {
     >
       <ProForm<IFormData>
         onFinish={async (values: IFormData) => {
-          // TODO
           console.log(values);
           const res = await put<IGroupRequest, IGroupResponse>(
             `/v2/group/${groupId}`,

+ 0 - 1
dashboard/src/pages/studio/group/list.tsx

@@ -222,7 +222,6 @@ const Widget = () => {
           },
         ]}
         request={async (params = {}, sorter, filter) => {
-          // TODO
           console.log(params, sorter, filter);
           let url = `/v2/group?view=studio&name=${studioname}&view2=${activeKey}`;
           const offset =

+ 0 - 1
dashboard/src/pages/studio/invite/list.tsx

@@ -93,7 +93,6 @@ const Widget = () => {
           },
         ]}
         request={async (params = {}, sorter, filter) => {
-          // TODO
           console.log(params, sorter, filter);
           let url = `/v2/invite?view=studio&studio=${studioname}`;
           const offset =