add client
This commit is contained in:
parent
614ec9e059
commit
e8158eb746
@ -6,7 +6,7 @@ import BeltBlock from './BeltBlock.vue';
|
||||
import MetalPlate from './MetalPlate.vue';
|
||||
import GameHeader from './GameHeader.vue';
|
||||
import type { Action, Door, Team } from './models';
|
||||
import { apiGetTeam, encodeUTF8ToBase64, getApiUrl } from './client';
|
||||
import { apiGetGame, apiGetTeam, apiLetsgo } from './client';
|
||||
import { UnauthorizedError } from './UnauthorizedError';
|
||||
|
||||
const router = useRouter();
|
||||
@ -84,21 +84,8 @@ function addAction() {
|
||||
place.value = ""
|
||||
}
|
||||
|
||||
function letsgo(place: string) {
|
||||
console.log("letsgo to " + place)
|
||||
fetch(
|
||||
getApiUrl("/team/actions"),
|
||||
{
|
||||
method: "POST",
|
||||
headers: {
|
||||
"X-Id": encodeUTF8ToBase64(login.value),
|
||||
"X-Password": password.value
|
||||
},
|
||||
body: JSON.stringify({
|
||||
"place": place
|
||||
})
|
||||
}
|
||||
)
|
||||
async function letsgo(place: string) {
|
||||
await apiLetsgo(login.value, password.value, place)
|
||||
}
|
||||
|
||||
const scrollToBottom = async (behavior: ScrollBehavior = 'smooth'): Promise<void> => {
|
||||
@ -111,27 +98,19 @@ const scrollToBottom = async (behavior: ScrollBehavior = 'smooth'): Promise<void
|
||||
}
|
||||
};
|
||||
|
||||
function getGame() {
|
||||
async function getGame() {
|
||||
qrurl.value = location.href
|
||||
fetch(
|
||||
getApiUrl("/game")
|
||||
)
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
gameState.value = data.state
|
||||
if (data.state === "NEW") {
|
||||
gameStateText.value = "Игра ещё не началась"
|
||||
}
|
||||
if (data.state === "RUN") {
|
||||
gameStateText.value = ""
|
||||
}
|
||||
if (data.state === "STOP") {
|
||||
gameStateText.value = "Игра остановлена"
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Ошибка:', error)
|
||||
});
|
||||
const data = await apiGetGame(login.value, password.value)
|
||||
gameState.value = data.state
|
||||
if (data.state === "NEW") {
|
||||
gameStateText.value = "Игра ещё не началась"
|
||||
}
|
||||
if (data.state === "RUN") {
|
||||
gameStateText.value = ""
|
||||
}
|
||||
if (data.state === "STOP") {
|
||||
gameStateText.value = "Игра остановлена"
|
||||
}
|
||||
}
|
||||
|
||||
// Автоматическая прокрутка при изменении items
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import type { Team } from './models'
|
||||
import type { Game, Team } from './models'
|
||||
import { UnauthorizedError } from './UnauthorizedError'
|
||||
|
||||
export const apiGetTeam = async (login: string, password: string): Promise<Team> => {
|
||||
@ -23,6 +23,53 @@ export const apiGetTeam = async (login: string, password: string): Promise<Team>
|
||||
}
|
||||
}
|
||||
|
||||
export const apiLetsgo = async (login: string, password: string, place: string) => {
|
||||
try {
|
||||
const response = await fetch(getApiUrl("/team/actions"), {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"X-Id": encodeUTF8ToBase64(login),
|
||||
"X-Password": password
|
||||
},
|
||||
body: JSON.stringify({
|
||||
"place": place
|
||||
})
|
||||
})
|
||||
if (response.status === 401) {
|
||||
throw new UnauthorizedError('Ошибка авторизации')
|
||||
}
|
||||
if (!response.ok) {
|
||||
throw new Error(`http error status: ${response.status}`)
|
||||
}
|
||||
return await response.json()
|
||||
} catch (error) {
|
||||
console.error('[apiLetsgo] error:', error)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
export const apiGetGame = async (login: string, password: string): Promise<Game> => {
|
||||
try {
|
||||
const response = await fetch(getApiUrl("/game"), {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'X-Id': encodeUTF8ToBase64(login),
|
||||
'X-Password': password,
|
||||
},
|
||||
})
|
||||
if (response.status === 401) {
|
||||
throw new UnauthorizedError('Ошибка авторизации')
|
||||
}
|
||||
if (!response.ok) {
|
||||
throw new Error(`http error status: ${response.status}`)
|
||||
}
|
||||
return await response.json()
|
||||
} catch (error) {
|
||||
console.error('[apiGetGame] error:', error)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
export function getApiUrl(path: string) {
|
||||
const url = 'http://' + window.location.host.split(':')[0] + ':8090' + path
|
||||
return url
|
||||
|
||||
@ -1,3 +1,13 @@
|
||||
// Игра
|
||||
export type Game = {
|
||||
// Статус игры (NEW, RUN, STOP)
|
||||
state: string
|
||||
// Время начала игры
|
||||
startAt: string
|
||||
// Время окончания игры
|
||||
endAt: string
|
||||
}
|
||||
|
||||
// Команда
|
||||
export type Team = {
|
||||
// Название
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user