Quellcode durchsuchen

Merge origin/master (session ISession face) and adapt the goal ref read

The runtime's new outward session contract exposes projections as a
ProjectionsFace (faceOf only); the ui-goal verb closure reads the current
value through faceOf('goal').getSnapshot() instead of the store-level get.
Catalogs regenerated after the merge.
imccyu vor 2 Monaten
Ursprung
Commit
f42d9653c1

+ 2 - 1
packages/client/ui-goal/src/client/index.ts

@@ -45,7 +45,8 @@ export function apply(ctx: ClientContext): void {
 
     /** The session's current projected CAS ref, read at verb call time (no staleness fence: the RPC's CAS is the guard). */
     const refOf = (sessionId: SessionId): GoalRef | undefined => {
-      const projection = sessions.binding(sessionId)?.session.projections.get('goal') as GoalProjection | null | undefined
+      const face = sessions.binding(sessionId)?.session.projections.faceOf('goal')
+      const projection = face?.getSnapshot() as GoalProjection | null | undefined
       if (projection == null) return undefined
       return { id: projection.goal.id, revision: projection.goal.revision }
     }

+ 4 - 1
packages/client/ui-goal/tests/browser-plugin.spec.tsx

@@ -71,7 +71,10 @@ function bench(options: { projection?: GoalProjection | null | undefined; failWi
   ctx.provide('sessions', {
     binding: (id: SessionId) => ({
       sessionId: id,
-      session: { projections: { get: (key: string) => (key === 'goal' ? options.projection : undefined) } },
+      session: { projections: { faceOf: (key: string) => ({
+        getSnapshot: () => (key === 'goal' ? options.projection : undefined),
+        subscribe: () => () => {},
+      }) } },
       ctx,
     }),
   })