fix: issues with global environment writes

This commit is contained in:
Andrew Bastin
2021-08-18 09:36:27 +05:30
parent f312ed32be
commit 6af42e5e08
4 changed files with 38 additions and 29 deletions

View File

@@ -101,9 +101,11 @@
<script lang="ts"> <script lang="ts">
import clone from "lodash/clone" import clone from "lodash/clone"
import { defineComponent, PropType } from "@nuxtjs/composition-api" import { computed, defineComponent, PropType } from "@nuxtjs/composition-api"
import { import {
Environment, Environment,
getEnviroment,
getGlobalVariables,
setGlobalEnvVariables, setGlobalEnvVariables,
updateEnvironment, updateEnvironment,
} from "~/newstore/environments" } from "~/newstore/environments"
@@ -111,15 +113,29 @@ import {
export default defineComponent({ export default defineComponent({
props: { props: {
show: Boolean, show: Boolean,
editingEnvironment: {
type: Object as PropType<Environment | null>,
default: null,
},
editingEnvironmentIndex: { editingEnvironmentIndex: {
type: [Number, String] as PropType<number | "global">, type: [Number, String] as PropType<number | "global" | null>,
default: null, default: null,
}, },
}, },
setup(props) {
const workingEnv = computed(() => {
if (props.editingEnvironmentIndex === null) return null
if (props.editingEnvironmentIndex === "global") {
return {
name: "Global",
variables: getGlobalVariables(),
} as Environment
} else {
return getEnviroment(props.editingEnvironmentIndex)
}
})
return {
workingEnv,
}
},
data() { data() {
return { return {
name: null as string | null, name: null as string | null,
@@ -128,13 +144,9 @@ export default defineComponent({
} }
}, },
watch: { watch: {
editingEnvironment() {
this.name = this.editingEnvironment?.name ?? null
this.vars = clone(this.editingEnvironment?.variables ?? [])
},
show() { show() {
this.name = this.editingEnvironment?.name ?? null this.name = this.workingEnv?.name ?? null
this.vars = clone(this.editingEnvironment?.variables ?? []) this.vars = clone(this.workingEnv?.variables ?? [])
}, },
}, },
methods: { methods: {
@@ -170,7 +182,7 @@ export default defineComponent({
if (this.editingEnvironmentIndex === "global") if (this.editingEnvironmentIndex === "global")
setGlobalEnvVariables(environmentUpdated.variables) setGlobalEnvVariables(environmentUpdated.variables)
else updateEnvironment(this.editingEnvironmentIndex, environmentUpdated) else updateEnvironment(this.editingEnvironmentIndex!, environmentUpdated)
this.hideModal() this.hideModal()
}, },
hideModal() { hideModal() {

View File

@@ -67,7 +67,6 @@
/> />
<EnvironmentsEdit <EnvironmentsEdit
:show="showModalEdit" :show="showModalEdit"
:editing-environment="editingEnvironment"
:editing-environment-index="editingEnvironmentIndex" :editing-environment-index="editingEnvironmentIndex"
@hide-modal="displayModalEdit(false)" @hide-modal="displayModalEdit(false)"
/> />
@@ -80,14 +79,14 @@
environment-index="global" environment-index="global"
:environment="globalEnvironment" :environment="globalEnvironment"
class="border-b border-dashed border-dividerLight" class="border-b border-dashed border-dividerLight"
@edit-environment="editEnvironment(globalEnvironment, 'global')" @edit-environment="editEnvironment('global')"
/> />
<EnvironmentsEnvironment <EnvironmentsEnvironment
v-for="(environment, index) in environments" v-for="(environment, index) in environments"
:key="`environment-${index}`" :key="`environment-${index}`"
:environment-index="index" :environment-index="index"
:environment="environment" :environment="environment"
@edit-environment="editEnvironment(environment, index)" @edit-environment="editEnvironment(index)"
/> />
</div> </div>
<div <div
@@ -107,26 +106,23 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api" import { computed, defineComponent } from "@nuxtjs/composition-api"
import { useReadonlyStream, useStream } from "~/helpers/utils/composables" import { useReadonlyStream, useStream } from "~/helpers/utils/composables"
import { import {
environments$, environments$,
setCurrentEnvironment, setCurrentEnvironment,
selectedEnvIndex$, selectedEnvIndex$,
Environment,
globalEnv$, globalEnv$,
} from "~/newstore/environments" } from "~/newstore/environments"
export default defineComponent({ export default defineComponent({
setup() { setup() {
const globalEnv = useReadonlyStream(globalEnv$, []) const globalEnv = useReadonlyStream(globalEnv$, [])
const globalEnvName = {
const globalEnvironment = computed(() => ({
name: "Global", name: "Global",
}
const globalEnvVariables = {
variables: globalEnv.value, variables: globalEnv.value,
} }))
const globalEnvironment = Object.assign(globalEnvName, globalEnvVariables)
return { return {
environments: useReadonlyStream(environments$, []), environments: useReadonlyStream(environments$, []),
@@ -143,8 +139,7 @@ export default defineComponent({
showModalImportExport: false, showModalImportExport: false,
showModalAdd: false, showModalAdd: false,
showModalEdit: false, showModalEdit: false,
editingEnvironment: undefined as Environment | undefined, editingEnvironmentIndex: undefined as number | "global" | undefined,
editingEnvironmentIndex: undefined as number | undefined,
} }
}, },
methods: { methods: {
@@ -159,13 +154,11 @@ export default defineComponent({
displayModalImportExport(shouldDisplay: boolean) { displayModalImportExport(shouldDisplay: boolean) {
this.showModalImportExport = shouldDisplay this.showModalImportExport = shouldDisplay
}, },
editEnvironment(environment: Environment, environmentIndex: number) { editEnvironment(environmentIndex: number | "global") {
this.$data.editingEnvironment = environment
this.$data.editingEnvironmentIndex = environmentIndex this.$data.editingEnvironmentIndex = environmentIndex
this.displayModalEdit(true) this.displayModalEdit(true)
}, },
resetSelectedData() { resetSelectedData() {
this.$data.editingEnvironment = undefined
this.$data.editingEnvironmentIndex = undefined this.$data.editingEnvironmentIndex = undefined
}, },
}, },

View File

@@ -476,3 +476,7 @@ export function updateEnvironmentVariable(
}, },
}) })
} }
export function getEnviroment(index: number) {
return environmentsStore.value.environments[index]
}

View File

@@ -187,7 +187,7 @@ function setupGlobalEnvsPersistence() {
setGlobalEnvVariables(globals) setGlobalEnvVariables(globals)
globalEnv$.subscribe((vars) => { globalEnv$.subscribe((vars) => {
window.localStorage.setItem("globalEnvs", JSON.stringify(vars)) window.localStorage.setItem("globalEnv", JSON.stringify(vars))
}) })
} }