Albums: Optimize push updates

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
This commit is contained in:
Michael Mayer 2020-02-04 01:39:53 +01:00
parent da0fd93c05
commit cf5c0db1d3
5 changed files with 41 additions and 61 deletions

View file

@ -36,9 +36,9 @@
}
},
"@babel/compat-data": {
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.8.4.tgz",
"integrity": "sha512-lHLhlsvFjJAqNU71b7k6Vv9ewjmTXKvqaMv7n0G1etdCabWLw3nEYE8mmgoVOxMIFE07xOvo7H7XBASirX6Rrg==",
"version": "7.8.5",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.8.5.tgz",
"integrity": "sha512-jWYUqQX/ObOhG1UiEkbH5SANsE/8oKXiQWjj7p7xgj9Zmnt//aUvyz4dBkK0HNsS8/cbyC5NmmH87VekW+mXFg==",
"requires": {
"browserslist": "^4.8.5",
"invariant": "^2.2.4",
@ -1221,9 +1221,9 @@
"integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA=="
},
"@types/node": {
"version": "13.5.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.5.3.tgz",
"integrity": "sha512-ZPnWX9PW992w6DUsz3JIXHaSb5v7qmKCVzC3km6SxcDGxk7zmLfYaCJTbktIa5NeywJkkZDhGldKqDIvC5DRrA=="
"version": "13.7.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.0.tgz",
"integrity": "sha512-GnZbirvmqZUzMgkFn70c74OQpTTUcCzlhQliTzYjQMqg+hVKcDnxdL19Ne3UdYzdMA/+W3eb646FWn/ZaT1NfQ=="
},
"@types/q": {
"version": "1.5.2",
@ -1256,9 +1256,9 @@
}
},
"@types/webpack": {
"version": "4.41.3",
"resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.3.tgz",
"integrity": "sha512-dH+BZ6pHBZFrXpnif0YU/PbmUq3lQrvRPnqkxsciSIzvG/DE+Vm/Wrjn56T7V3+B5ryQa5fw0oGnHL8tk4ll6w==",
"version": "4.41.4",
"resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.4.tgz",
"integrity": "sha512-PlqTNzHzZ1UpBXKkq2wHAM8+jeMojJGfBFXjGB3/N4F4ESGeivdKsJuaS79rtbSofvjbwBIMOHP254mIq0ujiQ==",
"requires": {
"@types/anymatch": "*",
"@types/node": "*",
@ -2800,9 +2800,9 @@
}
},
"caniuse-lite": {
"version": "1.0.30001023",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001023.tgz",
"integrity": "sha512-C5TDMiYG11EOhVOA62W1p3UsJ2z4DsHtMBQtjzp3ZsUglcQn62WOUgW0y795c7A5uZ+GCEIvzkMatLIlAsbNTA=="
"version": "1.0.30001024",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001024.tgz",
"integrity": "sha512-LubRSEPpOlKlhZw9wGlLHo8ZVj6ugGU3xGUfLPneNBledSd9lIM5cCGZ9Mz/mMCJUhEt4jZpYteZNVRdJw5FRA=="
},
"cardinal": {
"version": "0.4.4",
@ -4705,9 +4705,9 @@
}
},
"eslint-plugin-import": {
"version": "2.20.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.0.tgz",
"integrity": "sha512-NK42oA0mUc8Ngn4kONOPsPB1XhbUvNHqF+g307dPV28aknPoiNnKLFd9em4nkswwepdF5ouieqv5Th/63U7YJQ==",
"version": "2.20.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz",
"integrity": "sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw==",
"requires": {
"array-includes": "^3.0.3",
"array.prototype.flat": "^1.2.1",
@ -4770,9 +4770,9 @@
"integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ=="
},
"eslint-rule-docs": {
"version": "1.1.176",
"resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.176.tgz",
"integrity": "sha512-2Aj17TDlXRa/NHZgkpZMXedLKkFjft92w9CCclRqugj0ki/wyRaGxfFrAYCdGmsRc25rwRSq4Me4jXg4utJmaw=="
"version": "1.1.177",
"resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.177.tgz",
"integrity": "sha512-2+jKfNwexDLqYStEOXQrfEs7ck2ZzL0SC/uEjGHp1sFvzQbaPyvfsr8FWWeVrd4WUZGHkm2XQ5YUu+71e3iv6Q=="
},
"eslint-scope": {
"version": "5.0.0",
@ -6303,6 +6303,15 @@
"json5": "^0.5.0",
"object-assign": "^4.0.1"
}
},
"util.promisify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
"integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
"requires": {
"define-properties": "^1.1.2",
"object.getownpropertydescriptors": "^2.0.3"
}
}
}
},
@ -12126,12 +12135,14 @@
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"util.promisify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
"integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz",
"integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
"requires": {
"define-properties": "^1.1.2",
"object.getownpropertydescriptors": "^2.0.3"
"define-properties": "^1.1.3",
"es-abstract": "^1.17.2",
"has-symbols": "^1.0.1",
"object.getownpropertydescriptors": "^2.1.0"
}
},
"utila": {

View file

@ -10,6 +10,7 @@
"lint": "eslint --cache src/ *.js",
"fmt": "eslint --cache --fix src/ *.js",
"test": "karma start",
"upgrade": "npm --depth 10 update && npm audit fix",
"acceptance": "testcafe \"chromium:headless --disable-dev-shm-usage\" --selector-timeout 5000 -S -s tests/screenshots tests/acceptance",
"acceptance-firefox": "testcafe firefox:headless --selector-timeout 5000 -S -s tests/screenshots tests/acceptance",
"acceptance-local": "testcafe chrome --selector-timeout 5000 -S -s tests/screenshots tests/acceptance",
@ -53,7 +54,7 @@
"eslint-friendly-formatter": "^4.0.1",
"eslint-loader": "^3.0.3",
"eslint-plugin-html": "^6.0.0",
"eslint-plugin-import": "^2.20.0",
"eslint-plugin-import": "^2.20.1",
"eslint-plugin-node": "^10.0.0",
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-standard": "^4.0.1",

View file

@ -19,7 +19,7 @@
<v-spacer></v-spacer>
<v-btn icon @click.stop="refresh" :class="dirty ? 'secondary-light': ''">
<v-btn icon @click.stop="refresh">
<v-icon>refresh</v-icon>
</v-btn>
@ -272,7 +272,7 @@
Album.search(params).then(response => {
this.offset = this.pageSize;
this.results = response.models;
this.scrollDisabled = (response.models.length < this.pageSize);
@ -314,12 +314,7 @@
const album = new Album({"AlbumName": name, "AlbumFavorite": true});
album.save().then(() => {
this.filter.q = "";
this.lastFilter = {};
this.search();
})
album.save();
},
onSave(album) {
album.update();
@ -333,13 +328,6 @@
this.selection.push(uuid)
}
},
onCount() {
this.dirty = true;
if(!this.selection && this.offset === 0) {
this.refresh();
}
},
onUpdate(ev, data) {
if (!this.listen) return;
@ -393,7 +381,6 @@
created() {
this.search();
this.subscriptions.push(Event.subscribe("count.albums", (ev, data) => this.onCount(ev, data)));
this.subscriptions.push(Event.subscribe("albums", (ev, data) => this.onUpdate(ev, data)));
},
destroyed() {

View file

@ -315,7 +315,7 @@
case 'archived':
this.dirty = true;
if(this.context !== "photos") break;
if(this.context === "archive") break;
for (let i = 0; i < data.entities.length; i++) {
const uuid = data.entities[i];
@ -325,19 +325,6 @@
}
}
break;
case 'created':
if(this.order === "imported" && JSON.stringify(this.filter) === "{}") {
this.dirty = false;
for (let i = 0; i < data.entities.length; i++) {
const values = data.entities[i];
const index = this.results.findIndex((m) => m.ID === values.ID);
if(index === -1) {
this.results.unshift(new Photo(values));
}
}
}
break;
default:
console.warn("unexpected event type", ev);

View file

@ -99,13 +99,7 @@ func CreateAlbum(router *gin.RouterGroup, conf *config.Config) {
return
}
/* TODO: Not needed if we send config.updated
event.Publish("count.albums", event.Data{
"count": 1,
})
*/
event.Success(fmt.Sprintf("album \"%s\" created", m.AlbumName))
event.Success("album created")
event.Publish("config.updated", event.Data(conf.ClientConfig()))