Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(www): use new trpc root provider #2078

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,12 @@ jobs:
- forum
- legal
- moderation
- notification
- opportunity
- partner
- status
- studient
- studient_exchanges
- studient_inbox
- who

Expand Down
4 changes: 4 additions & 0 deletions apps/e2e/cypress/support/step_definitions/general.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ Then("je vois {string}", function (text: string) {
cy.contains(text);
});

Then("je ne vois pas {string}", function (text: string) {
cy.contains(text).should("not.exist");
});

Then("je vois la légende {string}", function (text: string) {
cy.get(`[aria-label*="${text}"]`);
});
Expand Down
46 changes: 46 additions & 0 deletions apps/e2e/features/exchanges/create_exchange.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#language: fr
Fonctionnalité: Posez une question

Scénario: Les visiteurs ne peuvent pas créer un échange
Soit une base de données nourrie au grain
* je navigue sur la page
Quand je clique sur "Échanges"
* je vois dans le titre "Exchange :: Serkels"

Alors je ne vois pas "Créer un échange"

Scénario: Douglas crée l'échange "The Creator"
Soit une base de données nourrie au grain
* je navigue sur la page
* je me connecte en tant que "douglas@yopmail.com"
* je clique sur "Échanges"
* je vois dans le titre "Exchange :: Serkels"
Quand je clique sur "Créer un nouvel échange"
* je vois dans le titre "New :: Exchanges :: Serkels"

* je clique sur "Je propose"
* je clique sur "Sur place"

* je clique sur "Ville"
* je tape "Nice"

* je clique sur "Dans quelle categorie ?"
* je choisis l'option "Autres"

* je clique sur "Titre"
* je tape "The Creator"

* je clique sur "Description"
* je tape "*The Creator* is a good film and you should watch it ;)"

* je clique sur "Sans échange"

Quand je clique sur "Publier"
Alors je vois "The Creator"
* je vois "The Creator is a good film"
* je vois "Proposition"
* je vois "Nice"
* je vois "Autres"
* je vois "Sans échange"
* je vois "Date limite : flexible"
* je vois "Voir mes échanges"
13 changes: 12 additions & 1 deletion apps/e2e/features/exchanges/single.feature
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,22 @@ Fonctionnalité: Voir un exchange
Contexte:
Soit une base de données nourrie au grain

Scénario:
Scénario: Un visiteur peux vois un échange
Etant donné que je navigue sur la page
Quand je clique sur le bouton "Échanges"
Alors je vois dans le titre "Exchange :: Serkels"
* je clique sur le bouton "Accepter"
* je clique sur le champ "Recherche"
* je tape "Concert de jazz"
* je ne vois pas "Bookmark the exchange"
* je clique sur le bouton "Share the exchange"

Scénario: Je sauvegarde un échange
Etant donné que je navigue sur la page
* je me connecte en tant que "douglas@yopmail.com"
Quand je clique sur le bouton "Échanges"
Alors je vois dans le titre "Exchange :: Serkels"
* je clique sur le champ "Recherche"
* je tape "Concert de jazz"
* je clique sur le bouton "Bookmark the exchange"
* je vois "Cet échange est désormais sauvegardé"
12 changes: 12 additions & 0 deletions apps/e2e/features/exchanges/studient_filters.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#language: fr
Fonctionnalité: Posez une question

Scénario: Poser une question sur le forum
Soit une base de données nourrie au grain
* je navigue sur la page
* je me connecte en tant que "douglas@yopmail.com"
* je clique sur "Échanges"
* je vois dans le titre "Exchange :: Serkels"

Quand je clique sur "Mes cercles"
Alors je vois "P'tit pause café avec l'ami Jackie"
10 changes: 10 additions & 0 deletions apps/e2e/features/notification/page.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#language: fr
Fonctionnalité: Page de notifications
Scénario: Voir la page de notifications
Soit une base de données nourrie au grain
Etant donné que je navigue sur la page
* je me connecte en tant que "douglas@yopmail.com"
Quand je visite la page "/@~/notifications"
Alors je vois dans le titre "Notifications :: Serkels"
* je vois "Notifications"
* je vois "vous a ajouté dans son cercle."
12 changes: 12 additions & 0 deletions apps/e2e/features/partner/welcome.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#language: fr
Fonctionnalité: Consulter les échanges proposés d'un étudiant
Contexte:
Soit une base de données nourrie au grain

Scénario: La biographie de douglas@yopmail.com
Etant donné que je navigue sur la page
* je me connecte en tant que "onedoesuniversity@yopmail.com"
* je visite la page "/@~/welcome"
Alors je vois dans le titre "Welcome :: Serkels"
* je vois "Welcome"
* je vois "One Does University"
12 changes: 12 additions & 0 deletions apps/e2e/features/studient/welcome.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#language: fr
Fonctionnalité: Consulter les échanges proposés d'un étudiant
Contexte:
Soit une base de données nourrie au grain

