mirror of https://github.com/mashirozx/sakura.git
71 lines
2.1 KiB
TypeScript
71 lines
2.1 KiB
TypeScript
import { useState } from '@/hooks'
|
|
import API from '@/api'
|
|
import camelcaseKeys from 'camelcase-keys'
|
|
import intl from '@/locales'
|
|
|
|
const messages = {
|
|
applicationPasswordsEndpointNotAvailable: intl.formatMessage({
|
|
id: 'messages.wordpress.applicationPasswordsEndpointNotAvailable',
|
|
defaultMessage:
|
|
'ApplicationPasswords is not avaliabe in your WordPress installation, please upgrade WordPress to v5.6.0 above, or enable the ApplicationPasswords feature in v5.6.0 above installation.',
|
|
}),
|
|
}
|
|
|
|
export default function auth(): object {
|
|
// @ts-ignore
|
|
const [initState, setInitState] = useState(window.InitState ?? {})
|
|
const [wpJson, setWpJson] = useState({})
|
|
const [applicationPasswordsEndpoint, setApplicationPasswordsEndpoint] = useState('')
|
|
|
|
const fetchInitState = async ({ username, password }: { [key: string]: string }) => {
|
|
await new Promise((resolve, reject) => {
|
|
API.Sakura.v1
|
|
.getInitState()
|
|
.then((res) => {
|
|
const data = camelcaseKeys(res.data)
|
|
setInitState(data)
|
|
resolve(null)
|
|
})
|
|
.catch((error) => {
|
|
console.error(error)
|
|
reject(null)
|
|
})
|
|
})
|
|
}
|
|
|
|
const fetchWpJson = async () => {
|
|
await new Promise((resolve, reject) => {
|
|
API.getWpJson()
|
|
.then((res) => {
|
|
const data = camelcaseKeys(res.data)
|
|
setWpJson(data)
|
|
if (camelcaseKeys(data?.authentication)?.applicationPasswords?.endpoints?.authorization) {
|
|
setApplicationPasswordsEndpoint(
|
|
camelcaseKeys(data.authentication).applicationPasswords.endpoints.authorization
|
|
)
|
|
} else {
|
|
console.warn(messages.applicationPasswordsEndpointNotAvailable)
|
|
setApplicationPasswordsEndpoint('')
|
|
}
|
|
|
|
resolve(null)
|
|
})
|
|
.catch((error) => {
|
|
console.log(error)
|
|
reject(error)
|
|
})
|
|
})
|
|
}
|
|
|
|
return {
|
|
initState,
|
|
setInitState,
|
|
fetchInitState,
|
|
wpJson,
|
|
setWpJson,
|
|
fetchWpJson,
|
|
applicationPasswordsEndpoint,
|
|
setApplicationPasswordsEndpoint,
|
|
}
|
|
}
|