solid-ui 2.4.23 → 2.4.24
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/main.js +2159 -5039
- package/dist/main.js.map +1 -1
- package/lib/acl/access-controller.js +4 -67
- package/lib/acl/access-controller.js.map +1 -1
- package/lib/acl/access-groups.js +59 -137
- package/lib/acl/access-groups.js.map +1 -1
- package/lib/acl/acl-control.js +14 -54
- package/lib/acl/acl-control.js.map +1 -1
- package/lib/acl/acl.js +32 -107
- package/lib/acl/acl.js.map +1 -1
- package/lib/acl/add-agent-buttons.js +0 -92
- package/lib/acl/add-agent-buttons.js.map +1 -1
- package/lib/acl/index.js +1 -3
- package/lib/acl/index.js.map +1 -1
- package/lib/acl/styles.js +1 -2
- package/lib/acl/styles.js.map +1 -1
- package/lib/chat/bookmarks.js +8 -80
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +109 -180
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/dateFolder.js +6 -91
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +33 -185
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js +37 -150
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +23 -96
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +33 -91
- package/lib/chat/thread.js.map +1 -1
- package/lib/create/create.js +19 -51
- package/lib/create/create.js.map +1 -1
- package/lib/create/index.js +0 -2
- package/lib/create/index.js.map +1 -1
- package/lib/debug.js +0 -8
- package/lib/debug.js.map +1 -1
- package/lib/folders.js +4 -27
- package/lib/folders.js.map +1 -1
- package/lib/footer/index.js +2 -24
- package/lib/footer/index.js.map +1 -1
- package/lib/footer/styleMap.js.map +1 -1
- package/lib/header/empty-profile.js.map +1 -1
- package/lib/header/index.js +3 -72
- package/lib/header/index.js.map +1 -1
- package/lib/header/styleMap.js +4 -3
- package/lib/header/styleMap.js.map +1 -1
- package/lib/iconBase.js +3 -4
- package/lib/iconBase.js.map +1 -1
- package/lib/index.js +5 -46
- package/lib/index.js.map +1 -1
- package/lib/jss/index.js +3 -9
- package/lib/jss/index.js.map +1 -1
- package/lib/log.js +15 -51
- package/lib/log.js.map +1 -1
- package/lib/login/login.js +74 -303
- package/lib/login/login.js.map +1 -1
- package/lib/matrix/index.js +0 -2
- package/lib/matrix/index.js.map +1 -1
- package/lib/matrix/matrix.js +7 -55
- package/lib/matrix/matrix.js.map +1 -1
- package/lib/media/index.js +0 -2
- package/lib/media/index.js.map +1 -1
- package/lib/media/media-capture.js +13 -33
- package/lib/media/media-capture.js.map +1 -1
- package/lib/messageArea.js +23 -64
- package/lib/messageArea.js.map +1 -1
- package/lib/noun_Camera_1618446_000000.js.map +1 -1
- package/lib/ns.js +5 -7
- package/lib/ns.js.map +1 -1
- package/lib/pad.js +48 -234
- package/lib/pad.js.map +1 -1
- package/lib/participation.js +10 -65
- package/lib/participation.js.map +1 -1
- package/lib/preferences.js +21 -42
- package/lib/preferences.js.map +1 -1
- package/lib/signup/config-default.js +1 -8
- package/lib/signup/config-default.js.map +1 -1
- package/lib/signup/signup.js +6 -13
- package/lib/signup/signup.js.map +1 -1
- package/lib/stories/decorators.js +0 -2
- package/lib/stories/decorators.js.map +1 -1
- package/lib/style.js +8 -5
- package/lib/style.js.map +1 -1
- package/lib/style_multiSelect.js +1 -5
- package/lib/style_multiSelect.js.map +1 -1
- package/lib/table.js +309 -322
- package/lib/table.js.map +1 -1
- package/lib/tabs.js +20 -100
- package/lib/tabs.js.map +1 -1
- package/lib/utils/headerFooterHelpers.js +4 -52
- package/lib/utils/headerFooterHelpers.js.map +1 -1
- package/lib/utils/index.js +41 -135
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/label.js +13 -34
- package/lib/utils/label.js.map +1 -1
- package/lib/versionInfo.js +4 -4
- package/lib/versionInfo.js.map +1 -1
- package/lib/widgets/buttons/iconLinks.js +0 -8
- package/lib/widgets/buttons/iconLinks.js.map +1 -1
- package/lib/widgets/buttons.js +115 -291
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/dragAndDrop.js +12 -41
- package/lib/widgets/dragAndDrop.js.map +1 -1
- package/lib/widgets/error.js +3 -9
- package/lib/widgets/error.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteBar.js +8 -71
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteField.js +13 -65
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +15 -107
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
- package/lib/widgets/forms/autocomplete/language.js +6 -55
- package/lib/widgets/forms/autocomplete/language.js.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.js +12 -131
- package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
- package/lib/widgets/forms/basic.js +12 -55
- package/lib/widgets/forms/basic.js.map +1 -1
- package/lib/widgets/forms/comment.js +1 -15
- package/lib/widgets/forms/comment.js.map +1 -1
- package/lib/widgets/forms/fieldFunction.js +3 -16
- package/lib/widgets/forms/fieldFunction.js.map +1 -1
- package/lib/widgets/forms/fieldParams.js +0 -12
- package/lib/widgets/forms/fieldParams.js.map +1 -1
- package/lib/widgets/forms/formStyle.js +1 -14
- package/lib/widgets/forms/formStyle.js.map +1 -1
- package/lib/widgets/forms.js +70 -474
- package/lib/widgets/forms.js.map +1 -1
- package/lib/widgets/index.js +0 -21
- package/lib/widgets/index.js.map +1 -1
- package/lib/widgets/multiSelect.js +48 -171
- package/lib/widgets/multiSelect.js.map +1 -1
- package/lib/widgets/peoplePicker.js +20 -90
- package/lib/widgets/peoplePicker.js.map +1 -1
- package/lib/widgets/widgetHelpers.js +2 -9
- package/lib/widgets/widgetHelpers.js.map +1 -1
- package/package.json +28 -28
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bookmarks.js","names":["UI","icons","ns","media","pad","rdf","style","utils","widgets","$rdf","BOOK","Namespace","BOOKMARK_ICON","label","dom","window","document","createIfNotExists","doc","Promise","resolve","reject","store","fetcher","load","then","response","debug","log","err","status","webOperation","uri","data","contentType","requested","updatePromise","del","ins","updater","update","ok","errorBody","Error","findBookmarkDocument","userContext","theClass","fileTail","isPublic","findAppInstances","instances","length","bookmarkDocument","alert","publicProfile","newBookmarkFile","sym","dir","error","registerInTypeIndex","index","addBookmark","context","target","title","me","authn","currentUser","author","any","foaf","anyValue","sioc","slice","bookmarkDoc","bookmark","newThing","st","dct","Date","msg","toggleBookmark","bookmarkButton","bookmarks","each","confirm","i","connectedStatements","backgroundColor","renderBookmarksButton","setBookmarkButtonColor","bookmarked","buttonStyle","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":["UI","icons","ns","media","pad","rdf","style","utils","widgets","$rdf","BOOK","Namespace","BOOKMARK_ICON","label","dom","window","document","createIfNotExists","doc","Promise","resolve","reject","store","fetcher","load","then","response","debug","log","err","status","webOperation","uri","data","contentType","requested","updatePromise","del","ins","updater","update","ok","errorBody","Error","findBookmarkDocument","userContext","theClass","fileTail","isPublic","findAppInstances","instances","length","bookmarkDocument","alert","publicProfile","newBookmarkFile","sym","dir","error","registerInTypeIndex","index","addBookmark","context","target","title","me","authn","currentUser","author","any","foaf","anyValue","sioc","slice","bookmarkDoc","bookmark","newThing","st","dct","Date","msg","toggleBookmark","bookmarkButton","bookmarks","each","confirm","i","connectedStatements","backgroundColor","renderBookmarksButton","setBookmarkButtonColor","bookmarked","buttonStyle","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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"}
|
package/lib/chat/chatLogic.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
@@ -15,40 +13,25 @@ exports.isReplaced = isReplaced;
|
|
|
15
13
|
exports.mostRecentVersion = mostRecentVersion;
|
|
16
14
|
exports.nick = nick;
|
|
17
15
|
exports.originalVersion = originalVersion;
|
|
18
|
-
|
|
19
16
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
20
|
-
|
|
21
17
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
22
|
-
|
|
23
18
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
24
|
-
|
|
25
19
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
26
|
-
|
|
27
20
|
var debug = _interopRequireWildcard(require("../debug"));
|
|
28
|
-
|
|
29
21
|
var _dateFolder = require("./dateFolder");
|
|
30
|
-
|
|
31
22
|
var _solidLogic = require("solid-logic");
|
|
32
|
-
|
|
33
23
|
var ns = _interopRequireWildcard(require("../ns"));
|
|
34
|
-
|
|
35
24
|
var $rdf = _interopRequireWildcard(require("rdflib"));
|
|
36
|
-
|
|
37
25
|
var utils = _interopRequireWildcard(require("../utils"));
|
|
38
|
-
|
|
39
26
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
40
|
-
|
|
41
27
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
42
|
-
|
|
43
28
|
/**
|
|
44
29
|
* Contains the [[ChatChannel]] class and logic for Solid Chat
|
|
45
30
|
* @packageDocumentation
|
|
46
31
|
*/
|
|
47
32
|
// pull in first avoid cross-refs
|
|
48
|
-
|
|
49
33
|
/* The Solid logic for a 'LongChat'
|
|
50
34
|
*/
|
|
51
|
-
|
|
52
35
|
/**
|
|
53
36
|
* Common code for a chat (discussion area of messages about something)
|
|
54
37
|
* This version runs over a series of files for different time periods
|
|
@@ -66,10 +49,9 @@ var ChatChannel = /*#__PURE__*/function () {
|
|
|
66
49
|
this.dateFolder = new _dateFolder.DateFolder(this.channelRoot, 'chat.ttl');
|
|
67
50
|
this.div = null; // : HTMLElement
|
|
68
51
|
}
|
|
52
|
+
|
|
69
53
|
/* Store a new message in the web,
|
|
70
54
|
*/
|
|
71
|
-
|
|
72
|
-
|
|
73
55
|
(0, _createClass2["default"])(ChatChannel, [{
|
|
74
56
|
key: "createMessage",
|
|
75
57
|
value: function () {
|
|
@@ -79,7 +61,6 @@ var ChatChannel = /*#__PURE__*/function () {
|
|
|
79
61
|
switch (_context.prev = _context.next) {
|
|
80
62
|
case 0:
|
|
81
63
|
return _context.abrupt("return", this.updateMessage(text));
|
|
82
|
-
|
|
83
64
|
case 1:
|
|
84
65
|
case "end":
|
|
85
66
|
return _context.stop();
|
|
@@ -87,105 +68,82 @@ var ChatChannel = /*#__PURE__*/function () {
|
|
|
87
68
|
}
|
|
88
69
|
}, _callee, this);
|
|
89
70
|
}));
|
|
90
|
-
|
|
91
71
|
function createMessage(_x) {
|
|
92
72
|
return _createMessage.apply(this, arguments);
|
|
93
73
|
}
|
|
94
|
-
|
|
95
74
|
return createMessage;
|
|
96
75
|
}()
|
|
97
76
|
/* Store a new message in the web,
|
|
98
77
|
as a replacement for an existing one.
|
|
99
78
|
The old one iis left, and the two are linked
|
|
100
79
|
*/
|
|
101
|
-
|
|
102
80
|
}, {
|
|
103
81
|
key: "updateMessage",
|
|
104
82
|
value: function () {
|
|
105
|
-
var _updateMessage = (0, _asyncToGenerator2["default"])(
|
|
106
|
-
var
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
if (oldMsg) {
|
|
133
|
-
// edit message replaces old one
|
|
134
|
-
sts.push($rdf.st(mostRecentVersion(oldMsg), ns.dct('isReplacedBy'), message, chatDocument));
|
|
135
|
-
|
|
136
|
-
if (deleteIt) {
|
|
137
|
-
sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument));
|
|
83
|
+
var _updateMessage = (0, _asyncToGenerator2["default"])(function (text) {
|
|
84
|
+
var _this = this;
|
|
85
|
+
var oldMsg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
86
|
+
var deleteIt = arguments.length > 2 ? arguments[2] : undefined;
|
|
87
|
+
return /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
88
|
+
var sts, now, timestamp, dateStamp, chatDocument, message, me, msg;
|
|
89
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
90
|
+
while (1) {
|
|
91
|
+
switch (_context2.prev = _context2.next) {
|
|
92
|
+
case 0:
|
|
93
|
+
sts = [];
|
|
94
|
+
now = new Date();
|
|
95
|
+
timestamp = '' + now.getTime();
|
|
96
|
+
dateStamp = $rdf.term(now);
|
|
97
|
+
chatDocument = oldMsg ? oldMsg.doc() : _this.dateFolder.leafDocumentFromDate(now);
|
|
98
|
+
message = _solidLogic.store.sym(chatDocument.uri + '#' + 'Msg' + timestamp); // const content = store.literal(text)
|
|
99
|
+
me = _solidLogic.authn.currentUser(); // If already logged on
|
|
100
|
+
if (oldMsg) {
|
|
101
|
+
// edit message replaces old one
|
|
102
|
+
sts.push($rdf.st(mostRecentVersion(oldMsg), ns.dct('isReplacedBy'), message, chatDocument));
|
|
103
|
+
if (deleteIt) {
|
|
104
|
+
sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument));
|
|
105
|
+
}
|
|
106
|
+
} else {
|
|
107
|
+
// link new message to channel
|
|
108
|
+
sts.push($rdf.st(_this.channel, ns.wf('message'), message, chatDocument));
|
|
138
109
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
debug.warn(msg);
|
|
164
|
-
alert(msg);
|
|
165
|
-
throw new Error(msg);
|
|
166
|
-
|
|
167
|
-
case 24:
|
|
168
|
-
return _context2.abrupt("return", message);
|
|
169
|
-
|
|
170
|
-
case 25:
|
|
171
|
-
case "end":
|
|
172
|
-
return _context2.stop();
|
|
110
|
+
sts.push($rdf.st(message, ns.sioc('content'), _solidLogic.store.literal(text), chatDocument));
|
|
111
|
+
sts.push($rdf.st(message, ns.dct('created'), dateStamp, chatDocument));
|
|
112
|
+
if (me) {
|
|
113
|
+
sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument));
|
|
114
|
+
}
|
|
115
|
+
_context2.prev = 11;
|
|
116
|
+
_context2.next = 14;
|
|
117
|
+
return _solidLogic.store.updater.update([], sts);
|
|
118
|
+
case 14:
|
|
119
|
+
_context2.next = 22;
|
|
120
|
+
break;
|
|
121
|
+
case 16:
|
|
122
|
+
_context2.prev = 16;
|
|
123
|
+
_context2.t0 = _context2["catch"](11);
|
|
124
|
+
msg = 'Error saving chat message: ' + _context2.t0;
|
|
125
|
+
debug.warn(msg);
|
|
126
|
+
alert(msg);
|
|
127
|
+
throw new Error(msg);
|
|
128
|
+
case 22:
|
|
129
|
+
return _context2.abrupt("return", message);
|
|
130
|
+
case 23:
|
|
131
|
+
case "end":
|
|
132
|
+
return _context2.stop();
|
|
133
|
+
}
|
|
173
134
|
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
})
|
|
177
|
-
|
|
135
|
+
}, _callee2, null, [[11, 16]]);
|
|
136
|
+
})();
|
|
137
|
+
});
|
|
178
138
|
function updateMessage(_x2) {
|
|
179
139
|
return _updateMessage.apply(this, arguments);
|
|
180
140
|
}
|
|
181
|
-
|
|
182
141
|
return updateMessage;
|
|
183
142
|
}()
|
|
184
143
|
/* Mark a message as deleted
|
|
185
144
|
* Wee add a new version of the message,m witha deletion flag (deletion date)
|
|
186
145
|
* so that the deletion can be revoked by adding another non-deleted update
|
|
187
146
|
*/
|
|
188
|
-
|
|
189
147
|
}, {
|
|
190
148
|
key: "deleteMessage",
|
|
191
149
|
value: function () {
|
|
@@ -195,7 +153,6 @@ var ChatChannel = /*#__PURE__*/function () {
|
|
|
195
153
|
switch (_context3.prev = _context3.next) {
|
|
196
154
|
case 0:
|
|
197
155
|
return _context3.abrupt("return", this.updateMessage('(message deleted)', message, true));
|
|
198
|
-
|
|
199
156
|
case 1:
|
|
200
157
|
case "end":
|
|
201
158
|
return _context3.stop();
|
|
@@ -203,136 +160,108 @@ var ChatChannel = /*#__PURE__*/function () {
|
|
|
203
160
|
}
|
|
204
161
|
}, _callee3, this);
|
|
205
162
|
}));
|
|
206
|
-
|
|
207
163
|
function deleteMessage(_x3) {
|
|
208
164
|
return _deleteMessage.apply(this, arguments);
|
|
209
165
|
}
|
|
210
|
-
|
|
211
166
|
return deleteMessage;
|
|
212
167
|
}()
|
|
213
168
|
}]);
|
|
214
169
|
return ChatChannel;
|
|
215
170
|
}(); // class ChatChannel
|
|
216
|
-
|
|
217
|
-
|
|
218
171
|
exports.ChatChannel = ChatChannel;
|
|
219
|
-
|
|
220
172
|
function originalVersion(message) {
|
|
221
173
|
var msg = message;
|
|
222
|
-
|
|
223
174
|
while (msg) {
|
|
224
175
|
message = msg;
|
|
225
176
|
msg = _solidLogic.store.any(null, ns.dct('isReplacedBy'), message, message.doc());
|
|
226
177
|
}
|
|
227
|
-
|
|
228
178
|
return message;
|
|
229
179
|
}
|
|
230
|
-
|
|
231
180
|
function mostRecentVersion(message) {
|
|
232
181
|
var msg = message;
|
|
233
|
-
|
|
234
182
|
while (msg) {
|
|
235
183
|
message = msg;
|
|
236
184
|
msg = _solidLogic.store.any(message, ns.dct('isReplacedBy'), null, message.doc());
|
|
237
185
|
}
|
|
238
|
-
|
|
239
186
|
return message;
|
|
240
187
|
}
|
|
241
|
-
|
|
242
188
|
function isDeleted(message) {
|
|
243
189
|
return _solidLogic.store.holds(message, ns.schema('dateDeleted'), null, message.doc());
|
|
244
190
|
}
|
|
245
|
-
|
|
246
191
|
function isReplaced(message) {
|
|
247
192
|
return _solidLogic.store.holds(message, ns.dct('isReplacedBy'), null, message.doc());
|
|
248
193
|
}
|
|
249
|
-
|
|
250
194
|
function isHidden(message) {
|
|
251
195
|
return this.isDeleted(message) || this.isReplaced(message);
|
|
252
|
-
}
|
|
196
|
+
}
|
|
253
197
|
|
|
198
|
+
// A Nickname for a person
|
|
254
199
|
|
|
255
200
|
function nick(person) {
|
|
256
201
|
var s = _solidLogic.store.any(person, ns.foaf('nick'));
|
|
257
|
-
|
|
258
202
|
if (s) return '' + s.value;
|
|
259
203
|
return '' + utils.label(person);
|
|
260
204
|
}
|
|
261
|
-
|
|
262
205
|
function _createIfNotExists(_x4) {
|
|
263
206
|
return _createIfNotExists2.apply(this, arguments);
|
|
264
207
|
} // ends
|
|
265
|
-
|
|
266
|
-
|
|
267
208
|
function _createIfNotExists2() {
|
|
268
|
-
_createIfNotExists2 = (0, _asyncToGenerator2["default"])(
|
|
269
|
-
var contentType
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
case 5:
|
|
284
|
-
response = _context4.sent;
|
|
285
|
-
_context4.next = 28;
|
|
286
|
-
break;
|
|
287
|
-
|
|
288
|
-
case 8:
|
|
289
|
-
_context4.prev = 8;
|
|
290
|
-
_context4.t0 = _context4["catch"](2);
|
|
291
|
-
|
|
292
|
-
if (!(_context4.t0.response.status === 404)) {
|
|
209
|
+
_createIfNotExists2 = (0, _asyncToGenerator2["default"])(function (doc) {
|
|
210
|
+
var contentType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'text/turtle';
|
|
211
|
+
var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
212
|
+
return /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
213
|
+
var response;
|
|
214
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
215
|
+
while (1) {
|
|
216
|
+
switch (_context4.prev = _context4.next) {
|
|
217
|
+
case 0:
|
|
218
|
+
_context4.prev = 0;
|
|
219
|
+
_context4.next = 3;
|
|
220
|
+
return _solidLogic.store.fetcher.load(doc);
|
|
221
|
+
case 3:
|
|
222
|
+
response = _context4.sent;
|
|
293
223
|
_context4.next = 26;
|
|
294
224
|
break;
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
return _context4.stop();
|
|
225
|
+
case 6:
|
|
226
|
+
_context4.prev = 6;
|
|
227
|
+
_context4.t0 = _context4["catch"](0);
|
|
228
|
+
if (!(_context4.t0.response.status === 404)) {
|
|
229
|
+
_context4.next = 24;
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
debug.log('createIfNotExists: doc does NOT exist, will create... ' + doc);
|
|
233
|
+
_context4.prev = 10;
|
|
234
|
+
_context4.next = 13;
|
|
235
|
+
return _solidLogic.store.fetcher.webOperation('PUT', doc.uri, {
|
|
236
|
+
data: data,
|
|
237
|
+
contentType: contentType
|
|
238
|
+
});
|
|
239
|
+
case 13:
|
|
240
|
+
response = _context4.sent;
|
|
241
|
+
_context4.next = 20;
|
|
242
|
+
break;
|
|
243
|
+
case 16:
|
|
244
|
+
_context4.prev = 16;
|
|
245
|
+
_context4.t1 = _context4["catch"](10);
|
|
246
|
+
debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + _context4.t1);
|
|
247
|
+
throw _context4.t1;
|
|
248
|
+
case 20:
|
|
249
|
+
delete _solidLogic.store.fetcher.requested[doc.uri]; // delete cached 404 error
|
|
250
|
+
// debug.log('createIfNotExists doc created ok ' + doc)
|
|
251
|
+
return _context4.abrupt("return", response);
|
|
252
|
+
case 24:
|
|
253
|
+
debug.log('createIfNotExists doc load error NOT 404: ' + doc + ': ' + _context4.t0);
|
|
254
|
+
throw _context4.t0;
|
|
255
|
+
case 26:
|
|
256
|
+
return _context4.abrupt("return", response);
|
|
257
|
+
case 27:
|
|
258
|
+
case "end":
|
|
259
|
+
return _context4.stop();
|
|
260
|
+
}
|
|
332
261
|
}
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
})
|
|
262
|
+
}, _callee4, null, [[0, 6], [10, 16]]);
|
|
263
|
+
})();
|
|
264
|
+
});
|
|
336
265
|
return _createIfNotExists2.apply(this, arguments);
|
|
337
266
|
}
|
|
338
267
|
//# sourceMappingURL=chatLogic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatLogic.js","names":["ChatChannel","channel","options","channelRoot","doc","dateFolder","DateFolder","div","text","updateMessage","oldMsg","deleteIt","sts","now","Date","timestamp","getTime","dateStamp","$rdf","term","chatDocument","leafDocumentFromDate","message","store","sym","uri","me","authn","currentUser","push","st","mostRecentVersion","ns","dct","schema","wf","sioc","literal","foaf","updater","update","msg","debug","warn","alert","Error","originalVersion","any","isDeleted","holds","isReplaced","isHidden","nick","person","s","value","utils","label","_createIfNotExists","contentType","data","fetcher","load","response","status","log","webOperation","requested"],"sources":["../../src/chat/chatLogic.js"],"sourcesContent":["/**\n * Contains the [[ChatChannel]] class and logic for Solid Chat\n * @packageDocumentation\n */\n\nimport * as debug from '../debug'\nimport { DateFolder } from './dateFolder'\nimport { store, authn } from 'solid-logic'\nimport * as ns from '../ns'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as utils from '../utils'\n\n/* The Solid logic for a 'LongChat'\n*/\n/**\n * Common code for a chat (discussion area of messages about something)\n * This version runs over a series of files for different time periods\n *\n * Parameters for the whole chat like its title are stored on\n * index.ttl#this and the chats messages are stored in YYYY/MM/DD/chat.ttl\n *\n */\n\nexport class ChatChannel {\n constructor (channel, options) {\n this.channel = channel\n this.channelRoot = channel.doc()\n this.options = options\n this.dateFolder = new DateFolder(this.channelRoot, 'chat.ttl')\n this.div = null // : HTMLElement\n }\n\n /* Store a new message in the web,\n */\n async createMessage (text) {\n return this.updateMessage(text)\n }\n\n /* Store a new message in the web,\n as a replacement for an existing one.\n The old one iis left, and the two are linked\n */\n async updateMessage (text, oldMsg = null, deleteIt) {\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n const chatDocument = oldMsg ? oldMsg.doc() : this.dateFolder.leafDocumentFromDate(now)\n const message = store.sym(chatDocument.uri + '#' + 'Msg' + timestamp)\n // const content = store.literal(text)\n\n const me = authn.currentUser() // If already logged on\n\n if (oldMsg) { // edit message replaces old one\n sts.push($rdf.st(mostRecentVersion(oldMsg), ns.dct('isReplacedBy'), message, chatDocument))\n if (deleteIt) {\n sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument))\n }\n } else { // link new message to channel\n sts.push($rdf.st(this.channel, ns.wf('message'), message, chatDocument))\n }\n sts.push(\n $rdf.st(message, ns.sioc('content'), store.literal(text), chatDocument)\n )\n sts.push(\n $rdf.st(message, ns.dct('created'), dateStamp, chatDocument)\n )\n if (me) {\n sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument))\n }\n try {\n await store.updater.update([], sts)\n } catch (err) {\n const msg = 'Error saving chat message: ' + err\n debug.warn(msg)\n alert(msg)\n throw new Error(msg)\n }\n return message\n }\n\n /* Mark a message as deleted\n * Wee add a new version of the message,m witha deletion flag (deletion date)\n * so that the deletion can be revoked by adding another non-deleted update\n */\n async deleteMessage (message) {\n return this.updateMessage('(message deleted)', message, true)\n }\n} // class ChatChannel\n\nexport function originalVersion (message) {\n let msg = message\n while (msg) {\n message = msg\n msg = store.any(null, ns.dct('isReplacedBy'), message, message.doc())\n }\n return message\n}\n\nexport function mostRecentVersion (message) {\n let msg = message\n while (msg) {\n message = msg\n msg = store.any(message, ns.dct('isReplacedBy'), null, message.doc())\n }\n return message\n}\n\nexport function isDeleted (message) {\n return store.holds(message, ns.schema('dateDeleted'), null, message.doc())\n}\n\nexport function isReplaced (message) {\n return store.holds(message, ns.dct('isReplacedBy'), null, message.doc())\n}\n\nexport function isHidden (message) {\n return this.isDeleted(message) || this.isReplaced(message)\n}\n\n// A Nickname for a person\n\nexport function nick (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n}\n\nexport async function _createIfNotExists (doc, contentType = 'text/turtle', data = '') {\n let response\n try {\n response = await store.fetcher.load(doc)\n } catch (err) {\n if (err.response.status === 404) {\n debug.log(\n 'createIfNotExists: doc does NOT exist, will create... ' + doc\n )\n try {\n response = await store.fetcher.webOperation('PUT', doc.uri, {\n data,\n contentType\n })\n } catch (err) {\n debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + err)\n throw err\n }\n delete store.fetcher.requested[doc.uri] // delete cached 404 error\n // debug.log('createIfNotExists doc created ok ' + doc)\n return response\n } else {\n debug.log(\n 'createIfNotExists doc load error NOT 404: ' + doc + ': ' + err\n )\n throw err\n }\n }\n // debug.log('createIfNotExists: doc exists, all good: ' + doc)\n return response\n}\n// ends\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAVA;AACA;AACA;AACA;AAM+B;;AAG/B;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAEaA,W;EACX,qBAAaC,OAAb,EAAsBC,OAAtB,EAA+B;IAAA;IAC7B,KAAKD,OAAL,GAAeA,OAAf;IACA,KAAKE,WAAL,GAAmBF,OAAO,CAACG,GAAR,EAAnB;IACA,KAAKF,OAAL,GAAeA,OAAf;IACA,KAAKG,UAAL,GAAkB,IAAIC,sBAAJ,CAAe,KAAKH,WAApB,EAAiC,UAAjC,CAAlB;IACA,KAAKI,GAAL,GAAW,IAAX,CAL6B,CAKb;EACjB;EAED;AACF;;;;;;yGACE,iBAAqBC,IAArB;QAAA;UAAA;YAAA;cAAA;gBAAA,iCACS,KAAKC,aAAL,CAAmBD,IAAnB,CADT;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;IAIA;AACF;AACA;AACA;;;;;yGACE,kBAAqBA,IAArB;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAA2BE,MAA3B,8DAAoC,IAApC;gBAA0CC,QAA1C;gBACQC,GADR,GACc,EADd;gBAEQC,GAFR,GAEc,IAAIC,IAAJ,EAFd;gBAGQC,SAHR,GAGoB,KAAKF,GAAG,CAACG,OAAJ,EAHzB;gBAIQC,SAJR,GAIoBC,IAAI,CAACC,IAAL,CAAUN,GAAV,CAJpB;gBAKQO,YALR,GAKuBV,MAAM,GAAGA,MAAM,CAACN,GAAP,EAAH,GAAkB,KAAKC,UAAL,CAAgBgB,oBAAhB,CAAqCR,GAArC,CAL/C;gBAMQS,OANR,GAMkBC,iBAAA,CAAMC,GAAN,CAAUJ,YAAY,CAACK,GAAb,GAAmB,GAAnB,GAAyB,KAAzB,GAAiCV,SAA3C,CANlB,EAOE;;gBAEMW,EATR,GASaC,iBAAA,CAAMC,WAAN,EATb,EASiC;;gBAE/B,IAAIlB,MAAJ,EAAY;kBAAE;kBACZE,GAAG,CAACiB,IAAJ,CAASX,IAAI,CAACY,EAAL,CAAQC,iBAAiB,CAACrB,MAAD,CAAzB,EAAmCsB,EAAE,CAACC,GAAH,CAAO,cAAP,CAAnC,EAA2DX,OAA3D,EAAoEF,YAApE,CAAT;;kBACA,IAAIT,QAAJ,EAAc;oBACZC,GAAG,CAACiB,IAAJ,CAASX,IAAI,CAACY,EAAL,CAAQR,OAAR,EAAiBU,EAAE,CAACE,MAAH,CAAU,aAAV,CAAjB,EAA2CjB,SAA3C,EAAsDG,YAAtD,CAAT;kBACD;gBACF,CALD,MAKO;kBAAE;kBACPR,GAAG,CAACiB,IAAJ,CAASX,IAAI,CAACY,EAAL,CAAQ,KAAK7B,OAAb,EAAsB+B,EAAE,CAACG,EAAH,CAAM,SAAN,CAAtB,EAAwCb,OAAxC,EAAiDF,YAAjD,CAAT;gBACD;;gBACDR,GAAG,CAACiB,IAAJ,CACEX,IAAI,CAACY,EAAL,CAAQR,OAAR,EAAiBU,EAAE,CAACI,IAAH,CAAQ,SAAR,CAAjB,EAAqCb,iBAAA,CAAMc,OAAN,CAAc7B,IAAd,CAArC,EAA0DY,YAA1D,CADF;gBAGAR,GAAG,CAACiB,IAAJ,CACEX,IAAI,CAACY,EAAL,CAAQR,OAAR,EAAiBU,EAAE,CAACC,GAAH,CAAO,SAAP,CAAjB,EAAoChB,SAApC,EAA+CG,YAA/C,CADF;;gBAGA,IAAIM,EAAJ,EAAQ;kBACNd,GAAG,CAACiB,IAAJ,CAASX,IAAI,CAACY,EAAL,CAAQR,OAAR,EAAiBU,EAAE,CAACM,IAAH,CAAQ,OAAR,CAAjB,EAAmCZ,EAAnC,EAAuCN,YAAvC,CAAT;gBACD;;gBA3BH;gBAAA;gBAAA,OA6BUG,iBAAA,CAAMgB,OAAN,CAAcC,MAAd,CAAqB,EAArB,EAAyB5B,GAAzB,CA7BV;;cAAA;gBAAA;gBAAA;;cAAA;gBAAA;gBAAA;gBA+BU6B,GA/BV,GA+BgB,4CA/BhB;gBAgCIC,KAAK,CAACC,IAAN,CAAWF,GAAX;gBACAG,KAAK,CAACH,GAAD,CAAL;gBAjCJ,MAkCU,IAAII,KAAJ,CAAUJ,GAAV,CAlCV;;cAAA;gBAAA,kCAoCSnB,OApCT;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;IAuCA;AACF;AACA;AACA;;;;;yGACE,kBAAqBA,OAArB;QAAA;UAAA;YAAA;cAAA;gBAAA,kCACS,KAAKb,aAAL,CAAmB,mBAAnB,EAAwCa,OAAxC,EAAiD,IAAjD,CADT;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;KAGA;;;;;AAEK,SAASwB,eAAT,CAA0BxB,OAA1B,EAAmC;EACxC,IAAImB,GAAG,GAAGnB,OAAV;;EACA,OAAOmB,GAAP,EAAY;IACVnB,OAAO,GAAGmB,GAAV;IACAA,GAAG,GAAGlB,iBAAA,CAAMwB,GAAN,CAAU,IAAV,EAAgBf,EAAE,CAACC,GAAH,CAAO,cAAP,CAAhB,EAAwCX,OAAxC,EAAiDA,OAAO,CAAClB,GAAR,EAAjD,CAAN;EACD;;EACD,OAAOkB,OAAP;AACD;;AAEM,SAASS,iBAAT,CAA4BT,OAA5B,EAAqC;EAC1C,IAAImB,GAAG,GAAGnB,OAAV;;EACA,OAAOmB,GAAP,EAAY;IACVnB,OAAO,GAAGmB,GAAV;IACAA,GAAG,GAAGlB,iBAAA,CAAMwB,GAAN,CAAUzB,OAAV,EAAmBU,EAAE,CAACC,GAAH,CAAO,cAAP,CAAnB,EAA2C,IAA3C,EAAiDX,OAAO,CAAClB,GAAR,EAAjD,CAAN;EACD;;EACD,OAAOkB,OAAP;AACD;;AAEM,SAAS0B,SAAT,CAAoB1B,OAApB,EAA6B;EAClC,OAAOC,iBAAA,CAAM0B,KAAN,CAAY3B,OAAZ,EAAqBU,EAAE,CAACE,MAAH,CAAU,aAAV,CAArB,EAA+C,IAA/C,EAAqDZ,OAAO,CAAClB,GAAR,EAArD,CAAP;AACD;;AAEM,SAAS8C,UAAT,CAAqB5B,OAArB,EAA8B;EACnC,OAAOC,iBAAA,CAAM0B,KAAN,CAAY3B,OAAZ,EAAqBU,EAAE,CAACC,GAAH,CAAO,cAAP,CAArB,EAA6C,IAA7C,EAAmDX,OAAO,CAAClB,GAAR,EAAnD,CAAP;AACD;;AAEM,SAAS+C,QAAT,CAAmB7B,OAAnB,EAA4B;EACjC,OAAO,KAAK0B,SAAL,CAAe1B,OAAf,KAA2B,KAAK4B,UAAL,CAAgB5B,OAAhB,CAAlC;AACD,C,CAED;;;AAEO,SAAS8B,IAAT,CAAeC,MAAf,EAAuB;EAC5B,IAAMC,CAAC,GAAG/B,iBAAA,CAAMwB,GAAN,CAAUM,MAAV,EAAkBrB,EAAE,CAACM,IAAH,CAAQ,MAAR,CAAlB,CAAV;;EACA,IAAIgB,CAAJ,EAAO,OAAO,KAAKA,CAAC,CAACC,KAAd;EACP,OAAO,KAAKC,KAAK,CAACC,KAAN,CAAYJ,MAAZ,CAAZ;AACD;;SAEqBK,kB;;EA+BtB;;;;sGA/BO,kBAAmCtD,GAAnC;IAAA;IAAA;IAAA;IAAA;IAAA;MAAA;QAAA;UAAA;YAAwCuD,WAAxC,8DAAsD,aAAtD;YAAqEC,IAArE,8DAA4E,EAA5E;YAAA;YAAA;YAAA,OAGcrC,iBAAA,CAAMsC,OAAN,CAAcC,IAAd,CAAmB1D,GAAnB,CAHd;;UAAA;YAGH2D,QAHG;YAAA;YAAA;;UAAA;YAAA;YAAA;;YAAA,MAKC,aAAIA,QAAJ,CAAaC,MAAb,KAAwB,GALzB;cAAA;cAAA;YAAA;;YAMDtB,KAAK,CAACuB,GAAN,CACE,2DAA2D7D,GAD7D;YANC;YAAA;YAAA,OAUkBmB,iBAAA,CAAMsC,OAAN,CAAcK,YAAd,CAA2B,KAA3B,EAAkC9D,GAAG,CAACqB,GAAtC,EAA2C;cAC1DmC,IAAI,EAAJA,IAD0D;cAE1DD,WAAW,EAAXA;YAF0D,CAA3C,CAVlB;;UAAA;YAUCI,QAVD;YAAA;YAAA;;UAAA;YAAA;YAAA;YAeCrB,KAAK,CAACuB,GAAN,CAAU,mCAAmC7D,GAAnC,GAAyC,IAAzC,eAAV;YAfD;;UAAA;YAkBD,OAAOmB,iBAAA,CAAMsC,OAAN,CAAcM,SAAd,CAAwB/D,GAAG,CAACqB,GAA5B,CAAP,CAlBC,CAkBuC;YACxC;;YAnBC,kCAoBMsC,QApBN;;UAAA;YAsBDrB,KAAK,CAACuB,GAAN,CACE,gDAAgD7D,GAAhD,GAAsD,IAAtD,eADF;YAtBC;;UAAA;YAAA,kCA6BE2D,QA7BF;;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,C"}
|
|
1
|
+
{"version":3,"file":"chatLogic.js","names":["ChatChannel","channel","options","channelRoot","doc","dateFolder","DateFolder","div","text","updateMessage","oldMsg","deleteIt","sts","now","Date","timestamp","getTime","dateStamp","$rdf","term","chatDocument","leafDocumentFromDate","message","store","sym","uri","me","authn","currentUser","push","st","mostRecentVersion","ns","dct","schema","wf","sioc","literal","foaf","updater","update","msg","debug","warn","alert","Error","originalVersion","any","isDeleted","holds","isReplaced","isHidden","nick","person","s","value","utils","label","_createIfNotExists","contentType","data","fetcher","load","response","status","log","webOperation","requested"],"sources":["../../src/chat/chatLogic.js"],"sourcesContent":["/**\n * Contains the [[ChatChannel]] class and logic for Solid Chat\n * @packageDocumentation\n */\n\nimport * as debug from '../debug'\nimport { DateFolder } from './dateFolder'\nimport { store, authn } from 'solid-logic'\nimport * as ns from '../ns'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as utils from '../utils'\n\n/* The Solid logic for a 'LongChat'\n*/\n/**\n * Common code for a chat (discussion area of messages about something)\n * This version runs over a series of files for different time periods\n *\n * Parameters for the whole chat like its title are stored on\n * index.ttl#this and the chats messages are stored in YYYY/MM/DD/chat.ttl\n *\n */\n\nexport class ChatChannel {\n constructor (channel, options) {\n this.channel = channel\n this.channelRoot = channel.doc()\n this.options = options\n this.dateFolder = new DateFolder(this.channelRoot, 'chat.ttl')\n this.div = null // : HTMLElement\n }\n\n /* Store a new message in the web,\n */\n async createMessage (text) {\n return this.updateMessage(text)\n }\n\n /* Store a new message in the web,\n as a replacement for an existing one.\n The old one iis left, and the two are linked\n */\n async updateMessage (text, oldMsg = null, deleteIt) {\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n const chatDocument = oldMsg ? oldMsg.doc() : this.dateFolder.leafDocumentFromDate(now)\n const message = store.sym(chatDocument.uri + '#' + 'Msg' + timestamp)\n // const content = store.literal(text)\n\n const me = authn.currentUser() // If already logged on\n\n if (oldMsg) { // edit message replaces old one\n sts.push($rdf.st(mostRecentVersion(oldMsg), ns.dct('isReplacedBy'), message, chatDocument))\n if (deleteIt) {\n sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument))\n }\n } else { // link new message to channel\n sts.push($rdf.st(this.channel, ns.wf('message'), message, chatDocument))\n }\n sts.push(\n $rdf.st(message, ns.sioc('content'), store.literal(text), chatDocument)\n )\n sts.push(\n $rdf.st(message, ns.dct('created'), dateStamp, chatDocument)\n )\n if (me) {\n sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument))\n }\n try {\n await store.updater.update([], sts)\n } catch (err) {\n const msg = 'Error saving chat message: ' + err\n debug.warn(msg)\n alert(msg)\n throw new Error(msg)\n }\n return message\n }\n\n /* Mark a message as deleted\n * Wee add a new version of the message,m witha deletion flag (deletion date)\n * so that the deletion can be revoked by adding another non-deleted update\n */\n async deleteMessage (message) {\n return this.updateMessage('(message deleted)', message, true)\n }\n} // class ChatChannel\n\nexport function originalVersion (message) {\n let msg = message\n while (msg) {\n message = msg\n msg = store.any(null, ns.dct('isReplacedBy'), message, message.doc())\n }\n return message\n}\n\nexport function mostRecentVersion (message) {\n let msg = message\n while (msg) {\n message = msg\n msg = store.any(message, ns.dct('isReplacedBy'), null, message.doc())\n }\n return message\n}\n\nexport function isDeleted (message) {\n return store.holds(message, ns.schema('dateDeleted'), null, message.doc())\n}\n\nexport function isReplaced (message) {\n return store.holds(message, ns.dct('isReplacedBy'), null, message.doc())\n}\n\nexport function isHidden (message) {\n return this.isDeleted(message) || this.isReplaced(message)\n}\n\n// A Nickname for a person\n\nexport function nick (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n}\n\nexport async function _createIfNotExists (doc, contentType = 'text/turtle', data = '') {\n let response\n try {\n response = await store.fetcher.load(doc)\n } catch (err) {\n if (err.response.status === 404) {\n debug.log(\n 'createIfNotExists: doc does NOT exist, will create... ' + doc\n )\n try {\n response = await store.fetcher.webOperation('PUT', doc.uri, {\n data,\n contentType\n })\n } catch (err) {\n debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + err)\n throw err\n }\n delete store.fetcher.requested[doc.uri] // delete cached 404 error\n // debug.log('createIfNotExists doc created ok ' + doc)\n return response\n } else {\n debug.log(\n 'createIfNotExists doc load error NOT 404: ' + doc + ': ' + err\n )\n throw err\n }\n }\n // debug.log('createIfNotExists: doc exists, all good: ' + doc)\n return response\n}\n// ends\n"],"mappings":"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"}
|