From f20fed444a797e3059bc04b73e025174433a2f05 Mon Sep 17 00:00:00 2001 From: Andrew Bastin Date: Mon, 23 Aug 2021 12:34:30 +0530 Subject: [PATCH] fix: history entries becoming undefined over reloads --- components/history/index.vue | 2 +- newstore/history.ts | 33 +++++++++++++++++++++++++-------- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/components/history/index.vue b/components/history/index.vue index ce80e6471..2cf95471f 100644 --- a/components/history/index.vue +++ b/components/history/index.vue @@ -144,7 +144,7 @@ export default defineComponent({ }) }, useHistory(entry: any) { - if (this.page === "rest") setRESTRequest(entry) + if (this.page === "rest") setRESTRequest(entry.request) }, deleteHistory(entry: any) { if (this.page === "rest") deleteRESTHistoryEntry(entry) diff --git a/newstore/history.ts b/newstore/history.ts index c776c9474..47f050dd1 100644 --- a/newstore/history.ts +++ b/newstore/history.ts @@ -8,6 +8,8 @@ import { } from "~/helpers/types/HoppRESTRequest" export type RESTHistoryEntry = { + v: number + request: HoppRESTRequest responseMeta: { @@ -20,13 +22,26 @@ export type RESTHistoryEntry = { id?: string // For when Firebase Firestore is set } +export function makeHistoryEntry( + x: Omit +): RESTHistoryEntry { + return { + v: 1, + ...x, + } +} + export function translateToNewRESTHistory(x: any): RESTHistoryEntry { + if (x.v === 1) return x + + // Legacy const request = translateToNewRequest(x) const star = x.star ?? false const duration = x.duration ?? null const statusCode = x.status ?? null const obj: RESTHistoryEntry = { + v: 1, request, star, responseMeta: { @@ -222,13 +237,15 @@ completedRESTResponse$.subscribe((res) => { if (res !== null) { if (res.type === "loading" || res.type === "network_fail") return - addRESTHistoryEntry({ - request: res.req, - responseMeta: { - duration: res.meta.responseDuration, - statusCode: res.statusCode, - }, - star: false, - }) + addRESTHistoryEntry( + makeHistoryEntry({ + request: res.req, + responseMeta: { + duration: res.meta.responseDuration, + statusCode: res.statusCode, + }, + star: false, + }) + ) } })