@bcswaper/apis
Version:
bcswaper apis
1 lines • 1.17 kB
JavaScript
import{ClientSettings,isObjectEmpty}from"../clientContext";import{clientCallBackFuncs,clientCandleMap}from"./dydxContext";export class CandlesHandler{constructor(t){this.currentPrice=0,this.symbol=t,this.candleMap=new Map}initialize(t){const{id:e,contents:n}=t;if(isObjectEmpty(n?.candles))return void console.log(`no data available for symbol ${this.symbol}`);const c=e?.split("/");if(c.length<2)return void console.error(`error id found: ${e}`);const i=c[1],s=n.candles;this.candleMap.set(i,s);const r=s[0].close;this.resetPrice(r)}update(t){const{id:e,contents:n}=t;if(isObjectEmpty(n))return;const c=e?.split("/");if(c.length<2)return;const i=c[1],s=this.candleMap.get(i)||[];if(0==s.length)return void console.error(`some thing wrong with the candle of ${e}`);const r=s[0],l=n[0],o=l.close;this.resetPrice(o),r.startedAt===l.startedAt?s[0]=l:(s.unshift(l),clientCallBackFuncs.candleFunc&&clientCandleMap.get(i)&&clientCallBackFuncs.candleFunc(l,i),s.length>ClientSettings.ListLenths&&s.pop())}resetPrice(t){t!==this.currentPrice&&(this.currentPrice=t,clientCallBackFuncs.tickFunc&&clientCallBackFuncs.tickFunc(this.currentPrice))}getPrice(){return this.currentPrice}}