Client - refactor types

This commit is contained in:
Sam 2021-08-21 18:36:44 +02:00
parent f60847cc5f
commit db9ea49998
19 changed files with 81 additions and 84 deletions

View File

@ -20,7 +20,7 @@
import NavBar from '@/components/NavBar.vue' import NavBar from '@/components/NavBar.vue'
import NoConfig from '@/components/NoConfig.vue' import NoConfig from '@/components/NoConfig.vue'
import { ROOT_STORE } from '@/store/constants' import { ROOT_STORE } from '@/store/constants'
import { IAppConfig } from '@/store/modules/root/interfaces' import { IAppConfig } from '@/types/application'
import { useStore } from '@/use/useStore' import { useStore } from '@/use/useStore'
export default defineComponent({ export default defineComponent({

View File

@ -20,8 +20,7 @@
<script lang="ts"> <script lang="ts">
import { PropType, defineComponent, ref } from 'vue' import { PropType, defineComponent, ref } from 'vue'
import { IDropdownOption } from '@/interfaces' import { IDropdownOption, TDropdownOptions } from '@/types/forms'
import { TDropdownOptions } from '@/types'
export default defineComponent({ export default defineComponent({
name: 'Dropdown', name: 'Dropdown',

View File

@ -28,7 +28,7 @@
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import UserStatCard from '@/components/Dashboard/UserStatCard.vue' import UserStatCard from '@/components/Dashboard/UserStatCard.vue'
import { IAuthUserProfile } from '@/store/modules/user/interfaces' import { IAuthUserProfile } from '@/types/user'
export default defineComponent({ export default defineComponent({
name: 'UserStats', name: 'UserStats',

View File

@ -78,9 +78,9 @@
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import Dropdown from '@/components/Common/Dropdown.vue' import Dropdown from '@/components/Common/Dropdown.vue'
import { IDropdownOption } from '@/interfaces'
import { ROOT_STORE, USER_STORE } from '@/store/constants' import { ROOT_STORE, USER_STORE } from '@/store/constants'
import { IAuthUserProfile } from '@/store/modules/user/interfaces' import { IDropdownOption } from '@/types/forms'
import { IAuthUserProfile } from '@/types/user'
import { useStore } from '@/use/useStore' import { useStore } from '@/use/useStore'
import { capitalize, getApiUrl } from '@/utils' import { capitalize, getApiUrl } from '@/utils'

View File

@ -64,10 +64,10 @@
import AlertMessage from '@/components/Common/AlertMessage.vue' import AlertMessage from '@/components/Common/AlertMessage.vue'
import ErrorMessage from '@/components/Common/ErrorMessage.vue' import ErrorMessage from '@/components/Common/ErrorMessage.vue'
import { IFormData } from '@/interfaces'
import router from '@/router' import router from '@/router'
import { ROOT_STORE, USER_STORE } from '@/store/constants' import { ROOT_STORE, USER_STORE } from '@/store/constants'
import { IAppConfig } from '@/store/modules/root/interfaces' import { IAppConfig } from '@/types/application'
import { ILoginRegisterFormData } from '@/types/user'
import { useStore } from '@/use/useStore' import { useStore } from '@/use/useStore'
export default defineComponent({ export default defineComponent({
@ -83,7 +83,7 @@
}, },
}, },
setup(props) { setup(props) {
const formData: IFormData = reactive({ const formData: ILoginRegisterFormData = reactive({
username: '', username: '',
email: '', email: '',
password: '', password: '',

View File

@ -1,11 +0,0 @@
export interface IDropdownOption {
value: string
label: string
}
export interface IFormData {
username: string
email: string
password: string
password_conf: string
}

View File

@ -1,28 +1,7 @@
import { ActionContext } from 'vuex' import { ActionContext } from 'vuex'
import { ROOT_STORE } from '@/store/constants' import { ROOT_STORE } from '@/store/constants'
import { IAppConfig, IApplication } from '@/types/application'
export interface IAppStatistics {
sports: number
uploads_dir_size: number
users: number
workouts: number
}
export interface IAppConfig {
federation_enabled: boolean
gpx_limit_import: number | null
is_registration_enabled: boolean
map_attribution: string
max_single_file_size: number | null
max_users: number | null
max_zip_file_size: number | null
}
export interface IApplication {
statistics: IAppStatistics
config: IAppConfig
}
export interface IRootState { export interface IRootState {
root: boolean root: boolean

View File

@ -1,8 +1,9 @@
import { MutationTree } from 'vuex' import { MutationTree } from 'vuex'
import { ROOT_STORE } from '@/store/constants' import { ROOT_STORE } from '@/store/constants'
import { IAppConfig, IRootState } from '@/store/modules/root/interfaces' import { IRootState } from '@/store/modules/root/interfaces'
import { TRootMutations } from '@/store/modules/root/types' import { TRootMutations } from '@/store/modules/root/types'
import { IAppConfig } from '@/types/application'
export const mutations: MutationTree<IRootState> & TRootMutations = { export const mutations: MutationTree<IRootState> & TRootMutations = {
[ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES](state: IRootState) { [ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES](state: IRootState) {

View File

@ -1,4 +1,5 @@
import { IRootState, IApplication } from '@/store/modules/root/interfaces' import { IRootState } from '@/store/modules/root/interfaces'
import { IApplication } from '@/types/application'
export const state: IRootState = { export const state: IRootState = {
root: true, root: true,

View File

@ -5,11 +5,8 @@ import api from '@/api/defaultApi'
import router from '@/router' import router from '@/router'
import { ROOT_STORE, USER_STORE } from '@/store/constants' import { ROOT_STORE, USER_STORE } from '@/store/constants'
import { IRootState } from '@/store/modules/root/interfaces' import { IRootState } from '@/store/modules/root/interfaces'
import { import { IUserActions, IUserState } from '@/store/modules/user/interfaces'
ILoginOrRegisterData, import { ILoginOrRegisterData } from '@/types/user'
IUserActions,
IUserState,
} from '@/store/modules/user/interfaces'
import { handleError } from '@/utils' import { handleError } from '@/utils'
export const actions: ActionTree<IUserState, IRootState> & IUserActions = { export const actions: ActionTree<IUserState, IRootState> & IUserActions = {

View File

@ -1,35 +1,8 @@
import { ActionContext } from 'vuex' import { ActionContext } from 'vuex'
import { IFormData } from '@/interfaces'
import { USER_STORE } from '@/store/constants' import { USER_STORE } from '@/store/constants'
import { IRootState } from '@/store/modules/root/interfaces' import { IRootState } from '@/store/modules/root/interfaces'
import { IAuthUserProfile, ILoginOrRegisterData } from '@/types/user'
// DATA
export interface IAuthUserProfile {
admin: boolean
bio: string | null
birth_date: string | null
created_at: string
email: string
first_name: string | null
language: string | null
last_name: string | null
location: string | null
nb_sports: number
nb_workouts: number
picture: string | boolean
sports_list: number[]
timezone: string
total_distance: number
total_duration: string
username: string
weekm: boolean
}
export interface ILoginOrRegisterData {
actionType: string
formData: IFormData
}
// STORE // STORE
export interface IUserState { export interface IUserState {

View File

@ -1,8 +1,9 @@
import { MutationTree } from 'vuex' import { MutationTree } from 'vuex'
import { USER_STORE } from '@/store/constants' import { USER_STORE } from '@/store/constants'
import { IAuthUserProfile, IUserState } from '@/store/modules/user/interfaces' import { IUserState } from '@/store/modules/user/interfaces'
import { TUserMutations } from '@/store/modules/user/types' import { TUserMutations } from '@/store/modules/user/types'
import { IAuthUserProfile } from '@/types/user'
export const mutations: MutationTree<IUserState> & TUserMutations = { export const mutations: MutationTree<IUserState> & TUserMutations = {
[USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN](state: IUserState) { [USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN](state: IUserState) {

View File

@ -1,4 +1,5 @@
import { IAuthUserProfile, IUserState } from '@/store/modules/user/interfaces' import { IUserState } from '@/store/modules/user/interfaces'
import { IAuthUserProfile } from '@/types/user'
export const userState: IUserState = { export const userState: IUserState = {
authToken: null, authToken: null,

View File

@ -2,11 +2,11 @@ import { Store as VuexStore, CommitOptions, DispatchOptions } from 'vuex'
import { USER_STORE } from '@/store/constants' import { USER_STORE } from '@/store/constants'
import { import {
IAuthUserProfile,
IUserActions, IUserActions,
IUserGetters, IUserGetters,
IUserState, IUserState,
} from '@/store/modules/user/interfaces' } from '@/store/modules/user/interfaces'
import { IAuthUserProfile } from '@/types/user'
export type TUserMutations<S = IUserState> = { export type TUserMutations<S = IUserState> = {
[USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN](state: S): void [USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN](state: S): void

View File

@ -1,3 +0,0 @@
import { IDropdownOption } from '@/interfaces'
export type TDropdownOptions = IDropdownOption[]

View File

@ -0,0 +1,21 @@
export interface IAppStatistics {
sports: number
uploads_dir_size: number
users: number
workouts: number
}
export interface IAppConfig {
federation_enabled: boolean
gpx_limit_import: number | null
is_registration_enabled: boolean
map_attribution: string
max_single_file_size: number | null
max_users: number | null
max_zip_file_size: number | null
}
export interface IApplication {
statistics: IAppStatistics
config: IAppConfig
}

View File

@ -0,0 +1,6 @@
export interface IDropdownOption {
value: string
label: string
}
export type TDropdownOptions = IDropdownOption[]

View File

@ -0,0 +1,32 @@
export interface IAuthUserProfile {
admin: boolean
bio: string | null
birth_date: string | null
created_at: string
email: string
first_name: string | null
language: string | null
last_name: string | null
location: string | null
nb_sports: number
nb_workouts: number
picture: string | boolean
sports_list: number[]
timezone: string
total_distance: number
total_duration: string
username: string
weekm: boolean
}
export interface ILoginRegisterFormData {
username: string
email: string
password: string
password_conf: string
}
export interface ILoginOrRegisterData {
actionType: string
formData: ILoginRegisterFormData
}

View File

@ -11,7 +11,7 @@
import UserStats from '@/components/Dashboard/UserStats.vue' import UserStats from '@/components/Dashboard/UserStats.vue'
import { USER_STORE } from '@/store/constants' import { USER_STORE } from '@/store/constants'
import { IAuthUserProfile } from '@/store/modules/user/interfaces' import { IAuthUserProfile } from '@/types/user'
import { useStore } from '@/use/useStore' import { useStore } from '@/use/useStore'
export default defineComponent({ export default defineComponent({