{"version":3,"sources":["webpack:///./src/developing/components/communication/subcomponents/Webboard/MessageList.vue?cf31","webpack:///src/developing/components/communication/subcomponents/Webboard/MessageList.vue","webpack:///./src/developing/components/communication/subcomponents/Webboard/MessageList.vue?7999","webpack:///./src/developing/components/communication/subcomponents/Webboard/MessageList.vue","webpack:///./src/developing/components/communication/data/data-local.js","webpack:///./src/developing/components/communication/data/data-dev.js","webpack:///./src/developing/components/communication/data/index.js"],"names":["render","_vm","this","_h","$createElement","_c","_self","key","_l","message","index","String","id","_v","_s","staticRenderFns","components","data","localData","topics","watch","alert","type","computed","messages","messagePool","mounted","component","Vue","observable","clickNotClose","isLeftSidebarActive","isMessageContentActive","newChatUnread","newPM","newWebboardReply","selectedPanel","panels","currentMessage","currentTopic","currentViewingMessages","currentViewingMessageCursor","currentViewingMessageType","pm","webboard","chat","activeListType","unread","getNewUnreadMessage","state","Datastore","store","local","dev","constructTopicsFromList","channel","list_type","Message","getList","storedList","list","Array","isArray","diff","i","length","item","load","topic","splice","push","map","dispatch","status","success","save","constructMessagesFromList","list_id","topicItem","messageIndex","messageItem","loadTopicList","getPMTopicList","getChatTopicList","getWebboardTopicList","getState","pool","has","idb","get","set","response"],"mappings":"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","file":"js/chunk-a786973a.c9e38553.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{key:'webboard-thread-list'},_vm._l((_vm.messages),function(message,index){return _c('li',{key:String(message.id)},[_vm._v(\" \"+_vm._s(index)+\" \"+_vm._s(message)+\" \")])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MessageList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MessageList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MessageList.vue?vue&type=template&id=3946dcbb&\"\nimport script from \"./MessageList.vue?vue&type=script&lang=js&\"\nexport * from \"./MessageList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\nimport { getNewUnreadMessage } from \"./index\";\n\nexport default Vue.observable({\n clickNotClose: true,\n isLeftSidebarActive: true,\n isMessageContentActive: false,\n newChatUnread: [],\n newPM: [],\n newWebboardReply: [],\n selectedPanel: 0,\n panels: ['pm', 'chat', 'webboard'],\n currentMessage: null,\n currentTopic: null,\n currentViewingMessages: [],\n currentViewingMessageCursor: 0,\n currentViewingMessageType: \"pm\",\n messagePool: {\n pm: [],\n webboard: [],\n chat: []\n },\n activeListType: \"recent\",\n unread: {\n pm: getNewUnreadMessage(\"pm\"),\n chat: getNewUnreadMessage(\"chat\"),\n webboard: getNewUnreadMessage(\"webboard\"),\n }\n });\n","import Vue from \"vue\";\n\nexport default Vue.observable({\n \n});\n","import Datastore from \"@/developing/datastore\";\nimport store from '@/store'; // Vuex store for import the module's states.\nimport local from \"./data-local\";\nimport dev from \"./data-dev\";\n\n//\nexport const state = { Datastore, store: store.state, local, dev }\n\n//\nexport const createList = async function (channel, list_type, topics) {\n // Get ID of Topics to Generate A List\n // with condition of list (All, Recent, )\n // console.log(channel, list_type, topics);\n if (!channel || !list_type || !topics) { return }\n\n}\n\n//\nexport const constructTopicsFromList = async function (channel, list_type) {\n // console.log(\"constructTopicFromList\");\n\n // const limit = 10;\n // const cursor = 0;\n\n let storedList = await Datastore.Message.getList(channel, list_type);\n let list = null;\n let topics = [];\n\n // console.log(\"storedList\", storedList);\n\n if (typeof storedList === \"undefined\") {\n // console.log(\"Request server to generate and send back a new list\");\n // list = createNewList(channel, type);\n } else {\n list = storedList.data;\n }\n\n // console.log(\"Check constructTopicsFromList\", list);\n\n if (Array.isArray(list)) {\n let diff = [...list];\n for (let i = list.length - 1; i >= 0; i -= 1) {\n const item = list[i];\n const topic = await Datastore.Message.load(\"topic\", channel, item.id);\n if (topic) {\n diff.splice(i, 1);\n topics.push(topic);\n }\n }\n\n // console.log(\"diff\", diff);\n\n if (diff.length > 0) {\n diff = diff.map(({ id }) => ({ id }));\n const { status, data } = await store.dispatch(\"Communication/getMessageTopicsByIds\", { channel, list: diff });\n // console.log(\"Check\", status, data);\n\n if (status.success && data[channel]) {\n topics = [...topics, ...data[channel]];\n topics.map(topic => Datastore.Message.save(\"topic\", channel, topic.id, topic));\n }\n }\n }\n\n return topics\n}\n\n// Construct Messages to Show on UI\nexport const constructMessagesFromList = function (channel, list_id) {\n if (!channel || !list_id) {\n return // Return error\n }\n\n const topics = [];\n const messages = [];\n\n const list = Datastore.Message.load(`list/${channel}`, list_id);\n // console.log(\"List in constructMessageFromList\", list, channel, list_id);\n\n if (list && Array.isArray(list.list)) {\n\n // console.log(\"Load topics and messages to create a new list\")\n for (let topicItem of list.list) {\n const topic = Datastore.Message.load(\"topic/pm\", topicItem.id);\n\n\n if (topic) {\n topics.push(topic);\n\n if (topic.messageIndex.length > 0) {\n\n for (let messageItem of topic.messageIndex) {\n const message = Datastore.Message.load(\"message/pm\", messageItem.id);\n messages.push(message);\n }\n }\n }\n }\n }\n\n return { topics, messages };\n}\n\n//\nexport async function loadTopicList(channel = \"all\", type = \"recent\") {\n\n const data = { list: {} };\n\n switch (channel) {\n case \"pm\":\n data.list.pm = await getPMTopicList(type);\n break;\n case \"chat\":\n data.list.pm = await getChatTopicList(type);\n break;\n case \"webboard\":\n data.list.pm = await getWebboardTopicList(type);\n break;\n default:\n data.list.pm = await getPMTopicList(type);\n data.list.chat = await getChatTopicList(type);\n data.list.webboard = await getWebboardTopicList(type);\n break;\n }\n\n return data;\n /*\n // Create Message\n storeMessagesToCache({ channel: \"pm\", messageKey: \"privateMessageReplies\", data: pm });\n storeMessagesToCache({ channel: \"chat\", messageKey: \"chatMessage\", data: chat });\n storeMessagesToCache({ channel: \"webboard\", messageKey: \"webBoardReplies\", data: webboard });\n\n */\n}\n\n//\nexport function getNewUnreadMessage(channel) {\n return Datastore.Message.getState(channel, \"unread\") || 0;\n // if (channel && this.$data.$local.messagePool[channel]) {\n // const unreadMessages = this.$data.$local.messagePool[channel].filter(message => message.unread === true);\n // return unreadMessages.length;\n // }\n}\n\n\n//////////////////////////\n//* Private Functions */\n//////////////////////////\n\n//\nasync function getPMTopicList(type) {\n // console.log(\"getPMTopicList\", type);\n\n const pool = Datastore.Message.list.has(`pm/${type}`);\n // console.log(\"PM Pool\", pool);\n if (pool) {\n // Send cache key to check/get update, if exists\n } else {\n // const idb_pm_recent_list = null;\n const idb = await Datastore.Message.idb.list.get(`pm/${type}`);\n // console.log(\"PM IDB\", idb);\n\n if (idb) {\n Datastore.Message.list.set(`pm/recent`, idb);\n return idb;\n } else {\n const response = await store.dispatch(\"Communication/getRecentMessageList\", { channel: \"pm\", type });\n // console.log(\"Check\", response);\n\n const { status, data } = response;\n if (!status) {\n // console.log(\"Error on Communication/getRecentMessageList\");\n return\n }\n\n if (status.success && data) {\n const { pm } = data;\n if (pm) {\n await Datastore.Message.save(\"list\", \"pm\", type, pm);\n return pm;\n }\n }\n }\n }\n}\n\n//\nasync function getChatTopicList(type) {\n // console.log(\"getChatTopicList\", type);\n\n const pool = Datastore.Message.list.has(`chat/${type}`);\n // console.log(\"Chat Pool\", pool);\n if (pool) {\n // Send cache key to check/get update, if exists\n } else {\n // const idb_pm_recent_list = null;\n const idb = await Datastore.Message.idb.list.get(`chat/${type}`);\n // console.log(\"Chat IDB\", idb);\n\n if (idb) {\n Datastore.Message.list.set(`chat/recent`, idb);\n return idb;\n } else {\n const response = await store.dispatch(\"Communication/getRecentMessageList\", { channel: \"chat\", type });\n const { status, data } = response;\n if (status.success && data) {\n const { chat } = data;\n if (chat) {\n await Datastore.Message.save(\"list\", \"chat\", type, chat);\n return chat;\n }\n }\n }\n }\n}\n\n//\nasync function getWebboardTopicList(type) {\n // console.log(\"getWebboardTopicList\", type);\n\n const pool = Datastore.Message.list.has(`webboard/${type}`);\n // console.log(\"Webboard Pool\", pool);\n if (pool) {\n // Send cache key to check/get update, if exists\n } else {\n // const idb_webboard_recent_list = null;\n const idb = await Datastore.Message.idb.list.get(`webboard/${type}`);\n // console.log(\"Webboard IDB\", idb);\n\n if (idb) {\n Datastore.Message.list.set(`webboard/recent`, idb);\n return idb;\n } else {\n const response = await store.dispatch(\"Communication/getRecentMessageList\", { channel: \"webboard\", type });\n const { status, data } = response;\n if (status.success && data) {\n const { webboard } = data;\n if (webboard) {\n await Datastore.Message.save(\"list\", \"webboard\", type, webboard);\n return webboard;\n }\n }\n }\n }\n}\n\n/*\nfunction storeMessagesToCache({ channel, messageKey, data } ) {\n // const list = [];\n\n // Message.saveList(channel, data);\n\n // for (let topic of data) {\n // topic.messageIndex = [];\n\n // // // Save all message to flatmap\n // if (topic[messageKey]) {\n // for (let message of topic[messageKey]) {\n // Message.save(`message/${channel}`, message.id, message);\n // // console.log(message);\n // topic.messageIndex.push({ id: message.id, timestamp: new Date(message[\"sendDate\"]).getTime(), read: message.readDate ? true : false });\n // }\n // // delete topic[messageKey];\n // }\n\n // // console.log(topic);\n // list.push({ id: topic.id, timestamp: new Date(topic[\"sendDate\"]).getTime(), read: topic.readDate ? true : false });\n // Message.save(`topic/${channel}`, topic.id, topic);\n\n // }\n\n // Message.save(`list/${channel}`, \"all\", { list });\n}\n*/\n\n//\n/* function createNewList (channel, type) {\n const listOfAll = Message.getList(channel, \"all\");\n let list = null;\n if ((listOfAll) && listOfAll.list) {\n if (listOfAll.list.length > 1) {\n list = [ ...listOfAll.list ];\n if (type === \"recent\") {\n list = listOfAll.list.sort((a, b) => b.timestamp - a.timestamp);\n } else if (type === \"unread\") {\n list = listOfAll.list.filter(x => !x[\"read\"]).sort((a, b) => b.timestamp - a.timestamp);\n }\n\n Message.save(`list/${channel}`, type, { list });\n }\n }\n return list\n}\n*/\n"],"sourceRoot":""}