solid-ui 2.4.15-fb2b21e1 → 2.4.16-b6daefff
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/README.md +4 -9
- package/lib/chat/bookmarks.js +14 -13
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +340 -0
- package/lib/chat/chatLogic.js.map +1 -0
- package/lib/chat/dateFolder.js +12 -12
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +285 -665
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js +445 -71
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +165 -103
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +162 -32
- package/lib/chat/thread.js.map +1 -1
- package/lib/versionInfo.js +3 -3
- package/lib/versionInfo.js.map +1 -1
- package/lib/webpack-bundle.js +1403 -987
- package/lib/webpack-bundle.js.map +1 -1
- package/lib/widgets/buttons.d.ts.map +1 -1
- package/lib/widgets/buttons.js +8 -1
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.d.ts +1 -0
- package/lib/widgets/forms/autocomplete/publicData.d.ts.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.js +1 -0
- package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
- package/lib/widgets/forms.js +1 -1
- package/lib/widgets/forms.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -52,14 +52,9 @@ document.body.appendChild(aclControlBox)
|
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
## Documentation
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
See https://solid.github.io/solid-ui/Documentation/api/ for the API documentation.
|
|
59
|
-
|
|
60
|
-
### Components
|
|
61
|
-
|
|
62
|
-
The UI components are presented in a [storybook](http://solid.github.io/solid-ui/examples/storybook/).
|
|
55
|
+
- [talk presentation](https://solid.github.io/solid-ui/Documentation/talks/FormsTalk.html)
|
|
56
|
+
- API https://solid.github.io/solid-ui/Documentation/api/ for the API documentation.
|
|
57
|
+
- The UI components are presented in a [storybook](http://solid.github.io/solid-ui/examples/storybook/).
|
|
63
58
|
|
|
64
59
|
## Overview
|
|
65
60
|
This has been a place to put any functionality from solid views which has been generalized to be usable in other views.
|
|
@@ -109,4 +104,4 @@ npm run storybook
|
|
|
109
104
|
If there is no story for the component yet, add a new one to `./src/stories`.
|
|
110
105
|
|
|
111
106
|
When you want to test the component within a solid-pane, you can use the [development mode of solid-panes](https://github.com/solid/solid-panes#development) or
|
|
112
|
-
[mashlib-dev](https://github.com/solid/mashlib-dev).
|
|
107
|
+
[mashlib-dev](https://github.com/solid/mashlib-dev).
|
package/lib/chat/bookmarks.js
CHANGED
|
@@ -63,7 +63,6 @@ var UI = {
|
|
|
63
63
|
var $rdf = UI.rdf;
|
|
64
64
|
var BOOK = $rdf.Namespace('http://www.w3.org/2002/01/bookmark#');
|
|
65
65
|
var BOOKMARK_ICON = 'noun_45961.svg';
|
|
66
|
-
var kb = _logic.store;
|
|
67
66
|
var label = utils.label;
|
|
68
67
|
var dom = window.document || null;
|
|
69
68
|
/** Create a resource if it really does not exist
|
|
@@ -74,19 +73,20 @@ var dom = window.document || null;
|
|
|
74
73
|
|
|
75
74
|
function createIfNotExists(doc) {
|
|
76
75
|
return new Promise(function (resolve, reject) {
|
|
77
|
-
|
|
78
|
-
debug.log('createIfNotExists doc exists, all good ' + doc); //
|
|
76
|
+
_logic.store.fetcher.load(doc).then(function (response) {
|
|
77
|
+
debug.log('createIfNotExists doc exists, all good ' + doc); // store.fetcher.webOperation('HEAD', doc.uri).then(response => {
|
|
79
78
|
|
|
80
79
|
resolve(response);
|
|
81
80
|
}, function (err) {
|
|
82
81
|
if (err.response.status === 404) {
|
|
83
82
|
debug.log('createIfNotExists doc does NOT exist, will create... ' + doc);
|
|
84
|
-
|
|
83
|
+
|
|
84
|
+
_logic.store.fetcher.webOperation('PUT', doc.uri, {
|
|
85
85
|
data: '',
|
|
86
86
|
contentType: 'text/turtle'
|
|
87
87
|
}).then(function (response) {
|
|
88
88
|
// fetcher.requested[doc.uri] = 'done' // do not need to read ?? but no headers
|
|
89
|
-
delete
|
|
89
|
+
delete _logic.store.fetcher.requested[doc.uri]; // delete cached 404 error
|
|
90
90
|
|
|
91
91
|
debug.log('createIfNotExists doc created ok ' + doc);
|
|
92
92
|
resolve(response);
|
|
@@ -105,13 +105,14 @@ function createIfNotExists(doc) {
|
|
|
105
105
|
|
|
106
106
|
function updatePromise(del, ins) {
|
|
107
107
|
return new Promise(function (resolve, reject) {
|
|
108
|
-
|
|
108
|
+
_logic.store.updater.update(del, ins, function (uri, ok, errorBody) {
|
|
109
109
|
if (!ok) {
|
|
110
110
|
reject(new Error(errorBody));
|
|
111
111
|
} else {
|
|
112
112
|
resolve();
|
|
113
113
|
}
|
|
114
114
|
}); // callback
|
|
115
|
+
|
|
115
116
|
}); // promise
|
|
116
117
|
} // export findBookmarkDocument,
|
|
117
118
|
|
|
@@ -240,8 +241,8 @@ function _addBookmark() {
|
|
|
240
241
|
throw new Error('Must be logged on to add Bookmark');
|
|
241
242
|
|
|
242
243
|
case 4:
|
|
243
|
-
author =
|
|
244
|
-
title = label(author) + ': ' +
|
|
244
|
+
author = _logic.store.any(target, ns.foaf('maker'));
|
|
245
|
+
title = label(author) + ': ' + _logic.store.anyValue(target, ns.sioc('content')).slice(0, 80); // @@ add chat title too?
|
|
245
246
|
|
|
246
247
|
bookmarkDoc = context.bookmarkDocument;
|
|
247
248
|
bookmark = UI.widgets.newThing(bookmarkDoc, title);
|
|
@@ -286,10 +287,10 @@ function _toggleBookmark() {
|
|
|
286
287
|
switch (_context3.prev = _context3.next) {
|
|
287
288
|
case 0:
|
|
288
289
|
_context3.next = 2;
|
|
289
|
-
return
|
|
290
|
+
return _logic.store.fetcher.load(userContext.bookmarkDocument);
|
|
290
291
|
|
|
291
292
|
case 2:
|
|
292
|
-
bookmarks =
|
|
293
|
+
bookmarks = _logic.store.each(null, BOOK('recalls'), target, userContext.bookmarkDocument);
|
|
293
294
|
|
|
294
295
|
if (!bookmarks.length) {
|
|
295
296
|
_context3.next = 24;
|
|
@@ -314,7 +315,7 @@ function _toggleBookmark() {
|
|
|
314
315
|
|
|
315
316
|
_context3.prev = 8;
|
|
316
317
|
_context3.next = 11;
|
|
317
|
-
return updatePromise(
|
|
318
|
+
return updatePromise(_logic.store.connectedStatements(bookmarks[i]), []);
|
|
318
319
|
|
|
319
320
|
case 11:
|
|
320
321
|
bookmarkButton.style.backgroundColor = 'white';
|
|
@@ -376,10 +377,10 @@ function _renderBookmarksButton() {
|
|
|
376
377
|
switch (_context4.prev = _context4.next) {
|
|
377
378
|
case 0:
|
|
378
379
|
_context4.next = 2;
|
|
379
|
-
return
|
|
380
|
+
return _logic.store.fetcher.load(userContext.bookmarkDocument);
|
|
380
381
|
|
|
381
382
|
case 2:
|
|
382
|
-
bookmarked =
|
|
383
|
+
bookmarked = _logic.store.any(null, BOOK('recalls'), bookmarkButton.target, userContext.bookmarkDocument);
|
|
383
384
|
bookmarkButton.style = UI.style.buttonStyle;
|
|
384
385
|
if (bookmarked) bookmarkButton.style.backgroundColor = 'yellow';
|
|
385
386
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/chat/bookmarks.js"],"names":["UI","authn","icons","ns","media","pad","rdf","store","style","utils","widgets","$rdf","BOOK","Namespace","BOOKMARK_ICON","kb","label","dom","window","document","createIfNotExists","doc","Promise","resolve","reject","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","addBookmark","context","target","title","me","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"],"mappings":"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","sourcesContent":["/**\n * Functions related to chat and bookmarks\n * @packageDocumentation\n */\n\n/* global alert confirm */\nimport { authn } from '../authn/index'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { store } from '../logic'\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'\n\nconst UI = { authn, icons, ns, media, pad, rdf, store, 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 kb = store\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 kb.fetcher.load(doc).then(\n response => {\n debug.log('createIfNotExists doc exists, all good ' + doc)\n // kb.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 kb.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 kb.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 kb.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// export findBookmarkDocument,\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 UI.authn.findAppInstances(userContext, theClass, isPublic) // public -- only look for public links\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 UI.authn.registerInTypeIndex(\n userContext,\n newBookmarkFile,\n theClass,\n true\n ) // public\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 = UI.authn.currentUser() // If already logged on\n if (!me) throw new Error('Must be logged on to add Bookmark')\n\n const author = kb.any(target, ns.foaf('maker'))\n title =\n label(author) + ': ' + kb.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 kb.fetcher.load(userContext.bookmarkDocument)\n const bookmarks = kb.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(kb.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 kb.fetcher.load(userContext.bookmarkDocument)\n const bookmarked = kb.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"],"file":"bookmarks.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/chat/bookmarks.js"],"names":["UI","authn","icons","ns","media","pad","rdf","store","style","utils","widgets","$rdf","BOOK","Namespace","BOOKMARK_ICON","label","dom","window","document","createIfNotExists","doc","Promise","resolve","reject","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","addBookmark","context","target","title","me","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"],"mappings":"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","sourcesContent":["/**\n * Functions related to chat and bookmarks\n * @packageDocumentation\n */\n\n/* global alert confirm */\nimport { authn } from '../authn/index'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { store } from '../logic'\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'\n\nconst UI = { authn, icons, ns, media, pad, rdf, store, 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// export findBookmarkDocument,\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 UI.authn.findAppInstances(userContext, theClass, isPublic) // public -- only look for public links\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 UI.authn.registerInTypeIndex(\n userContext,\n newBookmarkFile,\n theClass,\n true\n ) // public\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 = UI.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"],"file":"bookmarks.js"}
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.ChatChannel = void 0;
|
|
11
|
+
exports._createIfNotExists = _createIfNotExists;
|
|
12
|
+
exports.isDeleted = isDeleted;
|
|
13
|
+
exports.isHidden = isHidden;
|
|
14
|
+
exports.isReplaced = isReplaced;
|
|
15
|
+
exports.mostRecentVersion = mostRecentVersion;
|
|
16
|
+
exports.nick = nick;
|
|
17
|
+
exports.originalVersion = originalVersion;
|
|
18
|
+
|
|
19
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
20
|
+
|
|
21
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
22
|
+
|
|
23
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
24
|
+
|
|
25
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
26
|
+
|
|
27
|
+
var debug = _interopRequireWildcard(require("../debug"));
|
|
28
|
+
|
|
29
|
+
var _index = require("../authn/index");
|
|
30
|
+
|
|
31
|
+
var _dateFolder = require("./dateFolder");
|
|
32
|
+
|
|
33
|
+
var _logic = require("../logic");
|
|
34
|
+
|
|
35
|
+
var ns = _interopRequireWildcard(require("../ns"));
|
|
36
|
+
|
|
37
|
+
var $rdf = _interopRequireWildcard(require("rdflib"));
|
|
38
|
+
|
|
39
|
+
var utils = _interopRequireWildcard(require("../utils"));
|
|
40
|
+
|
|
41
|
+
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); }
|
|
42
|
+
|
|
43
|
+
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; }
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Contains the [[ChatChannel]] class and logic for Solid Chat
|
|
47
|
+
* @packageDocumentation
|
|
48
|
+
*/
|
|
49
|
+
// pull in first avoid cross-refs
|
|
50
|
+
|
|
51
|
+
/* The Solid logic for a 'LongChat'
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Common code for a chat (discussion area of messages about something)
|
|
56
|
+
* This version runs over a series of files for different time periods
|
|
57
|
+
*
|
|
58
|
+
* Parameters for the whole chat like its title are stored on
|
|
59
|
+
* index.ttl#this and the chats messages are stored in YYYY/MM/DD/chat.ttl
|
|
60
|
+
*
|
|
61
|
+
*/
|
|
62
|
+
var ChatChannel = /*#__PURE__*/function () {
|
|
63
|
+
function ChatChannel(channel, options) {
|
|
64
|
+
(0, _classCallCheck2["default"])(this, ChatChannel);
|
|
65
|
+
this.channel = channel;
|
|
66
|
+
this.channelRoot = channel.doc();
|
|
67
|
+
this.options = options;
|
|
68
|
+
this.dateFolder = new _dateFolder.DateFolder(this.channelRoot, 'chat.ttl');
|
|
69
|
+
this.div = null; // : HTMLElement
|
|
70
|
+
}
|
|
71
|
+
/* Store a new message in the web,
|
|
72
|
+
*/
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
(0, _createClass2["default"])(ChatChannel, [{
|
|
76
|
+
key: "createMessage",
|
|
77
|
+
value: function () {
|
|
78
|
+
var _createMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(text) {
|
|
79
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
80
|
+
while (1) {
|
|
81
|
+
switch (_context.prev = _context.next) {
|
|
82
|
+
case 0:
|
|
83
|
+
return _context.abrupt("return", this.updateMessage(text));
|
|
84
|
+
|
|
85
|
+
case 1:
|
|
86
|
+
case "end":
|
|
87
|
+
return _context.stop();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}, _callee, this);
|
|
91
|
+
}));
|
|
92
|
+
|
|
93
|
+
function createMessage(_x) {
|
|
94
|
+
return _createMessage.apply(this, arguments);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return createMessage;
|
|
98
|
+
}()
|
|
99
|
+
/* Store a new message in the web,
|
|
100
|
+
as a replacement for an existing one.
|
|
101
|
+
The old one iis left, and the two are linked
|
|
102
|
+
*/
|
|
103
|
+
|
|
104
|
+
}, {
|
|
105
|
+
key: "updateMessage",
|
|
106
|
+
value: function () {
|
|
107
|
+
var _updateMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(text) {
|
|
108
|
+
var oldMsg,
|
|
109
|
+
deleteIt,
|
|
110
|
+
sts,
|
|
111
|
+
now,
|
|
112
|
+
timestamp,
|
|
113
|
+
dateStamp,
|
|
114
|
+
chatDocument,
|
|
115
|
+
message,
|
|
116
|
+
me,
|
|
117
|
+
msg,
|
|
118
|
+
_args2 = arguments;
|
|
119
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
120
|
+
while (1) {
|
|
121
|
+
switch (_context2.prev = _context2.next) {
|
|
122
|
+
case 0:
|
|
123
|
+
oldMsg = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : null;
|
|
124
|
+
deleteIt = _args2.length > 2 ? _args2[2] : undefined;
|
|
125
|
+
sts = [];
|
|
126
|
+
now = new Date();
|
|
127
|
+
timestamp = '' + now.getTime();
|
|
128
|
+
dateStamp = $rdf.term(now);
|
|
129
|
+
chatDocument = oldMsg ? oldMsg.doc() : this.dateFolder.leafDocumentFromDate(now);
|
|
130
|
+
message = _logic.store.sym(chatDocument.uri + '#' + 'Msg' + timestamp); // const content = store.literal(text)
|
|
131
|
+
|
|
132
|
+
me = _index.authn.currentUser(); // If already logged on
|
|
133
|
+
|
|
134
|
+
if (oldMsg) {
|
|
135
|
+
// edit message replaces old one
|
|
136
|
+
sts.push($rdf.st(mostRecentVersion(oldMsg), ns.dct('isReplacedBy'), message, chatDocument));
|
|
137
|
+
|
|
138
|
+
if (deleteIt) {
|
|
139
|
+
sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument));
|
|
140
|
+
}
|
|
141
|
+
} else {
|
|
142
|
+
// link new message to channel
|
|
143
|
+
sts.push($rdf.st(this.channel, ns.wf('message'), message, chatDocument));
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
sts.push($rdf.st(message, ns.sioc('content'), _logic.store.literal(text), chatDocument));
|
|
147
|
+
sts.push($rdf.st(message, ns.dct('created'), dateStamp, chatDocument));
|
|
148
|
+
|
|
149
|
+
if (me) {
|
|
150
|
+
sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument));
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
_context2.prev = 13;
|
|
154
|
+
_context2.next = 16;
|
|
155
|
+
return _logic.store.updater.update([], sts);
|
|
156
|
+
|
|
157
|
+
case 16:
|
|
158
|
+
_context2.next = 24;
|
|
159
|
+
break;
|
|
160
|
+
|
|
161
|
+
case 18:
|
|
162
|
+
_context2.prev = 18;
|
|
163
|
+
_context2.t0 = _context2["catch"](13);
|
|
164
|
+
msg = 'Error saving chat message: ' + _context2.t0;
|
|
165
|
+
debug.warn(msg);
|
|
166
|
+
alert(msg);
|
|
167
|
+
throw new Error(msg);
|
|
168
|
+
|
|
169
|
+
case 24:
|
|
170
|
+
return _context2.abrupt("return", message);
|
|
171
|
+
|
|
172
|
+
case 25:
|
|
173
|
+
case "end":
|
|
174
|
+
return _context2.stop();
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}, _callee2, this, [[13, 18]]);
|
|
178
|
+
}));
|
|
179
|
+
|
|
180
|
+
function updateMessage(_x2) {
|
|
181
|
+
return _updateMessage.apply(this, arguments);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
return updateMessage;
|
|
185
|
+
}()
|
|
186
|
+
/* Mark a message as deleted
|
|
187
|
+
* Wee add a new version of the message,m witha deletion flag (deletion date)
|
|
188
|
+
* so that the deletion can be revoked by adding another non-deleted update
|
|
189
|
+
*/
|
|
190
|
+
|
|
191
|
+
}, {
|
|
192
|
+
key: "deleteMessage",
|
|
193
|
+
value: function () {
|
|
194
|
+
var _deleteMessage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(message) {
|
|
195
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
196
|
+
while (1) {
|
|
197
|
+
switch (_context3.prev = _context3.next) {
|
|
198
|
+
case 0:
|
|
199
|
+
return _context3.abrupt("return", this.updateMessage('(message deleted)', message, true));
|
|
200
|
+
|
|
201
|
+
case 1:
|
|
202
|
+
case "end":
|
|
203
|
+
return _context3.stop();
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}, _callee3, this);
|
|
207
|
+
}));
|
|
208
|
+
|
|
209
|
+
function deleteMessage(_x3) {
|
|
210
|
+
return _deleteMessage.apply(this, arguments);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
return deleteMessage;
|
|
214
|
+
}()
|
|
215
|
+
}]);
|
|
216
|
+
return ChatChannel;
|
|
217
|
+
}(); // class ChatChannel
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
exports.ChatChannel = ChatChannel;
|
|
221
|
+
|
|
222
|
+
function originalVersion(message) {
|
|
223
|
+
var msg = message;
|
|
224
|
+
|
|
225
|
+
while (msg) {
|
|
226
|
+
message = msg;
|
|
227
|
+
msg = _logic.store.any(null, ns.dct('isReplacedBy'), message, message.doc());
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
return message;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
function mostRecentVersion(message) {
|
|
234
|
+
var msg = message;
|
|
235
|
+
|
|
236
|
+
while (msg) {
|
|
237
|
+
message = msg;
|
|
238
|
+
msg = _logic.store.any(message, ns.dct('isReplacedBy'), null, message.doc());
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
return message;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
function isDeleted(message) {
|
|
245
|
+
return _logic.store.holds(message, ns.schema('dateDeleted'), null, message.doc());
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
function isReplaced(message) {
|
|
249
|
+
return _logic.store.holds(message, ns.dct('isReplacedBy'), null, message.doc());
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
function isHidden(message) {
|
|
253
|
+
return this.isDeleted(message) || this.isReplaced(message);
|
|
254
|
+
} // A Nickname for a person
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
function nick(person) {
|
|
258
|
+
var s = _logic.store.any(person, ns.foaf('nick'));
|
|
259
|
+
|
|
260
|
+
if (s) return '' + s.value;
|
|
261
|
+
return '' + utils.label(person);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
function _createIfNotExists(_x4) {
|
|
265
|
+
return _createIfNotExists2.apply(this, arguments);
|
|
266
|
+
} // ends
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
function _createIfNotExists2() {
|
|
270
|
+
_createIfNotExists2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(doc) {
|
|
271
|
+
var contentType,
|
|
272
|
+
data,
|
|
273
|
+
response,
|
|
274
|
+
_args4 = arguments;
|
|
275
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
276
|
+
while (1) {
|
|
277
|
+
switch (_context4.prev = _context4.next) {
|
|
278
|
+
case 0:
|
|
279
|
+
contentType = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : 'text/turtle';
|
|
280
|
+
data = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : '';
|
|
281
|
+
_context4.prev = 2;
|
|
282
|
+
_context4.next = 5;
|
|
283
|
+
return _logic.store.fetcher.load(doc);
|
|
284
|
+
|
|
285
|
+
case 5:
|
|
286
|
+
response = _context4.sent;
|
|
287
|
+
_context4.next = 28;
|
|
288
|
+
break;
|
|
289
|
+
|
|
290
|
+
case 8:
|
|
291
|
+
_context4.prev = 8;
|
|
292
|
+
_context4.t0 = _context4["catch"](2);
|
|
293
|
+
|
|
294
|
+
if (!(_context4.t0.response.status === 404)) {
|
|
295
|
+
_context4.next = 26;
|
|
296
|
+
break;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
debug.log('createIfNotExists: doc does NOT exist, will create... ' + doc);
|
|
300
|
+
_context4.prev = 12;
|
|
301
|
+
_context4.next = 15;
|
|
302
|
+
return _logic.store.fetcher.webOperation('PUT', doc.uri, {
|
|
303
|
+
data: data,
|
|
304
|
+
contentType: contentType
|
|
305
|
+
});
|
|
306
|
+
|
|
307
|
+
case 15:
|
|
308
|
+
response = _context4.sent;
|
|
309
|
+
_context4.next = 22;
|
|
310
|
+
break;
|
|
311
|
+
|
|
312
|
+
case 18:
|
|
313
|
+
_context4.prev = 18;
|
|
314
|
+
_context4.t1 = _context4["catch"](12);
|
|
315
|
+
debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + _context4.t1);
|
|
316
|
+
throw _context4.t1;
|
|
317
|
+
|
|
318
|
+
case 22:
|
|
319
|
+
delete _logic.store.fetcher.requested[doc.uri]; // delete cached 404 error
|
|
320
|
+
// debug.log('createIfNotExists doc created ok ' + doc)
|
|
321
|
+
|
|
322
|
+
return _context4.abrupt("return", response);
|
|
323
|
+
|
|
324
|
+
case 26:
|
|
325
|
+
debug.log('createIfNotExists doc load error NOT 404: ' + doc + ': ' + _context4.t0);
|
|
326
|
+
throw _context4.t0;
|
|
327
|
+
|
|
328
|
+
case 28:
|
|
329
|
+
return _context4.abrupt("return", response);
|
|
330
|
+
|
|
331
|
+
case 29:
|
|
332
|
+
case "end":
|
|
333
|
+
return _context4.stop();
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}, _callee4, null, [[2, 8], [12, 18]]);
|
|
337
|
+
}));
|
|
338
|
+
return _createIfNotExists2.apply(this, arguments);
|
|
339
|
+
}
|
|
340
|
+
//# sourceMappingURL=chatLogic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/chat/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"],"mappings":"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","sourcesContent":["/**\n * Contains the [[ChatChannel]] class and logic for Solid Chat\n * @packageDocumentation\n */\n\nimport * as debug from '../debug'\nimport { authn } from '../authn/index'\nimport { DateFolder } from './dateFolder'\nimport { store } from '../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"],"file":"chatLogic.js"}
|
package/lib/chat/dateFolder.js
CHANGED
|
@@ -31,14 +31,14 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
33
|
* Contains the [[DateFolder]] class
|
|
34
|
-
*
|
|
34
|
+
* This tracks data stored in dated folders and sub-folders
|
|
35
|
+
*
|
|
35
36
|
*/
|
|
36
37
|
// pull in first avoid cross-refs
|
|
37
|
-
|
|
38
|
+
|
|
38
39
|
/**
|
|
39
40
|
* Track back through the YYYY/MM/DD tree to find the previous/next day
|
|
40
41
|
*/
|
|
41
|
-
|
|
42
42
|
var DateFolder = /*#__PURE__*/function () {
|
|
43
43
|
function DateFolder(rootThing, leafFileName, membershipProperty) {
|
|
44
44
|
(0, _classCallCheck2["default"])(this, DateFolder);
|
|
@@ -62,7 +62,7 @@ var DateFolder = /*#__PURE__*/function () {
|
|
|
62
62
|
var path = isoDate.split('T')[0].replace(/-/g, '/'); // Like "2018/05/07"
|
|
63
63
|
|
|
64
64
|
path = this.root.dir().uri + path + '/' + this.leafFileName;
|
|
65
|
-
return
|
|
65
|
+
return _logic.store.sym(path);
|
|
66
66
|
}
|
|
67
67
|
/* Generate a date object from the leaf file name
|
|
68
68
|
*/
|
|
@@ -124,12 +124,12 @@ var DateFolder = /*#__PURE__*/function () {
|
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
_folder = siblings.pop();
|
|
127
|
-
leafDocument =
|
|
127
|
+
leafDocument = _logic.store.sym(_folder.uri + thisDateFolder.leafFileName);
|
|
128
128
|
_context.next = 10;
|
|
129
|
-
return
|
|
129
|
+
return _logic.store.fetcher.load(leafDocument);
|
|
130
130
|
|
|
131
131
|
case 10:
|
|
132
|
-
if (!(
|
|
132
|
+
if (!(_logic.store.statementsMatching(null, ns.dct('created'), null, leafDocument).length > 0)) {
|
|
133
133
|
_context.next = 12;
|
|
134
134
|
break;
|
|
135
135
|
}
|
|
@@ -173,10 +173,10 @@ var DateFolder = /*#__PURE__*/function () {
|
|
|
173
173
|
// debug.log(' previousPeriod level' + level + ' file ' + file)
|
|
174
174
|
parent = file.dir();
|
|
175
175
|
_context2.next = 7;
|
|
176
|
-
return
|
|
176
|
+
return _logic.store.fetcher.load(parent);
|
|
177
177
|
|
|
178
178
|
case 7:
|
|
179
|
-
siblings =
|
|
179
|
+
siblings = _logic.store.each(parent, ns.ldp('contains'));
|
|
180
180
|
siblings = siblings.filter(younger);
|
|
181
181
|
_context2.next = 11;
|
|
182
182
|
return lastNonEmpty(siblings);
|
|
@@ -215,10 +215,10 @@ var DateFolder = /*#__PURE__*/function () {
|
|
|
215
215
|
|
|
216
216
|
case 21:
|
|
217
217
|
_context2.next = 23;
|
|
218
|
-
return
|
|
218
|
+
return _logic.store.fetcher.load(uncle);
|
|
219
219
|
|
|
220
220
|
case 23:
|
|
221
|
-
cousins =
|
|
221
|
+
cousins = _logic.store.each(uncle, ns.ldp('contains'));
|
|
222
222
|
_context2.next = 26;
|
|
223
223
|
return lastNonEmpty(cousins);
|
|
224
224
|
|
|
@@ -254,7 +254,7 @@ var DateFolder = /*#__PURE__*/function () {
|
|
|
254
254
|
break;
|
|
255
255
|
}
|
|
256
256
|
|
|
257
|
-
doc =
|
|
257
|
+
doc = _logic.store.sym(found.uri + this.leafFileName);
|
|
258
258
|
return _context3.abrupt("return", this.dateFromLeafDocument(doc));
|
|
259
259
|
|
|
260
260
|
case 10:
|