FIX: Disable ajv schema validation for now

Doing schema compilation in renderer requires unsafe-eval CSP, let's rather compile them at build time
This commit is contained in:
Robert Kossessa
2024-03-01 22:34:42 +01:00
parent 7e5bb6ea26
commit 746c339c16
2 changed files with 27 additions and 34 deletions

View File

@@ -1,7 +1,6 @@
import { createPinia, defineStore } from 'pinia' import { createPinia, defineStore } from 'pinia'
import Axios from 'axios' // import schema from '@renderer/data/profileSchema.json' // see below
import schema from '@renderer/data/profileSchema.json' // import Ajv from 'ajv' // see below
import Ajv from 'ajv'
import WIP from '@renderer/components/WIP.vue' import WIP from '@renderer/components/WIP.vue'
import KnobFeedbackConfig from '@renderer/components/config/knob/KnobFeedbackConfig.vue' import KnobFeedbackConfig from '@renderer/components/config/knob/KnobFeedbackConfig.vue'
import KnobLightConfig from '@renderer/components/config/knob/KnobLightConfig.vue' import KnobLightConfig from '@renderer/components/config/knob/KnobLightConfig.vue'
@@ -9,8 +8,9 @@ import KeyLightConfig from '@renderer/components/config/keys/KeyLightConfig.vue'
import KnobMappingConfig from '@renderer/components/config/knob/KnobMappingConfig.vue' import KnobMappingConfig from '@renderer/components/config/knob/KnobMappingConfig.vue'
import KeyMappingConfig from '@renderer/components/config/keys/KeyMappingConfig.vue' import KeyMappingConfig from '@renderer/components/config/keys/KeyMappingConfig.vue'
import { shallowRef } from 'vue' import { shallowRef } from 'vue'
import mockData from '@renderer/data/nanoConfig.json'
const ajv = new Ajv() // const ajv = new Ajv() // see below
export const useStore = defineStore('main', { export const useStore = defineStore('main', {
state: () => { state: () => {
@@ -131,25 +131,22 @@ export const useStore = defineStore('main', {
profile.name = newName profile.name = newName
}, },
fetchProfiles() { fetchProfiles() {
Axios.get('http://localhost:3001/categories') const categories = mockData.categories
.then((res) => {
const categories = res.data
console.log(categories) console.log(categories)
const ids = new Set() const ids = new Set()
const validate = ajv.compile(schema) // const validate = ajv.compile(schema) // see below
this.$patch({ this.$patch({
profileCategories: categories.map((category) => ({ profileCategories: categories.map((category) => ({
name: category.name, name: category.name,
profiles: category.profiles.filter((profile) => { profiles: category.profiles.filter((profile) => {
// TODO: Validation seems to be broken right now // Ajv validation requires unsafe-eval CSP, let's not do that
if (!validate(profile)) { // TODO: Remove ajv validation completely or compile schema at build time
console.error('Failed to validate profile: ' + profile.name, validate.errors) // if (!validate(profile)) {
return false // console.error('Failed to validate profile: ' + profile.name, validate.errors)
} // return false
// }
if (ids.has(profile.id)) { if (ids.has(profile.id)) {
console.error( console.error('Duplicate profile id: ' + profile.id + ' for profile: ' + profile.name)
'Duplicate profile id: ' + profile.id + ' for profile: ' + profile.name
)
return false return false
} }
ids.add(profile.id) ids.add(profile.id)
@@ -158,10 +155,6 @@ export const useStore = defineStore('main', {
})), })),
selectedProfileId: categories[0]?.profiles[0]?.id || null selectedProfileId: categories[0]?.profiles[0]?.id || null
}) })
})
.catch((err) => {
console.error(err)
})
}, },
newProfileName(originalName = '') { newProfileName(originalName = '') {
let name = originalName let name = originalName