Skip to content

Commit

Permalink
Merge pull request #2768 from daostack/dev
Browse files Browse the repository at this point in the history
Restructure of common
  • Loading branch information
MeyerPV authored Nov 24, 2024
2 parents a66d8a5 + 70525c1 commit a111728
Show file tree
Hide file tree
Showing 41 changed files with 1,008 additions and 533 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ const CommonMember: FC<CommonMemberProps> = ({
const { isShowing, onClose, onOpen } = useModal(false);
const contextMenuRef = useRef<ContextMenuRef>(null);
const recentAssignedCircle: Circle | undefined = useSelector(
selectRecentAssignedCircle(member.userId),
selectRecentAssignedCircle(commonId, member.userId),
);

const handleContextMenu: MouseEventHandler<HTMLLIElement> = (event) => {
Expand Down
9 changes: 7 additions & 2 deletions src/pages/common/BaseCommon.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,17 @@ const BaseCommon: FC<CommonProps> = (props) => {
}, [userId]);

useEffect(() => {
dispatch(setCommonMember(commonMember || null));
dispatch(setCommonMember({ commonId, member: commonMember || null }));
onCommonMemberChange?.(commonMember || null);
}, [dispatch, commonMember]);

useEffect(() => {
dispatch(setCommonGovernance(commonData?.governance || null));
dispatch(
setCommonGovernance({
commonId,
governance: commonData?.governance || null,
}),
);
}, [dispatch, commonData?.governance]);

useEffect(() => {
Expand Down
37 changes: 23 additions & 14 deletions src/pages/common/components/ChatComponent/ChatComponent.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ import {
removeTextEditorEmptyEndLinesValues,
countTextEditorEmojiElements,
} from "@/shared/ui-kit";
import { BaseTextEditorHandles } from "@/shared/ui-kit/TextEditor/BaseTextEditor";
import { checkUncheckedItemsInTextEditorValue } from "@/shared/ui-kit/TextEditor/utils";
import { InternalLinkData, notEmpty } from "@/shared/utils";
import { getUserName, hasPermission, isMobile } from "@/shared/utils";
Expand All @@ -70,6 +71,7 @@ import {
selectInstantDiscussionMessagesOrder,
} from "@/store/states";
import { ChatContentContext, ChatContentData } from "../CommonContent/context";
import { useFeedItemContext } from "../FeedItem";
import {
ChatContent,
ChatContentRef,
Expand All @@ -87,8 +89,6 @@ import {
uploadFilesAndImages,
} from "./utils";
import styles from "./ChatComponent.module.scss";
import { BaseTextEditorHandles } from "@/shared/ui-kit/TextEditor/BaseTextEditor";
import { useFeedItemContext } from "../FeedItem";

const BASE_CHAT_INPUT_HEIGHT = 48;
const BASE_ORDER_INTERVAL = 1000;
Expand Down Expand Up @@ -259,19 +259,16 @@ export default function ChatComponent({
parseStringToTextEditorValue(),
);

const {
setIsInputFocused
} = useFeedItemContext();
const { setIsInputFocused } = useFeedItemContext();

useEffect(() => {
const isEmpty = checkIsTextEditorValueEmpty(message);
if(!isEmpty || message.length > 1) {
if (!isEmpty || message.length > 1) {
setIsInputFocused?.(true);
} else {
setIsInputFocused?.(false);
}

},[message, setIsInputFocused])
}, [message, setIsInputFocused]);

const emojiCount = useMemo(
() => countTextEditorEmojiElements(message),
Expand All @@ -294,9 +291,12 @@ export default function ChatComponent({
const optimisticDiscussionMessages = useSelector(
selectOptimisticDiscussionMessages,
);
const instantDiscussionMessagesOrder = useSelector(selectInstantDiscussionMessagesOrder);
const instantDiscussionMessagesOrder = useSelector(
selectInstantDiscussionMessagesOrder,
);

const currentChatOrder = instantDiscussionMessagesOrder.get(discussionId)?.order || 1;
const currentChatOrder =
instantDiscussionMessagesOrder.get(discussionId)?.order || 1;

const isOptimisticChat = optimisticFeedItems.has(discussionId);

Expand Down Expand Up @@ -604,7 +604,11 @@ export default function ChatComponent({

return [...prev, ...filePreviewPayload, payload];
});
dispatch(optimisticActions.setInstantDiscussionMessagesOrder({discussionId}));
dispatch(
optimisticActions.setInstantDiscussionMessagesOrder({
discussionId,
}),
);
}

if (isChatChannel) {
Expand Down Expand Up @@ -638,10 +642,15 @@ export default function ChatComponent({
userName: getUserName(user),
ownerType: DiscussionMessageOwnerType.User,
content: JSON.stringify(message),
}
},
};

dispatch(commonActions.setFeedItemUpdatedAt(payloadUpdateFeedItem));
dispatch(
commonActions.setFeedItemUpdatedAt({
...payloadUpdateFeedItem,
commonId,
}),
);
dispatch(inboxActions.setInboxItemUpdatedAt(payloadUpdateFeedItem));
document
.getElementById("feedLayoutWrapper")
Expand Down Expand Up @@ -765,7 +774,7 @@ export default function ChatComponent({
useLayoutEffect(() => {
textInputRef?.current?.clear?.();
textInputRef?.current?.focus?.();
},[discussionId]);
}, [discussionId]);

useEffect(() => {
if (isFetchedDiscussionMessages) {
Expand Down
26 changes: 12 additions & 14 deletions src/pages/common/components/CommonContent/CommonContent.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { FC, useEffect, useMemo, useState } from "react";
import { useDispatch, useSelector } from "react-redux";
import { useSelector } from "react-redux";
import { useHistory } from "react-router-dom";
import { CommonPageSettings } from "@/pages/common/types";
import { useRoutesContext } from "@/shared/contexts";
Expand All @@ -16,7 +16,7 @@ import {
} from "@/shared/models";
import { Container } from "@/shared/ui-kit";
import { getInboxPagePath } from "@/shared/utils";
import { commonActions, selectIsNewProjectCreated } from "@/store/states";
import { selectIsNewProjectCreated } from "@/store/states";
import { CommonDataProvider } from "../../providers";
import { CommonHeader } from "../CommonHeader";
import { CommonManagement } from "../CommonManagement";
Expand Down Expand Up @@ -67,7 +67,6 @@ const CommonContent: FC<CommonContentProps> = (props) => {
setIsJoinPending,
} = props;
const isTabletView = useIsTabletView();
const dispatch = useDispatch();
const history = useHistory();
const { canGoBack, goBack } = useGoBack();
const { getCommonPagePath } = useRoutesContext();
Expand All @@ -86,7 +85,9 @@ const CommonContent: FC<CommonContentProps> = (props) => {
allowedTabs,
}),
);
const isNewProjectCreated = useSelector(selectIsNewProjectCreated);

const commonId = common.id;
const isNewProjectCreated = useSelector(selectIsNewProjectCreated(commonId));
const parentCommonId = common.directParent?.commonId;
const isSubCommon = common.directParent !== null;

Expand All @@ -108,12 +109,6 @@ const CommonContent: FC<CommonContentProps> = (props) => {
}
}, [isCommonMember, common.listVisibility, history.push, goBack, canGoBack]);

useEffect(() => {
return () => {
dispatch(commonActions.resetCommon());
};
}, []);

return (
<CommonDataProvider
settings={settings}
Expand All @@ -136,7 +131,7 @@ const CommonContent: FC<CommonContentProps> = (props) => {
commonMember={commonMember}
circles={governance.circles}
isSubCommon={isSubCommon}
commonId={common.id}
commonId={commonId}
/>
<CommonSidenavLayoutPageContent
className={settings?.pageContentClassName}
Expand All @@ -145,7 +140,7 @@ const CommonContent: FC<CommonContentProps> = (props) => {
settings.renderHeaderContent()
) : !isTabletView ? (
<HeaderContent
backButtonPath={getCommonPagePath(common.id)}
backButtonPath={getCommonPagePath(commonId)}
withoutBackButton={!commonMember}
/>
) : null
Expand All @@ -168,7 +163,7 @@ const CommonContent: FC<CommonContentProps> = (props) => {
{!isTabletView && (
<Container>
<CommonManagement
commonId={common.id}
commonId={commonId}
activeTab={tab}
allowedTabs={allowedTabs}
isSubCommon={isSubCommon}
Expand Down Expand Up @@ -197,7 +192,10 @@ const CommonContent: FC<CommonContentProps> = (props) => {
</div>
</CommonSidenavLayoutPageContent>
{isGlobalDataFetched && isNewProjectCreated && parentCommonId && (
<SuccessfulProjectCreationModal parentCommonId={parentCommonId} />
<SuccessfulProjectCreationModal
commonId={commonId}
parentCommonId={parentCommonId}
/>
)}
</CommonDataProvider>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,27 @@ import styles from "./SuccessfulProjectCreationModal.module.scss";

interface SuccessfulProjectCreationModalProps {
parentCommonId: string;
commonId: string;
}

const SuccessfulProjectCreationModal: FC<
SuccessfulProjectCreationModalProps
> = (props) => {
const { parentCommonId } = props;
const { parentCommonId, commonId } = props;
const dispatch = useDispatch();
const history = useHistory();

const handleClose = () => {
dispatch(commonActions.setIsNewProjectCreated(false));
dispatch(
commonActions.setIsNewProjectCreated({ isCreated: false, commonId }),
);
history.push(getCommonPageAboutTabPath(parentCommonId));
};

const handleJumpToProject = () => {
dispatch(commonActions.setIsNewProjectCreated(false));
dispatch(
commonActions.setIsNewProjectCreated({ isCreated: false, commonId }),
);
};

return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,14 +179,10 @@ export const FeedTab: FC<FeedTabProps> = (props) => {

useEffect(() => {
return () => {
dispatch(
commonActions.getFeedItems.cancel(
"Cancel feed items fetch on feed umount",
),
);
dispatch(commonActions.resetFeedItems());
dispatch(commonActions.getFeedItems.cancel({ commonId: common.id }));
dispatch(commonActions.resetFeedItems({ commonId: common.id }));
};
}, []);
}, [common.id]);

const contextValue = useMemo(
() => ({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import React, { FC, useCallback, useEffect, useMemo } from "react";
import { useDispatch, useSelector } from "react-redux";
import { v4 as uuidv4 } from "uuid";
import { selectUser } from "@/pages/Auth/store/selectors";
import { DiscussionMessageOwnerType } from "@/shared/constants";
import {
NewDiscussionCreationFormValues,
UploadFile,
Expand All @@ -18,15 +19,18 @@ import {
TextEditorValue,
parseStringToTextEditorValue,
} from "@/shared/ui-kit/TextEditor";
import { generateFirstMessage, generateOptimisticFeedItem, getUserName } from "@/shared/utils";
import {
generateFirstMessage,
generateOptimisticFeedItem,
getUserName,
} from "@/shared/utils";
import {
optimisticActions,
selectDiscussionCreationData,
selectIsDiscussionCreationLoading,
} from "@/store/states";
import { commonActions } from "@/store/states";
import { DiscussionCreationCard, DiscussionCreationModal } from "./components";
import { DiscussionMessageOwnerType } from "@/shared/constants";

interface NewDiscussionCreationProps {
common: Common;
Expand Down Expand Up @@ -60,8 +64,12 @@ const NewDiscussionCreation: FC<NewDiscussionCreationProps> = (props) => {
onDiscussionIdChange,
} = props;
const dispatch = useDispatch();
const discussionCreationData = useSelector(selectDiscussionCreationData);
const isLoading = useSelector(selectIsDiscussionCreationLoading);

const commonId = common.id;
const discussionCreationData = useSelector(
selectDiscussionCreationData(commonId),
);
const isLoading = useSelector(selectIsDiscussionCreationLoading(commonId));
const user = useSelector(selectUser());
const userId = user?.uid;
const userCircleIds = useMemo(
Expand All @@ -71,7 +79,7 @@ const NewDiscussionCreation: FC<NewDiscussionCreationProps> = (props) => {

const handleCancel = () => {
dispatch(commonActions.setCommonAction(null));
dispatch(commonActions.setDiscussionCreationData(null));
dispatch(commonActions.setDiscussionCreationData({ data: null, commonId }));
};

const initialValues: NewDiscussionCreationFormValues = useMemo(() => {
Expand Down Expand Up @@ -118,6 +126,7 @@ const NewDiscussionCreation: FC<NewDiscussionCreationProps> = (props) => {
message: JSON.stringify(values.content),
images: values.images,
},
commonId,
}),
);
} else {
Expand All @@ -136,13 +145,15 @@ const NewDiscussionCreation: FC<NewDiscussionCreationProps> = (props) => {
ownerId: userId,
userName,
ownerType: DiscussionMessageOwnerType.System,
content: generateFirstMessage({userName, userId}),
}
content: generateFirstMessage({ userName, userId }),
},
});
dispatch(optimisticActions.setOptimisticFeedItem({
data: optimisticFeedItem,
common
}));
dispatch(
optimisticActions.setOptimisticFeedItem({
data: optimisticFeedItem,
common,
}),
);
dispatch(commonActions.setRecentStreamId(optimisticFeedItem.data.id));
dispatch(
commonActions.createDiscussion.request({
Expand All @@ -155,13 +166,14 @@ const NewDiscussionCreation: FC<NewDiscussionCreationProps> = (props) => {
images: values.images,
circleVisibility,
},
commonId,
}),
);
}

handleCancel();
},
[governanceCircles, userCircleIds, userId, common.id, edit],
[governanceCircles, userCircleIds, userId, commonId, edit],
);

useEffect(() => {
Expand All @@ -185,6 +197,7 @@ const NewDiscussionCreation: FC<NewDiscussionCreationProps> = (props) => {
isLoading={isLoading}
commonImage={commonImage}
commonName={commonName}
commonId={commonId}
edit={edit}
/>
);
Expand All @@ -199,6 +212,7 @@ const NewDiscussionCreation: FC<NewDiscussionCreationProps> = (props) => {
onCancel={handleCancel}
isLoading={isLoading}
edit={edit}
commonId={commonId}
/>
);
};
Expand Down
Loading

0 comments on commit a111728

Please sign in to comment.