You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
import axios from 'axios'
|
|
import {useToken, useStore, useConfig, useSaveTokenType, useSessionToken} from '~/store'
|
|
const $save_token_type = useSaveTokenType()
|
|
let $token
|
|
let loading_active
|
|
const post = axios.create({
|
|
method: 'POST'
|
|
})
|
|
post.interceptors.request.use(config => {
|
|
if ($save_token_type.value === 'local') {
|
|
$token = useToken()
|
|
} else {
|
|
$token = useSessionToken()
|
|
}
|
|
config.headers['Authorization'] = 'Bearer ' + $token.value
|
|
return config
|
|
}, error => Promise.reject(error))
|
|
post.interceptors.response.use(response => {
|
|
return (response.status === 200) ? response : Promise.reject('[ERROR] response.status: ' + response.status)
|
|
}, error => Promise.reject(error))
|
|
|
|
const $config = useConfig()
|
|
export const $post = async (request, loading = false) => {
|
|
const $store = useStore()
|
|
if (loading) {
|
|
$store.loading++
|
|
if ($store.loading === 1) window.$loading().open()
|
|
}
|
|
const response = await post(request).catch((e) => {
|
|
window.$message().error($config.value.api.error_message)
|
|
})
|
|
if (loading) {
|
|
$store.loading--
|
|
if ($store.loading === 0) window.$loading().close()
|
|
}
|
|
return !!response ? response.data : false
|
|
}
|