fix: inspections bugs (#3277)

* fix: environment add bug in inspection

* chore: add 127.0.0.1 in url inspection

* chore: update browserextension inspection help url

* fix: team env not showing bug in selector

* chore: rework inspector systems to be reactive

* chore: handling tab changes gracefully

* refactor: move out url interceptor from the platform

* chore: add view function in inspector service to get views into the list

* fix: interceptors not kicking in on initial load

* fix: don't show no internet connection error unless browser deems so

* chore: fix tests

---------

Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
This commit is contained in:
Nivedin
2023-08-28 17:43:46 +05:30
committed by GitHub
parent fd162e242c
commit 4adac4af38
25 changed files with 945 additions and 588 deletions

View File

@@ -2,9 +2,11 @@ import { Service } from "dioc"
import { InspectionService, Inspector, InspectorResult } from ".."
import { getI18n } from "~/modules/i18n"
import { HoppRESTRequest } from "@hoppscotch/data"
import { markRaw, ref } from "vue"
import { markRaw } from "vue"
import IconAlertTriangle from "~icons/lucide/alert-triangle"
import { HoppRESTResponse } from "~/helpers/types/HoppRESTResponse"
import { Ref } from "vue"
import { computed } from "vue"
/**
* This inspector is responsible for inspecting the response of a request.
@@ -27,47 +29,50 @@ export class ResponseInspectorService extends Service implements Inspector {
this.inspection.registerInspector(this)
}
getInspectorFor(
req: HoppRESTRequest,
res: HoppRESTResponse | undefined
): InspectorResult[] {
const results = ref<InspectorResult[]>([])
if (!res) return results.value
getInspections(
_req: Readonly<Ref<HoppRESTRequest>>,
res: Readonly<Ref<HoppRESTResponse | null | undefined>>
) {
return computed(() => {
const results: InspectorResult[] = []
if (!res.value) return results
const hasErrors = res && (res.type !== "success" || res.statusCode !== 200)
const hasErrors =
res && (res.value.type !== "success" || res.value.statusCode !== 200)
let text
let text: string | undefined = undefined
if (res.type === "network_fail") {
text = this.t("inspections.response.network_error")
} else if (res.type === "fail") {
text = this.t("inspections.response.default_error")
} else if (res.type === "success" && res.statusCode === 404) {
text = this.t("inspections.response.404_error")
} else if (res.type === "success" && res.statusCode === 401) {
text = this.t("inspections.response.401_error")
}
if (res.value.type === "network_fail" && !navigator.onLine) {
text = this.t("inspections.response.network_error")
} else if (res.value.type === "fail") {
text = this.t("inspections.response.default_error")
} else if (res.value.type === "success" && res.value.statusCode === 404) {
text = this.t("inspections.response.404_error")
} else if (res.value.type === "success" && res.value.statusCode === 401) {
text = this.t("inspections.response.401_error")
}
if (hasErrors && text) {
results.value.push({
id: "url",
icon: markRaw(IconAlertTriangle),
text: {
type: "text",
text: text,
},
severity: 2,
isApplicable: true,
locations: {
type: "response",
},
doc: {
text: this.t("action.learn_more"),
link: "https://docs.hoppscotch.io/",
},
})
}
if (hasErrors && text) {
results.push({
id: "url",
icon: markRaw(IconAlertTriangle),
text: {
type: "text",
text: text,
},
severity: 2,
isApplicable: true,
locations: {
type: "response",
},
doc: {
text: this.t("action.learn_more"),
link: "https://docs.hoppscotch.io/",
},
})
}
return results.value
return results
})
}
}