Scénario: La biographie de douglas@yopmail.com
Etant donné que je navigue sur la page
* je me connecte en tant que "douglas@yopmail.com"
* je visite la page "/@~/welcome"
Alors je vois dans le titre "Welcome :: Serkels"
* je vois "Welcome"
* je vois "Douglas"
24 changes: 24 additions & 0 deletions apps/e2e/features/studient_exchanges/inbox.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#language: fr
Fonctionnalité: Envoyer un message a Jackie Smith

Contexte:
Soit une base de données nourrie au grain

Scénario: Douglas envoie un message à Jackie Smith
Etant donné que je navigue sur la page
* je me connecte en tant que "douglas@yopmail.com"
* je visite la page "/@~"
* je vois dans le titre "About :: Serkels"
* je clique sur "Messages privés"
* je vois dans le titre "Inbox :: Serkels"

* je clique sur "Écrire"
* je vois dans le titre "Write to :: Inbox :: Serkels"

Quand je clique sur "Jackie Smith"

Alors je vois dans le titre "Jackie Smith :: Inbox :: Serkels"
* je tape "Hey Jackie, tu connais Hiatus Kaiyote ?"
* je clique sur la légende "Send"
* je vois "Hey Jackie, tu connais Hiatus Kaiyote ?"
* je vois dans le titre "Jackie Smith :: Inbox :: Serkels"
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import type { Metadata, ResolvingMetadata } from "next";
import type { PropsWithChildren } from "react";
import { TrpcRootProvider } from ":trpc/root";

//

Expand All @@ -15,6 +16,11 @@ export async function generateMetadata(
}

//

