Avoid using copy of app object values in info view

This commit is contained in:
Johannes Zellner
2025-06-27 14:11:30 +02:00
parent 2723f2150b
commit ec17e58eed
+10 -19
View File
@@ -11,13 +11,9 @@ const appsModel = AppsModel.create();
const props = defineProps([ 'app' ]);
const emit = defineEmits([ 'changed' ]);
const id = ref('');
const upstreamVersion = ref('');
const notesTextarea = useTemplateRef('notesTextarea');
const showDoneChecklist = ref(false);
const hasOldChecklist = ref(false);
const checklist = ref([]);
const manifest = ref({});
const editing = ref(false);
const busy = ref(false);
const placeholder = 'Add admin notes here...';
@@ -25,7 +21,7 @@ const noteContent = ref('');
const profile = inject('profile');
async function onAckChecklistItem(item, key) {
const [error] = await appsModel.ackChecklistItem(id.value, key, true);
const [error] = await appsModel.ackChecklistItem(props.app.id.value, key, true);
if (error) return console.error(error);
item.acknowledged = true;
@@ -44,7 +40,7 @@ async function onSubmit() {
return;
}
const [error] = await appsModel.configure(id.value, 'notes', { notes: noteContent.value });
const [error] = await appsModel.configure(props.app.id, 'notes', { notes: noteContent.value });
if (error) {
busy.value = false;
return console.error(error);
@@ -68,13 +64,8 @@ function onDismiss() {
}
onMounted(() => {
const app = props.app;
manifest.value = app.manifest || {};
id.value = app.id;
upstreamVersion.value = manifest.value.version || '';
checklist.value = app.checklist;
hasOldChecklist.value = !!Object.keys(app.checklist).find((k) => { return app.checklist[k].acknowledged; });
noteContent.value = app.notes === null ? app.manifest.postInstallMessage : app.notes;
hasOldChecklist.value = !!Object.keys(props.app.checklist).find((k) => { return props.app.checklist[k].acknowledged; });
noteContent.value = props.app.notes === null ? props.app.manifest.postInstallMessage : props.app.notes;
editing.value = false;
busy.value = false;
});
@@ -86,8 +77,8 @@ onMounted(() => {
<div class="info-row">
<div class="info-label">{{ $t('app.updates.info.description') }}</div>
<div class="info-value" v-if="app.appStoreId">{{ manifest.title }} {{ upstreamVersion }}</div>
<div class="info-value" v-else>{{ manifest.dockerImage }}</div>
<div class="info-value" v-if="app.appStoreId">{{ app.manifest.title }} {{ app.manifest.version }}</div>
<div class="info-value" v-else>{{ app.manifest.dockerImage }}</div>
</div>
<div class="info-row">
@@ -97,8 +88,8 @@ onMounted(() => {
<div class="info-row">
<div class="info-label">{{ $t('app.updates.info.packageVersion') }}</div>
<div class="info-value" v-if="app.appStoreId"><a :href="`/#/appstore/${manifest.id}?version=${manifest.version}`">{{ manifest.id }}@{{ manifest.version }}</a></div>
<div class="info-value" v-else>{{ manifest.version }}</div>
<div class="info-value" v-if="app.appStoreId"><a :href="`/#/appstore/${app.manifest.id}?version=${app.manifest.version}`">{{ app.manifest.id }}@{{ app.manifest.version }}</a></div>
<div class="info-value" v-else>{{ app.manifest.version }}</div>
</div>
<div class="info-row">
@@ -118,14 +109,14 @@ onMounted(() => {
<div class="actionable" @click="showDoneChecklist = false" v-show="showDoneChecklist">{{ $t('app.appInfo.checklistHide') }}</div>
</div>
<div v-for="(item, key) in checklist" :key="key">
<div v-for="(item, key) in app.checklist" :key="key">
<div class="checklist-item" v-if="!item.acknowledged">
<span v-html="marked.parse(item.message)"></span>
<Button small plain tool style="margin-left: 10px;" @click="onAckChecklistItem(item, key)">{{ $t('main.dialog.done') }}</Button>
</div>
</div>
<div v-for="(item, key) in checklist" :key="key" v-show="showDoneChecklist">
<div v-for="(item, key) in app.checklist" :key="key" v-show="showDoneChecklist">
<div class="checklist-item checklist-item-acknowledged" v-if="item.acknowledged">
<span v-html="marked.parse(item.message)"></span>
<span class="text-muted text-small">{{ item.changedBy }} - {{ prettyDate(item.changedAt) }}</span>