solid-ui 2.4.16 → 2.4.18-18f68eaa
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 +7 -11
- package/lib/acl/access-controller.d.ts.map +1 -1
- package/lib/acl/access-controller.js +5 -1
- package/lib/acl/access-controller.js.map +1 -1
- package/lib/acl/access-groups.d.ts +2 -2
- package/lib/acl/access-groups.d.ts.map +1 -1
- package/lib/acl/access-groups.js +1 -5
- package/lib/acl/access-groups.js.map +1 -1
- package/lib/acl/acl.d.ts.map +1 -1
- package/lib/acl/acl.js +2 -4
- package/lib/acl/acl.js.map +1 -1
- package/lib/acl/add-agent-buttons.d.ts.map +1 -1
- package/lib/acl/add-agent-buttons.js +5 -5
- package/lib/acl/add-agent-buttons.js.map +1 -1
- package/lib/chat/bookmarks.js +20 -22
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +13 -15
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/dateFolder.js +10 -10
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +14 -16
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js +19 -23
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +16 -21
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +24 -24
- package/lib/chat/thread.js.map +1 -1
- package/lib/create/create.d.ts.map +1 -1
- package/lib/create/create.js +9 -9
- package/lib/create/create.js.map +1 -1
- package/lib/folders.js +2 -6
- package/lib/folders.js.map +1 -1
- package/lib/footer/index.js +4 -4
- package/lib/footer/index.js.map +1 -1
- package/lib/header/index.d.ts.map +1 -1
- package/lib/header/index.js +11 -8
- package/lib/header/index.js.map +1 -1
- package/lib/index.d.ts +4 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +30 -28
- package/lib/index.js.map +1 -1
- package/lib/login/login.d.ts +130 -0
- package/lib/login/login.d.ts.map +1 -0
- package/lib/login/login.js +1415 -0
- package/lib/login/login.js.map +1 -0
- package/lib/matrix/matrix.js +2 -2
- package/lib/matrix/matrix.js.map +1 -1
- package/lib/messageArea.js +9 -10
- package/lib/messageArea.js.map +1 -1
- package/lib/pad.js +2 -2
- package/lib/pad.js.map +1 -1
- package/lib/participation.d.ts.map +1 -1
- package/lib/participation.js +61 -33
- package/lib/participation.js.map +1 -1
- package/lib/preferences.js +8 -8
- package/lib/preferences.js.map +1 -1
- package/lib/{authn → signup}/config-default.js +0 -0
- package/lib/signup/config-default.js.map +1 -0
- package/lib/{authn → signup}/signup.js +0 -0
- package/lib/signup/signup.js.map +1 -0
- package/lib/table.js +2 -3
- package/lib/table.js.map +1 -1
- package/lib/tabs.js +3 -3
- package/lib/tabs.js.map +1 -1
- package/lib/utils/index.js +6 -6
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/label.js +4 -5
- package/lib/utils/label.js.map +1 -1
- package/lib/versionInfo.js +10 -10
- package/lib/versionInfo.js.map +1 -1
- package/lib/webpack-bundle.js +8300 -24470
- package/lib/webpack-bundle.js.map +1 -1
- package/lib/widgets/buttons.js +16 -16
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteBar.js +2 -2
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteField.js +2 -2
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +2 -2
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
- package/lib/widgets/forms/autocomplete/language.d.ts.map +1 -1
- package/lib/widgets/forms/autocomplete/language.js +7 -10
- package/lib/widgets/forms/autocomplete/language.js.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.d.ts +2 -1
- package/lib/widgets/forms/autocomplete/publicData.d.ts.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.js +16 -16
- package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
- package/lib/widgets/forms/basic.d.ts +1 -1
- package/lib/widgets/forms/basic.d.ts.map +1 -1
- package/lib/widgets/forms/basic.js +2 -2
- package/lib/widgets/forms/basic.js.map +1 -1
- package/lib/widgets/forms/comment.d.ts +1 -1
- package/lib/widgets/forms/comment.js +3 -3
- package/lib/widgets/forms/comment.js.map +1 -1
- package/lib/widgets/forms/fieldFunction.js +2 -2
- package/lib/widgets/forms/fieldFunction.js.map +1 -1
- package/lib/widgets/forms/formStyle.js +3 -3
- package/lib/widgets/forms/formStyle.js.map +1 -1
- package/lib/widgets/forms.js +11 -11
- package/lib/widgets/forms.js.map +1 -1
- package/lib/widgets/peoplePicker.js +2 -2
- package/lib/widgets/peoplePicker.js.map +1 -1
- package/package.json +12 -4
- package/lib/authn/authSession.d.ts +0 -4
- package/lib/authn/authSession.d.ts.map +0 -1
- package/lib/authn/authSession.js +0 -25
- package/lib/authn/authSession.js.map +0 -1
- package/lib/authn/authn.d.ts +0 -193
- package/lib/authn/authn.d.ts.map +0 -1
- package/lib/authn/authn.js +0 -2238
- package/lib/authn/authn.js.map +0 -1
- package/lib/authn/config-default.js.map +0 -1
- package/lib/authn/index.d.ts +0 -35
- package/lib/authn/index.d.ts.map +0 -1
- package/lib/authn/index.js +0 -44
- package/lib/authn/index.js.map +0 -1
- package/lib/authn/signup.js.map +0 -1
- package/lib/authn/types.d.ts +0 -25
- package/lib/authn/types.d.ts.map +0 -1
- package/lib/authn/types.js +0 -6
- package/lib/authn/types.js.map +0 -1
- package/lib/logic.d.ts +0 -8
- package/lib/logic.d.ts.map +0 -1
- package/lib/logic.js +0 -79
- package/lib/logic.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-agent-buttons.d.ts","sourceRoot":"","sources":["../../src/acl/add-agent-buttons.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"add-agent-buttons.d.ts","sourceRoot":"","sources":["../../src/acl/add-agent-buttons.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C;;;GAGG;AACH,qBAAa,eAAe;IAKb,OAAO,CAAC,SAAS;IAJ9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,UAAU,CAAiB;gBAEd,SAAS,EAAE,YAAY;IAKrC,MAAM,IAAK,WAAW;IAO7B,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,8BAA8B;IAUtC,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,cAAc;YAcR,eAAe;IAgC7B,OAAO,CAAC,aAAa;YAKP,SAAS;YAaT,QAAQ;YAcR,QAAQ;YAKR,MAAM;YAaN,iBAAiB;IAc/B,OAAO,CAAC,SAAS;CAGlB"}
|
|
@@ -19,17 +19,17 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
|
|
|
19
19
|
|
|
20
20
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
21
21
|
|
|
22
|
+
var debug = _interopRequireWildcard(require("../debug"));
|
|
23
|
+
|
|
22
24
|
var _iconBase = require("../iconBase");
|
|
23
25
|
|
|
24
|
-
var
|
|
26
|
+
var _login = require("../login/login");
|
|
25
27
|
|
|
26
28
|
var ns = _interopRequireWildcard(require("../ns"));
|
|
27
29
|
|
|
28
|
-
var _authn = require("../authn/authn");
|
|
29
|
-
|
|
30
30
|
var utils = _interopRequireWildcard(require("../utils"));
|
|
31
31
|
|
|
32
|
-
var
|
|
32
|
+
var widgets = _interopRequireWildcard(require("../widgets"));
|
|
33
33
|
|
|
34
34
|
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); }
|
|
35
35
|
|
|
@@ -243,7 +243,7 @@ var AddAgentButtons = /*#__PURE__*/function () {
|
|
|
243
243
|
switch (_context.prev = _context.next) {
|
|
244
244
|
case 0:
|
|
245
245
|
_context.next = 2;
|
|
246
|
-
return (0,
|
|
246
|
+
return (0, _login.ensureLoadedProfile)(eventContext);
|
|
247
247
|
|
|
248
248
|
case 2:
|
|
249
249
|
trustedApps = this.groupList.store.each(eventContext.me, ns.acl('trustedApp')); // @@ TODO fix as
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/acl/add-agent-buttons.ts"],"names":["AddAgentButtons","groupList","rootElement","controller","dom","createElement","barElement","innerHTML","appendChild","renderAddButton","widgets","button","icons","iconBase","toggleBar","renderBar","isExpanded","renderPersonButton","renderGroupButton","renderPublicButton","renderAuthenticatedAgentButton","renderBotButton","renderAppsButton","Array","from","children","filter","element","forEach","removeChild","iconForClass","event","renderSimplifiedBar","target","renderNameForm","ns","vcard","then","name","addPerson","renderCleanup","error","renderStatus","addGroup","type","noun","askName","store","addAgent","foaf","uri","renderTemporaryStatus","acl","schema","addBot","eventContext","div","existingApps","renderAppsTable","renderAppsView","newApp","getOriginFromName","Promise","race","origin","addNewURI","trustedApplications","context","session","paneRegistry","byName","trustedApplicationsElement","render","classList","add","classes","trustedAppController","cancelButton","trustedAppCancelButton","insertBefore","firstChild","trustedApps","each","me","trustedOrigins","flatMap","app","textContent","length","resolve","reject","appsTable","trustedAppAddApplicationsTable","any","Error","value","thingTR","personTR","innerTable","innerRow","innerLeftColumn","innerMiddleColumn","utils","label","subject","innerRightColumn","continueButton","domainNameRegexp","match","debug","log","agentUri"],"mappings":"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","sourcesContent":["/**\n * Contains the [[AddAgentButtons]] class\n * @packageDocumentation\n */\n\nimport { AccessGroups } from './access-groups'\nimport { icons } from '../iconBase'\nimport * as widgets from '../widgets'\nimport * as ns from '../ns'\nimport { logInLoadProfile } from '../authn/authn'\nimport * as utils from '../utils'\nimport { NamedNode, Store } from 'rdflib'\nimport { AuthenticationContext } from '../authn/types'\nimport * as debug from '../debug'\n\n/**\n * Renders the Sharing pane's \"+\" button and the menus behind it,\n * see https://github.com/solid/userguide/blob/main/views/sharing/userguide.md#add\n */\nexport class AddAgentButtons {\n private readonly rootElement: HTMLElement\n private readonly barElement: HTMLElement\n private isExpanded: boolean = false\n\n constructor (private groupList: AccessGroups) {\n this.rootElement = groupList.controller.dom.createElement('div')\n this.barElement = groupList.controller.dom.createElement('div')\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n this.rootElement.appendChild(this.renderAddButton())\n this.rootElement.appendChild(this.barElement)\n return this.rootElement\n }\n\n private renderAddButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_34653_green.svg`,\n 'Add ...',\n () => {\n this.toggleBar()\n this.renderBar()\n }\n )\n }\n\n private renderBar (): void {\n this.barElement.innerHTML = ''\n if (!this.isExpanded) {\n return\n }\n this.barElement.appendChild(this.renderPersonButton())\n this.barElement.appendChild(this.renderGroupButton())\n this.barElement.appendChild(this.renderPublicButton())\n this.barElement.appendChild(this.renderAuthenticatedAgentButton())\n this.barElement.appendChild(this.renderBotButton())\n this.barElement.appendChild(this.renderAppsButton())\n }\n\n private renderSimplifiedBar (button: EventTarget | null) {\n Array.from(this.barElement.children)\n .filter(element => element !== button)\n .forEach(element => this.barElement.removeChild(element))\n }\n\n private renderPersonButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['vcard:Individual'],\n 'Add Person',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.vcard('Individual'), 'person')\n .then(name => this.addPerson(name))\n .then(() => this.renderCleanup())\n .catch(error => this.groupList.controller.renderStatus(error))\n }\n )\n }\n\n private renderGroupButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['vcard:Group'],\n 'Add Group',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.vcard('Group'), 'group')\n .then(name => this.addGroup(name))\n .then(() => this.renderCleanup())\n .catch(error => this.groupList.controller.renderStatus(error))\n }\n )\n }\n\n private renderNameForm (type: NamedNode, noun: string): Promise<string | undefined> {\n return widgets.askName(\n this.groupList.controller.dom,\n this.groupList.store,\n this.barElement,\n ns.vcard('URI'),\n type,\n noun\n )\n }\n\n private renderPublicButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['foaf:Agent'],\n 'Add Everyone',\n () => this.addAgent(ns.foaf('Agent').uri)\n .then(() => this.groupList.controller.renderTemporaryStatus('Adding the general public to those who can read. Drag the globe to a different level to give them more access.'))\n .then(() => this.renderCleanup()))\n }\n\n private renderAuthenticatedAgentButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_99101.svg`,\n 'Anyone logged In',\n () => this.addAgent(ns.acl('AuthenticatedAgent').uri)\n .then(() => this.groupList.controller.renderTemporaryStatus('Adding anyone logged in to those who can read. Drag the ID icon to a different level to give them more access.'))\n .then(() => this.renderCleanup()))\n }\n\n private renderBotButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + 'noun_Robot_849764.svg',\n 'A Software Agent (bot)',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.schema('Application'), 'bot')\n .then(name => this.addBot(name))\n .then(() => this.renderCleanup())\n })\n }\n\n private renderAppsButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_15177.svg`,\n 'A Web App (origin)',\n event => {\n this.renderSimplifiedBar(event.target)\n const eventContext = {\n div: this.barElement,\n dom: this.groupList.controller.dom\n }\n const existingApps = this.renderAppsTable(eventContext)\n .catch(error => this.groupList.controller.renderStatus(error))\n this.renderAppsView()\n const newApp = this.renderNameForm(ns.schema('WebApplication'), 'webapp domain')\n .then(name => this.getOriginFromName(name))\n Promise.race([\n existingApps,\n newApp\n ])\n .then(origin => {\n if (origin) {\n this.groupList.addNewURI(origin)\n }\n })\n .then(() => this.renderCleanup())\n }\n )\n }\n\n private renderAppsView (): void {\n const trustedApplications = this.groupList.controller.context.session.paneRegistry.byName('trustedApplications')\n if (trustedApplications) {\n const trustedApplicationsElement = trustedApplications.render(null, this.groupList.controller.context)\n trustedApplicationsElement.classList.add(this.groupList.controller.classes.trustedAppController)\n\n const cancelButton = widgets.cancelButton(this.groupList.controller.dom, () => this.renderCleanup())\n cancelButton.classList.add(this.groupList.controller.classes.trustedAppCancelButton)\n trustedApplicationsElement.insertBefore(cancelButton, trustedApplicationsElement.firstChild)\n\n this.barElement.appendChild(trustedApplicationsElement)\n }\n }\n\n private async renderAppsTable (eventContext: AuthenticationContext): Promise<string> {\n await logInLoadProfile(eventContext)\n const trustedApps = (this.groupList.store as Store).each(eventContext.me, ns.acl('trustedApp')) as Array<NamedNode> // @@ TODO fix as\n const trustedOrigins = trustedApps.flatMap(app => (this.groupList.store as Store).each(app, ns.acl('origin'))) // @@ TODO fix as\n\n this.barElement.appendChild(this.groupList.controller.dom.createElement('p')).textContent = `You have ${trustedOrigins.length} selected web apps.`\n return new Promise((resolve, reject) => {\n const appsTable = this.barElement.appendChild(this.groupList.controller.dom.createElement('table'))\n appsTable.classList.add(this.groupList.controller.classes.trustedAppAddApplicationsTable)\n trustedApps.forEach(app => {\n const origin = (this.groupList.store as Store).any(app, ns.acl('origin')) // @@ TODO fix as\n if (!origin) {\n reject(new Error(`Unable to pick app: ${app.value}`))\n }\n const thingTR = widgets.personTR(this.groupList.controller.dom, ns.acl('origin'), origin, {})\n const innerTable = this.groupList.controller.dom.createElement('table')\n const innerRow = innerTable.appendChild(this.groupList.controller.dom.createElement('tr'))\n\n const innerLeftColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerLeftColumn.appendChild(thingTR)\n\n const innerMiddleColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerMiddleColumn.textContent = `Give access to ${this.groupList.controller.noun} ${utils.label(this.groupList.controller.subject)}?`\n\n const innerRightColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerRightColumn.appendChild(widgets.continueButton(this.groupList.controller.dom, () => resolve(origin!.value)))\n\n appsTable.appendChild(innerTable)\n })\n })\n }\n\n private renderCleanup (): void {\n this.renderBar()\n this.groupList.render()\n }\n\n private async addPerson (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a person and has an owner who agrees they own it\n debug.log(`Adding to ACL person: ${name}`)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async addGroup (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a group and has an owner who agrees they own it\n debug.log('Adding to ACL group: ' + name)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async addAgent (agentUri: string): Promise<void> {\n await this.groupList.addNewURI(agentUri)\n this.toggleBar()\n }\n\n private async addBot (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a bot and has an owner who agrees they own it\n debug.log('Adding to ACL bot: ' + name)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async getOriginFromName (name?: string): Promise<string | void> {\n if (!name) return Promise.resolve() // user cancelled\n const domainNameRegexp = /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i\n // https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a domain name'))\n }\n const origin = 'https://' + name\n debug.log('Adding to ACL origin: ' + origin)\n this.toggleBar()\n return origin\n }\n\n private toggleBar (): void {\n this.isExpanded = !this.isExpanded\n }\n}\n"],"file":"add-agent-buttons.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/acl/add-agent-buttons.ts"],"names":["AddAgentButtons","groupList","rootElement","controller","dom","createElement","barElement","innerHTML","appendChild","renderAddButton","widgets","button","icons","iconBase","toggleBar","renderBar","isExpanded","renderPersonButton","renderGroupButton","renderPublicButton","renderAuthenticatedAgentButton","renderBotButton","renderAppsButton","Array","from","children","filter","element","forEach","removeChild","iconForClass","event","renderSimplifiedBar","target","renderNameForm","ns","vcard","then","name","addPerson","renderCleanup","error","renderStatus","addGroup","type","noun","askName","store","addAgent","foaf","uri","renderTemporaryStatus","acl","schema","addBot","eventContext","div","existingApps","renderAppsTable","renderAppsView","newApp","getOriginFromName","Promise","race","origin","addNewURI","trustedApplications","context","session","paneRegistry","byName","trustedApplicationsElement","render","classList","add","classes","trustedAppController","cancelButton","trustedAppCancelButton","insertBefore","firstChild","trustedApps","each","me","trustedOrigins","flatMap","app","textContent","length","resolve","reject","appsTable","trustedAppAddApplicationsTable","any","Error","value","thingTR","personTR","innerTable","innerRow","innerLeftColumn","innerMiddleColumn","utils","label","subject","innerRightColumn","continueButton","domainNameRegexp","match","debug","log","agentUri"],"mappings":"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","sourcesContent":["/**\n * Contains the [[AddAgentButtons]] class\n * @packageDocumentation\n */\n\nimport { NamedNode, Store } from 'rdflib'\nimport { AuthenticationContext } from 'solid-logic'\nimport * as debug from '../debug'\nimport { icons } from '../iconBase'\nimport { ensureLoadedProfile } from '../login/login'\nimport * as ns from '../ns'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { AccessGroups } from './access-groups'\n\n/**\n * Renders the Sharing pane's \"+\" button and the menus behind it,\n * see https://github.com/solid/userguide/blob/main/views/sharing/userguide.md#add\n */\nexport class AddAgentButtons {\n private readonly rootElement: HTMLElement\n private readonly barElement: HTMLElement\n private isExpanded: boolean = false\n\n constructor (private groupList: AccessGroups) {\n this.rootElement = groupList.controller.dom.createElement('div')\n this.barElement = groupList.controller.dom.createElement('div')\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n this.rootElement.appendChild(this.renderAddButton())\n this.rootElement.appendChild(this.barElement)\n return this.rootElement\n }\n\n private renderAddButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_34653_green.svg`,\n 'Add ...',\n () => {\n this.toggleBar()\n this.renderBar()\n }\n )\n }\n\n private renderBar (): void {\n this.barElement.innerHTML = ''\n if (!this.isExpanded) {\n return\n }\n this.barElement.appendChild(this.renderPersonButton())\n this.barElement.appendChild(this.renderGroupButton())\n this.barElement.appendChild(this.renderPublicButton())\n this.barElement.appendChild(this.renderAuthenticatedAgentButton())\n this.barElement.appendChild(this.renderBotButton())\n this.barElement.appendChild(this.renderAppsButton())\n }\n\n private renderSimplifiedBar (button: EventTarget | null) {\n Array.from(this.barElement.children)\n .filter(element => element !== button)\n .forEach(element => this.barElement.removeChild(element))\n }\n\n private renderPersonButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['vcard:Individual'],\n 'Add Person',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.vcard('Individual'), 'person')\n .then(name => this.addPerson(name))\n .then(() => this.renderCleanup())\n .catch(error => this.groupList.controller.renderStatus(error))\n }\n )\n }\n\n private renderGroupButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['vcard:Group'],\n 'Add Group',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.vcard('Group'), 'group')\n .then(name => this.addGroup(name))\n .then(() => this.renderCleanup())\n .catch(error => this.groupList.controller.renderStatus(error))\n }\n )\n }\n\n private renderNameForm (type: NamedNode, noun: string): Promise<string | undefined> {\n return widgets.askName(\n this.groupList.controller.dom,\n this.groupList.store,\n this.barElement,\n ns.vcard('URI'),\n type,\n noun\n )\n }\n\n private renderPublicButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + widgets.iconForClass['foaf:Agent'],\n 'Add Everyone',\n () => this.addAgent(ns.foaf('Agent').uri)\n .then(() => this.groupList.controller.renderTemporaryStatus('Adding the general public to those who can read. Drag the globe to a different level to give them more access.'))\n .then(() => this.renderCleanup()))\n }\n\n private renderAuthenticatedAgentButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_99101.svg`,\n 'Anyone logged In',\n () => this.addAgent(ns.acl('AuthenticatedAgent').uri)\n .then(() => this.groupList.controller.renderTemporaryStatus('Adding anyone logged in to those who can read. Drag the ID icon to a different level to give them more access.'))\n .then(() => this.renderCleanup()))\n }\n\n private renderBotButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n icons.iconBase + 'noun_Robot_849764.svg',\n 'A Software Agent (bot)',\n event => {\n this.renderSimplifiedBar(event.target)\n this.renderNameForm(ns.schema('Application'), 'bot')\n .then(name => this.addBot(name))\n .then(() => this.renderCleanup())\n })\n }\n\n private renderAppsButton (): HTMLElement {\n return widgets.button(\n this.groupList.controller.dom,\n `${icons.iconBase}noun_15177.svg`,\n 'A Web App (origin)',\n event => {\n this.renderSimplifiedBar(event.target)\n const eventContext = {\n div: this.barElement,\n dom: this.groupList.controller.dom\n }\n const existingApps = this.renderAppsTable(eventContext)\n .catch(error => this.groupList.controller.renderStatus(error))\n this.renderAppsView()\n const newApp = this.renderNameForm(ns.schema('WebApplication'), 'webapp domain')\n .then(name => this.getOriginFromName(name))\n Promise.race([\n existingApps,\n newApp\n ])\n .then(origin => {\n if (origin) {\n this.groupList.addNewURI(origin)\n }\n })\n .then(() => this.renderCleanup())\n }\n )\n }\n\n private renderAppsView (): void {\n const trustedApplications = this.groupList.controller.context.session.paneRegistry.byName('trustedApplications')\n if (trustedApplications) {\n const trustedApplicationsElement = trustedApplications.render(null, this.groupList.controller.context)\n trustedApplicationsElement.classList.add(this.groupList.controller.classes.trustedAppController)\n\n const cancelButton = widgets.cancelButton(this.groupList.controller.dom, () => this.renderCleanup())\n cancelButton.classList.add(this.groupList.controller.classes.trustedAppCancelButton)\n trustedApplicationsElement.insertBefore(cancelButton, trustedApplicationsElement.firstChild)\n\n this.barElement.appendChild(trustedApplicationsElement)\n }\n }\n\n private async renderAppsTable (eventContext: AuthenticationContext): Promise<string> {\n await ensureLoadedProfile(eventContext)\n const trustedApps = (this.groupList.store as Store).each(eventContext.me, ns.acl('trustedApp')) as Array<NamedNode> // @@ TODO fix as\n const trustedOrigins = trustedApps.flatMap(app => (this.groupList.store as Store).each(app, ns.acl('origin'))) // @@ TODO fix as\n\n this.barElement.appendChild(this.groupList.controller.dom.createElement('p')).textContent = `You have ${trustedOrigins.length} selected web apps.`\n return new Promise((resolve, reject) => {\n const appsTable = this.barElement.appendChild(this.groupList.controller.dom.createElement('table'))\n appsTable.classList.add(this.groupList.controller.classes.trustedAppAddApplicationsTable)\n trustedApps.forEach(app => {\n const origin = (this.groupList.store as Store).any(app, ns.acl('origin')) // @@ TODO fix as\n if (!origin) {\n reject(new Error(`Unable to pick app: ${app.value}`))\n }\n const thingTR = widgets.personTR(this.groupList.controller.dom, ns.acl('origin'), origin, {})\n const innerTable = this.groupList.controller.dom.createElement('table')\n const innerRow = innerTable.appendChild(this.groupList.controller.dom.createElement('tr'))\n\n const innerLeftColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerLeftColumn.appendChild(thingTR)\n\n const innerMiddleColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerMiddleColumn.textContent = `Give access to ${this.groupList.controller.noun} ${utils.label(this.groupList.controller.subject)}?`\n\n const innerRightColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'))\n innerRightColumn.appendChild(widgets.continueButton(this.groupList.controller.dom, () => resolve(origin!.value)))\n\n appsTable.appendChild(innerTable)\n })\n })\n }\n\n private renderCleanup (): void {\n this.renderBar()\n this.groupList.render()\n }\n\n private async addPerson (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a person and has an owner who agrees they own it\n debug.log(`Adding to ACL person: ${name}`)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async addGroup (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a group and has an owner who agrees they own it\n debug.log('Adding to ACL group: ' + name)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async addAgent (agentUri: string): Promise<void> {\n await this.groupList.addNewURI(agentUri)\n this.toggleBar()\n }\n\n private async addBot (name?: string): Promise<void> {\n if (!name) return this.toggleBar() // user cancelled\n const domainNameRegexp = /^https?:/i\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a http URI'))\n }\n // @@ check it actually is a bot and has an owner who agrees they own it\n debug.log('Adding to ACL bot: ' + name)\n await this.groupList.addNewURI(name)\n this.toggleBar()\n }\n\n private async getOriginFromName (name?: string): Promise<string | void> {\n if (!name) return Promise.resolve() // user cancelled\n const domainNameRegexp = /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i\n // https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html\n if (!name.match(domainNameRegexp)) {\n // @@ enforce in user input live like a form element\n return Promise.reject(new Error('Not a domain name'))\n }\n const origin = 'https://' + name\n debug.log('Adding to ACL origin: ' + origin)\n this.toggleBar()\n return origin\n }\n\n private toggleBar (): void {\n this.isExpanded = !this.isExpanded\n }\n}\n"],"file":"add-agent-buttons.js"}
|
package/lib/chat/bookmarks.js
CHANGED
|
@@ -15,15 +15,11 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
|
|
|
15
15
|
|
|
16
16
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
17
|
|
|
18
|
-
var _index = require("../authn/index");
|
|
19
|
-
|
|
20
18
|
var debug = _interopRequireWildcard(require("../debug"));
|
|
21
19
|
|
|
22
20
|
var _iconBase = require("../iconBase");
|
|
23
21
|
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
var _index2 = require("../media/index");
|
|
22
|
+
var _index = require("../media/index");
|
|
27
23
|
|
|
28
24
|
var ns = _interopRequireWildcard(require("../ns"));
|
|
29
25
|
|
|
@@ -37,6 +33,10 @@ var utils = _interopRequireWildcard(require("../utils"));
|
|
|
37
33
|
|
|
38
34
|
var widgets = _interopRequireWildcard(require("../widgets"));
|
|
39
35
|
|
|
36
|
+
var _solidLogic = require("solid-logic");
|
|
37
|
+
|
|
38
|
+
var _login = require("../login/login");
|
|
39
|
+
|
|
40
40
|
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); }
|
|
41
41
|
|
|
42
42
|
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; }
|
|
@@ -49,13 +49,11 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
49
49
|
/* global alert confirm */
|
|
50
50
|
// pull in first avoid cross-refs
|
|
51
51
|
var UI = {
|
|
52
|
-
authn: _index.authn,
|
|
53
52
|
icons: _iconBase.icons,
|
|
54
53
|
ns: ns,
|
|
55
|
-
media:
|
|
54
|
+
media: _index.media,
|
|
56
55
|
pad: pad,
|
|
57
56
|
rdf: rdf,
|
|
58
|
-
store: _logic.store,
|
|
59
57
|
style: style,
|
|
60
58
|
utils: utils,
|
|
61
59
|
widgets: widgets
|
|
@@ -73,7 +71,7 @@ var dom = window.document || null;
|
|
|
73
71
|
|
|
74
72
|
function createIfNotExists(doc) {
|
|
75
73
|
return new Promise(function (resolve, reject) {
|
|
76
|
-
|
|
74
|
+
_solidLogic.store.fetcher.load(doc).then(function (response) {
|
|
77
75
|
debug.log('createIfNotExists doc exists, all good ' + doc); // store.fetcher.webOperation('HEAD', doc.uri).then(response => {
|
|
78
76
|
|
|
79
77
|
resolve(response);
|
|
@@ -81,12 +79,12 @@ function createIfNotExists(doc) {
|
|
|
81
79
|
if (err.response.status === 404) {
|
|
82
80
|
debug.log('createIfNotExists doc does NOT exist, will create... ' + doc);
|
|
83
81
|
|
|
84
|
-
|
|
82
|
+
_solidLogic.store.fetcher.webOperation('PUT', doc.uri, {
|
|
85
83
|
data: '',
|
|
86
84
|
contentType: 'text/turtle'
|
|
87
85
|
}).then(function (response) {
|
|
88
86
|
// fetcher.requested[doc.uri] = 'done' // do not need to read ?? but no headers
|
|
89
|
-
delete
|
|
87
|
+
delete _solidLogic.store.fetcher.requested[doc.uri]; // delete cached 404 error
|
|
90
88
|
|
|
91
89
|
debug.log('createIfNotExists doc created ok ' + doc);
|
|
92
90
|
resolve(response);
|
|
@@ -105,7 +103,7 @@ function createIfNotExists(doc) {
|
|
|
105
103
|
|
|
106
104
|
function updatePromise(del, ins) {
|
|
107
105
|
return new Promise(function (resolve, reject) {
|
|
108
|
-
|
|
106
|
+
_solidLogic.store.updater.update(del, ins, function (uri, ok, errorBody) {
|
|
109
107
|
if (!ok) {
|
|
110
108
|
reject(new Error(errorBody));
|
|
111
109
|
} else {
|
|
@@ -141,7 +139,7 @@ function _findBookmarkDocument() {
|
|
|
141
139
|
fileTail = 'bookmarks.ttl';
|
|
142
140
|
isPublic = true;
|
|
143
141
|
_context.next = 5;
|
|
144
|
-
return
|
|
142
|
+
return (0, _login.findAppInstances)(userContext, theClass, isPublic);
|
|
145
143
|
|
|
146
144
|
case 5:
|
|
147
145
|
if (!(userContext.instances && userContext.instances.length > 0)) {
|
|
@@ -183,7 +181,7 @@ function _findBookmarkDocument() {
|
|
|
183
181
|
|
|
184
182
|
case 22:
|
|
185
183
|
_context.next = 24;
|
|
186
|
-
return
|
|
184
|
+
return (0, _solidLogic.registerInTypeIndex)(userContext, newBookmarkFile, theClass, true);
|
|
187
185
|
|
|
188
186
|
case 24:
|
|
189
187
|
// public
|
|
@@ -231,7 +229,7 @@ function _addBookmark() {
|
|
|
231
229
|
n0:maker c:me.
|
|
232
230
|
*/
|
|
233
231
|
title = '';
|
|
234
|
-
me =
|
|
232
|
+
me = _solidLogic.authn.currentUser(); // If already logged on
|
|
235
233
|
|
|
236
234
|
if (me) {
|
|
237
235
|
_context2.next = 4;
|
|
@@ -241,8 +239,8 @@ function _addBookmark() {
|
|
|
241
239
|
throw new Error('Must be logged on to add Bookmark');
|
|
242
240
|
|
|
243
241
|
case 4:
|
|
244
|
-
author =
|
|
245
|
-
title = label(author) + ': ' +
|
|
242
|
+
author = _solidLogic.store.any(target, ns.foaf('maker'));
|
|
243
|
+
title = label(author) + ': ' + _solidLogic.store.anyValue(target, ns.sioc('content')).slice(0, 80); // @@ add chat title too?
|
|
246
244
|
|
|
247
245
|
bookmarkDoc = context.bookmarkDocument;
|
|
248
246
|
bookmark = UI.widgets.newThing(bookmarkDoc, title);
|
|
@@ -287,10 +285,10 @@ function _toggleBookmark() {
|
|
|
287
285
|
switch (_context3.prev = _context3.next) {
|
|
288
286
|
case 0:
|
|
289
287
|
_context3.next = 2;
|
|
290
|
-
return
|
|
288
|
+
return _solidLogic.store.fetcher.load(userContext.bookmarkDocument);
|
|
291
289
|
|
|
292
290
|
case 2:
|
|
293
|
-
bookmarks =
|
|
291
|
+
bookmarks = _solidLogic.store.each(null, BOOK('recalls'), target, userContext.bookmarkDocument);
|
|
294
292
|
|
|
295
293
|
if (!bookmarks.length) {
|
|
296
294
|
_context3.next = 24;
|
|
@@ -315,7 +313,7 @@ function _toggleBookmark() {
|
|
|
315
313
|
|
|
316
314
|
_context3.prev = 8;
|
|
317
315
|
_context3.next = 11;
|
|
318
|
-
return updatePromise(
|
|
316
|
+
return updatePromise(_solidLogic.store.connectedStatements(bookmarks[i]), []);
|
|
319
317
|
|
|
320
318
|
case 11:
|
|
321
319
|
bookmarkButton.style.backgroundColor = 'white';
|
|
@@ -377,10 +375,10 @@ function _renderBookmarksButton() {
|
|
|
377
375
|
switch (_context4.prev = _context4.next) {
|
|
378
376
|
case 0:
|
|
379
377
|
_context4.next = 2;
|
|
380
|
-
return
|
|
378
|
+
return _solidLogic.store.fetcher.load(userContext.bookmarkDocument);
|
|
381
379
|
|
|
382
380
|
case 2:
|
|
383
|
-
bookmarked =
|
|
381
|
+
bookmarked = _solidLogic.store.any(null, BOOK('recalls'), bookmarkButton.target, userContext.bookmarkDocument);
|
|
384
382
|
bookmarkButton.style = UI.style.buttonStyle;
|
|
385
383
|
if (bookmarked) bookmarkButton.style.backgroundColor = 'yellow';
|
|
386
384
|
|
|
@@ -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","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"}
|
|
1
|
+
{"version":3,"sources":["../../src/chat/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","instances","length","bookmarkDocument","alert","publicProfile","newBookmarkFile","sym","dir","error","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"],"mappings":"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","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// 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 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 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 = 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"}
|
package/lib/chat/chatLogic.js
CHANGED
|
@@ -26,11 +26,9 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
|
|
|
26
26
|
|
|
27
27
|
var debug = _interopRequireWildcard(require("../debug"));
|
|
28
28
|
|
|
29
|
-
var _index = require("../authn/index");
|
|
30
|
-
|
|
31
29
|
var _dateFolder = require("./dateFolder");
|
|
32
30
|
|
|
33
|
-
var
|
|
31
|
+
var _solidLogic = require("solid-logic");
|
|
34
32
|
|
|
35
33
|
var ns = _interopRequireWildcard(require("../ns"));
|
|
36
34
|
|
|
@@ -127,9 +125,9 @@ var ChatChannel = /*#__PURE__*/function () {
|
|
|
127
125
|
timestamp = '' + now.getTime();
|
|
128
126
|
dateStamp = $rdf.term(now);
|
|
129
127
|
chatDocument = oldMsg ? oldMsg.doc() : this.dateFolder.leafDocumentFromDate(now);
|
|
130
|
-
message =
|
|
128
|
+
message = _solidLogic.store.sym(chatDocument.uri + '#' + 'Msg' + timestamp); // const content = store.literal(text)
|
|
131
129
|
|
|
132
|
-
me =
|
|
130
|
+
me = _solidLogic.authn.currentUser(); // If already logged on
|
|
133
131
|
|
|
134
132
|
if (oldMsg) {
|
|
135
133
|
// edit message replaces old one
|
|
@@ -143,7 +141,7 @@ var ChatChannel = /*#__PURE__*/function () {
|
|
|
143
141
|
sts.push($rdf.st(this.channel, ns.wf('message'), message, chatDocument));
|
|
144
142
|
}
|
|
145
143
|
|
|
146
|
-
sts.push($rdf.st(message, ns.sioc('content'),
|
|
144
|
+
sts.push($rdf.st(message, ns.sioc('content'), _solidLogic.store.literal(text), chatDocument));
|
|
147
145
|
sts.push($rdf.st(message, ns.dct('created'), dateStamp, chatDocument));
|
|
148
146
|
|
|
149
147
|
if (me) {
|
|
@@ -152,7 +150,7 @@ var ChatChannel = /*#__PURE__*/function () {
|
|
|
152
150
|
|
|
153
151
|
_context2.prev = 13;
|
|
154
152
|
_context2.next = 16;
|
|
155
|
-
return
|
|
153
|
+
return _solidLogic.store.updater.update([], sts);
|
|
156
154
|
|
|
157
155
|
case 16:
|
|
158
156
|
_context2.next = 24;
|
|
@@ -224,7 +222,7 @@ function originalVersion(message) {
|
|
|
224
222
|
|
|
225
223
|
while (msg) {
|
|
226
224
|
message = msg;
|
|
227
|
-
msg =
|
|
225
|
+
msg = _solidLogic.store.any(null, ns.dct('isReplacedBy'), message, message.doc());
|
|
228
226
|
}
|
|
229
227
|
|
|
230
228
|
return message;
|
|
@@ -235,18 +233,18 @@ function mostRecentVersion(message) {
|
|
|
235
233
|
|
|
236
234
|
while (msg) {
|
|
237
235
|
message = msg;
|
|
238
|
-
msg =
|
|
236
|
+
msg = _solidLogic.store.any(message, ns.dct('isReplacedBy'), null, message.doc());
|
|
239
237
|
}
|
|
240
238
|
|
|
241
239
|
return message;
|
|
242
240
|
}
|
|
243
241
|
|
|
244
242
|
function isDeleted(message) {
|
|
245
|
-
return
|
|
243
|
+
return _solidLogic.store.holds(message, ns.schema('dateDeleted'), null, message.doc());
|
|
246
244
|
}
|
|
247
245
|
|
|
248
246
|
function isReplaced(message) {
|
|
249
|
-
return
|
|
247
|
+
return _solidLogic.store.holds(message, ns.dct('isReplacedBy'), null, message.doc());
|
|
250
248
|
}
|
|
251
249
|
|
|
252
250
|
function isHidden(message) {
|
|
@@ -255,7 +253,7 @@ function isHidden(message) {
|
|
|
255
253
|
|
|
256
254
|
|
|
257
255
|
function nick(person) {
|
|
258
|
-
var s =
|
|
256
|
+
var s = _solidLogic.store.any(person, ns.foaf('nick'));
|
|
259
257
|
|
|
260
258
|
if (s) return '' + s.value;
|
|
261
259
|
return '' + utils.label(person);
|
|
@@ -280,7 +278,7 @@ function _createIfNotExists2() {
|
|
|
280
278
|
data = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : '';
|
|
281
279
|
_context4.prev = 2;
|
|
282
280
|
_context4.next = 5;
|
|
283
|
-
return
|
|
281
|
+
return _solidLogic.store.fetcher.load(doc);
|
|
284
282
|
|
|
285
283
|
case 5:
|
|
286
284
|
response = _context4.sent;
|
|
@@ -299,7 +297,7 @@ function _createIfNotExists2() {
|
|
|
299
297
|
debug.log('createIfNotExists: doc does NOT exist, will create... ' + doc);
|
|
300
298
|
_context4.prev = 12;
|
|
301
299
|
_context4.next = 15;
|
|
302
|
-
return
|
|
300
|
+
return _solidLogic.store.fetcher.webOperation('PUT', doc.uri, {
|
|
303
301
|
data: data,
|
|
304
302
|
contentType: contentType
|
|
305
303
|
});
|
|
@@ -316,7 +314,7 @@ function _createIfNotExists2() {
|
|
|
316
314
|
throw _context4.t1;
|
|
317
315
|
|
|
318
316
|
case 22:
|
|
319
|
-
delete
|
|
317
|
+
delete _solidLogic.store.fetcher.requested[doc.uri]; // delete cached 404 error
|
|
320
318
|
// debug.log('createIfNotExists doc created ok ' + doc)
|
|
321
319
|
|
|
322
320
|
return _context4.abrupt("return", response);
|
|
@@ -1 +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"}
|
|
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 { 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"],"file":"chatLogic.js"}
|
package/lib/chat/dateFolder.js
CHANGED
|
@@ -19,7 +19,7 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
|
|
|
19
19
|
|
|
20
20
|
var debug = _interopRequireWildcard(require("../debug"));
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _solidLogic = require("solid-logic");
|
|
23
23
|
|
|
24
24
|
var ns = _interopRequireWildcard(require("../ns"));
|
|
25
25
|
|
|
@@ -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 _solidLogic.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 = _solidLogic.store.sym(_folder.uri + thisDateFolder.leafFileName);
|
|
128
128
|
_context.next = 10;
|
|
129
|
-
return
|
|
129
|
+
return _solidLogic.store.fetcher.load(leafDocument);
|
|
130
130
|
|
|
131
131
|
case 10:
|
|
132
|
-
if (!(
|
|
132
|
+
if (!(_solidLogic.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 _solidLogic.store.fetcher.load(parent);
|
|
177
177
|
|
|
178
178
|
case 7:
|
|
179
|
-
siblings =
|
|
179
|
+
siblings = _solidLogic.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 _solidLogic.store.fetcher.load(uncle);
|
|
219
219
|
|
|
220
220
|
case 23:
|
|
221
|
-
cousins =
|
|
221
|
+
cousins = _solidLogic.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 = _solidLogic.store.sym(found.uri + this.leafFileName);
|
|
258
258
|
return _context3.abrupt("return", this.dateFromLeafDocument(doc));
|
|
259
259
|
|
|
260
260
|
case 10:
|