export default function Layout({ children }: PropsWithChildren) {
return <div className="m-16 max-w-3xl">{children}</div>;
return (
<TrpcRootProvider>
<div className="m-16 max-w-3xl">{children}</div>
</TrpcRootProvider>
);
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//

import { TRPC_SSR } from ":trpc/server";
import { Card } from ":widgets/opportunities/card";
import { trpc_server } from "@1.infra/trpc/react-query/server";
import type { Metadata, ResolvingMetadata } from "next";

//
Expand All @@ -18,7 +18,7 @@ export async function generateMetadata(
//
export default async function Page() {
const { data: opportunities } =
await TRPC_SSR.bookmarks.opportunities.find.fetch();
await trpc_server.bookmarks.opportunities.find.fetch();

if (opportunities.length === 0)
return (
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"use client";

import { TRPC_React } from ":trpc/client";
import { trpc_client } from "@1.infra/trpc/react-query/client";
import type { Category } from "@1.modules/category.domain";
import { type Exchange_Flat_Schema } from "@1.modules/exchange.domain";
import {
Expand All @@ -21,8 +22,8 @@ export function Mutate_Exchange_Island({
}: {
exchange_id: string;
}) {
const { data: exchange } = TRPC_React.exchanges.by_id.useQuery(exchange_id);
const { data: categories } = TRPC_React.category.exchange.useQuery();
const { data: exchange } = trpc_client.exchanges.by_id.useQuery(exchange_id);
const { data: categories } = trpc_client.category.exchange.useQuery();
if (!exchange) return null;
if (!categories) return null;
return <Mutate_Exchange exchange={exchange} categories={categories} />;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
//

import type { Params } from ":pipes/exchange_by_id";
import { TRPC_Hydrate, TRPC_SSR } from ":trpc/server";
import { TRPC_Hydrate } from ":trpc/server";
import type { Metadata, ResolvingMetadata } from "next";
import { Mutate_Exchange_Island } from "./page.client";
import { trpc_server } from "@1.infra/trpc/react-query/server";

//

Expand All @@ -23,8 +24,8 @@ export default async function Page(props: { params: Promise<Params> }) {
const params = await props.params;
const { exchange_id } = params;

await TRPC_SSR.exchanges.by_id.prefetch(exchange_id);
await TRPC_SSR.category.exchange.prefetch();
await trpc_server.exchanges.by_id.prefetch(exchange_id);
await trpc_server.category.exchange.prefetch();

return (
<TRPC_Hydrate>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export default function Conversation_Form({
const is_active = is_active_exchange(exchange);
const send_message = TRPC_React.inbox.thread.send.useMutation();
const utils = TRPC_React.useUtils();
const blacklist_item = TRPC_React.profile.me.blacklist.find.useQuery({
const blacklist_item = TRPC_React.legacy_profile.me.blacklist.find.useQuery({
profile_id: recipient_id,
});
const form = useForm({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export default async function Layout(
return <NotConnected_Placeholder />;
}

const profile = await TRPC_SSR.profile.by_id.fetch(profile_id);
const profile = await TRPC_SSR.legacy_profile.by_id.fetch(profile_id);
if (profile.role !== PROFILE_ROLES.Enum.STUDENT) {
redirect(`/@${params.code}`);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export default async function Page(props: { params: Promise<CodeParms> }) {
notFound();
}

const profile = await TRPC_SSR.profile.by_id.fetch(profile_id);
const profile = await TRPC_SSR.legacy_profile.by_id.fetch(profile_id);
const exchanges = await TRPC_SSR.exchanges.me.publications.fetch({});

const { base, empty } = main();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export default function Conversation_Form({
recipient_id,
}: Params & { recipient_id: string }) {
const { mutateAsync } = TRPC_React.inbox.thread.send.useMutation();
const blacklist_item = TRPC_React.profile.me.blacklist.find.useQuery({
const blacklist_item = TRPC_React.legacy_profile.me.blacklist.find.useQuery({
profile_id: recipient_id,
});
const is_blacklisted = blacklist_item.data?.profile.id === recipient_id;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ export default async function Page(props: { params: Promise<Params> }) {
await TRPC_SSR.inbox.thread.messages.prefetchInfinite({
thread_id,
});
await TRPC_SSR.profile.me.blacklist.find.prefetch({
await TRPC_SSR.legacy_profile.me.blacklist.find.prefetch({
profile_id: recipient.id,
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ export async function generateMetadata(
parent: ResolvingMetadata,
): Promise<Metadata> {
const params = await props.params;
const [, profile] = await to(TRPC_SSR.profile.by_id.fetch(params.profile_id));
const [, profile] = await to(
TRPC_SSR.legacy_profile.by_id.fetch(params.profile_id),
);
const { name } = profile ?? { name: "O_0" };
const title = `${name} :: ${(await parent).title?.absolute}`;

Expand All @@ -35,7 +37,7 @@ export default async function Page(props: { params: Promise<Params> }) {
const params = await props.params;
const inbox = await TRPC_SSR.inbox.by_profile_id.fetch(params);
if (inbox) return redirect(`/@~/inbox/${inbox.thread.id}`);
const profile = await TRPC_SSR.profile.by_id.fetch(params.profile_id);
const profile = await TRPC_SSR.legacy_profile.by_id.fetch(params.profile_id);

return (
<main className="h-full">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { P, match } from "ts-pattern";
//

export default function Infinite_Contacts_List() {
const info = TRPC_React.profile.me.contacts.useInfiniteQuery(
const info = TRPC_React.legacy_profile.me.contacts.useInfiniteQuery(
{},
{ getNextPageParam: ({ next_cursor }) => next_cursor },
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export async function generateMetadata(
//

export default async function Page() {
await TRPC_SSR.profile.me.contacts.prefetchInfinite({});
await TRPC_SSR.legacy_profile.me.contacts.prefetchInfinite({});

return (
<TRPC_Hydrate>
Expand Down
10 changes: 10 additions & 0 deletions apps/www/app/(main)/door/[code]/(private)/notifications/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
//

import { TrpcRootProvider } from ":trpc/root";
import type { PropsWithChildren } from "react";

//

export default function Layout({ children }: PropsWithChildren) {
return <TrpcRootProvider>{children}</TrpcRootProvider>;
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
//

import { TRPC_Hydrate, TRPC_SSR } from ":trpc/server";
import { TRPC_Hydrate } from ":trpc/server";
import type { Metadata, ResolvingMetadata } from "next";
import { AsyncListInfinite } from "./List";
import { trpc_server } from "@1.infra/trpc/react-query/server";

//

Expand All @@ -23,7 +24,7 @@ export async function generateMetadata(
//

export default async function Page() {
await TRPC_SSR.notification.find.prefetchInfinite({});
await trpc_server.notification.find.prefetchInfinite({});
//
return (
<TRPC_Hydrate>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export default async function Layout(
return notFound();
}

const profile = await TRPC_SSR.profile.by_id.fetch(profile_id);
const profile = await TRPC_SSR.legacy_profile.by_id.fetch(profile_id);
if (profile.role !== PROFILE_ROLES.Enum.PARTNER) {
redirect(`/@${params.code}`);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export default function Avatar_Editor({ profile }: { profile: Profile }) {
defaultValues: { profile_id: profile.id, image_file: new File([], "") },
});
const update_image_to_gravatar =
TRPC_React.profile.me.update_image_to_gravatar.useMutation();
TRPC_React.legacy_profile.me.update_image_to_gravatar.useMutation();
const [preview, set_preview] = useState(profile.image);
const { update } = useSession();
const router = useRouter();
Expand Down
Loading
Loading