Client - init workout detail w/ map (wip)

This commit is contained in:
Sam
2021-09-24 12:11:38 +02:00
parent e7fd6860d3
commit 695fa0d0f1
20 changed files with 1048 additions and 3 deletions

View File

@ -49,4 +49,37 @@ export const actions: ActionTree<IWorkoutsState, IRootState> &
): void {
getWorkouts(context, payload, 'USER_WORKOUTS')
},
[WORKOUTS_STORE.ACTIONS.GET_WORKOUT](
context: ActionContext<IWorkoutsState, IRootState>,
workoutId: string
): void {
context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)
context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)
authApi
.get(`workouts/${workoutId}`)
.then((res) => {
if (res.data.status === 'success') {
context.commit(
WORKOUTS_STORE.MUTATIONS.SET_WORKOUT,
res.data.data.workouts[0]
)
if (res.data.data.workouts[0].with_gpx) {
authApi.get(`workouts/${workoutId}/gpx`).then((res) => {
if (res.data.status === 'success') {
context.commit(
WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX,
res.data.data.gpx
)
}
})
}
} else {
handleError(context, null)
}
})
.catch((error) => handleError(context, error))
.finally(() =>
context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)
)
},
}

View File

@ -1,15 +1,20 @@
export enum WorkoutsActions {
GET_CALENDAR_WORKOUTS = 'GET_CALENDAR_WORKOUTS',
GET_USER_WORKOUTS = 'GET_USER_WORKOUTS',
GET_WORKOUT = 'GET_WORKOUT',
}
export enum WorkoutsGetters {
CALENDAR_WORKOUTS = 'CALENDAR_WORKOUTS',
USER_WORKOUTS = 'USER_WORKOUTS',
WORKOUT = 'WORKOUT',
}
export enum WorkoutsMutations {
EMPTY_WORKOUTS = 'EMPTY_WORKOUTS',
SET_CALENDAR_WORKOUTS = 'SET_CALENDAR_WORKOUTS',
SET_USER_WORKOUTS = 'SET_USER_WORKOUTS',
SET_WORKOUT = 'SET_WORKOUT',
SET_WORKOUT_GPX = 'SET_WORKOUT_GPX',
SET_WORKOUT_LOADING = 'SET_WORKOUT_LOADING',
}

View File

@ -15,4 +15,7 @@ export const getters: GetterTree<IWorkoutsState, IRootState> &
[WORKOUTS_STORE.GETTERS.USER_WORKOUTS]: (state: IWorkoutsState) => {
return state.user_workouts
},
[WORKOUTS_STORE.GETTERS.WORKOUT]: (state: IWorkoutsState) => {
return state.workout
},
}

View File

@ -20,6 +20,24 @@ export const mutations: MutationTree<IWorkoutsState> & TWorkoutsMutations = {
) {
state.user_workouts = workouts
},
[WORKOUTS_STORE.MUTATIONS.SET_WORKOUT](
state: IWorkoutsState,
workout: IWorkout
) {
state.workout.workout = workout
},
[WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING](
state: IWorkoutsState,
loading: boolean
) {
state.workout.loading = loading
},
[WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX](
state: IWorkoutsState,
gpx: string
) {
state.workout.gpx = gpx
},
[WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUTS](state: IWorkoutsState) {
state.calendar_workouts = []
state.user_workouts = []

View File

@ -1,6 +1,12 @@
import { IWorkoutsState } from '@/store/modules/workouts/types'
import { IWorkout } from '@/types/workouts'
export const workoutsState: IWorkoutsState = {
calendar_workouts: [],
user_workouts: [],
workout: {
gpx: '',
loading: false,
workout: <IWorkout>{},
},
}

View File

@ -7,11 +7,12 @@ import {
import { WORKOUTS_STORE } from '@/store/constants'
import { IRootState } from '@/store/modules/root/types'
import { IWorkout, IWorkoutsPayload } from '@/types/workouts'
import { IWorkout, IWorkoutsPayload, IWorkoutState } from '@/types/workouts'
export interface IWorkoutsState {
user_workouts: IWorkout[]
calendar_workouts: IWorkout[]
workout: IWorkoutState
}
export interface IWorkoutsActions {
@ -23,11 +24,16 @@ export interface IWorkoutsActions {
context: ActionContext<IWorkoutsState, IRootState>,
payload: IWorkoutsPayload
): void
[WORKOUTS_STORE.ACTIONS.GET_WORKOUT](
context: ActionContext<IWorkoutsState, IRootState>,
workoutId: string | string[]
): void
}
export interface IWorkoutsGetters {
[WORKOUTS_STORE.GETTERS.CALENDAR_WORKOUTS](state: IWorkoutsState): IWorkout[]
[WORKOUTS_STORE.GETTERS.USER_WORKOUTS](state: IWorkoutsState): IWorkout[]
[WORKOUTS_STORE.GETTERS.WORKOUT](state: IWorkoutsState): IWorkoutState
}
export type TWorkoutsMutations<S = IWorkoutsState> = {
@ -39,6 +45,12 @@ export type TWorkoutsMutations<S = IWorkoutsState> = {
state: S,
workouts: IWorkout[]
): void
[WORKOUTS_STORE.MUTATIONS.SET_WORKOUT](state: S, workout: IWorkout): void
[WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX](state: S, gpx: string): void
[WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING](
state: S,
loading: boolean
): void
[WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUTS](state: S): void
}