Code styling changes

This commit is contained in:
2023-07-13 18:38:31 +03:00
parent 9437c44054
commit 7b0ccc525c
33 changed files with 358 additions and 387 deletions

View File

@ -1,15 +1,15 @@
import { useEffect, useRef, useState } from "react"
import { useEffect, useRef, useState } from 'react'
import { API_URL } from "../../config"
import { isLiteralUnion } from "../../utils/types"
import { handleHTTPErrors } from "../../utils"
import { API_URL } from '../../config'
import { isLiteralUnion } from '../../utils/types'
import { handleHTTPErrors } from '../../utils'
const addErrors = ["Не удалось опубликовать объявление", 'Неверный ответ от сервера', 'Неизвестная ошибка'] as const
const addErrors = ['Не удалось опубликовать объявление', 'Неверный ответ от сервера', 'Неизвестная ошибка'] as const
type AddError = typeof addErrors[number]
const isAddError = (obj: unknown): obj is AddError => isLiteralUnion(obj, addErrors)
const buttonStates = ["Опубликовать", "Загрузка...", "Опубликовано", "Отменено"] as const
const buttonStates = ['Опубликовать', 'Загрузка...', 'Опубликовано', 'Отменено'] as const
type ButtonState = typeof buttonStates[number] | AddError
type AddResponse = {
@ -21,26 +21,26 @@ const isAddResponse = (obj: unknown): obj is AddResponse =>
const useAddAnnouncement = () => {
const [status, setStatus] = useState<ButtonState>("Опубликовать")
const [status, setStatus] = useState<ButtonState>('Опубликовать')
const timerIdRef = useRef<number>()
const abortControllerRef = useRef<AbortController>()
const doAdd = async (formData: FormData) => {
if (status === "Загрузка...") {
if (status === 'Загрузка...') {
abortControllerRef.current?.abort()
setStatus("Отменено")
timerIdRef.current = setTimeout(() => setStatus("Опубликовать"), 3000)
setStatus('Отменено')
timerIdRef.current = setTimeout(() => setStatus('Опубликовать'), 3000)
return
}
setStatus("Загрузка...")
setStatus('Загрузка...')
const abortController = new AbortController()
abortControllerRef.current = abortController
try {
const res = await fetch(API_URL + "/announcement", {
const res = await fetch(API_URL + '/announcement', {
method: 'PUT',
body: formData,
signal: abortController.signal
@ -53,13 +53,13 @@ const useAddAnnouncement = () => {
if (!isAddResponse(data)) throw new Error('Неверный ответ от сервера')
if (!data.Answer) {
throw new Error("Не удалось опубликовать объявление")
throw new Error('Не удалось опубликовать объявление')
}
setStatus("Опубликовано")
setStatus('Опубликовано')
} catch (err) {
setStatus(isAddError(err) ? err : "Неизвестная ошибка")
timerIdRef.current = setTimeout(() => setStatus("Опубликовать"), 10000)
setStatus(isAddError(err) ? err : 'Неизвестная ошибка')
timerIdRef.current = setTimeout(() => setStatus('Опубликовать'), 10000)
}
}

View File

@ -1,7 +1,8 @@
import { useState } from "react"
import { API_URL } from "../../config"
import { isConst, isObject } from "../../utils/types"
import { handleHTTPErrors } from "../../utils"
import { useState } from 'react'
import { API_URL } from '../../config'
import { isConst, isObject } from '../../utils/types'
import { handleHTTPErrors } from '../../utils'
interface AuthData {
email: string,
@ -24,11 +25,11 @@ type SignUpResponse = {
const isSignUpResponse = (obj: unknown): obj is SignUpResponse => (
isObject(obj, {
"Success": isConst(true)
'Success': isConst(true)
}) ||
isObject(obj, {
"Success": isConst(false),
"Message": "string"
'Success': isConst(false),
'Message': 'string'
})
)
@ -38,8 +39,8 @@ interface LogInResponse {
}
const isLogInResponse = (obj: unknown): obj is LogInResponse => isObject(obj, {
"access_token": "string",
"token_type": isConst("bearer")
'access_token': 'string',
'token_type': isConst('bearer')
})
function useAuth() {
@ -51,8 +52,8 @@ function useAuth() {
if (newAccount) {
try {
const res = await fetch(API_URL + "/signup", {
method: "POST",
const res = await fetch(API_URL + '/signup', {
method: 'POST',
body: JSON.stringify(data),
headers: {
'Content-Type': 'application/json'
@ -64,7 +65,7 @@ function useAuth() {
const signupData: unknown = await res.json()
if (!isSignUpResponse(signupData)) {
throw new Error("Malformed server response")
throw new Error('Malformed server response')
}
if (signupData.Success === false) {
@ -83,7 +84,7 @@ function useAuth() {
username: data.email,
password: data.password
}).toString(), {
method: "POST",
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
@ -92,7 +93,7 @@ function useAuth() {
const logInData: unknown = await res.json()
if (!isLogInResponse(logInData)) {
throw new Error("Malformed server response")
throw new Error('Malformed server response')
}
const token = logInData.access_token
@ -111,4 +112,4 @@ function useAuth() {
return { doAuth, loading, error }
}
export default useAuth
export default useAuth

View File

@ -1,20 +1,20 @@
import { useState } from "react"
import { useNavigate } from "react-router-dom"
import { useState } from 'react'
import { useNavigate } from 'react-router-dom'
import { getToken } from "../../utils/auth"
import { API_URL } from "../../config"
import { isObject } from "../../utils/types"
import { handleHTTPErrors } from "../../utils"
import { getToken } from '../../utils/auth'
import { API_URL } from '../../config'
import { isObject } from '../../utils/types'
import { handleHTTPErrors } from '../../utils'
type BookResponse = {
Success: boolean
}
const isBookResponse = (obj: unknown): obj is BookResponse => isObject(obj, {
"Success": "boolean"
'Success': 'boolean'
})
type BookStatus = "" | "Загрузка..." | "Забронировано" | "Ошибка бронирования"
type BookStatus = '' | 'Загрузка...' | 'Забронировано' | 'Ошибка бронирования'
function useBook(id: number) {
const navigate = useNavigate()
@ -25,7 +25,7 @@ function useBook(id: number) {
const token = getToken()
if (token) {
setStatus("Загрузка...")
setStatus('Загрузка...')
try {
@ -45,24 +45,24 @@ function useBook(id: number) {
const data: unknown = await res.json()
if (!isBookResponse(data)) {
throw new Error("Malformed server response")
throw new Error('Malformed server response')
}
if (data.Success === true) {
setStatus('Забронировано')
} else {
throw new Error("Server refused to book")
throw new Error('Server refused to book')
}
}
catch (err) {
setStatus("Ошибка бронирования")
setStatus('Ошибка бронирования')
if (import.meta.env.DEV) {
console.log(err)
}
}
} else {
return navigate("/login")
return navigate('/login')
}
}

View File

@ -1,11 +1,11 @@
import { useEffect, useRef, useState } from "react"
import { useEffect, useRef, useState } from 'react'
import { handleHTTPErrors, isAborted } from '../../utils'
const useFetch = <T>(url: string, params: RequestInit | undefined, initialData: T, dataGuard: (obj: unknown) => obj is T) => {
const [data, setData] = useState(initialData)
const [loading, setLoading] = useState(true)
const [error, setError] = useState("")
const [error, setError] = useState('')
const abortControllerRef = useRef<AbortController>()
@ -25,7 +25,7 @@ const useFetch = <T>(url: string, params: RequestInit | undefined, initialData:
})
.then(data => {
if (!dataGuard(data)) {
throw new Error("Неверный ответ от сервера")
throw new Error('Неверный ответ от сервера')
}
setData(data)
@ -33,7 +33,7 @@ const useFetch = <T>(url: string, params: RequestInit | undefined, initialData:
})
.catch(err => {
if (err instanceof Error && !isAborted(err)) {
setError("Ошибка сети")
setError('Ошибка сети')
}
setLoading(false)

View File

@ -1,7 +1,7 @@
import useFetch from './useFetch'
import { API_URL } from '../../config'
import { FiltersType, filterNames } from '../../utils/filters'
import { isArrayOf, isObject } from '../../utils/types'
import { API_URL } from '../../config'
import { Category, isCategory } from '../../assets/category'
const initialAnnouncements = { list_of_announcements: [], Success: true }
@ -12,8 +12,8 @@ type AnnouncementsListResponse = {
}
const isAnnouncementsListResponse = (obj: unknown): obj is AnnouncementsListResponse => isObject(obj, {
"list_of_announcements": obj => isArrayOf<AnnouncementResponse>(obj, isAnnouncementResponse),
"Success": "boolean"
'list_of_announcements': obj => isArrayOf<AnnouncementResponse>(obj, isAnnouncementResponse),
'Success': 'boolean'
})
type AnnouncementResponse = {
@ -33,19 +33,19 @@ type AnnouncementResponse = {
}
const isAnnouncementResponse = (obj: unknown): obj is AnnouncementResponse => isObject(obj, {
"id": "number",
"user_id": "number",
"name": "string",
"category": isCategory,
"best_by": "number",
"address": "string",
"longtitude": "number",
"latitude": "number",
"description": "string",
"src": "string?",
"metro": "string",
"trashId": "number?",
"booked_by": "number"
'id': 'number',
'user_id': 'number',
'name': 'string',
'category': isCategory,
'best_by': 'number',
'address': 'string',
'longtitude': 'number',
'latitude': 'number',
'description': 'string',
'src': 'string?',
'metro': 'string',
'trashId': 'number?',
'booked_by': 'number'
})
type Announcement = {

View File

@ -1,9 +1,9 @@
import { LatLng } from "leaflet"
import { LatLng } from 'leaflet'
import { API_URL } from "../../config"
import { isArrayOf, isObject } from "../../utils/types"
import useFetch from "./useFetch"
import { isString } from "../../utils/types"
import { API_URL } from '../../config'
import { isArrayOf, isObject } from '../../utils/types'
import useFetch from './useFetch'
import { isString } from '../../utils/types'
type Trashbox = {
Lat: number,
@ -13,15 +13,15 @@ type Trashbox = {
}
const isTrashbox = (obj: unknown): obj is Trashbox => isObject(obj, {
"Lat": "number",
"Lng": "number",
"Address": "string",
"Categories": obj => isArrayOf<string>(obj, isString)
'Lat': 'number',
'Lng': 'number',
'Address': 'string',
'Categories': obj => isArrayOf<string>(obj, isString)
})
const useTrashboxes = (position: LatLng) => {
return useFetch(
API_URL + "/trashbox?" + new URLSearchParams({
API_URL + '/trashbox?' + new URLSearchParams({
lat: position.lat.toString(),
lng: position.lng.toString()
}).toString(),
@ -32,4 +32,4 @@ const useTrashboxes = (position: LatLng) => {
}
export type { Trashbox }
export default useTrashboxes
export default useTrashboxes

View File

@ -1,5 +1 @@
import useStoryDimensions from "./useStoryDimensions"
export {
useStoryDimensions,
}
export { default as useStoryDimensions } from './useStoryDimensions'

View File

@ -17,8 +17,8 @@ function useStoryDimensions(maxRatio = 16/9) {
setWindowDimensions(getWindowDimensions());
}
window.addEventListener("resize", handleResize);
return () => window.removeEventListener("resize", handleResize);
window.addEventListener('resize', handleResize);
return () => window.removeEventListener('resize', handleResize);
}, []);
const height = windowDimensions.height - 56
@ -31,4 +31,4 @@ function useStoryDimensions(maxRatio = 16/9) {
}
}
export default useStoryDimensions
export default useStoryDimensions