Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
27cc486
[env/github] changed footer url link to sparklespaces (#1828)
alexxpetrov Jul 13, 2021
997eaed
fixed thread reply state reset after sending a message (#1822)
alexxpetrov Jul 13, 2021
2b5c8a1
add ability to hide full or locked tables (#1706)
yurii-lubynets Jul 13, 2021
1434160
cleanup docs a bit + fix some broken links (#1818)
0xdevalias Jul 13, 2021
a2305df
refactor VenueChat and related for performance (#1824)
0xdevalias Jul 13, 2021
22618cd
bump date fns from 2.21.1 to 2.22.1 (#1836)
alexxpetrov Jul 14, 2021
cb1acb0
render LoadingPage while we wait for the redirect to complete in Temp…
0xdevalias Jul 14, 2021
0cdcbca
Adds clickable avatars to RoomModal; Legacy refactor (#1832)
mike-lvov Jul 14, 2021
9aa7ff8
Add function that calls addAdmin() on user creation (#1829)
goran-peoski-work Jul 14, 2021
6618a59
[env/github] remove logrocket dependency (#1729)
ermiaSparkle Jul 14, 2021
357de1e
remove Zendesk dependency (#1730)
ermiaSparkle Jul 14, 2021
6675aa0
fix how short events are displayed in Schedule (#1733)
alexxpetrov Jul 14, 2021
a4d400a
fixed calendar file export organizer field (#1834)
alexxpetrov Jul 14, 2021
857edae
[env/github] remove MixPanel dependency (#1732)
ermiaSparkle Jul 14, 2021
0933b90
fix user avatar upload (#1837)
alexxpetrov Jul 14, 2021
9cdef08
Fix/add loading state for Poll voting (#1806)
yurii-lubynets Jul 14, 2021
2093acb
[env/github] refactor AgoraRTC clients from global scope to a useMemo…
dmitrii-zolotukhin Jul 14, 2021
44fb18c
Merge pull request #1839 from sparkletown/staging
mike-lvov Jul 14, 2021
3cc72b4
Merge branch 'env/github' into mike/github-deployments
mike-lvov Jul 14, 2021
90362a8
Merge pull request #1840 from sparkletown/mike/github-deployments
mike-lvov Jul 14, 2021
b2f1472
Merge branch 'env/summit-hack' into mike/github-hack-deploy
mike-lvov Jul 14, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add ability to hide full or locked tables (#1706)
* added hide locked tables for JazzBar template

* hide not free tables on Jazz bar

* created TableControlBar component; updated its usage

* Update ConversationSpace.tsx

* updated styles for TablesControlBar

* Update TablesControlBar.tsx

* fixed comments; updated props

* Update TablesControlBar.tsx

* updated TablesControlBar with Checkbox component

* updated tables when defaultTables are changed

* Update TablesControlBar.scss

* fixed changes from staging

* Update ConversationSpace.tsx

* added useTables hook; fixed its usage; updated TablesControlBar

* Update useTables.ts

* Update useTables.ts

* updated useTables hook; fixed its usage

* updated useAvailableTables hook; fixed its usage

* removed unused hook; updated TablesUserList usage

* Update TablesUserList.tsx

* Update TablesUserList.tsx

* Update TablesUserList.tsx

* fixed vars naming; updated tablesUserList usage

* Update TablesUserList.tsx

* Update TablesUserList.tsx

* Update TablesUserList.tsx
  • Loading branch information
yurii-lubynets authored Jul 13, 2021
commit 2b5c8a1efb9edf8a6e45a4491514c85e73dfe8ce
12 changes: 12 additions & 0 deletions src/components/molecules/TablesControlBar/TablesControlBar.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
@import "scss/constants.scss";

$control-bar-height: 40px;

.TablesControlBar {
height: $control-bar-height;
margin-top: $spacing--md;

&__checkbox {
justify-content: start;
}
}
31 changes: 31 additions & 0 deletions src/components/molecules/TablesControlBar/TablesControlBar.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import React from "react";
import classNames from "classnames";

import { Checkbox } from "components/atoms/Checkbox";

import "./TablesControlBar.scss";

export interface TablesControlBarProps {
showOnlyAvailableTables: boolean;
onToggleAvailableTables: () => void;
containerClassName?: string;
}

export const TablesControlBar: React.FC<TablesControlBarProps> = ({
showOnlyAvailableTables,
onToggleAvailableTables,
containerClassName,
}) => {
const containerClasses = classNames("TablesControlBar", containerClassName);

return (
<div className={containerClasses}>
<Checkbox
checked={showOnlyAvailableTables}
onChange={onToggleAvailableTables}
label="Hide full/locked tables"
containerClassName="TablesControlBar__checkbox"
/>
</div>
);
};
1 change: 1 addition & 0 deletions src/components/molecules/TablesControlBar/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { TablesControlBar } from "./TablesControlBar";
64 changes: 46 additions & 18 deletions src/components/molecules/TablesUserList/TablesUserList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { User } from "types/User";
import { experienceSelector } from "utils/selectors";
import { isTruthy } from "utils/types";
import { getUserExperience } from "utils/user";
import { WithId } from "utils/id";

import { useSelector } from "hooks/useSelector";
import { useShowHide } from "hooks/useShowHide";
Expand Down Expand Up @@ -60,7 +61,8 @@ export interface TablesUserListProps {
venueName: string;
setSeatedAtTable: (value: string) => void;
seatedAtTable: string;
customTables?: Table[];
customTables: Table[];
showOnlyAvailableTables?: boolean;
TableComponent: React.FC<TableComponentPropsType>;
joinMessage: boolean;
leaveText?: string;
Expand All @@ -71,6 +73,7 @@ export const TablesUserList: React.FC<TablesUserListProps> = ({
setSeatedAtTable,
seatedAtTable,
customTables,
showOnlyAvailableTables = false,
TableComponent,
joinMessage,
}) => {
Expand Down Expand Up @@ -130,19 +133,41 @@ export const TablesUserList: React.FC<TablesUserListProps> = ({
[recentVenueUsers, user, venueName, videoRoom]
);

const tableLocked = useCallback(
(table: string) => {
const areUsersAtTable = recentVenueUsers.some(
(user: User) => getUserExperience(venueName)(user)?.table === table
);
const usersAtTableReducer = useCallback(
(obj: Record<string, WithId<User>[]>, table: Table) => ({
...obj,
[table.reference]: recentVenueUsers.filter(
(user: User) =>
getUserExperience(venueName)(user)?.table === table.reference
),
}),
[recentVenueUsers, venueName]
);

const usersSeatedAtTables = useMemo(
() => tables.reduce(usersAtTableReducer, {}),
[tables, usersAtTableReducer]
);

const isFullTable = useCallback(
(table: Table) => {
const numberOfSeatsLeft =
table.capacity &&
table.capacity - usersSeatedAtTables[table.reference].length;
return numberOfSeatsLeft === 0;
},
[usersSeatedAtTables]
);

const tableLocked = useCallback(
(tableReference: string) => {
// Empty tables are never locked
if (!areUsersAtTable) return false;
if (!usersSeatedAtTables[tableReference].length) return false;

// Locked state is in the experience record
return isTruthy(experience?.tables?.[table]?.locked);
return isTruthy(experience?.tables?.[tableReference]?.locked);
},
[experience?.tables, recentVenueUsers, venueName]
[experience?.tables, usersSeatedAtTables]
);

const onAcceptJoinMessage = useCallback(
Expand Down Expand Up @@ -175,14 +200,8 @@ export const TablesUserList: React.FC<TablesUserListProps> = ({

const emptyTables = useMemo(
() =>
tables.filter(
(table) =>
!recentVenueUsers.some(
(user: User) =>
getUserExperience(venueName)(user)?.table === table.reference
)
),
[recentVenueUsers, tables, venueName]
tables.filter((table) => !usersSeatedAtTables[table.reference].length),
[tables, usersSeatedAtTables]
);

const canStartTable =
Expand All @@ -191,9 +210,16 @@ export const TablesUserList: React.FC<TablesUserListProps> = ({
const renderedTables = useMemo(() => {
if (isSeatedAtTable) return;

return tables.map((table: Table, index: number) => (
const tablesToShow = showOnlyAvailableTables
? tables.filter(
(table) => !(isFullTable(table) || tableLocked(table.reference))
)
: tables;

return tablesToShow.map((table: Table, index: number) => (
<TableComponent
key={table.reference}
// @debt provide usersAtTables instead of (experienceName + users) for better perfomance
experienceName={venueName}
users={recentVenueUsers}
table={table}
Expand All @@ -210,6 +236,8 @@ export const TablesUserList: React.FC<TablesUserListProps> = ({
recentVenueUsers,
tableLocked,
tables,
showOnlyAvailableTables,
isFullTable,
venueName,
]);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,12 @@
margin: 10px 70px;
}

.ControlBar__container {
margin: $spacing--md 40px 0 auto;
padding-right: 40px;
width: max-content;
}

.seated-area {
border: 0px solid white;
display: flex;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { WithId } from "utils/id";

import { useRecentVenueUsers } from "hooks/users";
import { useExperiences } from "hooks/useExperiences";
import { useShowHide } from "hooks/useShowHide";
import { useRelatedVenues } from "hooks/useRelatedVenues";

import { InformationLeftColumn } from "components/organisms/InformationLeftColumn";
Expand All @@ -20,6 +21,7 @@ import TableComponent from "components/molecules/TableComponent";
import TableHeader from "components/molecules/TableHeader";
import { UserList } from "components/molecules/UserList";
import { TablesUserList } from "components/molecules/TablesUserList";
import { TablesControlBar } from "components/molecules/TablesControlBar";

import { BackButton } from "components/atoms/BackButton";

Expand All @@ -40,6 +42,11 @@ export const ConversationSpace: React.FC<ConversationSpaceProps> = ({

const { recentVenueUsers } = useRecentVenueUsers({ venueName: venue?.name });

const {
isShown: showOnlyAvailableTables,
toggle: toggleTablesVisibility,
} = useShowHide();

const [seatedAtTable, setSeatedAtTable] = useState("");

useExperiences(venue?.name);
Expand Down Expand Up @@ -113,6 +120,13 @@ export const ConversationSpace: React.FC<ConversationSpaceProps> = ({
/>
</div>
)}
{!seatedAtTable && (
<TablesControlBar
containerClassName="ControlBar__container"
onToggleAvailableTables={toggleTablesVisibility}
showOnlyAvailableTables={showOnlyAvailableTables}
/>
)}
</div>
</div>
<div className="seated-area">
Expand All @@ -123,6 +137,7 @@ export const ConversationSpace: React.FC<ConversationSpaceProps> = ({
TableComponent={TableComponent}
joinMessage={venue.hideVideo === false}
customTables={tables}
showOnlyAvailableTables={showOnlyAvailableTables}
/>
</div>
<UserList
Expand Down
4 changes: 4 additions & 0 deletions src/components/templates/Jazzbar/JazzTab/JazzTab.scss
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,10 @@
}
}
}

.ControlBar__container {
width: 100%;
}
}

&--tableview {
Expand Down
14 changes: 14 additions & 0 deletions src/components/templates/Jazzbar/JazzTab/JazzTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import { ReactionsBar } from "components/molecules/ReactionsBar";
// NOTE: This functionality will probably be returned in the nearest future.
// import CallOutMessageForm from "components/molecules/CallOutMessageForm/CallOutMessageForm";
import TableHeader from "components/molecules/TableHeader";
import { TablesControlBar } from "components/molecules/TablesControlBar";
import { UserList } from "components/molecules/UserList";
import { TablesUserList } from "components/molecules/TablesUserList";

Expand All @@ -53,6 +54,11 @@ interface JazzProps {
const Jazz: React.FC<JazzProps> = ({ setUserList, venue }) => {
const { recentVenueUsers } = useRecentVenueUsers({ venueName: venue.name });

const {
isShown: showOnlyAvailableTables,
toggle: toggleTablesVisibility,
} = useShowHide();

const { parentVenue } = useRelatedVenues({ currentVenueId: venue.id });

const parentVenueId = parentVenue?.id;
Expand Down Expand Up @@ -203,6 +209,13 @@ const Jazz: React.FC<JazzProps> = ({ setUserList, venue }) => {
)} */}
</div>
)}
{!seatedAtTable && (
<TablesControlBar
containerClassName="ControlBar__container"
onToggleAvailableTables={toggleTablesVisibility}
showOnlyAvailableTables={showOnlyAvailableTables}
/>
)}
</>
)}
</div>
Expand All @@ -222,6 +235,7 @@ const Jazz: React.FC<JazzProps> = ({ setUserList, venue }) => {
TableComponent={JazzBarTableComponent}
joinMessage={!venue.hideVideo ?? true}
customTables={jazzbarTables}
showOnlyAvailableTables={showOnlyAvailableTables}
/>
</div>
</div>
Expand Down