Skip to content

Commit c5ba4d3

Browse files
feat(ui): move moderation header to ui layeur (#574)
1 parent 16792ed commit c5ba4d3

File tree

22 files changed

+272
-78
lines changed

22 files changed

+272
-78
lines changed

bun.lockb

600 Bytes
Binary file not shown.

packages/~/moderations/api/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"@~/moncomptepro.lib": "workspace:*",
2929
"@~/organizations.repository": "workspace:*",
3030
"@~/organizations.ui": "workspace:*",
31+
"@~/users.lib": "workspace:*",
3132
"@~/zammad.lib": "workspace:*",
3233
"await-to-js": "3.0.0",
3334
"drizzle-orm": "0.33.0",

packages/~/moderations/api/src/:id/Actions.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
import { button } from "@~/app.ui/button";
44
import { hx_urls } from "@~/app.urls";
5+
import { MessageInfo } from "@~/moderations.ui/MessageInfo";
6+
import { usePageRequestContext } from "./context";
57
import { Desicison } from "./Desicison";
68
import { Member_Invalid } from "./Member_Invalid";
79
import { Member_Valid } from "./Member_Valid";
8-
import { MessageInfo } from "./MessageInfo";
9-
import { usePageRequestContext } from "./context";
1010

1111
//
1212

@@ -27,7 +27,7 @@ export async function Moderation_Actions() {
2727
Actions de modération <small class="fr-badge fr-badge--new">beta</small>{" "}
2828
</h2>
2929

30-
<MessageInfo />
30+
<MessageInfo moderation={moderation} />
3131

3232
<hr class="bg-none" />
3333
{moderation.moderated_at ? (

packages/~/moderations/api/src/:id/MessageInfo.tsx

Lines changed: 0 additions & 44 deletions
This file was deleted.

packages/~/moderations/api/src/:id/email/page/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//
22

3-
import Crisp from "@~/moderations.ui/Crisp";
3+
import { Crisp } from "@~/moderations.ui/Crisp";
44
import { FindCorrespondingEmail } from "@~/moderations.ui/FindCorrespondingEmail";
55
import { match, P } from "ts-pattern";
66
import { usePageRequestContext } from "./context";

packages/~/moderations/api/src/:id/page.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ import { hx_trigger_from_body } from "@~/app.core/htmx";
44
import { button } from "@~/app.ui/button";
55
import { hx_urls, urls } from "@~/app.urls";
66
import { MODERATION_EVENTS } from "@~/moderations.lib/event";
7+
import { Header } from "@~/moderations.ui/Header";
78
import { About as About_Organization } from "@~/organizations.ui/info/About";
89
import { Investigation as Investigation_Organization } from "@~/organizations.ui/info/Investigation";
910
import { getContext } from "hono/context-storage";
1011
import { About_User, Investigation_User } from "./About_User";
1112
import { Moderation_Actions } from "./Actions";
1213
import { Domain_Organization } from "./Domain_Organization";
13-
import { Header } from "./Header";
1414
import { Members_Of_Organization_Table } from "./Members_Of_Organization_Table";
1515
import { Moderation_Exchanges } from "./Moderation_Exchanges";
1616
import { Organizations_Of_User_Table } from "./Organizations_Of_User_Table";
@@ -52,7 +52,9 @@ export default async function Moderation_Page() {
5252

5353
<hr class="bg-none pt-6" />
5454

55-
<Header />
55+
<Header.Provier value={{ moderation }}>
56+
<Header />
57+
</Header.Provier>
5658

5759
<hr class="my-12" />
5860

packages/~/moderations/lib/src/moderation_type.mapper.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,18 @@ export function moderation_type_to_title(type: string) {
2222
.with("organization_join_block", () => "A traiter")
2323
.otherwise(() => "⁉️ " + type);
2424
}
25+
26+
export function moderation_type_to_verb_in_sentence(type: string) {
27+
return match(type as Moderation_Type)
28+
.with("ask_for_sponsorship", () => "demande un sponsorship")
29+
.with(
30+
"big_organization_join",
31+
() => "a rejoint l'organisation de plus de 50 employés",
32+
)
33+
.with(
34+
"non_verified_domain",
35+
() => "a rejoint une organisation avec un domain non vérifié ",
36+
)
37+
.with("organization_join_block", () => "veut rejoindre l'organisation")
38+
.otherwise((type) => `veut effectuer une action inconnue (type ${type})`);
39+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
//
2+
3+
import { NotFoundError } from "@~/app.core/error";
4+
import type { MonCompteProDatabaseCradle } from "@~/moncomptepro.database";
5+
6+
export function GetModerationHeader({ pg }: MonCompteProDatabaseCradle) {
7+
return async function get_moderation_header(id: number) {
8+
const moderation = await pg.query.moderations.findFirst({
9+
columns: {
10+
comment: true,
11+
id: true,
12+
moderated_at: true,
13+
moderated_by: true,
14+
type: true,
15+
},
16+
where: (table, { eq }) => eq(table.id, id),
17+
with: {
18+
organization: {
19+
columns: {
20+
cached_libelle: true,
21+
id: true,
22+
},
23+
},
24+
user: {
25+
columns: {
26+
email: true,
27+
family_name: true,
28+
given_name: true,
29+
id: true,
30+
},
31+
},
32+
},
33+
});
34+
if (!moderation) throw new NotFoundError("Moderaion not found.");
35+
return moderation;
36+
};
37+
}
38+
39+
export type GetModerationHeaderHandler = ReturnType<typeof GetModerationHeader>;
40+
export type GetModerationHeaderOutput = Awaited<
41+
ReturnType<GetModerationHeaderHandler>
42+
>;

packages/~/moderations/ui/package.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,24 @@
33
"version": "1.0.0",
44
"private": true,
55
"type": "module",
6+
"imports": {
7+
"#ui/*": {
8+
"types": "./src/*/index.ts",
9+
"default": "./src/*/index.ts"
10+
}
11+
},
612
"exports": {
713
"./*": {
8-
"default": "./src/*.tsx"
14+
"types": "./src/*/index.ts",
15+
"default": "./src/*/index.ts"
916
}
1017
},
1118
"dependencies": {
1219
"@~/app.ui": "workspace:*",
1320
"@~/app.urls": "workspace:*",
1421
"@~/organizations.lib": "workspace:*",
22+
"@~/users.lib": "workspace:*",
23+
"@~/moderations.lib": "workspace:*",
1524
"hono": "4.6.3",
1625
"tailwind-variants": "0.2.1",
1726
"ts-pattern": "5.4.0"

packages/~/moderations/ui/src/Crisp.tsx renamed to packages/~/moderations/ui/src/Crisp/Crisp.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const context = createContext<Values>(null as any);
2020

2121
//
2222

23-
export default async function Crisp() {
23+
export async function Crisp() {
2424
const { describedby } = { describedby: "" };
2525

2626
return (

0 commit comments

Comments
 (0)