Skip to content

Commit

Permalink
update shell to use crux_time
Browse files Browse the repository at this point in the history
  • Loading branch information
StuartHarris committed Feb 3, 2025
1 parent 17f9cf4 commit ea6c327
Showing 1 changed file with 17 additions and 18 deletions.
35 changes: 17 additions & 18 deletions examples/notes/web-nextjs/src/app/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,36 +8,35 @@ import type {
Event,
KeyValueResult,
Message,
TimerOutput,
TimeResponse,
} from "shared_types/types/shared_types";
import {
EffectVariantRender,
ViewModel,
Request,
EffectVariantKeyValue,
EffectVariantPubSub,
EffectVariantTimer,
EffectVariantTime,
PubSubOperationVariantPublish,
PubSubOperationVariantSubscribe,
TimerOperationVariantStart,
TimerOutputVariantFinished,
TimerOutputVariantCreated,
TimerOperationVariantCancel,
KeyValueOperationVariantGet,
KeyValueOperationVariantSet,
KeyValueResultVariantOk,
KeyValueResponseVariantGet,
KeyValueResponseVariantSet,
ValueVariantNone,
ValueVariantBytes,
TimeRequestVariantnotifyAfter,
TimeResponseVariantdurationElapsed,
TimeRequestVariantclear,
} from "shared_types/types/shared_types";
import {
BincodeSerializer,
BincodeDeserializer,
} from "shared_types/bincode/mod";
import { Dispatch, RefObject, SetStateAction } from "react";

type Response = Message | TimerOutput | KeyValueResult;
type Response = Message | TimeResponse | KeyValueResult;

export type Timers = {
[key: number]: number;
Expand Down Expand Up @@ -115,12 +114,14 @@ export class Core {
break;
}

case EffectVariantTimer: {
const timerOp = (effect as EffectVariantTimer).value;
case EffectVariantTime: {
const timerOp = (effect as EffectVariantTime).value;

switch (timerOp.constructor) {
case TimerOperationVariantStart: {
let { id: startId, millis } = timerOp as TimerOperationVariantStart;
case TimeRequestVariantnotifyAfter: {
let { id: startId, duration } =
timerOp as TimeRequestVariantnotifyAfter;
let millis = Number(duration.nanos) / 1e6;

let handle = window.setTimeout(() => {
// Drop the timer
Expand All @@ -130,20 +131,18 @@ export class Core {
return rest;
});

this.respond(id, new TimerOutputVariantFinished(startId));
}, Number(millis));
this.respond(id, new TimeResponseVariantdurationElapsed(startId));
}, millis);
this.setTimers((ts) => ({ [Number(startId)]: handle, ...ts }));

this.respond(id, new TimerOutputVariantCreated(startId));

break;
}

case TimerOperationVariantCancel: {
let { id: cancelId } = timerOp as TimerOperationVariantCancel;
case TimeRequestVariantclear: {
let { id: cancelId } = timerOp as TimeRequestVariantclear;

this.setTimers((ts) => {
let { [Number(cancelId)]: handle, ...rest } = ts;
let { [Number(cancelId.value)]: handle, ...rest } = ts;
window.clearTimeout(handle);

return rest;
Expand Down

0 comments on commit ea6c327

Please sign in to comment.