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

Можливість використовувати Environment в Effect'і #42

Open
Maks-Jago opened this issue Sep 19, 2024 Discussed in #34 · 0 comments
Open

Можливість використовувати Environment в Effect'і #42

Maks-Jago opened this issue Sep 19, 2024 Discussed in #34 · 0 comments
Labels
dispute enhancement New feature or request

Comments

@Maks-Jago
Copy link
Owner

Discussed in #34

Originally posted by Maks-Jago September 17, 2024
Ефекти роздуваються кількістю параметрів та їм потрібен Environment від мідлвару. Можливо треба перекласти на еффект усе що стосується підготовки даних зі стейту та дати йому environment з мідлвару.

В той же момент додаткові параметри в ефект також можуть передаватись, якщо є якісь дані з flow, action'у чи ще щось.

Сценарій 1 (типовий) :

State та FlowId як частина task функції

extention Middleware {
   struct SideEffect1 {
      var environment: Environment //той самий тип що й в мідлварі
      var itemId: Item.ID
      
      func task(flowId: AnyHashable, state: AppState) async throws -> any Action {
      /*а тут вже брати все самостійно зі стейту, guard'и, кастинг типів і викидання CancellationError*/
      }
   }
}

Варіант 2 (якщо Effect універсальний і таки що використовується в 2 мідлварах наприклад):

protocol SideEffect1Environment {
   var signIn: (_ email: String, _ password: String) async throws -> Session { get }
}

struct SideEffect1 {
   var environment: SideEffect1Environment
   
   func task(flowId: AnyHashable, state: AppState) async throws -> any Action {
      ...
   }
}

В цей момент Environment мідлвара повинине конформити SideEffect1Environment протокол

@Maks-Jago Maks-Jago added this to the 1.5.0 - Swift 6.0 milestone Sep 19, 2024
@Maks-Jago Maks-Jago added the enhancement New feature or request label Sep 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dispute enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant