Merge branch 'master' of https://github.com/hackersanddesigners/chatty-pub
This commit is contained in:
commit
0821443b13
8 changed files with 193 additions and 29 deletions
128
front/package-lock.json
generated
128
front/package-lock.json
generated
|
|
@ -1059,7 +1059,6 @@
|
||||||
"version": "7.14.5",
|
"version": "7.14.5",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.5.tgz",
|
||||||
"integrity": "sha512-121rumjddw9c3NCQ55KGkyE1h/nzWhU/owjhw0l4mQrkzz4x9SGS1X8gFLraHwX7td3Yo4QTL+qj0NcIzN87BA==",
|
"integrity": "sha512-121rumjddw9c3NCQ55KGkyE1h/nzWhU/owjhw0l4mQrkzz4x9SGS1X8gFLraHwX7td3Yo4QTL+qj0NcIzN87BA==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"regenerator-runtime": "^0.13.4"
|
"regenerator-runtime": "^0.13.4"
|
||||||
}
|
}
|
||||||
|
|
@ -4745,6 +4744,19 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"emoji-datasource": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/emoji-datasource/-/emoji-datasource-4.1.0.tgz",
|
||||||
|
"integrity": "sha1-tEVX94ot+sLzUDkzkbFwpWfsKK0="
|
||||||
|
},
|
||||||
|
"emoji-js": {
|
||||||
|
"version": "3.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/emoji-js/-/emoji-js-3.5.0.tgz",
|
||||||
|
"integrity": "sha512-5uaULzdR3g6ALBC8xUzyoxAx6izT1M4+DEsxHLRS2/gaOKC/p62831itMoMsYfUj1fKX3YG01u5YVz2v7qpsWg==",
|
||||||
|
"requires": {
|
||||||
|
"emoji-datasource": "4.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"emoji-regex": {
|
"emoji-regex": {
|
||||||
"version": "8.0.0",
|
"version": "8.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||||
|
|
@ -7278,6 +7290,11 @@
|
||||||
"integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
|
"integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"lodash.clonedeep": {
|
||||||
|
"version": "4.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
|
||||||
|
"integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
|
||||||
|
},
|
||||||
"lodash.debounce": {
|
"lodash.debounce": {
|
||||||
"version": "4.0.8",
|
"version": "4.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
|
||||||
|
|
@ -7295,6 +7312,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz",
|
||||||
"integrity": "sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o="
|
"integrity": "sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o="
|
||||||
},
|
},
|
||||||
|
"lodash.isplainobject": {
|
||||||
|
"version": "4.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
|
||||||
|
"integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
|
||||||
|
},
|
||||||
"lodash.kebabcase": {
|
"lodash.kebabcase": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
|
||||||
|
|
@ -7319,12 +7341,22 @@
|
||||||
"integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=",
|
"integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"lodash.trim": {
|
||||||
|
"version": "4.5.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.trim/-/lodash.trim-4.5.1.tgz",
|
||||||
|
"integrity": "sha1-NkJefukL5KpeJ7zruFt9EepHqlc="
|
||||||
|
},
|
||||||
"lodash.uniq": {
|
"lodash.uniq": {
|
||||||
"version": "4.5.0",
|
"version": "4.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
|
||||||
"integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
|
"integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"lodash.without": {
|
||||||
|
"version": "4.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.without/-/lodash.without-4.4.0.tgz",
|
||||||
|
"integrity": "sha1-PNRXSgC2e643OpS3SHcmQFB7eqw="
|
||||||
|
},
|
||||||
"log-symbols": {
|
"log-symbols": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
|
||||||
|
|
@ -9402,6 +9434,44 @@
|
||||||
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
|
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"ranges-apply": {
|
||||||
|
"version": "5.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ranges-apply/-/ranges-apply-5.1.0.tgz",
|
||||||
|
"integrity": "sha512-VF3a0XUuYS/BQHv2RaIyX1K7S1hbfrs64hkGKgPVk0Y7p4XFwSucjTTttrBqmkcmB/PZx5ISTZdxErRZi/89aQ==",
|
||||||
|
"requires": {
|
||||||
|
"@babel/runtime": "^7.14.0",
|
||||||
|
"ranges-merge": "^7.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ranges-merge": {
|
||||||
|
"version": "7.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ranges-merge/-/ranges-merge-7.1.0.tgz",
|
||||||
|
"integrity": "sha512-coTHcyAEIhoEdsBs9f5f+q0rmy7UHvS/5nfuXzuj5oLX/l/tbqM5uxRb6eh8WMdetXia3lK67ZO4tarH4ieulQ==",
|
||||||
|
"requires": {
|
||||||
|
"@babel/runtime": "^7.14.0",
|
||||||
|
"ranges-push": "^5.1.0",
|
||||||
|
"ranges-sort": "^4.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ranges-push": {
|
||||||
|
"version": "5.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ranges-push/-/ranges-push-5.1.0.tgz",
|
||||||
|
"integrity": "sha512-vqGcaGq7GWV1zBa9w83E+dzYkOvE9/3pIRUPvLf12c+mGQCf1nesrkBI7Ob8taN2CC9V1HDSJx0KAQl0SgZftA==",
|
||||||
|
"requires": {
|
||||||
|
"@babel/runtime": "^7.14.0",
|
||||||
|
"ranges-merge": "^7.1.0",
|
||||||
|
"string-collapse-leading-whitespace": "^5.1.0",
|
||||||
|
"string-trim-spaces-only": "^3.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ranges-sort": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ranges-sort/-/ranges-sort-4.1.0.tgz",
|
||||||
|
"integrity": "sha512-GOQgk6UtsrfKFeYa53YLiBVnLINwYmOk5l2QZG1csZpT6GdImUwooh+/cRrp7b+fYawZX/rnyA3Ul+pdgQBIzA==",
|
||||||
|
"requires": {
|
||||||
|
"@babel/runtime": "^7.14.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"raw-body": {
|
"raw-body": {
|
||||||
"version": "2.4.0",
|
"version": "2.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
|
||||||
|
|
@ -9469,8 +9539,7 @@
|
||||||
"regenerator-runtime": {
|
"regenerator-runtime": {
|
||||||
"version": "0.13.7",
|
"version": "0.13.7",
|
||||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
|
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
|
||||||
"integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==",
|
"integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"regenerator-transform": {
|
"regenerator-transform": {
|
||||||
"version": "0.14.5",
|
"version": "0.14.5",
|
||||||
|
|
@ -10418,6 +10487,11 @@
|
||||||
"extend-shallow": "^3.0.0"
|
"extend-shallow": "^3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"splitpanes": {
|
||||||
|
"version": "3.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/splitpanes/-/splitpanes-3.0.4.tgz",
|
||||||
|
"integrity": "sha512-KRaPtMDpu++OfvAzNQYE5U7WT5NoMA6l9B0buC4PhYoDILVLY8zN7Sp9cHXAgLhH59jI3lKzVoNqyf4OGRv7QQ=="
|
||||||
|
},
|
||||||
"sprintf-js": {
|
"sprintf-js": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
||||||
|
|
@ -10534,12 +10608,60 @@
|
||||||
"integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
|
"integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"string-collapse-leading-whitespace": {
|
||||||
|
"version": "5.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/string-collapse-leading-whitespace/-/string-collapse-leading-whitespace-5.1.0.tgz",
|
||||||
|
"integrity": "sha512-mYz9/Kb5uvRB4DZj46zILwI4y9lD9JsvXG9Xb7zjbwm0I/R40G7oFfMsqJ28l2d7gWMTLJL569NfJQVLQbnHCw==",
|
||||||
|
"requires": {
|
||||||
|
"@babel/runtime": "^7.14.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"string-hash": {
|
"string-hash": {
|
||||||
"version": "1.1.3",
|
"version": "1.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz",
|
||||||
"integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=",
|
"integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"string-left-right": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/string-left-right/-/string-left-right-4.1.0.tgz",
|
||||||
|
"integrity": "sha512-ic/WvfNVUygWWsgg8akzSzp2NuttfhrdbH7QmSnda5b5RFmT9aCEDiS/M+gmTJwtFy7+b/2AXU4Z6vejcePQqQ==",
|
||||||
|
"requires": {
|
||||||
|
"@babel/runtime": "^7.14.0",
|
||||||
|
"lodash.clonedeep": "^4.5.0",
|
||||||
|
"lodash.isplainobject": "^4.0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"string-strip-html": {
|
||||||
|
"version": "8.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/string-strip-html/-/string-strip-html-8.3.0.tgz",
|
||||||
|
"integrity": "sha512-1+rjTPt0JjpFr1w0bfNL1S6O0I9fJDqM+P3pFTpC6eEEpIXhmBvPLnaQoEuWarswiH219qCefDSxTLxGQyHKUg==",
|
||||||
|
"requires": {
|
||||||
|
"@babel/runtime": "^7.14.0",
|
||||||
|
"html-entities": "^2.3.2",
|
||||||
|
"lodash.isplainobject": "^4.0.6",
|
||||||
|
"lodash.trim": "^4.5.1",
|
||||||
|
"lodash.without": "^4.4.0",
|
||||||
|
"ranges-apply": "^5.1.0",
|
||||||
|
"ranges-push": "^5.1.0",
|
||||||
|
"string-left-right": "^4.1.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"html-entities": {
|
||||||
|
"version": "2.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz",
|
||||||
|
"integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"string-trim-spaces-only": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/string-trim-spaces-only/-/string-trim-spaces-only-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-AW7RSi3+QtE6wR+4m/kmwlyy39neBbCIzrzzu1/RGzNRiPKQOeB3rGzr4ubg4UIQgYtr2w0PrxhKPXgyqJ0vaQ==",
|
||||||
|
"requires": {
|
||||||
|
"@babel/runtime": "^7.14.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"string-width": {
|
"string-width": {
|
||||||
"version": "4.2.2",
|
"version": "4.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
|
||||||
|
|
|
||||||
|
|
@ -47,8 +47,8 @@ export default {
|
||||||
this.getStreams();
|
this.getStreams();
|
||||||
|
|
||||||
this.$router.afterEach((to) => {
|
this.$router.afterEach((to) => {
|
||||||
this.$store.commit("setContents", []);
|
this.$store.commit("setTopics", []);
|
||||||
this.$store.commit("setRules", []);
|
this.$store.commit("setRules", []);
|
||||||
this.$store.commit("setCurStream", to.path.replace("/", ""))
|
this.$store.commit("setCurStream", to.path.replace("/", ""))
|
||||||
if (this.currentStream != "") {
|
if (this.currentStream != "") {
|
||||||
this.setUpDoc(this.currentStream);
|
this.setUpDoc(this.currentStream);
|
||||||
|
|
@ -84,17 +84,17 @@ export default {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
api.zulip.getMsgs(this.zulipClient, stream, "content").then((result) => {
|
api.zulip.getAllMsgs(this.zulipClient, stream).then((result) => {
|
||||||
for (let m = 0; m < result.messages.length; m++) {
|
for (let m = 0; m < result.messages.length; m++) {
|
||||||
const message = result.messages[m]
|
const message = result.messages[m]
|
||||||
this.$store.commit('addMessage', message)
|
if (message.subject == 'rules') {
|
||||||
|
this.$store.commit('addRule', message)
|
||||||
|
} else {
|
||||||
|
this.$store.commit('addMessage', message)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
api.zulip.getMsgs(this.zulipClient, stream, "rules").then((result) => {
|
|
||||||
this.$store.commit("setRules", result.messages);
|
|
||||||
});
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
eventHandler(event) {
|
eventHandler(event) {
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ const
|
||||||
// apply_markdown: false,
|
// apply_markdown: false,
|
||||||
narrow: [
|
narrow: [
|
||||||
{ operator: "stream", operand: stream },
|
{ operator: "stream", operand: stream },
|
||||||
{ operator: "topic", operand: topic },
|
{ operator: "topic", operand: topic },
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
.then(result => resolve(result))
|
.then(result => resolve(result))
|
||||||
|
|
@ -44,6 +44,22 @@ const
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
|
|
||||||
|
getAllMsgs = (client, stream, params) => ( new
|
||||||
|
Promise((resolve, reject) => {
|
||||||
|
client
|
||||||
|
.messages
|
||||||
|
.retrieve(params || {
|
||||||
|
anchor: "newest",
|
||||||
|
num_before: 100,
|
||||||
|
num_after: 0,
|
||||||
|
// apply_markdown: false,
|
||||||
|
narrow: [{ operator: "stream", operand: stream }],
|
||||||
|
})
|
||||||
|
.then(result => resolve(result))
|
||||||
|
.catch(error => reject(error))
|
||||||
|
})
|
||||||
|
),
|
||||||
|
|
||||||
listen = (client, cb) => {
|
listen = (client, cb) => {
|
||||||
client
|
client
|
||||||
.callOnEachEvent(
|
.callOnEachEvent(
|
||||||
|
|
@ -100,6 +116,7 @@ export default {
|
||||||
config,
|
config,
|
||||||
getStreams,
|
getStreams,
|
||||||
getMsgs,
|
getMsgs,
|
||||||
|
getAllMsgs,
|
||||||
listen,
|
listen,
|
||||||
sendMsg,
|
sendMsg,
|
||||||
getSubs,
|
getSubs,
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,9 @@ export default {
|
||||||
c = c.replaceAll('src="', 'src="' + url);
|
c = c.replaceAll('src="', 'src="' + url);
|
||||||
c = c.replaceAll('href="/', 'href="' + url + "/");
|
c = c.replaceAll('href="/', 'href="' + url + "/");
|
||||||
|
|
||||||
const referrers = this.$store.state.contents.filter(
|
const referrers = this.$store.state
|
||||||
|
.topics.find(t => t.title == this.message.subject)
|
||||||
|
.messages.filter(
|
||||||
(m) =>
|
(m) =>
|
||||||
m.responseTo &&
|
m.responseTo &&
|
||||||
m.responseTo.id == this.message.id &&
|
m.responseTo.id == this.message.id &&
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
<template>
|
<template>
|
||||||
<section class="content">
|
<section :class="[ 'content', currentStream ]">
|
||||||
<p class="title">{{ $.type.name }}</p>
|
|
||||||
<div
|
<div
|
||||||
class="body"
|
v-for="topic in sortedTopics"
|
||||||
:class="currentStream"
|
:key="topic.title"
|
||||||
|
:class="[ 'body', topic.title ]"
|
||||||
>
|
>
|
||||||
|
<h1>{{ topic.title }}</h1>
|
||||||
<span
|
<span
|
||||||
v-for="message in contents"
|
v-for="message in topic.messages"
|
||||||
:key="message.id"
|
:key="message.id"
|
||||||
>
|
>
|
||||||
<Message
|
<Message
|
||||||
|
|
@ -19,7 +20,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState } from 'vuex'
|
import { mapGetters, mapState } from 'vuex'
|
||||||
import Message from './Message'
|
import Message from './Message'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
@ -29,9 +30,11 @@ export default {
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState([
|
...mapState([
|
||||||
'contents',
|
|
||||||
'rules',
|
'rules',
|
||||||
'currentStream'
|
'currentStream'
|
||||||
|
]),
|
||||||
|
...mapGetters([
|
||||||
|
'sortedTopics'
|
||||||
])
|
])
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
|
||||||
|
|
@ -83,8 +83,8 @@ export default createStore({
|
||||||
isMobile: false,
|
isMobile: false,
|
||||||
streams: [],
|
streams: [],
|
||||||
currentStream: '',
|
currentStream: '',
|
||||||
contents: [],
|
|
||||||
rules: [],
|
rules: [],
|
||||||
|
topics: [],
|
||||||
pubStr: 'pub-',
|
pubStr: 'pub-',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -93,7 +93,7 @@ export default createStore({
|
||||||
setMobile: (state, mobile) => state.isMobile = mobile,
|
setMobile: (state, mobile) => state.isMobile = mobile,
|
||||||
setStreams: (state, streams) => state.streams = streams,
|
setStreams: (state, streams) => state.streams = streams,
|
||||||
setCurStream: (state, stream) => state.currentStream = stream,
|
setCurStream: (state, stream) => state.currentStream = stream,
|
||||||
setContents: (state, contents) => state.contents = contents,
|
setTopics: (state, topics) => state.topics = topics,
|
||||||
addMessage: (state, message) => {
|
addMessage: (state, message) => {
|
||||||
if (message.display_recipient == state.currentStream) {
|
if (message.display_recipient == state.currentStream) {
|
||||||
if (message.content.startsWith('@_**')) {
|
if (message.content.startsWith('@_**')) {
|
||||||
|
|
@ -104,7 +104,15 @@ export default createStore({
|
||||||
) {
|
) {
|
||||||
handleHTMLReply(message)
|
handleHTMLReply(message)
|
||||||
}
|
}
|
||||||
state.contents.push(message)
|
const topic = state.topics.find(topic => topic.title == message.subject)
|
||||||
|
if (topic) {
|
||||||
|
topic.messages.push(message)
|
||||||
|
} else {
|
||||||
|
state.topics.push({
|
||||||
|
title: message.subject,
|
||||||
|
messages: [ message ]
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
deleteMessage: (state, mid) => {
|
deleteMessage: (state, mid) => {
|
||||||
|
|
@ -136,7 +144,10 @@ export default createStore({
|
||||||
},
|
},
|
||||||
addRule: (state, rule) => {
|
addRule: (state, rule) => {
|
||||||
if (toCSS(rule) !== null) {
|
if (toCSS(rule) !== null) {
|
||||||
state.rules.push(toCSS(rule, state.currentStream))
|
// state.rules.push(toCSS(rule, state.currentStream))
|
||||||
|
|
||||||
|
// vue will not update if i use rules.push(rule)
|
||||||
|
state.rules = [...state.rules,...[toCSS(rule, state.currentStream)]]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
editMessage: (state, { mid, content }) => {
|
editMessage: (state, { mid, content }) => {
|
||||||
|
|
@ -153,14 +164,16 @@ export default createStore({
|
||||||
handleHTMLReply(message)
|
handleHTMLReply(message)
|
||||||
}
|
}
|
||||||
} else if (rule) {
|
} else if (rule) {
|
||||||
|
// state.rules[state.rules.indexOf(rule)] = toCSS({
|
||||||
|
// id: mid, content: content,
|
||||||
|
// }, state.currentStream)
|
||||||
|
|
||||||
|
// vue will not update if i use rules.push(rule)
|
||||||
const newRules = [...state.rules, ...[toCSS({
|
const newRules = [...state.rules, ...[toCSS({
|
||||||
id: mid, content: content,
|
id: mid, content: content,
|
||||||
}, state.currentStream)]]
|
}, state.currentStream)]]
|
||||||
state.rules = newRules
|
state.rules = newRules
|
||||||
|
|
||||||
// state.rules[state.rules.indexOf(rule)] = toCSS({
|
|
||||||
// id: mid, content: content,
|
|
||||||
// }, state.currentStream)
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -170,7 +183,8 @@ export default createStore({
|
||||||
},
|
},
|
||||||
|
|
||||||
getters: {
|
getters: {
|
||||||
rules: state => state.rules
|
rules: state => state.rules,
|
||||||
|
sortedTopics: state => [...state.topics].sort((a, b) => a.title.localeCompare(b.title))
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
|
||||||
5
package-lock.json
generated
5
package-lock.json
generated
|
|
@ -634,6 +634,11 @@
|
||||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
|
"splitpanes": {
|
||||||
|
"version": "2.3.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/splitpanes/-/splitpanes-2.3.6.tgz",
|
||||||
|
"integrity": "sha512-2sif1pmOQw/N+/jRbVzqTJ32lkhJax8jQfaXCebRK/SFCadHOnAaXDcWW8PpEcr9vKpfzH7gxJ8Sq/74HECr/g=="
|
||||||
|
},
|
||||||
"sshpk": {
|
"sshpk": {
|
||||||
"version": "1.16.1",
|
"version": "1.16.1",
|
||||||
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
|
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"emoji-js": "^3.5.0",
|
"emoji-js": "^3.5.0",
|
||||||
|
"splitpanes": "^2.3.6",
|
||||||
"string-strip-html": "^8.3.0",
|
"string-strip-html": "^8.3.0",
|
||||||
"vue-html2pdf": "^1.8.0",
|
"vue-html2pdf": "^1.8.0",
|
||||||
"zulip-js": "^2.0.9"
|
"zulip-js": "^2.0.9"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue