save task in store

This commit is contained in:
Julien Calixte
2023-04-09 10:08:16 +02:00
parent 22d29bad90
commit aa2d6a0e64
2 changed files with 27 additions and 2 deletions

View File

@@ -1,10 +1,15 @@
<script setup lang="ts"> <script setup lang="ts">
import { createUuid } from '@/shared/create-uuid' import { createUuid } from '@/shared/create-uuid'
import { computed, ref } from 'vue' import { computed, ref } from 'vue'
import { useRouter } from 'vue-router'
import { createStepFixture } from '../models/step.fixture' import { createStepFixture } from '../models/step.fixture'
import { Task } from '../models/task' import { Task } from '../models/task'
import { useTaskStore } from '../stores/useTask.store'
import StepInput from './StepInput.vue' import StepInput from './StepInput.vue'
const store = useTaskStore()
const router = useRouter()
const id = createUuid() const id = createUuid()
const title = ref('') const title = ref('')
@@ -18,7 +23,10 @@ const saveTask = () => {
task.addSteps(...steps.value) task.addSteps(...steps.value)
if (Task.validate(task)) { if (Task.validate(task)) {
return true store.saveTask(task)
router.push({
name: 'home'
})
} }
return false return false
@@ -35,7 +43,7 @@ const saveTask = () => {
<input type="text" id="title" v-model="title" /> <input type="text" id="title" v-model="title" />
</div> </div>
<StepInput v-model="steps" /> <StepInput v-model="steps" />
<pre>{{ steps }}</pre> <button type="submit">save task</button>
</form> </form>
</div> </div>
</template> </template>

View File

@@ -0,0 +1,17 @@
import { defineStore } from 'pinia'
import type { Taskable } from '../interfaces/taskable'
interface State {
tasks: Taskable[]
}
export const useTaskStore = defineStore('task-store', {
state: (): State => ({
tasks: []
}),
actions: {
saveTask(task: Taskable) {
this.tasks.push(task)
}
}
})