solid-ui 2.4.31 → 2.4.32-8d90d955
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{670.solid-ui.min.js → 320.solid-ui.min.js} +1 -1
- package/dist/376.solid-ui.min.js +3 -0
- package/dist/376.solid-ui.min.js.map +1 -0
- package/dist/solid-ui.js +4928 -1897
- package/dist/solid-ui.js.map +1 -1
- package/dist/solid-ui.min.js +1 -1
- package/dist/solid-ui.min.js.LICENSE.txt +1 -1
- package/dist/solid-ui.min.js.map +1 -1
- package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js +1966 -1966
- package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js.map +1 -1
- package/lib/chat/bookmarks.js +7 -42
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +226 -101
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/dateFolder.js +139 -136
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +618 -432
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/keys.js +3 -3
- package/lib/chat/keys.js.map +1 -1
- package/lib/chat/message.js +323 -191
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +459 -276
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +299 -208
- package/lib/chat/thread.js.map +1 -1
- package/lib/pad.js +6 -8
- package/lib/pad.js.map +1 -1
- package/lib/participation.js +5 -6
- package/lib/participation.js.map +1 -1
- package/lib/preferences.js +4 -0
- package/lib/preferences.js.map +1 -1
- package/lib/tabs.js +8 -11
- package/lib/tabs.js.map +1 -1
- package/lib/utils/keyHelpers/accessData.d.ts +2 -2
- package/lib/utils/keyHelpers/accessData.d.ts.map +1 -1
- package/lib/utils/keyHelpers/accessData.js +59 -115
- package/lib/utils/keyHelpers/accessData.js.map +1 -1
- package/lib/utils/keyHelpers/acl.js +14 -14
- package/lib/utils/keyHelpers/acl.js.map +1 -1
- package/lib/utils/keyHelpers/otherHelpers.d.ts +3 -0
- package/lib/utils/keyHelpers/otherHelpers.d.ts.map +1 -0
- package/lib/utils/keyHelpers/otherHelpers.js +22 -0
- package/lib/utils/keyHelpers/otherHelpers.js.map +1 -0
- package/lib/versionInfo.js +3 -3
- package/lib/versionInfo.js.map +1 -1
- package/package.json +3 -2
- package/dist/805.solid-ui.min.js +0 -3
- package/dist/805.solid-ui.min.js.map +0 -1
- /package/dist/{805.solid-ui.min.js.LICENSE.txt → 376.solid-ui.min.js.LICENSE.txt} +0 -0
package/lib/chat/bookmarks.js
CHANGED
|
@@ -28,8 +28,6 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
28
28
|
* @packageDocumentation
|
|
29
29
|
*/
|
|
30
30
|
|
|
31
|
-
/* global alert confirm */
|
|
32
|
-
|
|
33
31
|
// pull in first avoid cross-refs
|
|
34
32
|
|
|
35
33
|
var UI = {
|
|
@@ -48,40 +46,6 @@ var BOOKMARK_ICON = 'noun_45961.svg';
|
|
|
48
46
|
var label = utils.label;
|
|
49
47
|
var dom = window.document || null;
|
|
50
48
|
|
|
51
|
-
/** Create a resource if it really does not exist
|
|
52
|
-
* Be absolutely sure something does not exist before creating a new empty file
|
|
53
|
-
* as otherwise existing could be deleted.
|
|
54
|
-
* @param doc {NamedNode} - The resource
|
|
55
|
-
*/
|
|
56
|
-
function createIfNotExists(doc) {
|
|
57
|
-
return new Promise(function (resolve, reject) {
|
|
58
|
-
_solidLogic.store.fetcher.load(doc).then(function (response) {
|
|
59
|
-
debug.log('createIfNotExists doc exists, all good ' + doc);
|
|
60
|
-
// store.fetcher.webOperation('HEAD', doc.uri).then(response => {
|
|
61
|
-
resolve(response);
|
|
62
|
-
}, function (err) {
|
|
63
|
-
if (err.response.status === 404) {
|
|
64
|
-
debug.log('createIfNotExists doc does NOT exist, will create... ' + doc);
|
|
65
|
-
_solidLogic.store.fetcher.webOperation('PUT', doc.uri, {
|
|
66
|
-
data: '',
|
|
67
|
-
contentType: 'text/turtle'
|
|
68
|
-
}).then(function (response) {
|
|
69
|
-
// fetcher.requested[doc.uri] = 'done' // do not need to read ?? but no headers
|
|
70
|
-
delete _solidLogic.store.fetcher.requested[doc.uri]; // delete cached 404 error
|
|
71
|
-
debug.log('createIfNotExists doc created ok ' + doc);
|
|
72
|
-
resolve(response);
|
|
73
|
-
}, function (err) {
|
|
74
|
-
debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + err);
|
|
75
|
-
reject(err);
|
|
76
|
-
});
|
|
77
|
-
} else {
|
|
78
|
-
debug.log('createIfNotExists doc load error NOT 404: ' + doc + ': ' + err);
|
|
79
|
-
reject(err);
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
|
|
85
49
|
// @@@@ use the one in rdflib.js when it is avaiable and delete this
|
|
86
50
|
function updatePromise(del, ins) {
|
|
87
51
|
return new Promise(function (resolve, reject) {
|
|
@@ -122,7 +86,8 @@ function _findBookmarkDocument() {
|
|
|
122
86
|
}
|
|
123
87
|
userContext.bookmarkDocument = userContext.instances[0];
|
|
124
88
|
if (userContext.instances.length > 1) {
|
|
125
|
-
|
|
89
|
+
debug.warn('More than one bookmark file! ' + userContext.instances); // @@ todo - deal with > 1
|
|
90
|
+
// Note: should pick up community bookmarks as well
|
|
126
91
|
}
|
|
127
92
|
_context.next = 28;
|
|
128
93
|
break;
|
|
@@ -136,14 +101,14 @@ function _findBookmarkDocument() {
|
|
|
136
101
|
_context.prev = 12;
|
|
137
102
|
debug.log('Creating new bookmark file ' + newBookmarkFile);
|
|
138
103
|
_context.next = 16;
|
|
139
|
-
return createIfNotExists(newBookmarkFile);
|
|
104
|
+
return _solidLogic.store.fetcher.createIfNotExists(newBookmarkFile);
|
|
140
105
|
case 16:
|
|
141
106
|
_context.next = 22;
|
|
142
107
|
break;
|
|
143
108
|
case 18:
|
|
144
109
|
_context.prev = 18;
|
|
145
110
|
_context.t0 = _context["catch"](12);
|
|
146
|
-
|
|
111
|
+
debug.warn("Can't make fresh bookmark file:" + _context.t0);
|
|
147
112
|
return _context.abrupt("return", userContext);
|
|
148
113
|
case 22:
|
|
149
114
|
_context.next = 24;
|
|
@@ -153,7 +118,7 @@ function _findBookmarkDocument() {
|
|
|
153
118
|
_context.next = 28;
|
|
154
119
|
break;
|
|
155
120
|
case 27:
|
|
156
|
-
|
|
121
|
+
debug.warn('You seem to have no bookmark file, nor even a profile file!');
|
|
157
122
|
case 28:
|
|
158
123
|
return _context.abrupt("return", userContext);
|
|
159
124
|
case 29:
|
|
@@ -208,7 +173,7 @@ function _addBookmark() {
|
|
|
208
173
|
_context2.prev = 14;
|
|
209
174
|
_context2.t0 = _context2["catch"](9);
|
|
210
175
|
msg = 'Making bookmark: ' + _context2.t0;
|
|
211
|
-
|
|
176
|
+
debug.warn(msg);
|
|
212
177
|
return _context2.abrupt("return", null);
|
|
213
178
|
case 19:
|
|
214
179
|
return _context2.abrupt("return", bookmark);
|
|
@@ -261,7 +226,7 @@ function _toggleBookmark() {
|
|
|
261
226
|
_context3.prev = 15;
|
|
262
227
|
_context3.t0 = _context3["catch"](8);
|
|
263
228
|
debug.error('Cant delete bookmark:' + _context3.t0);
|
|
264
|
-
|
|
229
|
+
debug.warn('Cannot delete bookmark:' + _context3.t0);
|
|
265
230
|
case 19:
|
|
266
231
|
i++;
|
|
267
232
|
_context3.next = 7;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bookmarks.js","names":["debug","_interopRequireWildcard","require","_iconBase","_index","ns","pad","rdf","style","utils","widgets","_solidLogic","_login","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","UI","icons","media","$rdf","BOOK","Namespace","BOOKMARK_ICON","label","dom","window","document","createIfNotExists","doc","Promise","resolve","reject","store","fetcher","load","then","response","log","err","status","webOperation","uri","data","contentType","requested","updatePromise","del","ins","updater","update","ok","errorBody","Error","findBookmarkDocument","_x","_findBookmarkDocument","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","userContext","theClass","fileTail","isPublic","newBookmarkFile","wrap","_callee$","_context","prev","next","findAppInstances","instances","length","bookmarkDocument","alert","publicProfile","sym","dir","t0","error","abrupt","registerInTypeIndex","index","stop","addBookmark","_x2","_x3","_addBookmark","_callee2","context","target","title","me","author","bookmarkDoc","bookmark","msg","_callee2$","_context2","authn","currentUser","any","foaf","anyValue","sioc","slice","newThing","st","dct","Date","toggleBookmark","_x4","_x5","_x6","_toggleBookmark","_callee3","bookmarkButton","bookmarks","_callee3$","_context3","each","confirm","connectedStatements","backgroundColor","sent","renderBookmarksButton","_x7","_x8","_renderBookmarksButton","_callee5","setBookmarkButtonColor","_setBookmarkButtonColor","_callee5$","_context5","_setBookmarkButtonCol2","_callee4","bookmarked","_callee4$","_context4","buttonStyle","_setBookmarkButtonCol","_x9","button","iconBase"],"sources":["../../src/chat/bookmarks.js"],"sourcesContent":["/**\n * Functions related to chat and bookmarks\n * @packageDocumentation\n */\n\n/* global alert confirm */\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as pad from '../pad'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { store, registerInTypeIndex, authn } from 'solid-logic'\nimport { findAppInstances } from '../login/login'\n\nconst UI = { icons, ns, media, pad, rdf, style, utils, widgets }\nconst $rdf = UI.rdf\n\nconst BOOK = $rdf.Namespace('http://www.w3.org/2002/01/bookmark#')\nconst BOOKMARK_ICON = 'noun_45961.svg'\n\nconst label = utils.label\nconst dom = window.document || null\n\n/** Create a resource if it really does not exist\n * Be absolutely sure something does not exist before creating a new empty file\n * as otherwise existing could be deleted.\n * @param doc {NamedNode} - The resource\n */\nfunction createIfNotExists (doc) {\n return new Promise(function (resolve, reject) {\n store.fetcher.load(doc).then(\n response => {\n debug.log('createIfNotExists doc exists, all good ' + doc)\n // store.fetcher.webOperation('HEAD', doc.uri).then(response => {\n resolve(response)\n },\n err => {\n if (err.response.status === 404) {\n debug.log(\n 'createIfNotExists doc does NOT exist, will create... ' + doc\n )\n\n store.fetcher\n .webOperation('PUT', doc.uri, {\n data: '',\n contentType: 'text/turtle'\n })\n .then(\n response => {\n // fetcher.requested[doc.uri] = 'done' // do not need to read ?? but no headers\n delete store.fetcher.requested[doc.uri] // delete cached 404 error\n debug.log('createIfNotExists doc created ok ' + doc)\n resolve(response)\n },\n err => {\n debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + err)\n reject(err)\n }\n )\n } else {\n debug.log(\n 'createIfNotExists doc load error NOT 404: ' + doc + ': ' + err\n )\n reject(err)\n }\n }\n )\n })\n}\n\n// @@@@ use the one in rdflib.js when it is avaiable and delete this\nfunction updatePromise (del, ins) {\n return new Promise(function (resolve, reject) {\n store.updater.update(del, ins, function (uri, ok, errorBody) {\n if (!ok) {\n reject(new Error(errorBody))\n } else {\n resolve()\n }\n }) // callback\n }) // promise\n}\n\n/* Bookmarking\n */\n/** Find a user's bookmarks\n */\nexport async function findBookmarkDocument (userContext) {\n const theClass = BOOK('Bookmark')\n const fileTail = 'bookmarks.ttl'\n const isPublic = true\n\n await findAppInstances(userContext, theClass, isPublic) // public -- only look for public links\n\n if (userContext.instances && userContext.instances.length > 0) {\n userContext.bookmarkDocument = userContext.instances[0]\n if (userContext.instances.length > 1) {\n alert('More than one bookmark file! ' + userContext.instances)\n }\n } else {\n if (userContext.publicProfile) {\n // publicProfile or preferencesFile\n const newBookmarkFile = $rdf.sym(\n userContext.publicProfile.dir().uri + fileTail\n )\n try {\n debug.log('Creating new bookmark file ' + newBookmarkFile)\n await createIfNotExists(newBookmarkFile)\n } catch (e) {\n alert.error(\"Can't make fresh bookmark file:\" + e)\n return userContext\n }\n await registerInTypeIndex(\n newBookmarkFile,\n userContext.index,\n theClass\n )\n userContext.bookmarkDocument = newBookmarkFile\n } else {\n alert('You seem to have no bookmark file and not even a profile file.')\n }\n }\n return userContext\n}\n\n/** Add a bookmark\n */\n\nasync function addBookmark (context, target) {\n /* like\n @prefix terms: <http://purl.org/dc/terms/>.\n @prefix bookm: <http://www.w3.org/2002/01/bookmark#>.\n @prefix n0: <http://xmlns.com/foaf/0.1/>.\n <> terms:references <#0.5534145389246576>.\n <#0.5534145389246576>\n a bookm:Bookmark;\n terms:created \"2019-01-26T20:26:44.374Z\"^^XML:dateTime;\n terms:title \"Herons\";\n bookm:recalls wiki:Heron;\n n0:maker c:me.\n */\n let title = ''\n const me = authn.currentUser() // If already logged on\n if (!me) throw new Error('Must be logged on to add Bookmark')\n\n const author = store.any(target, ns.foaf('maker'))\n title =\n label(author) + ': ' + store.anyValue(target, ns.sioc('content')).slice(0, 80) // @@ add chat title too?\n const bookmarkDoc = context.bookmarkDocument\n const bookmark = UI.widgets.newThing(bookmarkDoc, title)\n const ins = [\n $rdf.st(bookmarkDoc, UI.ns.dct('references'), bookmark, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.rdf('type'), BOOK('Bookmark'), bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('created'), new Date(), bookmarkDoc),\n $rdf.st(bookmark, BOOK('recalls'), target, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.foaf('maker'), me, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('title'), title, bookmarkDoc)\n ]\n try {\n await updatePromise([], ins) // 20190118A\n } catch (e) {\n const msg = 'Making bookmark: ' + e\n alert.error(msg)\n return null\n }\n return bookmark\n}\n\nexport async function toggleBookmark (userContext, target, bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarks = store.each(\n null,\n BOOK('recalls'),\n target,\n userContext.bookmarkDocument\n )\n if (bookmarks.length) {\n // delete\n if (!confirm('Delete bookmark on this?' + bookmarks.length)) return\n for (let i = 0; i < bookmarks.length; i++) {\n try {\n await updatePromise(store.connectedStatements(bookmarks[i]), [])\n bookmarkButton.style.backgroundColor = 'white'\n debug.log('Bookmark deleted: ' + bookmarks[i])\n } catch (e) {\n debug.error('Cant delete bookmark:' + e)\n alert('Cant delete bookmark:' + e)\n }\n }\n } else {\n const bookmark = await addBookmark(userContext, target)\n bookmarkButton.style.backgroundColor = 'yellow'\n debug.log('Bookmark added: ' + bookmark)\n }\n}\n\nexport async function renderBookmarksButton (userContext, target) {\n async function setBookmarkButtonColor (bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarked = store.any(\n null,\n BOOK('recalls'),\n bookmarkButton.target,\n userContext.bookmarkDocument\n )\n bookmarkButton.style = UI.style.buttonStyle\n if (bookmarked) bookmarkButton.style.backgroundColor = 'yellow'\n }\n\n let bookmarkButton\n if (userContext.bookmarkDocument) {\n bookmarkButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + BOOKMARK_ICON,\n label(BOOK('Bookmark')),\n () => {\n toggleBookmark(userContext, target, bookmarkButton)\n }\n )\n bookmarkButton.target = target\n await setBookmarkButtonColor(bookmarkButton)\n return bookmarkButton\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bookmarks.js","names":["debug","_interopRequireWildcard","require","_iconBase","_index","ns","pad","rdf","style","utils","widgets","_solidLogic","_login","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","UI","icons","media","$rdf","BOOK","Namespace","BOOKMARK_ICON","label","dom","window","document","updatePromise","del","ins","Promise","resolve","reject","store","updater","update","uri","ok","errorBody","Error","findBookmarkDocument","_x","_findBookmarkDocument","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","userContext","theClass","fileTail","isPublic","newBookmarkFile","wrap","_callee$","_context","prev","next","findAppInstances","instances","length","bookmarkDocument","warn","publicProfile","sym","dir","log","fetcher","createIfNotExists","t0","abrupt","registerInTypeIndex","index","stop","addBookmark","_x2","_x3","_addBookmark","_callee2","context","target","title","me","author","bookmarkDoc","bookmark","msg","_callee2$","_context2","authn","currentUser","any","foaf","anyValue","sioc","slice","newThing","st","dct","Date","toggleBookmark","_x4","_x5","_x6","_toggleBookmark","_callee3","bookmarkButton","bookmarks","_callee3$","_context3","load","each","confirm","connectedStatements","backgroundColor","error","sent","renderBookmarksButton","_x7","_x8","_renderBookmarksButton","_callee5","setBookmarkButtonColor","_setBookmarkButtonColor","_callee5$","_context5","_setBookmarkButtonCol2","_callee4","bookmarked","_callee4$","_context4","buttonStyle","_setBookmarkButtonCol","_x9","button","iconBase"],"sources":["../../src/chat/bookmarks.js"],"sourcesContent":["/**\n * Functions related to chat and bookmarks\n * @packageDocumentation\n */\n\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { media } from '../media/index'\nimport * as ns from '../ns'\nimport * as pad from '../pad'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as style from '../style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { store, registerInTypeIndex, authn } from 'solid-logic'\nimport { findAppInstances } from '../login/login'\n\nconst UI = { icons, ns, media, pad, rdf, style, utils, widgets }\nconst $rdf = UI.rdf\n\nconst BOOK = $rdf.Namespace('http://www.w3.org/2002/01/bookmark#')\nconst BOOKMARK_ICON = 'noun_45961.svg'\n\nconst label = utils.label\nconst dom = window.document || null\n\n// @@@@ use the one in rdflib.js when it is avaiable and delete this\nfunction updatePromise (del, ins) {\n return new Promise(function (resolve, reject) {\n store.updater.update(del, ins, function (uri, ok, errorBody) {\n if (!ok) {\n reject(new Error(errorBody))\n } else {\n resolve()\n }\n }) // callback\n }) // promise\n}\n\n/* Bookmarking\n */\n/** Find a user's bookmarks\n */\nexport async function findBookmarkDocument (userContext) {\n const theClass = BOOK('Bookmark')\n const fileTail = 'bookmarks.ttl'\n const isPublic = true\n\n await findAppInstances(userContext, theClass, isPublic) // public -- only look for public links\n\n if (userContext.instances && userContext.instances.length > 0) {\n userContext.bookmarkDocument = userContext.instances[0]\n if (userContext.instances.length > 1) {\n debug.warn('More than one bookmark file! ' + userContext.instances) // @@ todo - deal with > 1\n // Note: should pick up community bookmarks as well\n }\n } else {\n if (userContext.publicProfile) {\n // publicProfile or preferencesFile\n const newBookmarkFile = $rdf.sym(\n userContext.publicProfile.dir().uri + fileTail\n )\n try {\n debug.log('Creating new bookmark file ' + newBookmarkFile)\n await store.fetcher.createIfNotExists(newBookmarkFile)\n } catch (e) {\n debug.warn(\"Can't make fresh bookmark file:\" + e)\n return userContext\n }\n await registerInTypeIndex(\n newBookmarkFile,\n userContext.index,\n theClass\n )\n userContext.bookmarkDocument = newBookmarkFile\n } else {\n debug.warn('You seem to have no bookmark file, nor even a profile file!')\n }\n }\n return userContext\n}\n\n/** Add a bookmark\n */\n\nasync function addBookmark (context, target) {\n /* like\n @prefix terms: <http://purl.org/dc/terms/>.\n @prefix bookm: <http://www.w3.org/2002/01/bookmark#>.\n @prefix n0: <http://xmlns.com/foaf/0.1/>.\n <> terms:references <#0.5534145389246576>.\n <#0.5534145389246576>\n a bookm:Bookmark;\n terms:created \"2019-01-26T20:26:44.374Z\"^^XML:dateTime;\n terms:title \"Herons\";\n bookm:recalls wiki:Heron;\n n0:maker c:me.\n */\n let title = ''\n const me = authn.currentUser() // If already logged on\n if (!me) throw new Error('Must be logged on to add Bookmark')\n\n const author = store.any(target, ns.foaf('maker'))\n title =\n label(author) + ': ' + store.anyValue(target, ns.sioc('content')).slice(0, 80) // @@ add chat title too?\n const bookmarkDoc = context.bookmarkDocument\n const bookmark = UI.widgets.newThing(bookmarkDoc, title)\n const ins = [\n $rdf.st(bookmarkDoc, UI.ns.dct('references'), bookmark, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.rdf('type'), BOOK('Bookmark'), bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('created'), new Date(), bookmarkDoc),\n $rdf.st(bookmark, BOOK('recalls'), target, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.foaf('maker'), me, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('title'), title, bookmarkDoc)\n ]\n try {\n await updatePromise([], ins) // 20190118A\n } catch (e) {\n const msg = 'Making bookmark: ' + e\n debug.warn(msg)\n return null\n }\n return bookmark\n}\n\nexport async function toggleBookmark (userContext, target, bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarks = store.each(\n null,\n BOOK('recalls'),\n target,\n userContext.bookmarkDocument\n )\n if (bookmarks.length) {\n // delete\n if (!confirm('Delete bookmark on this?' + bookmarks.length)) return\n for (let i = 0; i < bookmarks.length; i++) {\n try {\n await updatePromise(store.connectedStatements(bookmarks[i]), [])\n bookmarkButton.style.backgroundColor = 'white'\n debug.log('Bookmark deleted: ' + bookmarks[i])\n } catch (e) {\n debug.error('Cant delete bookmark:' + e)\n debug.warn('Cannot delete bookmark:' + e)\n }\n }\n } else {\n const bookmark = await addBookmark(userContext, target)\n bookmarkButton.style.backgroundColor = 'yellow'\n debug.log('Bookmark added: ' + bookmark)\n }\n}\n\nexport async function renderBookmarksButton (userContext, target) {\n async function setBookmarkButtonColor (bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarked = store.any(\n null,\n BOOK('recalls'),\n bookmarkButton.target,\n userContext.bookmarkDocument\n )\n bookmarkButton.style = UI.style.buttonStyle\n if (bookmarked) bookmarkButton.style.backgroundColor = 'yellow'\n }\n\n let bookmarkButton\n if (userContext.bookmarkDocument) {\n bookmarkButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + BOOKMARK_ICON,\n label(BOOK('Bookmark')),\n () => {\n toggleBookmark(userContext, target, bookmarkButton)\n }\n )\n bookmarkButton.target = target\n await setBookmarkButtonColor(bookmarkButton)\n return bookmarkButton\n }\n}\n"],"mappings":"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"}
|
package/lib/chat/chatLogic.js
CHANGED
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.ChatChannel = void 0;
|
|
9
|
-
exports.
|
|
9
|
+
exports.allVersions = allVersions;
|
|
10
10
|
exports.isDeleted = isDeleted;
|
|
11
11
|
exports.isHidden = isHidden;
|
|
12
12
|
exports.isReplaced = isReplaced;
|
|
@@ -85,8 +85,9 @@ var ChatChannel = exports.ChatChannel = /*#__PURE__*/function () {
|
|
|
85
85
|
var _this = this;
|
|
86
86
|
var oldMsg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
87
87
|
var deleteIt = arguments.length > 2 ? arguments[2] : undefined;
|
|
88
|
+
var thread = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
|
|
88
89
|
return /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
89
|
-
var sts, now, timestamp, dateStamp, chatDocument, message, me, msg, oldMsgMaker, errMsg, privateKey, sig, _errMsg;
|
|
90
|
+
var sts, now, timestamp, dateStamp, chatDocument, message, me, msg, oldMsgMaker, oldMsgMostRecentVersion, oldMsgThread, errMsg, privateKey, sig, _errMsg;
|
|
90
91
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
91
92
|
while (1) switch (_context2.prev = _context2.next) {
|
|
92
93
|
case 0:
|
|
@@ -100,73 +101,88 @@ var ChatChannel = exports.ChatChannel = /*#__PURE__*/function () {
|
|
|
100
101
|
msg = (0, _signature.getBlankMsg)();
|
|
101
102
|
msg.id = message.uri;
|
|
102
103
|
if (!oldMsg) {
|
|
103
|
-
_context2.next =
|
|
104
|
+
_context2.next = 27;
|
|
104
105
|
break;
|
|
105
106
|
}
|
|
106
107
|
// edit message replaces old one
|
|
107
108
|
oldMsgMaker = _solidLogic.store.any(oldMsg, ns.foaf('maker')); // may not be needed here, but needed on READ
|
|
108
109
|
if (!(oldMsgMaker.uri === me.uri)) {
|
|
109
|
-
_context2.next =
|
|
110
|
+
_context2.next = 21;
|
|
110
111
|
break;
|
|
111
112
|
}
|
|
112
|
-
|
|
113
|
+
_context2.next = 14;
|
|
114
|
+
return mostRecentVersion(oldMsg);
|
|
115
|
+
case 14:
|
|
116
|
+
oldMsgMostRecentVersion = _context2.sent;
|
|
117
|
+
sts.push($rdf.st(oldMsgMostRecentVersion, ns.dct('isReplacedBy'), message, chatDocument));
|
|
118
|
+
// if oldMsg has_reply => add has_reply to message
|
|
119
|
+
oldMsgThread = _solidLogic.store.any(oldMsgMostRecentVersion, ns.sioc('has_reply'));
|
|
120
|
+
if (oldMsgThread) {
|
|
121
|
+
sts.push($rdf.st(message, ns.sioc('has_reply'), oldMsgThread, chatDocument));
|
|
122
|
+
}
|
|
113
123
|
if (deleteIt) {
|
|
114
124
|
// we need to add a specific signature, else anyone can delete a msg ?
|
|
115
125
|
sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument));
|
|
116
126
|
}
|
|
117
|
-
_context2.next =
|
|
127
|
+
_context2.next = 25;
|
|
118
128
|
break;
|
|
119
|
-
case
|
|
129
|
+
case 21:
|
|
120
130
|
errMsg = 'Error you cannot delete/edit a message from someone else : \n' + oldMsgMaker.uri;
|
|
121
131
|
debug.warn(errMsg);
|
|
122
132
|
alert(errMsg);
|
|
123
133
|
throw new Error(errMsg);
|
|
124
|
-
case
|
|
125
|
-
_context2.next =
|
|
134
|
+
case 25:
|
|
135
|
+
_context2.next = 28;
|
|
126
136
|
break;
|
|
127
|
-
case
|
|
137
|
+
case 27:
|
|
128
138
|
// link new message to channel
|
|
129
139
|
sts.push($rdf.st(_this.channel, ns.wf('message'), message, chatDocument));
|
|
130
|
-
case
|
|
140
|
+
case 28:
|
|
131
141
|
sts.push($rdf.st(message, ns.sioc('content'), _solidLogic.store.literal(text), chatDocument));
|
|
132
142
|
msg.content = text;
|
|
133
143
|
sts.push($rdf.st(message, ns.dct('created'), dateStamp, chatDocument));
|
|
134
144
|
msg.created = dateStamp.value;
|
|
135
145
|
if (!me) {
|
|
136
|
-
_context2.next =
|
|
146
|
+
_context2.next = 40;
|
|
137
147
|
break;
|
|
138
148
|
}
|
|
139
149
|
sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument));
|
|
140
150
|
msg.maker = me.uri;
|
|
141
151
|
// privateKey the cached private key of me, cached in store
|
|
142
|
-
_context2.next =
|
|
152
|
+
_context2.next = 37;
|
|
143
153
|
return (0, _keys.getPrivateKey)(me);
|
|
144
|
-
case
|
|
154
|
+
case 37:
|
|
145
155
|
privateKey = _context2.sent;
|
|
146
156
|
// me.uri)
|
|
147
157
|
sig = (0, _signature.signMsg)(msg, privateKey);
|
|
148
158
|
sts.push($rdf.st(message, $rdf.sym("".concat(_signature.SEC, "proofValue")), $rdf.lit(sig), chatDocument));
|
|
149
|
-
case 35:
|
|
150
|
-
_context2.prev = 35;
|
|
151
|
-
_context2.next = 38;
|
|
152
|
-
return _solidLogic.store.updater.update([], sts);
|
|
153
|
-
case 38:
|
|
154
|
-
_context2.next = 46;
|
|
155
|
-
break;
|
|
156
159
|
case 40:
|
|
157
|
-
|
|
158
|
-
|
|
160
|
+
if (thread) {
|
|
161
|
+
sts.push($rdf.st(thread, ns.sioc('has_member'), message, chatDocument));
|
|
162
|
+
if (!thread.doc().sameTerm(message.doc())) {
|
|
163
|
+
sts.push($rdf.st(thread, ns.sioc('has_member'), message, thread.doc()));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
_context2.prev = 41;
|
|
167
|
+
_context2.next = 44;
|
|
168
|
+
return _solidLogic.store.updater.updateMany([], sts);
|
|
169
|
+
case 44:
|
|
170
|
+
_context2.next = 52;
|
|
171
|
+
break;
|
|
172
|
+
case 46:
|
|
173
|
+
_context2.prev = 46;
|
|
174
|
+
_context2.t0 = _context2["catch"](41);
|
|
159
175
|
_errMsg = 'Error saving chat message: ' + _context2.t0;
|
|
160
176
|
debug.warn(_errMsg);
|
|
161
177
|
alert(_errMsg);
|
|
162
178
|
throw new Error(_errMsg);
|
|
163
|
-
case
|
|
179
|
+
case 52:
|
|
164
180
|
return _context2.abrupt("return", message);
|
|
165
|
-
case
|
|
181
|
+
case 53:
|
|
166
182
|
case "end":
|
|
167
183
|
return _context2.stop();
|
|
168
184
|
}
|
|
169
|
-
}, _callee2, null, [[
|
|
185
|
+
}, _callee2, null, [[41, 46]]);
|
|
170
186
|
})();
|
|
171
187
|
});
|
|
172
188
|
function updateMessage(_x2) {
|
|
@@ -197,25 +213,193 @@ var ChatChannel = exports.ChatChannel = /*#__PURE__*/function () {
|
|
|
197
213
|
return _deleteMessage.apply(this, arguments);
|
|
198
214
|
}
|
|
199
215
|
return deleteMessage;
|
|
200
|
-
}()
|
|
216
|
+
}() // Create a new thread of replies to the thread root message
|
|
217
|
+
// or return one which already exists
|
|
218
|
+
)
|
|
219
|
+
}, {
|
|
220
|
+
key: "createThread",
|
|
221
|
+
value: function () {
|
|
222
|
+
var _createThread = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(threadRoot) {
|
|
223
|
+
var already, thread, insert;
|
|
224
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
225
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
226
|
+
case 0:
|
|
227
|
+
already = _solidLogic.store.each(threadRoot, ns.sioc('has_reply'), null, threadRoot.doc()).filter(function (thread) {
|
|
228
|
+
return _solidLogic.store.holds(thread, ns.rdf('type'), ns.sioc('Thread'), thread.doc());
|
|
229
|
+
});
|
|
230
|
+
if (!(already.length > 0)) {
|
|
231
|
+
_context4.next = 3;
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
return _context4.abrupt("return", already[0]);
|
|
235
|
+
case 3:
|
|
236
|
+
thread = $rdf.sym(threadRoot.uri + '-thread');
|
|
237
|
+
insert = [$rdf.st(thread, ns.rdf('type'), ns.sioc('Thread'), thread.doc()), $rdf.st(threadRoot, ns.sioc('has_reply'), thread, thread.doc())];
|
|
238
|
+
_context4.next = 7;
|
|
239
|
+
return _solidLogic.store.updater.update([], insert);
|
|
240
|
+
case 7:
|
|
241
|
+
return _context4.abrupt("return", thread);
|
|
242
|
+
case 8:
|
|
243
|
+
case "end":
|
|
244
|
+
return _context4.stop();
|
|
245
|
+
}
|
|
246
|
+
}, _callee4);
|
|
247
|
+
}));
|
|
248
|
+
function createThread(_x4) {
|
|
249
|
+
return _createThread.apply(this, arguments);
|
|
250
|
+
}
|
|
251
|
+
return createThread;
|
|
252
|
+
}()
|
|
201
253
|
}]);
|
|
202
254
|
return ChatChannel;
|
|
203
255
|
}(); // class ChatChannel
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
msg = _solidLogic.store.any(null, ns.dct('isReplacedBy'), message, message.doc());
|
|
209
|
-
}
|
|
210
|
-
return message;
|
|
256
|
+
// ////////// Utility functions
|
|
257
|
+
// Have to not loop forever if fed loops
|
|
258
|
+
function allVersions(_x5) {
|
|
259
|
+
return _allVersions.apply(this, arguments);
|
|
211
260
|
}
|
|
212
|
-
function
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
261
|
+
function _allVersions() {
|
|
262
|
+
_allVersions = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(message) {
|
|
263
|
+
var versions, done, m, prev, next;
|
|
264
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
265
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
266
|
+
case 0:
|
|
267
|
+
versions = [message];
|
|
268
|
+
done = {};
|
|
269
|
+
done[message.uri] = true;
|
|
270
|
+
m = message;
|
|
271
|
+
case 4:
|
|
272
|
+
if (!true) {
|
|
273
|
+
_context5.next = 15;
|
|
274
|
+
break;
|
|
275
|
+
}
|
|
276
|
+
// earlier?
|
|
277
|
+
prev = _solidLogic.store.any(null, ns.dct('isReplacedBy'), m, m.doc());
|
|
278
|
+
if (!(!prev || done[prev.uri])) {
|
|
279
|
+
_context5.next = 8;
|
|
280
|
+
break;
|
|
281
|
+
}
|
|
282
|
+
return _context5.abrupt("break", 15);
|
|
283
|
+
case 8:
|
|
284
|
+
_context5.next = 10;
|
|
285
|
+
return _solidLogic.store.fetcher.load(prev);
|
|
286
|
+
case 10:
|
|
287
|
+
versions.unshift(prev);
|
|
288
|
+
done[prev.uri] = true;
|
|
289
|
+
m = prev;
|
|
290
|
+
_context5.next = 4;
|
|
291
|
+
break;
|
|
292
|
+
case 15:
|
|
293
|
+
m = message;
|
|
294
|
+
case 16:
|
|
295
|
+
if (!true) {
|
|
296
|
+
_context5.next = 25;
|
|
297
|
+
break;
|
|
298
|
+
}
|
|
299
|
+
// later?
|
|
300
|
+
next = _solidLogic.store.any(m, ns.dct('isReplacedBy'), null, m.doc());
|
|
301
|
+
if (!(!next || done[next.uri])) {
|
|
302
|
+
_context5.next = 20;
|
|
303
|
+
break;
|
|
304
|
+
}
|
|
305
|
+
return _context5.abrupt("break", 25);
|
|
306
|
+
case 20:
|
|
307
|
+
versions.push(next);
|
|
308
|
+
done[next.uri] = true;
|
|
309
|
+
m = next;
|
|
310
|
+
_context5.next = 16;
|
|
311
|
+
break;
|
|
312
|
+
case 25:
|
|
313
|
+
return _context5.abrupt("return", versions);
|
|
314
|
+
case 26:
|
|
315
|
+
case "end":
|
|
316
|
+
return _context5.stop();
|
|
317
|
+
}
|
|
318
|
+
}, _callee5);
|
|
319
|
+
}));
|
|
320
|
+
return _allVersions.apply(this, arguments);
|
|
321
|
+
}
|
|
322
|
+
function originalVersion(_x6) {
|
|
323
|
+
return _originalVersion.apply(this, arguments);
|
|
324
|
+
}
|
|
325
|
+
function _originalVersion() {
|
|
326
|
+
_originalVersion = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(message) {
|
|
327
|
+
var msg, done;
|
|
328
|
+
return _regenerator["default"].wrap(function _callee6$(_context6) {
|
|
329
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
330
|
+
case 0:
|
|
331
|
+
msg = message;
|
|
332
|
+
done = {}; // done[message.uri] = true
|
|
333
|
+
case 2:
|
|
334
|
+
if (!msg) {
|
|
335
|
+
_context6.next = 13;
|
|
336
|
+
break;
|
|
337
|
+
}
|
|
338
|
+
if (!done[msg.uri]) {
|
|
339
|
+
_context6.next = 6;
|
|
340
|
+
break;
|
|
341
|
+
}
|
|
342
|
+
debug.error('originalVersion: verion loop' + message);
|
|
343
|
+
return _context6.abrupt("return", message);
|
|
344
|
+
case 6:
|
|
345
|
+
done[msg.uri] = true;
|
|
346
|
+
message = msg;
|
|
347
|
+
_context6.next = 10;
|
|
348
|
+
return _solidLogic.store.fetcher.load(message);
|
|
349
|
+
case 10:
|
|
350
|
+
msg = _solidLogic.store.any(null, ns.dct('isReplacedBy'), message, message.doc());
|
|
351
|
+
_context6.next = 2;
|
|
352
|
+
break;
|
|
353
|
+
case 13:
|
|
354
|
+
return _context6.abrupt("return", message);
|
|
355
|
+
case 14:
|
|
356
|
+
case "end":
|
|
357
|
+
return _context6.stop();
|
|
358
|
+
}
|
|
359
|
+
}, _callee6);
|
|
360
|
+
}));
|
|
361
|
+
return _originalVersion.apply(this, arguments);
|
|
362
|
+
}
|
|
363
|
+
function mostRecentVersion(_x7) {
|
|
364
|
+
return _mostRecentVersion.apply(this, arguments);
|
|
365
|
+
}
|
|
366
|
+
function _mostRecentVersion() {
|
|
367
|
+
_mostRecentVersion = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(message) {
|
|
368
|
+
var msg, done;
|
|
369
|
+
return _regenerator["default"].wrap(function _callee7$(_context7) {
|
|
370
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
371
|
+
case 0:
|
|
372
|
+
msg = message;
|
|
373
|
+
done = {};
|
|
374
|
+
case 2:
|
|
375
|
+
if (!msg) {
|
|
376
|
+
_context7.next = 13;
|
|
377
|
+
break;
|
|
378
|
+
}
|
|
379
|
+
if (!done[msg.uri]) {
|
|
380
|
+
_context7.next = 6;
|
|
381
|
+
break;
|
|
382
|
+
}
|
|
383
|
+
debug.error('mostRecentVersion: verion loop' + message);
|
|
384
|
+
return _context7.abrupt("return", message);
|
|
385
|
+
case 6:
|
|
386
|
+
done[msg.uri] = true;
|
|
387
|
+
message = msg;
|
|
388
|
+
_context7.next = 10;
|
|
389
|
+
return _solidLogic.store.fetcher.load(message);
|
|
390
|
+
case 10:
|
|
391
|
+
msg = _solidLogic.store.any(message, ns.dct('isReplacedBy'), null, message.doc());
|
|
392
|
+
_context7.next = 2;
|
|
393
|
+
break;
|
|
394
|
+
case 13:
|
|
395
|
+
return _context7.abrupt("return", message);
|
|
396
|
+
case 14:
|
|
397
|
+
case "end":
|
|
398
|
+
return _context7.stop();
|
|
399
|
+
}
|
|
400
|
+
}, _callee7);
|
|
401
|
+
}));
|
|
402
|
+
return _mostRecentVersion.apply(this, arguments);
|
|
219
403
|
}
|
|
220
404
|
function isDeleted(message) {
|
|
221
405
|
return _solidLogic.store.holds(message, ns.schema('dateDeleted'), null, message.doc());
|
|
@@ -234,64 +418,5 @@ function nick(person) {
|
|
|
234
418
|
if (s) return '' + s.value;
|
|
235
419
|
return '' + utils.label(person);
|
|
236
420
|
}
|
|
237
|
-
|
|
238
|
-
return _createIfNotExists2.apply(this, arguments);
|
|
239
|
-
} // ends
|
|
240
|
-
function _createIfNotExists2() {
|
|
241
|
-
_createIfNotExists2 = (0, _asyncToGenerator2["default"])(function (doc) {
|
|
242
|
-
var contentType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'text/turtle';
|
|
243
|
-
var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
244
|
-
return /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
245
|
-
var response;
|
|
246
|
-
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
247
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
248
|
-
case 0:
|
|
249
|
-
_context4.prev = 0;
|
|
250
|
-
_context4.next = 3;
|
|
251
|
-
return _solidLogic.store.fetcher.load(doc);
|
|
252
|
-
case 3:
|
|
253
|
-
response = _context4.sent;
|
|
254
|
-
_context4.next = 26;
|
|
255
|
-
break;
|
|
256
|
-
case 6:
|
|
257
|
-
_context4.prev = 6;
|
|
258
|
-
_context4.t0 = _context4["catch"](0);
|
|
259
|
-
if (!(_context4.t0.response.status === 404)) {
|
|
260
|
-
_context4.next = 24;
|
|
261
|
-
break;
|
|
262
|
-
}
|
|
263
|
-
debug.log('createIfNotExists: doc does NOT exist, will create... ' + doc);
|
|
264
|
-
_context4.prev = 10;
|
|
265
|
-
_context4.next = 13;
|
|
266
|
-
return _solidLogic.store.fetcher.webOperation('PUT', doc.uri, {
|
|
267
|
-
data: data,
|
|
268
|
-
contentType: contentType
|
|
269
|
-
});
|
|
270
|
-
case 13:
|
|
271
|
-
response = _context4.sent;
|
|
272
|
-
_context4.next = 20;
|
|
273
|
-
break;
|
|
274
|
-
case 16:
|
|
275
|
-
_context4.prev = 16;
|
|
276
|
-
_context4.t1 = _context4["catch"](10);
|
|
277
|
-
debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + _context4.t1);
|
|
278
|
-
throw _context4.t1;
|
|
279
|
-
case 20:
|
|
280
|
-
delete _solidLogic.store.fetcher.requested[doc.uri]; // delete cached 404 error
|
|
281
|
-
// debug.log('createIfNotExists doc created ok ' + doc)
|
|
282
|
-
return _context4.abrupt("return", response);
|
|
283
|
-
case 24:
|
|
284
|
-
debug.log('createIfNotExists doc load error NOT 404: ' + doc + ': ' + _context4.t0);
|
|
285
|
-
throw _context4.t0;
|
|
286
|
-
case 26:
|
|
287
|
-
return _context4.abrupt("return", response);
|
|
288
|
-
case 27:
|
|
289
|
-
case "end":
|
|
290
|
-
return _context4.stop();
|
|
291
|
-
}
|
|
292
|
-
}, _callee4, null, [[0, 6], [10, 16]]);
|
|
293
|
-
})();
|
|
294
|
-
});
|
|
295
|
-
return _createIfNotExists2.apply(this, arguments);
|
|
296
|
-
}
|
|
421
|
+
// ends
|
|
297
422
|
//# sourceMappingURL=chatLogic.js.map
|