diff --git a/src/components/TheUpdateDialog.vue b/src/components/TheUpdateDialog.vue index fc45f2b06..946d9f374 100644 --- a/src/components/TheUpdateDialog.vue +++ b/src/components/TheUpdateDialog.vue @@ -161,10 +161,14 @@ export default class TheUpdateDialog extends Mixins(BaseMixin) { this.complete && ['client', 'mainsail', 'full'].includes(this.application.toLowerCase()) ) - window.location.reload(true) + window.location.reload() else { this.$store.commit('server/updateManager/resetUpdateResponse') - this.$socket.emit('machine.update.status', { refresh: false }, { action: 'server/updateManager/getStatus' }) + this.$socket.emit( + 'machine.update.status', + { refresh: false }, + { action: 'server/updateManager/onUpdateStatus' } + ) } } diff --git a/src/components/panels/Machine/UpdatePanel.vue b/src/components/panels/Machine/UpdatePanel.vue index ea786b893..18645e19d 100644 --- a/src/components/panels/Machine/UpdatePanel.vue +++ b/src/components/panels/Machine/UpdatePanel.vue @@ -1,63 +1,3 @@ - - - - - - -
- - - - {{ 'name' in value ? value.name : key }} -
- - - {{ mdiInformation }} - - {{ getVersionOutput(value) }} - -
- - - - -
-
- + + diff --git a/src/components/panels/Machine/UpdatePanel/Entry.vue b/src/components/panels/Machine/UpdatePanel/Entry.vue new file mode 100644 index 000000000..707199e96 --- /dev/null +++ b/src/components/panels/Machine/UpdatePanel/Entry.vue @@ -0,0 +1,366 @@ + + + + + diff --git a/src/components/panels/Machine/UpdatePanel/EntryAll.vue b/src/components/panels/Machine/UpdatePanel/EntryAll.vue new file mode 100644 index 000000000..3f1dce834 --- /dev/null +++ b/src/components/panels/Machine/UpdatePanel/EntryAll.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/src/components/panels/Machine/UpdatePanel/EntrySystem.vue b/src/components/panels/Machine/UpdatePanel/EntrySystem.vue new file mode 100644 index 000000000..887f92119 --- /dev/null +++ b/src/components/panels/Machine/UpdatePanel/EntrySystem.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/components/panels/Machine/UpdatePanel/GitCommitsList.vue b/src/components/panels/Machine/UpdatePanel/GitCommitsList.vue new file mode 100644 index 000000000..cf1624b40 --- /dev/null +++ b/src/components/panels/Machine/UpdatePanel/GitCommitsList.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/src/components/panels/Machine/UpdatePanel/GitCommitsListDay.vue b/src/components/panels/Machine/UpdatePanel/GitCommitsListDay.vue new file mode 100644 index 000000000..a7012e074 --- /dev/null +++ b/src/components/panels/Machine/UpdatePanel/GitCommitsListDay.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/src/components/panels/Machine/UpdatePanel/GitCommitsListDayCommit.vue b/src/components/panels/Machine/UpdatePanel/GitCommitsListDayCommit.vue new file mode 100644 index 000000000..47df5d42e --- /dev/null +++ b/src/components/panels/Machine/UpdatePanel/GitCommitsListDayCommit.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/src/components/panels/Machine/UpdatePanel/SystemPackagesList.vue b/src/components/panels/Machine/UpdatePanel/SystemPackagesList.vue new file mode 100644 index 000000000..1faedafc6 --- /dev/null +++ b/src/components/panels/Machine/UpdatePanel/SystemPackagesList.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/src/components/panels/Machine/UpdatePanel/UpdateHint.vue b/src/components/panels/Machine/UpdatePanel/UpdateHint.vue new file mode 100644 index 000000000..8720e2f77 --- /dev/null +++ b/src/components/panels/Machine/UpdatePanel/UpdateHint.vue @@ -0,0 +1,71 @@ + + + diff --git a/src/components/panels/Machine/UpdatePanel/UpdateHintAlert.vue b/src/components/panels/Machine/UpdatePanel/UpdateHintAlert.vue new file mode 100644 index 000000000..15a38f9e1 --- /dev/null +++ b/src/components/panels/Machine/UpdatePanel/UpdateHintAlert.vue @@ -0,0 +1,91 @@ + + + diff --git a/src/components/panels/Machine/UpdatePanel/UpdateHintAll.vue b/src/components/panels/Machine/UpdatePanel/UpdateHintAll.vue new file mode 100644 index 000000000..87c3f7f27 --- /dev/null +++ b/src/components/panels/Machine/UpdatePanel/UpdateHintAll.vue @@ -0,0 +1,105 @@ + + + diff --git a/src/components/settings/SettingsUiSettingsTab.vue b/src/components/settings/SettingsUiSettingsTab.vue index 418775b66..91c24c80d 100644 --- a/src/components/settings/SettingsUiSettingsTab.vue +++ b/src/components/settings/SettingsUiSettingsTab.vue @@ -195,6 +195,13 @@ :step="1" :label="tempchartHeight + 'px'" /> + + + +
@@ -401,6 +408,14 @@ export default class SettingsUiSettingsTab extends Mixins(BaseMixin) { this.$store.dispatch('gui/saveSetting', { name: 'uiSettings.tempchartHeight', value: newVal }) } + get hideUpdateWarnings() { + return this.$store.state.gui.uiSettings.hideUpdateWarnings ?? false + } + + set hideUpdateWarnings(newVal) { + this.$store.dispatch('gui/saveSetting', { name: 'uiSettings.hideUpdateWarnings', value: newVal }) + } + clearColorObject(color: any): string { if (typeof color === 'object' && 'hex' in color) color = color.hex if (color.length > 7) color = color.substr(0, 7) diff --git a/src/locales/de.json b/src/locales/de.json index c1bd8396f..954ce1811 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -478,27 +478,51 @@ } }, "UpdatePanel": { - "CheckForUpdates": "auf aktualisierungen prüfen", + "Abort": "abbrechen", + "AreYouSure": "Bist du dir sicher?", + "CheckForUpdates": "auf Aktualisierungen prüfen", + "Close": "schließen", + "CommitHistory": "Commit Verlauf", "Commits": "Commits", "CommitsAvailable": "keine Einreichung verfügbar | {count} Einreichung verfügbar | {count} Einreichungen verfügbar", - "CommitsOnDate": "Engereicht am {date}", + "CommitsOnDate": "Eingereicht am {date}", "CommittedDaysAgo": "eingereicht vor {days} Tagen", "CommittedHoursAgo": "eingereicht vor {hours} Stunden", "CommittedOnDate": "eingereicht am {date}", "CommittedYesterday": "eingereicht gestern", + "ConfigChanges": "Konfigurationsänderungen", + "CountPackagesCanBeUpgraded": "{count} Pakete können aktualisiert werden", "Detached": "abgetrennt", "Dirty": "kompromittiert", - "ERROR": "FEHLER", + "GenericUpdateQuestion": "Überprüfe den Commit-Verlauf (falls verfügbar) und die GitHub-Projektseite von diesem Projekt, um festzustellen, ob manuelle Anpassungen nach dieser Aktualisierung erforderlich sind.", + "GitHubPage": "GitHub Projektseite", + "HardRecovery": "Harte Wiederherstellung", + "InitUpdateManager": "Der Update Manager ist noch nicht initialisiert. Dies ist normal, wenn das System zum ersten Mal gestartet wird. Bitte klicke auf die Aktualisierungsschaltfläche, um alle Komponenten zu initialisieren.", "Invalid": "ungültig", + "IUnderstandTheRisks": "Ich habe die Risiken verstanden", + "LinkToGithub": "Link zu GitHub", + "KlipperUpdateQuestionFirmware": "Dadurch wird die Klipper-Host-Software aktualisiert. Steuerplatinen, auf denen die Klipper-Firmware läuft, müssen möglicherweise mit einer neu kompilierten Firmware geflasht werden, bevor die Maschine wieder in Betrieb genommen werden kann.", + "KlipperUpdateQuestionConfig": "Dieses Update kann Änderungen an den Konfigurationsparametern enthalten, die in der Datei printer.cfg geändert werden müssen; Informationen hierzu findest du im Änderungsprotokoll.", + "MoonrakerUpdateQuestion": "Dadurch wird die Moonraker-API aktualisiert. Möglicherweise sind Änderungen an der Datei moonraker.conf erforderlich, damit die Maschine wieder verwendet werden kann.", + "MoreCommitsInfo": "Hier können maximal 30 Commits angezeigt werden. Um alle Commits zu sehen, klicke bitte auf den folgenden Link:", + "Notification": { + "Detached": "Ein abgetrennter Zustand ist weder ein Fehler noch ein Problem. Es bedeutet nur, dass im lokalen Repository zusätzliche Commits existieren, die im entfernten Repository nicht vorhanden sind.", + "Dirty": "Das lokale Repository wurde geändert und kann in diesem Zustand nicht aktualisiert werden. Bitte stelle wieder ein saubers Repository her." + }, "OSPackages": "OS-Pakete", - "PackagesCanBeUpgraded": "Paketupdates sind verfügbar", + "SoftRecovery": "einfache Wiederherstellung", + "StartUpdate": "Aktualisierung starten", "System": "System", + "ThesePackagesCanBeUpgrade": "Diese Systempakete können aktualisiert werden:", "Unknown": "unbekannt", "Update": "update", "UpdateAll": "Alle Komponenten updaten", "UpdateManager": "Update Manager", + "UpdateWarning": "Aktualisierungswarnung: {name}", "Upgrade": "upgrade", - "UpToDate": "aktuell" + "UpgradeableSystemPackages": "Aktualisierbare Systempakete", + "UpToDate": "aktuell", + "WebClientUpdateQuestion": "In einigen Fällen kann die Aktualisierung des Webclients Änderungen mit sich bringen, die zu Inkompatibilitäten führen können. Weitere Informationen sind in den Veröffentlichungshinweisen zu finden." } }, "ManualProbe": { @@ -1046,6 +1070,8 @@ "Guide": "Leitfaden", "HideSaveConfigButtonForBedMesh": "SAVE_CONFIG Schaltfläche ausblenden bei bed_mesh Änderungen", "HideSaveConfigButtonForBedMeshDescription": "SAVE_CONFIG nicht anzeigen, wenn nur das Speichern eines bed_mesh in Klipper aussteht.", + "HideUpdateWarnings": "Aktualisierungswarnungen ausblenden", + "HideUpdateWarningsDescription": "Mit dieser Option werden alle Aktualisierungswarnungen im Aktualisierungsmanager ausgeblendet.", "LockSliders": "Sperre Schieberegler auf Touchscreen Geräten", "LockSlidersDelay": "Verzögerung der Sperre für Schieberegler", "LockSlidersDelayDescription": "Schieberegler werden nach einer bestimmten Verzögerung gesperrt. Wenn 0 oder leer, dann sperren Schieberegler nur nach wechseln/neuladen der Seite.", diff --git a/src/locales/en.json b/src/locales/en.json index f5ec4852b..e60ef0189 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -478,7 +478,11 @@ } }, "UpdatePanel": { + "Abort": "Abort", + "AreYouSure": "Are you sure?", "CheckForUpdates": "Check for updates", + "Close": "Close", + "CommitHistory": "Commit History", "Commits": "Commits", "CommitsAvailable": "no commits available | {count} commit available | {count} commits available", "CommitsOnDate": "Commits on {date}", @@ -486,19 +490,39 @@ "CommittedHoursAgo": "committed {hours} hours ago", "CommittedOnDate": "committed on {date}", "CommittedYesterday": "committed yesterday", + "ConfigChanges": "Config Changes", + "CountPackagesCanBeUpgraded": "{count} packages can be upgraded", "Detached": "detached", "Dirty": "dirty", - "ERROR": "ERROR", + "GenericUpdateQuestion": "Check the commit history (if available) and the GitHub page for this project to see if any manual adjustments are necessary for this update.", + "GitHubPage": "GitHub Page", + "HardRecovery": "Hard Recovery", + "InitUpdateManager": "The Update Manager has not been initialized yet. This is normal when you start the system for the first time. Please click on the refresh button to initialize all components.", "Invalid": "invalid", + "IUnderstandTheRisks": "I understand the risks", + "LinkToGithub": "Link to GitHub", + "KlipperUpdateQuestionFirmware": "This will update the Klipper host software. Control boards running the Klipper firmware may need to be flashed with recompiled firmware before the machine can be put back into service.", + "KlipperUpdateQuestionConfig": "This update may also contain changes to config parameters that would need to be modified in the printer.cfg file, see the change log for details.", + "MoonrakerUpdateQuestion": "This will update the Moonraker API. Changes to the moonraker.conf file may be required to continue using the machine.", + "MoreCommitsInfo": "A maximum of 30 commits can be displayed here. To see all commits, please click on the following link:", + "Notification": { + "Detached": "Detached state is not an error nor is it a problem. It only means that additional commits exist in the local repository that do not exist in the remote repository.", + "Dirty": "The local repository has been modified and cannot be updated in this state. Please recover this repository." + }, "OSPackages": "OS-Packages", - "PackagesCanBeUpgraded": "packages can be upgraded", + "SoftRecovery": "Soft Recovery", + "StartUpdate": "Start Update", "System": "System", + "ThesePackagesCanBeUpgrade": "These system packages can be upgraded:", "Unknown": "unknown", "Update": "update", "UpdateAll": "Update all components", "UpdateManager": "Update Manager", + "UpdateWarning": "Update warning: {name}", "Upgrade": "upgrade", - "UpToDate": "up-to-date" + "UpgradeableSystemPackages": "Upgradeable System Packages", + "UpToDate": "up-to-date", + "WebClientUpdateQuestion": "In some cases updating the web client could have changes that may cause incompatibility. See the release notes for more information." } }, "ManualProbe": { @@ -1046,6 +1070,8 @@ "Guide": "Guide", "HideSaveConfigButtonForBedMesh": "Hide SAVE_CONFIG button for bed_mesh changes", "HideSaveConfigButtonForBedMeshDescription": "Hide SAVE_CONFIG, if only bed_mesh changes are pending to be saved in Klipper.", + "HideUpdateWarnings": "Hide Update Warnings", + "HideUpdateWarningsDescription": "This option will hide all update warnings in the update manager.", "LockSliders": "Lock sliders on touchscreen devices", "LockSlidersDelay": "Slider lock delay", "LockSlidersDelayDescription": "Sliders will lock after a given delay. If set to 0 or left blank, sliders will only lock on page change/reload.", diff --git a/src/store/gui/index.ts b/src/store/gui/index.ts index 74fa10046..248b2220c 100644 --- a/src/store/gui/index.ts +++ b/src/store/gui/index.ts @@ -165,6 +165,7 @@ export const getDefaultState = (): GuiState => { boolBedScrewsDialog: true, boolScrewsTiltAdjustDialog: true, tempchartHeight: 250, + hideUpdateWarnings: false, }, view: { blockFileUpload: false, diff --git a/src/store/gui/types.ts b/src/store/gui/types.ts index d818af047..e9a8e2bc5 100644 --- a/src/store/gui/types.ts +++ b/src/store/gui/types.ts @@ -115,6 +115,7 @@ export interface GuiState { boolBedScrewsDialog: boolean boolScrewsTiltAdjustDialog: boolean tempchartHeight: number + hideUpdateWarnings: boolean } view: { blockFileUpload: boolean diff --git a/src/store/server/types.ts b/src/store/server/types.ts index 41a0a8e7a..d11c23c88 100644 --- a/src/store/server/types.ts +++ b/src/store/server/types.ts @@ -1,5 +1,5 @@ import { ServerPowerState } from '@/store/server/power/types' -import { ServerUpdateMangerState } from '@/store/server/updateManager/types' +import { ServerUpdateManagerState } from '@/store/server/updateManager/types' import { ServerHistoryState } from '@/store/server/history/types' import { ServerTimelapseState } from '@/store/server/timelapse/types' @@ -58,7 +58,7 @@ export interface ServerState { console_cleared_this_session?: boolean power?: ServerPowerState - updateManager?: ServerUpdateMangerState + updateManager?: ServerUpdateManagerState history?: ServerHistoryState timelapse?: ServerTimelapseState } diff --git a/src/store/server/updateManager/actions.ts b/src/store/server/updateManager/actions.ts index a3b347ead..0fdf84543 100644 --- a/src/store/server/updateManager/actions.ts +++ b/src/store/server/updateManager/actions.ts @@ -1,19 +1,39 @@ import Vue from 'vue' import { ActionTree } from 'vuex' -import { ServerUpdateMangerState } from '@/store/server/updateManager/types' +import { ServerUpdateManagerState } from '@/store/server/updateManager/types' import { RootState } from '@/store/types' -export const actions: ActionTree = { +export const actions: ActionTree = { reset({ commit }) { commit('reset') }, init() { - Vue.$socket.emit('machine.update.status', {}, { action: 'server/updateManager/getStatus' }) + Vue.$socket.emit('machine.update.status', {}, { action: 'server/updateManager/onUpdateStatus' }) }, - async getStatus({ commit, dispatch }, payload) { - await commit('setStatus', payload) + async onUpdateStatus({ commit, dispatch }, payload) { + await commit('resetRepos') + + for (const key of Object.keys(payload.version_info)) { + const module = payload.version_info[key] ?? {} + const configured_type = module.configured_type ?? null + + if (['git_repo', 'zip'].includes(configured_type)) { + await commit('storeGitRepo', { ...module, name: key }) + continue + } + + if (['web', 'web_beta'].includes(configured_type)) { + await commit('storeWebRepo', { ...module, name: key }) + continue + } + + if (key === 'system') { + await commit('updateSystem', { ...module }) + } + } + await dispatch('socket/removeInitModule', 'server/updateManager/init', { root: true }) }, } diff --git a/src/store/server/updateManager/getters.ts b/src/store/server/updateManager/getters.ts index 84611b24b..d28d87263 100644 --- a/src/store/server/updateManager/getters.ts +++ b/src/store/server/updateManager/getters.ts @@ -1,48 +1,28 @@ import { GetterTree } from 'vuex' -import { ServerUpdateMangerState } from '@/store/server/updateManager/types' -import semver from 'semver' +import { ServerUpdateManagerState, ServerUpdateManagerStateGuiList } from '@/store/server/updateManager/types' +import { caseInsensitiveSort } from '@/plugins/helpers' // eslint-disable-next-line -export const getters: GetterTree = { - getUpdateableSoftwares(state) { - // eslint-disable-next-line - const output: any = {} - const sortKeys = Object.keys(state.version_info).sort((a, b) => { - if (a === 'klipper') return -1 - if (b === 'klipper') return 1 - if ('name' in state.version_info[a] && state.version_info[a].name === 'mainsail') return 1 - if ('name' in state.version_info[b] && state.version_info[b].name === 'mainsail') return -1 - if (a < b) return -1 - if (a > b) return 1 - - return 0 +export const getters: GetterTree = { + getUpdateManagerList(state): ServerUpdateManagerStateGuiList[] { + const output: ServerUpdateManagerStateGuiList[] = [] + + state.git_repos.forEach((repo) => { + output.push({ + name: repo.name, + type: 'git', + data: { ...repo }, + }) }) - for (const key of sortKeys) { - if ('system' !== key) { - output[key] = state.version_info[key] - } - } - - return output - }, - - isUpdateAvailable(state) { - const keys = Object.keys(state.version_info).filter((key: string) => key !== 'system') - - for (const key of keys) { - const versionInfo = state.version_info[key] - - if ( - 'version' in versionInfo && - 'remote_version' in versionInfo && - semver.valid(versionInfo.version) && - semver.valid(versionInfo.remote_version) && - semver.gt(versionInfo.remote_version, versionInfo.version) - ) - return true - } + state.web_repos.forEach((repo) => { + output.push({ + name: repo.name, + type: 'web', + data: { ...repo }, + }) + }) - return false + return caseInsensitiveSort(output, 'name') }, } diff --git a/src/store/server/updateManager/index.ts b/src/store/server/updateManager/index.ts index d10eab9ac..ed6cf3c1b 100644 --- a/src/store/server/updateManager/index.ts +++ b/src/store/server/updateManager/index.ts @@ -1,12 +1,21 @@ import { Module } from 'vuex' -import { ServerUpdateMangerState } from '@/store/server/updateManager/types' +import { ServerUpdateManagerState } from '@/store/server/updateManager/types' import { actions } from '@/store/server/updateManager/actions' import { mutations } from '@/store/server/updateManager/mutations' import { getters } from '@/store/server/updateManager/getters' -export const getDefaultState = (): ServerUpdateMangerState => { +export const getDefaultState = (): ServerUpdateManagerState => { return { - version_info: {}, + busy: false, + github_rate_limit: null, + github_requests_remaining: null, + github_limit_reset_time: null, + git_repos: [], + web_repos: [], + system: { + package_count: 0, + package_list: [], + }, updateResponse: { application: '', complete: true, @@ -19,7 +28,7 @@ export const getDefaultState = (): ServerUpdateMangerState => { const state = getDefaultState() // eslint-disable-next-line -export const updateManager: Module = { +export const updateManager: Module = { namespaced: true, state, getters, diff --git a/src/store/server/updateManager/mutations.ts b/src/store/server/updateManager/mutations.ts index ca939c49c..a584725ce 100644 --- a/src/store/server/updateManager/mutations.ts +++ b/src/store/server/updateManager/mutations.ts @@ -1,21 +1,42 @@ import { getDefaultState } from './index' import Vue from 'vue' import { MutationTree } from 'vuex' -import { ServerUpdateMangerState } from '@/store/server/updateManager/types' +import { ServerUpdateManagerState } from '@/store/server/updateManager/types' -export const mutations: MutationTree = { +export const mutations: MutationTree = { reset(state) { Object.assign(state, getDefaultState()) }, - setStatus(state, payload) { - if ('version_info' in payload) { - Object.entries(payload.version_info).forEach(([key, value]) => { - Vue.set(state.version_info, key, value) - }) - } + resetRepos(state) { + Vue.set(state, 'git_repos', []) + Vue.set(state, 'web_repos', []) + Vue.set(state, 'system', { + package_count: 0, + package_list: [], + }) + }, + + storeGitRepo(state, payload) { + const newGitRepos = [...state.git_repos] + newGitRepos.push({ ...payload }) + + Vue.set(state, 'git_repos', newGitRepos) + }, + + storeWebRepo(state, payload) { + const newWebRepos = [...state.web_repos] + newWebRepos.push({ ...payload }) + + Vue.set(state, 'web_repos', newWebRepos) + }, + + updateSystem(state, payload) { + const newSystem = { ...state.system } + newSystem.package_count = payload.package_count + newSystem.package_list = payload.package_list - if (!payload.busy) Vue.set(state.updateResponse, 'complete', true) + Vue.set(state, 'system', newSystem) }, addUpdateResponse(state, payload) { @@ -26,7 +47,11 @@ export const mutations: MutationTree = { Vue.set(state.updateResponse, 'complete', payload.complete) if ('complete' in payload && payload.complete) - Vue.$socket.emit('machine.update.status', { refresh: false }, { action: 'server/updateManager/getStatus' }) + Vue.$socket.emit( + 'machine.update.status', + { refresh: false }, + { action: 'server/updateManager/onUpdateStatus' } + ) state.updateResponse.messages.push({ date: new Date(), diff --git a/src/store/server/updateManager/types.ts b/src/store/server/updateManager/types.ts index ae6aee648..3d51e40a8 100644 --- a/src/store/server/updateManager/types.ts +++ b/src/store/server/updateManager/types.ts @@ -1,21 +1,27 @@ -export interface ServerUpdateMangerState { - version_info: { - // eslint-disable-next-line - [key: string]: any +export interface ServerUpdateManagerState { + busy: boolean + github_rate_limit: number | null + github_requests_remaining: number | null + github_limit_reset_time: number | null + git_repos: ServerUpdateManagerStateGitRepo[] + web_repos: ServerUpdateManagerStateGitRepo[] + system: { + package_count: number + package_list: string[] } updateResponse: { application: string complete: boolean - messages: ServerUpdateMangerStateMessages[] + messages: ServerUpdateManagerStateMessages[] } } -export interface ServerUpdateMangerStateMessages { +export interface ServerUpdateManagerStateMessages { date: Date message: string } -export interface ServerUpdateMangerStateVersionInfoGitRepoCommits { +export interface ServerUpdateManagerStateGitRepoCommit { sha: string author: string date: string @@ -24,38 +30,38 @@ export interface ServerUpdateMangerStateVersionInfoGitRepoCommits { tag: string | null } -export interface ServerUpdateMangerStateVersionInfoGitRepo { - branch: string - channel: string - commits_behind: ServerUpdateMangerStateVersionInfoGitRepoCommits[] +export interface ServerUpdateManagerStateGitRepo { + name: string configured_type: string - current_hash: string - debug_enabled: boolean - detached: boolean - detected_type: string - full_version_string: string - git_messages: string[] - is_dirty: boolean - is_valid: boolean - need_channel_update: boolean + detected_type?: string + channel?: string + need_channel_update?: boolean + pristine?: boolean owner: string - pristine: boolean - remote_alias: string - remote_hash: string - remote_version: string + branch?: string + remote_alias?: string version: string + remote_version: string + full_version_string?: string + current_hash?: string + remote_hash?: string + is_valid?: boolean + is_dirty?: boolean + detached?: boolean + debug_enabled?: boolean + commits_behind?: ServerUpdateManagerStateGitRepoCommit[] + git_messages?: string[] + warnings?: string[] + info_tags?: string[] } -export interface ServerUpdateMangerStateVersionInfoWeb { - channel: string - configured_type: string - name: string - owner: string - remote_version: string - version: string +export interface ServerUpdateManagerStateGitRepoGroupedCommits { + date: Date + commits: ServerUpdateManagerStateGitRepoCommit[] } -export interface ServerUpdateMangerStateVersionInfoSystem { - package_count: number - package_list: string[] +export interface ServerUpdateManagerStateGuiList { + name: string + type: 'git' | 'web' + data: ServerUpdateManagerStateGitRepo } diff --git a/src/store/socket/actions.ts b/src/store/socket/actions.ts index c2f399682..ca27b4e04 100644 --- a/src/store/socket/actions.ts +++ b/src/store/socket/actions.ts @@ -93,7 +93,7 @@ export const actions: ActionTree = { break case 'notify_update_refreshed': - commit('server/updateManager/setStatus', payload.params[0], { root: true }) + dispatch('server/updateManager/onUpdateStatus', payload.params[0], { root: true }) break case 'notify_history_changed':