Skip to content
Snippets Groups Projects
Commit e1b1fb87 authored by xaralis's avatar xaralis
Browse files

feat: do not allow jitsi popup to be fully dimissed

parent bc2f3912
Branches
No related tags found
No related merge requests found
Pipeline #1924 passed
import React from "react"; import React from "react";
import { loadMe } from "actions/users";
import Button from "components/Button"; import Button from "components/Button";
import { Card, CardBody } from "components/cards"; import { CardBody } from "components/cards";
import ErrorMessage from "components/ErrorMessage";
import { useActionState } from "hooks";
import { AuthStore } from "stores"; import { AuthStore } from "stores";
const JitsiInviteCard = () => { const JitsiInviteCard = () => {
const { showJitsiInvitePopup } = AuthStore.useState(); const { showJitsiInvitePopup, jitsiPopupDimissed } = AuthStore.useState();
const [loading, errorMessage] = useActionState(loadMe);
const openJitsiWindow = async () => {
const result = await loadMe.run();
if (!result.error) {
window.open(result.payload.jitsi_url);
}
AuthStore.update((state) => {
state.jitsiPopupDimissed = true;
});
};
const dismissPopup = () => {
AuthStore.update((state) => {
state.jitsiPopupDimissed = true;
});
};
if (!showJitsiInvitePopup) { if (!showJitsiInvitePopup) {
return null; return null;
} }
if (jitsiPopupDimissed) {
return ( return (
<Card className="lg:card bg-violet-300 relative" elevation={16}> <Button
color="violet-500"
className="btn--fullwidth"
onClick={openJitsiWindow}
loading={loading}
icon="ico--jitsi"
>
Připojit se k Jitsi
</Button>
);
}
return (
<div className="lg:card lg:elevation-16 bg-violet-300 relative container-padding--zero md:container-padding--auto">
<i className="ico--jitsi text-9xl mr-2 text-violet-500 absolute right-0 top-0 opacity-25 z-0" /> <i className="ico--jitsi text-9xl mr-2 text-violet-500 absolute right-0 top-0 opacity-25 z-0" />
<CardBody className="text-white relative z-10"> <CardBody className="p-4 lg:p-8 text-white relative z-10">
<div className="flex items-center justify-between mb-4"> <div className="flex items-center justify-between mb-4">
<h2 className="head-heavy-xs"> <h2 className="head-heavy-xs">
<span>Pozvánka do Jitsi</span> <span>Pozvánka do Jitsi</span>
</h2> </h2>
<button type="button"> <button type="button" onClick={dismissPopup}>
<i className="ico--cross"></i> <i className="ico--cross"></i>
</button> </button>
</div> </div>
{errorMessage && (
<ErrorMessage>
Při načítání URL Jitsi kanálu došlo k problému: {errorMessage}.
</ErrorMessage>
)}
<p className="leading-snug text-sm mb-4"> <p className="leading-snug text-sm mb-4">
Někdo tě pozval do <strong>chráněného Jitsi kanálu</strong>{" "} Někdo tě pozval do <strong>chráněného Jitsi kanálu</strong>{" "}
celeostátního fóra. Ke kanálu se připojíš kliknutím na tlačítko níže. celeostátního fóra. Ke kanálu se připojíš kliknutím na tlačítko níže.
</p> </p>
<Button color="violet-500" className="btn--fullwidth"> <Button
Otevřít Jitsi kanál color="violet-500"
className="btn--fullwidth"
onClick={openJitsiWindow}
loading={loading}
>
Připojit se k Jitsi
</Button> </Button>
</CardBody> </CardBody>
</Card> </div>
); );
}; };
......
...@@ -160,11 +160,7 @@ const Home = () => { ...@@ -160,11 +160,7 @@ const Home = () => {
Bod č. {programEntry.number}: {programEntry.title} Bod č. {programEntry.number}: {programEntry.title}
</h1> </h1>
{displayActions && ( {displayActions && (
<DropdownMenu <DropdownMenu right triggerSize="lg" className="pl-4 pt-1 lg:pt-5">
right
triggerSize="lg"
className="pl-4 pt-1 lg:pt-5"
>
<DropdownMenuItem <DropdownMenuItem
onClick={() => setShowProgramEditModal(true)} onClick={() => setShowProgramEditModal(true)}
icon="ico--pencil" icon="ico--pencil"
...@@ -201,7 +197,6 @@ const Home = () => { ...@@ -201,7 +197,6 @@ const Home = () => {
)} )}
</div> </div>
<section className="cf2021__video"> <section className="cf2021__video">
<div className="container-padding--zero md:container-padding--auto"> <div className="container-padding--zero md:container-padding--auto">
{streamUrl && ( {streamUrl && (
<div className="iframe-container"> <div className="iframe-container">
......
...@@ -11,7 +11,11 @@ import { ...@@ -11,7 +11,11 @@ import {
handlePostRanked, handlePostRanked,
} from "./posts"; } from "./posts";
import { handleProgramEntryChanged } from "./program"; import { handleProgramEntryChanged } from "./program";
import { handleUserBanned, handleUserUnbanned } from "./users"; import {
handleUserBanned,
handleUserStatus,
handleUserUnbanned,
} from "./users";
export const handlers = { export const handlers = {
announcement_changed: handleAnnouncementChanged, announcement_changed: handleAnnouncementChanged,
...@@ -24,5 +28,6 @@ export const handlers = { ...@@ -24,5 +28,6 @@ export const handlers = {
program_entry_changed: handleProgramEntryChanged, program_entry_changed: handleProgramEntryChanged,
user_banned: handleUserBanned, user_banned: handleUserBanned,
user_unbanned: handleUserUnbanned, user_unbanned: handleUserUnbanned,
user_status: handleUserStatus,
online_users_updated: handleOnlineUsersUpdated, online_users_updated: handleOnlineUsersUpdated,
}; };
import has from "lodash/has";
import { AuthStore, PostStore } from "stores"; import { AuthStore, PostStore } from "stores";
export const handleUserBanned = (payload) => { export const handleUserBanned = (payload) => {
...@@ -31,3 +33,11 @@ export const handleUserUnbanned = (payload) => { ...@@ -31,3 +33,11 @@ export const handleUserUnbanned = (payload) => {
}); });
}); });
}; };
export const handleUserStatus = (payload) => {
AuthStore.update((state) => {
if (has(payload, "jitsi_allowed")) {
state.showJitsiInvitePopup = payload.jitsi_allowed;
}
});
};
...@@ -50,7 +50,7 @@ declare namespace CF2021 { ...@@ -50,7 +50,7 @@ declare namespace CF2021 {
secret?: string; secret?: string;
}; };
showJitsiInvitePopup: boolean; showJitsiInvitePopup: boolean;
jitsiInviteToken?: string; jitsiPopupDimissed: boolean;
} }
export type AuthStorePayload = export type AuthStorePayload =
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment