Frontend: Code clean-up

This commit is contained in:
Michael Mayer 2021-10-06 20:04:40 +02:00
parent 6d0614556f
commit c2fc8a0887
15 changed files with 65 additions and 43 deletions

View file

@ -90,6 +90,15 @@ Vue.prototype.$config = config;
Vue.prototype.$clipboard = Clipboard;
Vue.prototype.$isMobile = isMobile;
Vue.prototype.$rtl = rtl;
Vue.prototype.$earlyAccess = () => {
return config.load().finally(() => {
if (config.values.sponsor) {
return Promise.resolve();
} else {
return Promise.reject();
}
});
};
// Register Vuetify
Vue.use(Vuetify, { rtl, icons, theme });

View file

@ -48,7 +48,11 @@ export default class Config {
this.translations = translations;
if (!values || !values.siteTitle) {
console.warn("config: values missing");
// Omit warning in unit tests.
if (navigator && navigator.userAgent && !navigator.userAgent.includes("HeadlessChrome")) {
console.warn("config: values missing");
}
this.debug = true;
this.test = true;
this.demo = false;
@ -147,8 +151,7 @@ export default class Config {
this.values.people = [];
}
if (!data || !data.entities) {
console.warn("empty event data", ev, data);
if (!data || !data.entities || !Array.isArray(data.entities)) {
return;
}

View file

@ -179,7 +179,7 @@ export default {
},
methods: {
onUpdate(ev, data) {
if (!data || !data.entities || this.loading || !this.model || !this.model.UID) {
if (!data || !data.entities || !Array.isArray(data.entities) || this.loading || !this.model || !this.model.UID) {
return;
}

View file

@ -417,7 +417,7 @@ export default {
onAlbumsUpdated(ev, data) {
if (!this.listen) return;
if (!data || !data.entities) {
if (!data || !data.entities || !Array.isArray(data.entities)) {
return;
}

View file

@ -625,7 +625,7 @@ export default {
onUpdate(ev, data) {
if (!this.listen) return;
if (!data || !data.entities) {
if (!data || !data.entities || !Array.isArray(data.entities)) {
return;
}

View file

@ -506,7 +506,7 @@ export default {
onUpdate(ev, data) {
if (!this.listen) return;
if (!data || !data.entities) {
if (!data || !data.entities || !Array.isArray(data.entities)) {
return;
}

View file

@ -431,7 +431,7 @@ export default {
onUpdate(ev, data) {
if (!this.listen) return;
if (!data || !data.entities) {
if (!data || !data.entities || !Array.isArray(data.entities)) {
return;
}

View file

@ -555,7 +555,7 @@ export default {
onUpdate(ev, data) {
if (!this.listen) return;
if (!data || !data.entities) {
if (!data || !data.entities || !Array.isArray(data.entities)) {
return;
}

View file

@ -25,10 +25,10 @@
<v-icon>refresh</v-icon>
</v-btn>
<v-btn v-if="!filter.hidden" icon class="action-show-all" :title="$gettext('Show all')" @click.stop="showAll">
<v-btn v-if="!filter.hidden" icon class="action-show-all" :title="$gettext('Show all')" @click.stop="filterHidden('')">
<v-icon>visibility</v-icon>
</v-btn>
<v-btn v-else icon class="action-show-default" :title="$gettext('Show less')" @click.stop="showDefault">
<v-btn v-else icon class="action-show-default" :title="$gettext('Show less')" @click.stop="filterHidden('yes')">
<v-icon>visibility_off</v-icon>
</v-btn>
</v-toolbar>
@ -164,6 +164,7 @@
</v-layout>
</v-container>
</v-container>
<p-sponsor-dialog :show="dialog.sponsor" @close="dialog.sponsor = false"></p-sponsor-dialog>
<p-people-merge-dialog lazy :show="merge.show" :subj1="merge.subj1" :subj2="merge.subj2" @cancel="onCancelMerge"
@confirm="onMerge"></p-people-merge-dialog>
</div>
@ -212,6 +213,9 @@ export default {
titleRule: v => v.length <= this.$config.get("clip") || this.$gettext("Name too long"),
input: new Input(),
lastId: "",
dialog: {
sponsor: false,
},
merge: {
subj1: null,
subj2: null,
@ -390,6 +394,14 @@ export default {
}
}
},
filterHidden(val) {
this.$earlyAccess().then(() => {
this.filter.hidden = val;
this.updateQuery();
}).catch(() => {
this.dialog.sponsor = true;
});
},
onToggleHidden(ev, index) {
const inputType = this.input.eval(ev, index);
@ -397,7 +409,11 @@ export default {
return;
}
return this.toggleHidden(this.results[index]);
this.$earlyAccess().then(() => {
this.toggleHidden(this.results[index]);
}).catch(() => {
this.dialog.sponsor = true;
});
},
toggleHidden(model) {
if (!model) {
@ -408,14 +424,6 @@ export default {
this.busy = false;
});
},
showAll() {
this.filter.hidden = "yes";
this.updateQuery();
},
showDefault() {
this.filter.hidden = "";
this.updateQuery();
},
clearQuery() {
this.filter.q = '';
this.updateQuery();
@ -608,7 +616,7 @@ export default {
onUpdate(ev, data) {
if (!this.listen) return;
if (!data || !data.entities) {
if (!data || !data.entities || !Array.isArray(data.entities)) {
return;
}

View file

@ -470,7 +470,7 @@ export default {
onUpdate(ev, data) {
if (!this.listen) return;
if (!data || !data.entities) {
if (!data || !data.entities || !Array.isArray(data.entities)) {
return;
}

View file

@ -369,19 +369,20 @@ export default {
return false;
}
if(!this.$config.values.sponsor && themes[newTheme].sponsor) {
this.dialog.sponsor = true;
this.$nextTick(() => {
this.settings.ui.theme = this.currentTheme;
});
return false;
}
this.currentTheme = newTheme;
this.onChange();
this.$earlyAccess().then(() => {
this.currentTheme = newTheme;
this.onChange();
}).catch(() => {
if (themes[newTheme].sponsor) {
this.dialog.sponsor = true;
this.$nextTick(() => {
this.settings.ui.theme = this.currentTheme;
});
} else {
this.currentTheme = newTheme;
this.onChange();
}
});
},
onChange() {
const reload = this.settings.changed("ui", "language");

View file

@ -484,7 +484,7 @@ export default {
onUpdate(ev, data) {
if (!this.listen) return;
if (!data || !data.entities) {
if (!data || !data.entities || !Array.isArray(data.entities)) {
return;
}

View file

@ -473,7 +473,7 @@ export default {
onAlbumsUpdated(ev, data) {
if (!this.listen) return;
if (!data || !data.entities) {
if (!data || !data.entities || !Array.isArray(data.entities)) {
return;
}

View file

@ -105,9 +105,9 @@ describe("common/config", () => {
const values = { Debug: true, siteTitle: "Foo", country: "Germany", city: "Hamburg" };
const config = new Config(storage, values);
config.onPeople(".created");
config.onPeople("people.created", { entities: {} });
assert.empty(config.values.people);
config.onPeople(".created", {
config.onPeople("people.created", {
entities: [
{
UID: "abc123",
@ -117,7 +117,7 @@ describe("common/config", () => {
],
});
assert.equal(config.values.people[0].Name, "Test Name");
config.onPeople(".updated", {
config.onPeople("people.updated", {
entities: [
{
UID: "abc123",
@ -127,7 +127,7 @@ describe("common/config", () => {
],
});
assert.equal(config.values.people[0].Name, "New Name");
config.onPeople(".deleted", {
config.onPeople("people.deleted", {
entities: ["abc123"],
});
assert.empty(config.values.people);
@ -262,9 +262,9 @@ describe("common/config", () => {
});
assert.equal(myConfig.values.count.private, 3);
assert.equal(myConfig.values.count.all, 136);
myConfig.onCount("add.xxxphotos", {
myConfig.onCount("add.photos", {
count: 4,
});
assert.equal(myConfig.values.count.all, 136);
assert.equal(myConfig.values.count.all, 140);
});
});

View file

@ -330,6 +330,7 @@ Mock.onPut("api/v1/faces/f123ghytrfggd", { Hidden: true }).reply(
mockHeaders
);
Mock.onPost("api/v1/subjects/s123ghytrfggd/like").reply(200, { status: "ok" }, mockHeaders);
Mock.onPut("api/v1/subjects/s123ghytrfggd").reply(200, { status: "ok" }, mockHeaders);
Mock.onDelete("api/v1/subjects/s123ghytrfggd/like").reply(200, { status: "ok" }, mockHeaders);
Mock.onGet("api/v1/config/options").reply(200, { success: "ok" }, mockHeaders);
Mock.onPost("api/v1/config/options").reply(200, { success: "ok" }, mockHeaders);