add privated fetch

This commit is contained in:
2023-04-17 15:04:58 +05:00
parent 1a3e6f688d
commit ec701a7925
3 changed files with 2984 additions and 2361 deletions
+52 -43
View File
@@ -15,20 +15,15 @@ import { PlayerComponent } from "components/pages/Stream/components/PlayerCompon
import { PlanComponent } from "components/pages/Plan/PlanComponent"; import { PlanComponent } from "components/pages/Plan/PlanComponent";
import { useAppDispatch, useAppSelector } from "hooks/redux"; import { useAppDispatch, useAppSelector } from "hooks/redux";
import { fetchCards } from "store/reducers/ActionCreator"; import { fetchCards, fetchPrivateCards } from "store/reducers/ActionCreator";
import { cardSlice } from "store/reducers/cardSlice"; import { cardSlice } from "store/reducers/cardSlice";
import { sessionSlice } from "store/reducers/sessionSlice"; import { sessionSlice } from "store/reducers/sessionSlice";
import { languageSlice } from "store/reducers/languageSlice"; import { languageSlice } from "store/reducers/languageSlice";
import { createSession } from "store/reducers/ActionCreator"; import { createSession } from "store/reducers/ActionCreator";
import { ICards } from "models/ICards"; import { ICards } from "models/ICards";
import { closeStream, load as loadStream } from "utils/app"; import { closeStream, load as loadStream } from "utils/app";
const App: React.FC = () => { const App: React.FC = () => {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const history = useHistory(); const history = useHistory();
@@ -36,58 +31,63 @@ const App: React.FC = () => {
const { handleChangeLanguage } = languageSlice.actions; const { handleChangeLanguage } = languageSlice.actions;
const { cleanErrors } = sessionSlice.actions; const { cleanErrors } = sessionSlice.actions;
const { cards, currentCard, error } = useAppSelector(
const { cards, currentCard, error } = useAppSelector((state) => state.cardReducer); (state) => state.cardReducer
);
const { currentLang } = useAppSelector((state) => state.languageReducer); const { currentLang } = useAppSelector((state) => state.languageReducer);
const { isLoading } = useAppSelector((state) => state.sessionReducer); const { isLoading } = useAppSelector((state) => state.sessionReducer);
const query = useQuery() const query = useQuery();
const langQuery = query.get('lang') const langQuery = query.get("lang");
const langArray = ['en', 'ru'] const langArray = ["en", "ru"];
const browserLanguage = window.navigator.language const browserLanguage = window.navigator.language;
const handleBrowserLanguage = () => { const handleBrowserLanguage = () => {
return langArray.includes(browserLanguage) return langArray.includes(browserLanguage);
} };
const handleCookiesLanguage = () => { const handleCookiesLanguage = () => {
const language = cookies.get("i18next") const language = cookies.get("i18next");
return language return language;
} };
useEffect(() => { useEffect(() => {
if (langArray.includes(langQuery as string)) { if (langArray.includes(langQuery as string)) {
dispatch(handleChangeLanguage(langQuery as string)); dispatch(handleChangeLanguage(langQuery as string));
return return;
} else if (handleCookiesLanguage()) {
const languageCookies = handleCookiesLanguage();
dispatch(handleChangeLanguage(languageCookies as string));
return;
} }
else if (handleCookiesLanguage()) { let isSupported = handleBrowserLanguage();
const languageCookies = handleCookiesLanguage() dispatch(handleChangeLanguage(isSupported ? browserLanguage : "en"));
dispatch(handleChangeLanguage(languageCookies as string)) }, []);
return
}
let isSupported = handleBrowserLanguage()
dispatch(handleChangeLanguage(isSupported ? browserLanguage : 'en'));
}, [])
const handleConnect = (title: string) => { const handleConnect = (title: string) => {
dispatch(createSession(title)).unwrap().then((res) => { dispatch(createSession(title))
history.push(`/stream/${res.session_id}`); .unwrap()
}).catch((res) => { .then((res) => {
alert(res); history.push(`/stream/${res.session_id}`);
history.push("/"); })
}) .catch((res) => {
alert(res);
history.push("/");
});
}; };
useEffect(() => { useEffect(() => {
if (currentLang) { if (currentLang) {
dispatch(fetchCards(currentLang)) const key = new URLSearchParams(history.location.search).get("key");
if (key) {
dispatch(fetchPrivateCards(key));
} else {
dispatch(fetchCards(currentLang));
}
} }
}, [currentLang]) }, [currentLang]);
const handleCards = (card: ICards) => { const handleCards = (card: ICards) => {
dispatch(handleCurrentCard(card)); dispatch(handleCurrentCard(card));
@@ -95,9 +95,9 @@ const App: React.FC = () => {
}; };
const handleDisconnect = () => { const handleDisconnect = () => {
closeStream() closeStream();
history.push('/') history.push("/");
} };
const { t } = useTranslation(); const { t } = useTranslation();
@@ -121,7 +121,12 @@ const App: React.FC = () => {
<div className="background"> <div className="background">
<div className="popup-container"> <div className="popup-container">
<div className="content__container"> <div className="content__container">
<SessionStartComponent cleanErrors={cleanErrors} handleConnect={handleConnect} isLoading={isLoading} currentCard={currentCard}></SessionStartComponent> <SessionStartComponent
cleanErrors={cleanErrors}
handleConnect={handleConnect}
isLoading={isLoading}
currentCard={currentCard}
></SessionStartComponent>
</div> </div>
</div> </div>
</div> </div>
@@ -130,7 +135,11 @@ const App: React.FC = () => {
)} )}
</Route> </Route>
<Route exact path="/stream/:id"> <Route exact path="/stream/:id">
<PlayerComponent handleDisconnect={handleDisconnect} loadStream={loadStream} cleanErrors={cleanErrors} ></PlayerComponent> <PlayerComponent
handleDisconnect={handleDisconnect}
loadStream={loadStream}
cleanErrors={cleanErrors}
></PlayerComponent>
</Route> </Route>
<Route path="/plan"> <Route path="/plan">
<Header></Header> <Header></Header>
+34 -21
View File
@@ -1,49 +1,62 @@
import { createAsyncThunk } from "@reduxjs/toolkit"; import { createAsyncThunk } from "@reduxjs/toolkit";
import axios from 'axios'; import axios from "axios";
const instance = axios.create({ const instance = axios.create({
baseURL: 'https://a1.coord.graff.tech', baseURL: "https://a1.coord.graff.tech",
}); });
instance.defaults.headers.post['Content-Type'] = 'application/json'; instance.defaults.headers.post["Content-Type"] = "application/json";
export const fetchCards = createAsyncThunk( export const fetchCards = createAsyncThunk(
"cards/FetchAll", "cards/FetchAll",
async (language: string, thunkApi) => { async (language: string, thunkApi) => {
try { try {
const { data } = await instance.get('/title/get_for_language/', { params: { start: 0, count: 100, language: language } }); const { data } = await instance.get("/title/get_for_language/", {
params: { start: 0, count: 100, language: language },
});
return data; return data;
} catch (e: any) { } catch (e: any) {
const { response } = e const { response } = e;
if (!response) { if (!response) {
return thunkApi.rejectWithValue('Произошла ошибка, попробуйте позже'); return thunkApi.rejectWithValue("Произошла ошибка, попробуйте позже");
} else { } else {
return thunkApi.rejectWithValue(response.data.message); return thunkApi.rejectWithValue(response.data.message);
} }
} }
} }
); );
export const fetchPrivateCards = createAsyncThunk(
"cards/FetchAll",
async (key: string, thunkApi) => {
try {
const { data } = await instance.get("/title/get_private/", {
params: { key },
});
return data;
} catch (e: any) {
const { response } = e;
if (!response) {
return thunkApi.rejectWithValue("Произошла ошибка, попробуйте позже");
} else {
return thunkApi.rejectWithValue(response.data.message);
}
}
}
);
export const createSession = createAsyncThunk( export const createSession = createAsyncThunk(
"session/Create", "session/Create",
async (title: string, thunkApi) => { async (title: string, thunkApi) => {
try { try {
const { data } = await instance.post('/session/create', { title }); const { data } = await instance.post("/session/create", { title });
return data; return data;
} catch (e: any) { } catch (e: any) {
const { response } = e const { response } = e;
if (!response) { if (!response) {
return thunkApi.rejectWithValue('Произошла ошибка, попробуйте позже'); return thunkApi.rejectWithValue("Произошла ошибка, попробуйте позже");
} else { } else {
return thunkApi.rejectWithValue(response.data.message); return thunkApi.rejectWithValue(response.data.message);
} }
} }
} }
@@ -53,16 +66,16 @@ export const connectSession = createAsyncThunk(
"session/Connect", "session/Connect",
async (code: string, thunkApi) => { async (code: string, thunkApi) => {
try { try {
const { data } = await instance.get('/session/connect', { params: { session_id: code } }); const { data } = await instance.get("/session/connect", {
params: { session_id: code },
});
return data; return data;
} catch (e: any) { } catch (e: any) {
const { response } = e const { response } = e;
if (!response) { if (!response) {
return thunkApi.rejectWithValue('Произошла ошибка, попробуйте позже'); return thunkApi.rejectWithValue("Произошла ошибка, попробуйте позже");
} else { } else {
return thunkApi.rejectWithValue(response.data.message); return thunkApi.rejectWithValue(response.data.message);
} }
} }
} }
+2898 -2297
View File
File diff suppressed because it is too large Load Diff