Tensegritics / Tensegritics/ClojureDart

Support multiple bindings in `:bg-watcher`

Open
#285 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Clojure
Stars
1.6k
Forks
119
PR merge metrics
No merged PRs in 30d

Description

Currently :bg-watcher only allows for one binding: it can only listen to one stream/etc. This creates the need for utilities (like switchmap) to compose a single stream so as to consume it with :bg-watcher.

Here I propose allowing multiple bindings in :bg-watcher

[a-binding a-expr
 b-binding b-expr]

the semantics are that each time we get new values from a, we unsubscribe and resubscribe to b-expr. This would be similar to switchmap. In fact we would need a composite ISubscribable for that.

Additionally I believe it would be beneficial to allow :let [...] after binding pairs (and their options).

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the implementation of :bg-watcher and reading how its current single binding is handled. Define the behavior for multiple binding pairs, including switchmap-like resubscription and the proposed :let form; done means both forms are supported with matching subscription semantics.

Written by the indexing model from the issue text.

Assessment

Tech stack
clojure, dart, flutter
Domain
frontend, mobile-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.