From c9039e5ed9ca4a775d623f0228d68c08d07682d9 Mon Sep 17 00:00:00 2001 From: esilvaju Date: Tue, 3 Oct 2023 21:56:38 +0200 Subject: [PATCH 1/5] Boost Rule UI Element Added #367 --- src/app/(rucio)/rule/page/[id]/page.tsx | 1 + .../Pages/Rule/PageRule.stories.tsx | 1 + src/component-library/Pages/Rule/PageRule.tsx | 19 ++++++++++++++++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/app/(rucio)/rule/page/[id]/page.tsx b/src/app/(rucio)/rule/page/[id]/page.tsx index e292192a..1b9d945a 100644 --- a/src/app/(rucio)/rule/page/[id]/page.tsx +++ b/src/app/(rucio)/rule/page/[id]/page.tsx @@ -37,6 +37,7 @@ export default function PageRule({ params }: { params: { id: string } }) { {console.log("boost not implemented")}} /> ) } diff --git a/src/component-library/Pages/Rule/PageRule.stories.tsx b/src/component-library/Pages/Rule/PageRule.stories.tsx index bfda84ce..2346886a 100644 --- a/src/component-library/Pages/Rule/PageRule.stories.tsx +++ b/src/component-library/Pages/Rule/PageRule.stories.tsx @@ -14,4 +14,5 @@ export const PageRule = Template.bind({}); PageRule.args = { ruleMeta: fixtureRuleMetaViewModel(), ruleLocks: mockUseComDOM(Array.from({length: 100}, () => fixtureRulePageLockEntryViewModel())), + ruleBoostFunc: () => {console.log("boosted rule")} }; diff --git a/src/component-library/Pages/Rule/PageRule.tsx b/src/component-library/Pages/Rule/PageRule.tsx index c6d5d1f6..65d14f96 100644 --- a/src/component-library/Pages/Rule/PageRule.tsx +++ b/src/component-library/Pages/Rule/PageRule.tsx @@ -24,11 +24,14 @@ import { UseComDOM } from "@/lib/infrastructure/hooks/useComDOM"; import { Heading } from "../Helpers/Heading"; import { Body } from "../Helpers/Body"; import { RuleMetaViewModel, RulePageLockEntryViewModel } from "@/lib/infrastructure/data/view-model/rule"; +import { Button } from "@/component-library/Button/Button"; +import { HiRocketLaunch } from "react-icons/hi2"; export interface PageRulePageProps { ruleMeta: RuleMetaViewModel; ruleLocks: UseComDOM + ruleBoostFunc: () => void; } @@ -152,7 +155,21 @@ export const PageRule = ( + > +
+
+
Date: Wed, 4 Oct 2023 15:47:28 +0200 Subject: [PATCH 2/5] Components, Router: Add boost rule button --- src/app/(rucio)/queries.ts | 25 +++++++++++++++++++ src/app/(rucio)/rule/page/[id]/page.tsx | 15 +++++++++-- .../Pages/Rule/PageRule.stories.tsx | 3 ++- src/component-library/Pages/Rule/PageRule.tsx | 2 ++ 4 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 src/app/(rucio)/queries.ts diff --git a/src/app/(rucio)/queries.ts b/src/app/(rucio)/queries.ts new file mode 100644 index 00000000..fda88bc2 --- /dev/null +++ b/src/app/(rucio)/queries.ts @@ -0,0 +1,25 @@ +import { SiteHeaderViewModel } from '@/lib/infrastructure/data/view-model/site-header' +import { HTTPRequest, prepareRequestArgs } from '@/lib/sdk/http' + +export async function getSiteHeader(): Promise { + const req: HTTPRequest = { + method: 'GET', + url: new URL( + `${process.env.NEXT_PUBLIC_WEBUI_HOST}/api/feature/get-site-header`, + ), + headers: { + 'Content-Type': 'application/json', + }, + params: {}, + } + + const { url, requestArgs } = prepareRequestArgs(req) + const res = await fetch(url, { + method: 'GET', + headers: new Headers({ + 'Content-Type': 'application/json', + } as HeadersInit), + }) + + return await res.json() +} diff --git a/src/app/(rucio)/rule/page/[id]/page.tsx b/src/app/(rucio)/rule/page/[id]/page.tsx index 1b9d945a..5e3168ac 100644 --- a/src/app/(rucio)/rule/page/[id]/page.tsx +++ b/src/app/(rucio)/rule/page/[id]/page.tsx @@ -5,6 +5,8 @@ import { useState, useEffect } from "react"; import useComDOM from "@/lib/infrastructure/hooks/useComDOM"; import { HTTPRequest } from "@/lib/sdk/http"; import { RuleMetaViewModel, RulePageLockEntryViewModel } from "@/lib/infrastructure/data/view-model/rule"; +import { getSiteHeader } from "@/app/(rucio)/queries"; +import { SiteHeaderViewModel } from "@/lib/infrastructure/data/view-model/site-header"; export default function PageRule({ params }: { params: { id: string } }) { const comDOM = useComDOM( @@ -15,9 +17,15 @@ export default function PageRule({ params }: { params: { id: string } }) { 50, true ) + const [isAdmin, setIsAdmin] = useState(false) + useEffect(() => { + getSiteHeader().then((vm: SiteHeaderViewModel) => + setIsAdmin(vm.activeAccount?.role === 'admin'), + ) + }, []) const [meta, setMeta] = useState({} as RuleMetaViewModel) useEffect(() => { - setMeta({...fixtureRuleMetaViewModel(), id: params.id}) + setMeta({ ...fixtureRuleMetaViewModel(), id: params.id }) }, []) useEffect(() => { const runQuery = async () => { @@ -37,7 +45,10 @@ export default function PageRule({ params }: { params: { id: string } }) { {console.log("boost not implemented")}} + ruleBoostFunc={() => { + console.log('boost not implemented') + }} + ruleBoostShow={isAdmin} /> ) } diff --git a/src/component-library/Pages/Rule/PageRule.stories.tsx b/src/component-library/Pages/Rule/PageRule.stories.tsx index 2346886a..93372145 100644 --- a/src/component-library/Pages/Rule/PageRule.stories.tsx +++ b/src/component-library/Pages/Rule/PageRule.stories.tsx @@ -14,5 +14,6 @@ export const PageRule = Template.bind({}); PageRule.args = { ruleMeta: fixtureRuleMetaViewModel(), ruleLocks: mockUseComDOM(Array.from({length: 100}, () => fixtureRulePageLockEntryViewModel())), - ruleBoostFunc: () => {console.log("boosted rule")} + ruleBoostFunc: () => {console.log("boosted rule")}, + ruleBoostShow: true, }; diff --git a/src/component-library/Pages/Rule/PageRule.tsx b/src/component-library/Pages/Rule/PageRule.tsx index 65d14f96..6e12d9c1 100644 --- a/src/component-library/Pages/Rule/PageRule.tsx +++ b/src/component-library/Pages/Rule/PageRule.tsx @@ -32,6 +32,7 @@ export interface PageRulePageProps { ruleMeta: RuleMetaViewModel; ruleLocks: UseComDOM ruleBoostFunc: () => void; + ruleBoostShow: boolean; } @@ -160,6 +161,7 @@ export const PageRule = ( className={twMerge( "w-full p-2 rounded", "bg-gray-200 dark:bg-gray-900", + props.ruleBoostShow ? "" : "hidden" )} >