{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-jsx/src/client/reactive/components/rewritten/conduit/src/stores/commentStore.js"],"names":["_","agent","CommentStore","constructor","loadComments","undefined","comments","err","createComment","comment","deleteComment","id","remove"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;AAEOA,O;;AACAC,W;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEP,YAAMC,YAAN,CAAmB;;AAEjBC,sBAAc;AACZ,uCAAgB,EAAhB;AACA,mCAAM;AAAM;AAAN,WAAN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAAuC;AAAM,uGAAKC,YAAL;AAAN,WAAvC;AACD;;AAEDA,uBAAe;AACb,gDAAyB,IAAzB;AACA,iHAAqBC,SAArB;AACA,mLAAOJ,KAAP,0CAAiC,IAAjC,6BACQ,CAAC,EAAEK,QAAF,EAAD;AAAA;AAAkB,sIAAgBA,QAAhB;AAAlB,WADR,cAESC,OAAO;AAAA;;AACZ,8CAAqB,8MAAgBA,GAAhB,wIAAqCA,GAArC,kCAArB;AACA,6FAAMA,GAAN;AACD,WALH,gBAMW;AAAM,yDAAyB,KAAzB;AAAN,WANX;AAOD;;AAEDC,sBAAcC,OAAd,EAAuB;AAAA;;AACrB,gDAAyB,IAAzB;AACA,iKAAOR,KAAP,sCAA6B,IAA7B,sGAA+CQ,OAA/C,cACQ;AAAM,uGAAKL,YAAL;AAAN,WADR,gBAEW;AAAM,yDAAyB,KAAzB;AAAN,WAFX;AAGD;;AAEDM,sBAAcC,EAAd,EAAkB;AAAA;;AAChB,iKAAOV,KAAP,sCAA6B,IAA7B,4FAA+CU,EAA/C,cACQ;AACJ,mKAAEC,MAAF,YAAS,IAAT,eAAwBH;AAAA;AAAW,8MAAaE,EAAb;AAAX,aAAxB;AADI,WADR,cAGSJ,OAAO;AAAA;AAAA;;AACZ,iBAAKH,YAAL;AACA,6FAAMG,GAAN;AACD,WANH;AAOD;AAlCgB;;;;;;;;;;;;;;;;;;yBAqCJ,iGAAIL,YAAJ,G","file":"commentStore.js","sourcesContent":["'enable aexpr';\n\nimport _ from 'src/external/lodash/lodash.js'\nimport agent from 'src/client/reactive/components/rewritten/conduit/src/agent.js';\n\nclass CommentStore {\n\n  constructor() {\n    this.comments = [];\n    aexpr(() => this.articleSlug).onChange(() => this.loadComments());\n  }\n\n  loadComments() {\n    this.isLoadingComments = true;\n    this.commentErrors = undefined;\n    return agent.Comments.forArticle(this.articleSlug)\n      .then(({ comments }) => this.comments = comments)\n      .catch(err => {\n        this.commentErrors = err.response && err.response.body && err.response.body.errors;\n        throw err;\n      })\n      .finally(() => this.isLoadingComments = false);\n  }\n  \n  createComment(comment) {\n    this.isCreatingComment = true;\n    return agent.Comments.create(this.articleSlug, comment)\n      .then(() => this.loadComments())\n      .finally(() => this.isCreatingComment = false);\n  }\n  \n  deleteComment(id) {\n    return agent.Comments.delete(this.articleSlug, id)\n      .then(() => \n        _.remove(this.comments, comment => comment.id = id))\n      .catch(err => { \n        this.loadComments();\n        throw err \n      });\n  }\n}\n\nexport default new CommentStore();"]}