Skip to content

Commit

Permalink
Merge pull request #19 from Ithanil/add_skip_picked_users
Browse files Browse the repository at this point in the history
feat: add new checkbox to choose if already picked users should be skipped
  • Loading branch information
antobinary authored Nov 7, 2024
2 parents 4ccddb0 + b198a66 commit 51d722c
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 1 deletion.
4 changes: 4 additions & 0 deletions src/components/modal/component.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ export function PickUserModal(props: PickUserModalProps) {
setFilterOutPresenter,
userFilterViewer,
setUserFilterViewer,
filterOutPickedUsers,
setFilterOutPickedUsers,
dataChannelPickedUsers,
deletionFunction,
dispatcherPickedUser,
Expand Down Expand Up @@ -72,6 +74,8 @@ export function PickUserModal(props: PickUserModalProps) {
setFilterOutPresenter,
userFilterViewer,
setUserFilterViewer,
filterOutPickedUsers,
setFilterOutPickedUsers,
deletionFunction,
handlePickRandomUser,
dataChannelPickedUsers,
Expand Down
15 changes: 15 additions & 0 deletions src/components/modal/presenter-view/component.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ export function PresenterViewComponent(props: PresenterViewComponentProps) {
setFilterOutPresenter,
userFilterViewer,
setUserFilterViewer,
filterOutPickedUsers,
setFilterOutPickedUsers,
deletionFunction,
handlePickRandomUser,
dataChannelPickedUsers,
Expand Down Expand Up @@ -83,6 +85,19 @@ export function PresenterViewComponent(props: PresenterViewComponentProps) {
/>
<span className="check-box-label">Skip Presenter</span>
</label>
<label className="check-box-label-container" htmlFor="includePickedUsers">
<input
type="checkbox"
id="includePickedUsers"
checked={!filterOutPickedUsers}
onChange={() => {
setFilterOutPickedUsers(!filterOutPickedUsers);
}}
name="options"
value="includePickedUsers"
/>
<span className="check-box-label">Include already picked users</span>
</label>
</p>
</div>
<div className="moderator-view-wrapper">
Expand Down
2 changes: 2 additions & 0 deletions src/components/modal/presenter-view/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ export interface PresenterViewComponentProps {
setFilterOutPresenter: (filter: boolean) => void;
userFilterViewer: boolean;
setUserFilterViewer: (filter: boolean) => void;
filterOutPickedUsers: boolean;
setFilterOutPickedUsers: (filter: boolean) => void;
deletionFunction: DeleteEntryFunction;
handlePickRandomUser: () => void;
dataChannelPickedUsers?: DataChannelEntryResponseType<PickedUser>[];
Expand Down
2 changes: 2 additions & 0 deletions src/components/modal/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ export interface PickUserModalProps {
setFilterOutPresenter: (filter: boolean) => void,
userFilterViewer: boolean;
setUserFilterViewer: (filter: boolean) => void;
filterOutPickedUsers: boolean,
setFilterOutPickedUsers: (filter: boolean) => void,
dataChannelPickedUsers?: DataChannelEntryResponseType<PickedUser>[];
deletionFunction: DeleteEntryFunction;
dispatcherPickedUser: PushEntryFunction;
Expand Down
7 changes: 6 additions & 1 deletion src/components/pick-random-user/component.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ function PickRandomUserPlugin({ pluginUuid: uuid }: PickRandomUserPluginProps) {
const [pickedUser, setPickedUser] = useState<PickedUser | undefined>();
const [userFilterViewer, setUserFilterViewer] = useState<boolean>(true);
const [filterOutPresenter, setFilterOutPresenter] = useState<boolean>(true);
const [filterOutPickedUsers, setFilterOutPickedUsers] = useState<boolean>(true);
const pluginApi: PluginApi = BbbPluginSdk.getPluginApi(uuid);
const currentUserInfo = pluginApi.useCurrentUser();
const { data: currentUser } = currentUserInfo;
Expand Down Expand Up @@ -49,14 +50,15 @@ function PickRandomUserPlugin({ pluginUuid: uuid }: PickRandomUserPluginProps) {
if (modalInformation) {
setFilterOutPresenter(modalInformation.skipPresenter);
setUserFilterViewer(modalInformation.skipModerators);
setFilterOutPickedUsers(!modalInformation.includePickedUsers);
}
}, [modalInformationFromPresenter]);

const usersToBePicked: UsersMoreInformationGraphqlResponse = {
user: allUsers?.user.filter((user) => {
let roleFilter = true;
if (userFilterViewer) roleFilter = user.role === Role.VIEWER;
if (pickedUserFromDataChannel.data) {
if (filterOutPickedUsers && pickedUserFromDataChannel.data) {
return roleFilter && pickedUserFromDataChannel
.data.findIndex(
(u) => u?.payloadJson?.userId === user?.userId,
Expand All @@ -83,6 +85,7 @@ function PickRandomUserPlugin({ pluginUuid: uuid }: PickRandomUserPluginProps) {
dispatchModalInformationFromPresenter({
skipModerators: userFilterViewer,
skipPresenter: filterOutPresenter,
includePickedUsers: !filterOutPickedUsers,
});
pushPickedUser(null);
}
Expand Down Expand Up @@ -124,6 +127,8 @@ function PickRandomUserPlugin({ pluginUuid: uuid }: PickRandomUserPluginProps) {
setFilterOutPresenter,
userFilterViewer,
setUserFilterViewer,
filterOutPickedUsers,
setFilterOutPickedUsers,
dataChannelPickedUsers: pickedUserFromDataChannel.data,
dispatcherPickedUser: pushPickedUser,
deletionFunction: deletePickedUser,
Expand Down
1 change: 1 addition & 0 deletions src/components/pick-random-user/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export interface UsersMoreInformationGraphqlResponse {
export interface ModalInformationFromPresenter {
skipModerators: boolean;
skipPresenter: boolean;
includePickedUsers: boolean;
}

export interface DataChannelArrayMessages <T> {
Expand Down

0 comments on commit 51d722c

Please sign in to comment.