{"version":3,"sources":["widgets/chat/cheers/main.es6.js"],"names":["local","create","ICONS_SET","GIFT_ANIMATION_DURATION","GIFT_ANIMATION_CONTAINER","selectedGift","container","storage","getItem","checkStatus","id","Promise","resolve","reject","url","domain","fetch","then","response","json","data","updates","girl","status","render","templates","get","domains","intercept","dom","remove","find","append","template","bus","emit","start","catch","getGifts","settings","cache","async","series","common","gifts","list","set","api","openPurchaseForm","deficit","creditsAmount","sendAnimation","gift","animation","enable","addGiftToChatLog","sendAfterPurchase","undefined","send","price","recipient","err","res","credits","accounts","balance","me","removeItem","selectHandlerSuccess","split","giftData","setItem","selectHandlerFailed","bodyNode","document","getElementById","classList","add","select","show","iframe","createElement","setAttribute","appendChild","config","setTimeout","renderData","map","el","host","name","tags","addEventListener","escapeHandler","itemsList","itemsTape","evt","window","event","key","chatController","sendVirtualGiftCPtoLog","oponentIsBusy","sync","on"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBAA,gBAAMC,MAAN,CAAa,cAAb;;AAEA,MAAMC,YAAY,QAAlB;AACA,MAAMC,0BAA0B,KAAhC;AACA,MAAMC,2BAA2B,gBAAjC;AACA,MAAIC,eAAe,EAAnB;;AAEO,MAAMJ,0BAAS,gBAACK,SAAD,EAAe;AACnCD,mBAAeE,kBAAQC,OAAR,CAAgB,cAAhB,KAAmC,EAAlD;;AAEA,QAAMC,cAAc,SAAdA,WAAc,CAACC,EAAD;AAAA,aAAQ,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AAC3D,YAAMC,wBAAsBC,gBAAtB,wBAA+CL,EAA/C,MAAN;AACA,eAAOM,MAAMF,GAAN,EACFG,IADE,CACG,UAACC,QAAD,EAAc;AAClB,iBAAOA,SAASC,IAAT,EAAP;AACD,SAHE,EAIFF,IAJE,CAIG,UAACG,IAAD,EAAU;AACd,cAAIA,KAAK,CAAL,EAAQC,OAAR,CAAgB,CAAhB,EAAmBC,IAAnB,CAAwBC,MAAxB,KAAmC,CAAvC,EAA0C;AAExCX,oBAAQF,EAAR;AACD,WAHD,MAGO;AAELG;AACD;AACF,SAZE,CAAP;AAaD,OAf2B,CAAR;AAAA,KAApB;;AAoBA,QAAMW,SAAS,SAATA,MAAS,CAACJ,IAAD;AAAA,aAAUK,oBAAUC,GAAV,CACrB,cADqB,EAErBC,kBAAQF,SAAR,CAAkBG,SAAlB,CAA4B,oBAAY;AACtCC,sBAAIC,MAAJ,CAAWxB,UAAUyB,IAAV,CAAe,4BAAf,CAAX;AACAF,sBAAIG,MAAJ,CAAW1B,SAAX,EAAsB2B,SAAST,MAAT,CAAgBJ,IAAhB,CAAtB;AACAc,sBACKC,IADL,CACU,0BADV,EAEKA,IAFL,CAEU,aAFV;AAGD,OAND,CAFqB,CAAV;AAAA,KAAf;;AAcA,QAAMC,QAAQ,SAARA,KAAQ;AAAA,aAAM3B,YAAY,2BAAZ,EACfQ,IADe,CACV,UAACP,EAAD;AAAA,eAAQwB,cAAIC,IAAJ,CAAS,wBAAT,CAAR;AAAA,OADU,EAEfE,KAFe,CAET;AAAA,eAAMH,cAAIC,IAAJ,CAAS,kBAAT,CAAN;AAAA,OAFS,CAAN;AAAA,KAAd;;AAIA,QAAMG,WAAW,SAAXA,QAAW,CAACC,QAAD,EAAc;AAC7B,UAAMC,QAAQD,YAAYA,SAASC,KAAnC;AACAC,sBACGC,MADH,CACU;AACNC,gBAAQ,qBAAMC,eAAMC,IAAZ,EAAkB,EAACC,KAAK5C,SAAN,EAAiBsC,OAAOA,KAAxB,EAAlB;AADF,OADV,EAGKb,kBAAQoB,GAAR,CAAYnB,SAAZ,CAAsB3B,MAAtB,CAHL;AAID,KAND;;AAQA,QAAM+C,mBAAmB,SAAnBA,gBAAmB,CAACC,OAAD,EAAa;AACpCf,oBACKC,IADL,CACU,gCADV,EAC4Cc,OAD5C,EAEKd,IAFL,CAEU,SAFV,EAEqB,UAFrB,EAEiC,EAAEe,eAAeD,OAAjB,EAFjC;AAGD,KAJD;;AAMA,QAAME,gBAAgB,SAAhBA,aAAgB,OAAuB;AAAA,UAArBC,IAAqB,QAArBA,IAAqB;AAAA,UAAfC,SAAe,QAAfA,SAAe;;AAC3C,UAAMC,SAAUD,cAAc,MAA9B;AACAnB,oBAAIC,IAAJ,CAAS,aAAT;AACA,UAAImB,MAAJ,EAAY;AACVtD,sBAAMmC,IAAN,CAAW,oBAAX,EAAiCiB,IAAjC;AACD,OAFD,MAEO;AACLG,yBAAiBH,IAAjB;AACD;AACF,KARD;;AAUA,QAAMI,oBAAoB,SAApBA,iBAAoB,GAAM;AAC9BnD,qBAAeE,kBAAQC,OAAR,CAAgB,cAAhB,KAAmC,EAAlD;AACA,UAAIH,aAAa+C,IAAb,KAAsBK,SAA1B,EAAqC;AACrCC,WAAKrD,YAAL;AACD,KAJD;;AAMA,QAAMqD,OAAO,SAAPA,IAAO,CAACtC,IAAD,EAAU;AACrBf,qBAAee,IAAf;AADqB,UAEd0B,GAFc,GAEiB1B,IAFjB,CAEd0B,GAFc;AAAA,UAETM,IAFS,GAEiBhC,IAFjB,CAETgC,IAFS;AAAA,UAEHO,KAFG,GAEiBvC,IAFjB,CAEHuC,KAFG;AAAA,UAEIN,SAFJ,GAEiBjC,IAFjB,CAEIiC,SAFJ;;;AAIrBT,qBAAMc,IAAN,CAAW,EAACE,WAAW,2BAAZ,EAA6Bd,KAAKA,GAAlC,EAAuCM,MAAMA,IAA7C,EAAmDO,OAAOA,KAA1D,EAAX,EAA6E,UAACE,GAAD,EAAMC,GAAN,EAAc;AACzF,YAAID,GAAJ,EAAS;AAAA,cACCtC,MADD,GACYsC,GADZ,CACCtC,MADD;;;AAGP,cAAIA,WAAW,GAAf,EAAoB;;AAIhBwB,gBAAIgB,OAAJ,CAAYC,QAAZ,CAAqBC,OAArB,CAA6BvC,GAA7B,CAAiCwC,aAAGxD,EAApC,EAAwC,UAACmD,GAAD,SAAoB;AAAA,kBAAbI,OAAa,SAAbA,OAAa;;AAC1D,kBAAIJ,GAAJ,EAAS;AACTb,+BAAiBW,QAAQM,OAAzB;AACD,aAHD;AAIH;AACD,cAAI1C,WAAW,GAAf,EAAoB;;AAIlBW,0BAAIC,IAAJ,CAAS,wBAAT,EAAmC,EAACK,OAAO,CAAR,EAAnC;AACD;AAEF,SAnBD,MAmBO;AACLxC,wBAAMmC,IAAN,CAAW,SAAX,EAAsB,EAACiB,UAAD,EAAOC,oBAAP,EAAtB;AACA9C,4BAAQ4D,UAAR,CAAmB,cAAnB;AACD;AACF,OAxBD;AAyBD,KA7BD;;AA+BA,QAAMC,uBAAuB,SAAvBA,oBAAuB,CAAChD,IAAD,EAAU;AAAA,wBACCA,KAAKiD,KAAL,CAAW,GAAX,CADD;AAAA;AAAA,UAC9BvB,GAD8B;AAAA,UACzBM,IADyB;AAAA,UACnBO,KADmB;AAAA,UACZN,SADY;;AAErC,UAAMiB,WAAW,EAACxB,QAAD,EAAMM,UAAN,EAAYO,YAAZ,EAAmBN,oBAAnB,EAAjB;AACA9C,wBAAQgE,OAAR,CAAgB,cAAhB,EAAgCD,QAAhC;AACAZ,WAAKY,QAAL;AACD,KALD;;AAOA,QAAME,sBAAsB,SAAtBA,mBAAsB,GAAM;AAChCtC,oBAAIC,IAAJ,CAAS,kBAAT;AACA,UAAMsC,WAAWC,SAASC,cAAT,CAAwB,QAAxB,CAAjB;AACAF,eAASG,SAAT,CAAmBC,GAAnB,CAAuB,eAAvB;AACAJ,eAASG,SAAT,CAAmB9C,MAAnB,CAA0B,YAA1B;AACD,KALD;;AAOA,QAAMgD,SAAS,SAATA,MAAS,CAAC1D,IAAD,EAAU;AAEvBX,kBAAY,2BAAZ,EACGQ,IADH,CACQ;AAAA,eAAMmD,qBAAqBhD,IAArB,CAAN;AAAA,OADR,EAEGiB,KAFH,CAES;AAAA,eAAMmC,qBAAN;AAAA,OAFT;AAGD,KALD;;AAOA,QAAMO,OAAO,SAAPA,IAAO,CAAC3B,IAAD,EAAU;AACrB,UAAM4B,SAASN,SAASO,aAAT,CAAuB,QAAvB,CAAf;AACAD,aAAOE,YAAP,CAAoB,IAApB,EAA0B9E,wBAA1B;AACA4E,aAAOE,YAAP,CAAoB,OAApB,EAA6B,UAA7B;AACA,UAAI5E,YAAYoE,SAASC,cAAT,CAAwB,WAAxB,CAAhB;AACArE,gBAAU6E,WAAV,CAAsBH,MAAtB;AACAA,aAAOE,YAAP,CAAoB,KAApB,SAAgCE,iBAAOrC,GAAvC,wBAA6DK,IAA7D;;AAEAiC,iBAAW,YAAM;AACfX,iBAASC,cAAT,CAAwBvE,wBAAxB,EAAkD0B,MAAlD;AACAyB,yBAAiBH,IAAjB;AACD,OAHD,EAGGjD,uBAHH;AAID,KAZD;;AAcA,QAAMF,SAAS,SAATA,MAAS,CAAC6D,GAAD,EAAS;AACtB,UAAIwB,aAAaxB,IAAInB,MAAJ,CAAWC,KAAX,CAAiB2C,GAAjB,CAAqB,UAASC,EAAT,EAAa;AACjD,eAAO;AACLC,gBAAML,iBAAOrC,GADR;AAELD,eAAK5C,SAFA;AAGLkD,gBAAMoC,GAAGE,IAHJ;AAIL/B,iBAAO6B,GAAG7B,KAJL;AAKLgC,gBAAMH,GAAGG,IALJ;AAMLtC,qBAAWmC,GAAGnC,SAAH,GAAcmC,GAAGnC,SAAjB,GAA4B;AANlC,SAAP;AAQD,OATgB,CAAjB;;AAWAqB,eAASkB,gBAAT,CAA0B,SAA1B,EAAqCC,aAArC;;AAEArE,aAAO,EAACsE,WAAWR,UAAZ,EAAwBS,WAAWT,UAAnC,EAAP;AACD,KAfD;;AAiBA,QAAMO,gBAAgB,SAAhBA,aAAgB,CAACG,GAAD,EAAS;AAC7BA,YAAMA,OAAOC,OAAOC,KAApB;AACA,UAAIF,IAAIG,GAAJ,KAAY,QAAhB,EAA0B;AACxBjE,sBAAIC,IAAJ,CAAS,aAAT;AACD;AACF,KALD;;AAOA,QAAMoB,mBAAmB,SAAnBA,gBAAmB,CAACH,IAAD,EAAU;AACjCgD,qBAAeC,sBAAf,sCAAyEjB,iBAAOrC,GAAhF,qBAAmGK,IAAnG;AACA7C,wBAAQ4D,UAAR,CAAmB,cAAnB;AACAjC,oBACKC,IADL,CACU,2CADV,EACuD,4BADvD;AAED,KALD;;AAOA,QAAMmE,gBAAgB,SAAhBA,aAAgB;AAAA,aAAMpE,cAAIC,IAAJ,CAAS,kBAAT,CAAN;AAAA,KAAtB;;AAEAD,kBACKqE,IADL,CACU,gBADV,EAC4BnE,KAD5B,EAEKoE,EAFL,CAEQ,eAFR,EAEyB1B,MAFzB,EAGKyB,IAHL,CAGU,wBAHV,EAGoC/C,iBAHpC,EAIK+C,IAJL,CAIU,wBAJV,EAIoCjE,QAJpC,EAKKiE,IALL,CAKU,eALV,EAK2BD,aAL3B;;AAOAtG,kBACKuG,IADL,CACU,oBADV,EACgCxB,IADhC,EAEKwB,IAFL,CAEU,SAFV,EAEqBpD,aAFrB;AAGD,GApLM","file":"widgets/chat/cheers/main.js","sourceRoot":"/source/","sourcesContent":["/*\r\n * Показываем виртуальные подарки\r\n */\r\n\r\nimport async from 'async';\r\nimport bus from 'bus';\r\nimport local from 'bus';\r\nimport curry from 'modules/utils/curry';\r\nimport templates from 'modules/templates';\r\nimport dom from 'modules/env/dom';\r\nimport domains from 'modules/domains';\r\nimport gifts from 'repositories/gifts/main';\r\nimport config from 'config';\r\nimport storage from 'modules/env/storage';\r\nimport {currentGirlID} from 'modules/chat/utils';\r\nimport domain from 'modules/commons/env/domain';\r\nimport me from 'modules/me';\r\n\r\nlocal.create('virtualgifts');\r\n\r\nconst ICONS_SET = 'common';\r\nconst GIFT_ANIMATION_DURATION = 10000;\r\nconst GIFT_ANIMATION_CONTAINER = 'gift-animation';\r\nlet selectedGift = {};\r\n\r\nexport const create = (container) => {\r\n selectedGift = storage.getItem('virtual-gift') || {};\r\n\r\n const checkStatus = (id) => new Promise((resolve, reject) => {\r\n const url = `https://chat.${domain}/updates/status/${id}/`;\r\n return fetch(url)\r\n .then((response) => {\r\n return response.json();\r\n })\r\n .then((data) => {\r\n if (data[0].updates[0].girl.status !== 0) {\r\n // we have online lady\r\n resolve(id);\r\n } else {\r\n // we have offline lady\r\n reject();\r\n }\r\n })\r\n })\r\n\r\n /**\r\n * Отрисовка иконки подарка\r\n */\r\n const render = (data) => templates.get(\r\n 'cheers-items',\r\n domains.templates.intercept(template => {\r\n dom.remove(container.find('.communication-emoji-popup'));\r\n dom.append(container, template.render(data));\r\n bus\r\n .emit('event.virtualgifts.ready')\r\n .emit('cheers:tape');\r\n })\r\n )\r\n\r\n /**\r\n * Стартовая точка работы виджета, где делаем запрос на получение всех подарков из указанного набора ICONS_SET\r\n */\r\n const start = () => checkStatus(currentGirlID())\r\n .then((id) => bus.emit('event.virtualgifts.get'))\r\n .catch(() => bus.emit('chat.ladyoffline'))\r\n\r\n const getGifts = (settings) => {\r\n const cache = settings && settings.cache\r\n async\r\n .series({\r\n common: curry(gifts.list, {set: ICONS_SET, cache: cache})\r\n }, domains.api.intercept(create));\r\n }\r\n\r\n const openPurchaseForm = (deficit) => {\r\n bus\r\n .emit('event.purchase.credits.deficit', deficit)\r\n .emit('overlay', 'purchase', { creditsAmount: deficit });\r\n }\r\n\r\n const sendAnimation = ({gift, animation}) => {\r\n const enable = (animation === 'true');\r\n bus.emit('cheers:tape');\r\n if (enable) {\r\n local.emit('vg:animation.start', gift)\r\n } else {\r\n addGiftToChatLog(gift)\r\n }\r\n }\r\n\r\n const sendAfterPurchase = () => {\r\n selectedGift = storage.getItem('virtual-gift') || {};\r\n if (selectedGift.gift === undefined) return\r\n send(selectedGift)\r\n }\r\n\r\n const send = (data) => {\r\n selectedGift = data\r\n const {set, gift, price, animation} = data\r\n\r\n gifts.send({recipient: currentGirlID(), set: set, gift: gift, price: price}, (err, res) => {\r\n if (err) {\r\n const { status } = err;\r\n \r\n if (status === 402) {\r\n // 402 Payment required – Недостаточно кредитов для оплаты подарка.\r\n // показываем форму покупки\r\n\r\n api.credits.accounts.balance.get(me.id, (err, {balance}) => {\r\n if (err) return\r\n openPurchaseForm(price - balance)\r\n });\r\n }\r\n if (status === 400) {\r\n // 400 Bad Request - получаем, когда мытаемся отправить подарок, который скрыт в базе (неактивный)\r\n // но из-за кэширования запроса получения подарков он отрисовался и его отправить есть возможность\r\n \r\n bus.emit('event.virtualgifts.get', {cache: 0});\r\n }\r\n\r\n } else {\r\n local.emit('vg:send', {gift, animation})\r\n storage.removeItem('virtual-gift');\r\n }\r\n })\r\n }\r\n\r\n const selectHandlerSuccess = (data) => {\r\n const [set, gift, price, animation] = data.split(':')\r\n const giftData = {set, gift, price, animation}\r\n storage.setItem('virtual-gift', giftData);\r\n send(giftData)\r\n }\r\n\r\n const selectHandlerFailed = () => {\r\n bus.emit('chat.ladyoffline')\r\n const bodyNode = document.getElementById('aidate')\r\n bodyNode.classList.add('opponent-busy')\r\n bodyNode.classList.remove('chat-ready')\r\n }\r\n\r\n const select = (data) => {\r\n // Перед тем, как отправить подарок, проверим, находится ли девушка в онлайн\r\n checkStatus(currentGirlID())\r\n .then(() => selectHandlerSuccess(data))\r\n .catch(() => selectHandlerFailed())\r\n }\r\n\r\n const show = (gift) => {\r\n const iframe = document.createElement('iframe');\r\n iframe.setAttribute('id', GIFT_ANIMATION_CONTAINER);\r\n iframe.setAttribute('allow', 'autoplay');\r\n let container = document.getElementById('container');\r\n container.appendChild(iframe);\r\n iframe.setAttribute('src', `//${config.api}gifts/animation/${gift}/index.html`);\r\n\r\n setTimeout(() => {\r\n document.getElementById(GIFT_ANIMATION_CONTAINER).remove();\r\n addGiftToChatLog(gift)\r\n }, GIFT_ANIMATION_DURATION)\r\n }\r\n\r\n const create = (res) => {\r\n let renderData = res.common.gifts.map(function(el) {\r\n return {\r\n host: config.api,\r\n set: ICONS_SET,\r\n gift: el.name,\r\n price: el.price,\r\n tags: el.tags,\r\n animation: el.animation? el.animation: false\r\n }\r\n })\r\n\r\n document.addEventListener('keydown', escapeHandler);\r\n\r\n render({itemsList: renderData, itemsTape: renderData})\r\n }\r\n\r\n const escapeHandler = (evt) => {\r\n evt = evt || window.event;\r\n if (evt.key === 'Escape') {\r\n bus.emit('cheers:tape');\r\n }\r\n }\r\n\r\n const addGiftToChatLog = (gift) => {\r\n chatController.sendVirtualGiftCPtoLog(``);\r\n storage.removeItem('virtual-gift');\r\n bus\r\n .emit('command.notifications.informer.popup.open', 'virtualgift-congrats-state');\r\n }\r\n\r\n const oponentIsBusy = () => bus.emit('chat.ladyoffline');\r\n\r\n bus\r\n .sync('chat:activated', start)\r\n .on('cheers:select', select)\r\n .sync('event.purchase.success', sendAfterPurchase)\r\n .sync('event.virtualgifts.get', getGifts)\r\n .sync('opponent-busy', oponentIsBusy);\r\n\r\n local\r\n .sync('vg:animation.start', show)\r\n .sync('vg:send', sendAnimation)\r\n};"]}