From 671a80b6ffad9876dd918958598f5dacf5e06a39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Tue, 14 Jan 2025 17:09:04 +0100 Subject: [PATCH] Post work --- packages/example/src/domain/Post.ts | 8 ++++++++ packages/example/src/domain/index.ts | 1 + packages/example/src/main.tsx | 5 ++++- packages/example/src/reffuse.ts | 3 ++- packages/example/src/services/FetchData.ts | 18 ++++++++++++++++++ packages/example/src/services/PostState.ts | 7 +++++++ packages/example/src/services/index.ts | 2 ++ packages/example/src/views/post/VPost.tsx | 7 +++++++ packages/example/src/views/post/reffuse.ts | 5 +++++ 9 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 packages/example/src/domain/Post.ts create mode 100644 packages/example/src/domain/index.ts create mode 100644 packages/example/src/services/FetchData.ts create mode 100644 packages/example/src/services/PostState.ts create mode 100644 packages/example/src/services/index.ts create mode 100644 packages/example/src/views/post/VPost.tsx create mode 100644 packages/example/src/views/post/reffuse.ts diff --git a/packages/example/src/domain/Post.ts b/packages/example/src/domain/Post.ts new file mode 100644 index 0000000..d89a6fb --- /dev/null +++ b/packages/example/src/domain/Post.ts @@ -0,0 +1,8 @@ +import { Schema } from "effect" + + +export class Post extends Schema.Class("Post")({ + id: Schema.String, + title: Schema.String, + content: Schema.String, +}) {} diff --git a/packages/example/src/domain/index.ts b/packages/example/src/domain/index.ts new file mode 100644 index 0000000..a099a8a --- /dev/null +++ b/packages/example/src/domain/index.ts @@ -0,0 +1 @@ +export * as Post from "./Post" diff --git a/packages/example/src/main.tsx b/packages/example/src/main.tsx index ba5c328..aab4b02 100644 --- a/packages/example/src/main.tsx +++ b/packages/example/src/main.tsx @@ -5,9 +5,12 @@ import { createRoot } from "react-dom/client" import "./index.css" import { Reffuse } from "./reffuse" import { routeTree } from "./routeTree.gen" +import { FetchData } from "./services" -const layer = Layer.empty +const layer = Layer.empty.pipe( + Layer.provideMerge(FetchData.mockLayer) +) const router = createRouter({ routeTree }) diff --git a/packages/example/src/reffuse.ts b/packages/example/src/reffuse.ts index 9c41d25..8fe05c7 100644 --- a/packages/example/src/reffuse.ts +++ b/packages/example/src/reffuse.ts @@ -1,4 +1,5 @@ import { make } from "@thilawyn/reffuse/Reffuse" +import { FetchData } from "./services" -export const Reffuse = make() +export const Reffuse = make() diff --git a/packages/example/src/services/FetchData.ts b/packages/example/src/services/FetchData.ts new file mode 100644 index 0000000..b0e2462 --- /dev/null +++ b/packages/example/src/services/FetchData.ts @@ -0,0 +1,18 @@ +import { Post } from "@/domain" +import { Context, Effect, Layer } from "effect" + + +export class FetchData extends Context.Tag("FetchData") +}>() {} + + +export const mockLayer = Layer.succeed(FetchData, { + fetchPosts: Effect.succeed([ + Post.Post.make({ + id: "1", + title: "Lorem ipsum", + content: "Lorem ipsum", + }) + ]) +}) diff --git a/packages/example/src/services/PostState.ts b/packages/example/src/services/PostState.ts new file mode 100644 index 0000000..e14ced3 --- /dev/null +++ b/packages/example/src/services/PostState.ts @@ -0,0 +1,7 @@ +import { Post } from "@/domain" +import { Context, SubscriptionRef } from "effect" + + +export class PostState extends Context.Tag("PostState") +}>() {} diff --git a/packages/example/src/services/index.ts b/packages/example/src/services/index.ts new file mode 100644 index 0000000..c49d4f1 --- /dev/null +++ b/packages/example/src/services/index.ts @@ -0,0 +1,2 @@ +export * as FetchData from "./FetchData" +export * as PostState from "./PostState" diff --git a/packages/example/src/views/post/VPost.tsx b/packages/example/src/views/post/VPost.tsx new file mode 100644 index 0000000..6f7a972 --- /dev/null +++ b/packages/example/src/views/post/VPost.tsx @@ -0,0 +1,7 @@ + + +export function VPost() { + + + +} diff --git a/packages/example/src/views/post/reffuse.ts b/packages/example/src/views/post/reffuse.ts new file mode 100644 index 0000000..947aad7 --- /dev/null +++ b/packages/example/src/views/post/reffuse.ts @@ -0,0 +1,5 @@ +import { Reffuse as RootReffuse } from "@/reffuse" +import { PostState } from "@/services" + + +export const Reffuse = RootReffuse.extend()