Repository navigation
Bug fixes - #68
Bug fixes#68
Conversation
|
Warning Rate limit exceeded@dev-rathore has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 8 minutes and 38 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (3)
WalkthroughThis pull request introduces extensive changes across various components, primarily focusing on enhancing the user interface and interaction flow for collaboration and application management. Key modifications include updating date formatting, refactoring application card interactions, simplifying navigation, and improving input handling. Notably, the Changes
Possibly related PRs
Suggested reviewers
Poem
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (3)
utils/date.ts (1)
3-10: Improve documentation with JSDoc comments.Add comprehensive JSDoc comments to explain the function's purpose, parameters, return value, and examples.
+/** + * Formats a date to a human-readable relative time string + * @param date - The date to format + * @returns A string representing the time elapsed (e.g., "2 mins ago", "3 days ago") + * @throws Will return empty string for invalid dates + * @example + * formatTimeToNow(new Date()) // "0 secs ago" + * formatTimeToNow(new Date(Date.now() - 5 * 60 * 1000)) // "5 mins ago" + */ export const formatTimeToNow = (date: DateArg<Date>): string => {components/collaboration-card/card-components/CollaborationHeader.tsx (1)
Line range hint
1-115: Consider extracting shared header component logic.There's significant code duplication between
CollaborationHeaderandContractHeader. Consider creating a shared base component.Example implementation:
// components/shared/EntityHeader.tsx interface EntityHeaderProps { title: string; subtitle: string; image: string; timePosted?: number; onOpenBottomSheet: (id?: string) => void; imageShape?: 'circle' | 'square'; id?: string; } const EntityHeader: FC<EntityHeaderProps> = ({ title, subtitle, image, timePosted, onOpenBottomSheet, imageShape = 'circle', id, }) => { // ... shared implementation }; // Usage in CollaborationHeader const CollaborationHeader: FC<CollaborationHeaderProps> = (props) => ( <EntityHeader title={props.collabName} subtitle={props.brandName} image={props.brandImage} timePosted={props.timePosted} onOpenBottomSheet={() => props.onOpenBottomSheet(props.collabId)} imageShape="square" id={props.collabId} /> );hooks/request/use-applications.tsx (1)
45-50: Consider adding index for application status fieldThe query filters applications by status. Adding a Firestore index for the status field would optimize query performance.
Create an index for the 'status' field in the applications subcollection.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (16)
components/card/collaboration-details/application-card.tsx(3 hunks)components/card/profile-modal/application-card.tsx(4 hunks)components/collaboration-card/card-components/CollaborationHeader.tsx(2 hunks)components/collaboration/CollaborationCard.tsx(2 hunks)components/collaboration/collaboration-details/ApplicationsTabContent.tsx(2 hunks)components/collaboration/collaboration-details/OverviewTabContent.tsx(2 hunks)components/collaborations/index.tsx(1 hunks)components/contract-card/ContractHeader.tsx(2 hunks)components/contracts/ContractDetailContent.tsx(3 hunks)components/create-collaboration/index.tsx(1 hunks)components/create-collaboration/screen-one.tsx(2 hunks)components/create-collaboration/screen-three.tsx(5 hunks)components/create-collaboration/screen-two.tsx(3 hunks)components/proposals/Applications.tsx(8 hunks)hooks/request/use-applications.tsx(4 hunks)utils/date.ts(1 hunks)
🔇 Additional comments (21)
components/collaborations/index.tsx (1)
26-26: LGTM! Style simplification looks good.The consolidation of padding values into a single
paddingVerticalproperty improves style maintainability.components/contract-card/ContractHeader.tsx (1)
97-97: LGTM! Date formatting update is correctly implemented.The migration to
formatTimeToNowis properly handled.components/collaboration-card/card-components/CollaborationHeader.tsx (1)
98-98: LGTM! Date formatting update is correctly implemented.The migration to
formatTimeToNowis properly handled.components/card/collaboration-details/application-card.tsx (1)
50-89:⚠️ Potential issueReview nested Pressable wrapper with interactive elements
The Pressable wrapper around CardActions contains another interactive Button component. This nesting of interactive elements could lead to event propagation issues and unexpected behavior on different platforms.
Run this script to check for similar patterns in the codebase:
Consider restructuring to avoid nested interactive elements:
- <Pressable - onPress={profileModalAction} - > - <CardActions + <> + <CardActions metrics={{ followers: data.influencer.backend?.followers || 0, reach: data.influencer.backend?.reach || 0, rating: data.influencer.backend?.rating || 0, }} action={ <Button mode="outlined" size="small" onPress={() => { if (data.application.status === 'pending') { acceptApplication(); } }} > <FontAwesomeIcon color={Colors(theme).primary} icon={faCheck} size={12} style={{ marginRight: 6, marginTop: -2, }} /> {data.application.status === 'pending' ? 'Accept' : 'Accepted'} </Button> } /> - </Pressable> + </>components/collaboration/CollaborationCard.tsx (1)
70-70: Verify date formatting consistency across the appThe change from relative time to formatted time might affect user experience. Let's verify the consistency of date formatting across the application.
✅ Verification successful
Date formatting is consistent across the application ✅
The codebase follows a clear pattern where relative time (
formatTimeToNow) is used for post timestamps and general dates, while specific date formatting (toLocaleDateString) is used for timelines and schedules. The change inCollaborationCard.tsxmaintains this consistency.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Search for date formatting usage across the codebase rg "formatDistanceToNow|formatTimeToNow|toLocaleDateString|new Date\(" -A 2Length of output: 6739
components/contracts/ContractDetailContent.tsx (1)
24-24: LGTM! Date formatting standardization.The change aligns with the standardization of date formatting across the application.
Let's verify the consistent usage of the new date formatting function:
Also applies to: 89-89
✅ Verification successful
Consistent date formatting implementation verified
The codebase consistently uses the
formatTimeToNowwrapper function from@/utils/datefor all relative time formatting needs. No direct usage of date-fns functions was found in components, ensuring standardized date formatting across the application.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Check for any remaining instances of formatDistanceToNow rg "formatDistanceToNow" -A 2Length of output: 259
Script:
#!/bin/bash # Check the implementation of date utility functions cat utils/date.ts # Check for any direct imports from date-fns rg "from ['\"]date-fns['\"]" --type ts --type tsx # Check usage of formatTimeToNow rg "formatTimeToNow" --type ts --type tsxLength of output: 1657
Script:
#!/bin/bash # Check for any direct imports from date-fns rg "from ['\"]date-fns['\"]" # Check usage of formatTimeToNow rg "formatTimeToNow"Length of output: 1506
components/collaboration/collaboration-details/ApplicationsTabContent.tsx (2)
121-124: LGTM! Improved UI interaction flow.The addition of
bottomSheetActionenhances the user interaction flow by properly managing the action modal visibility.
201-209: LGTM! Enhanced async operation handling.The update to make
onRejectandonAcceptasync ensures that the bottom sheet modal only closes after the application handling is complete, preventing potential race conditions.components/create-collaboration/screen-two.tsx (1)
66-71: Verify the impact of reducing maximum influencer count.The maximum number of influencers has been reduced from 100+ to 10+. This change could affect:
- Existing collaborations with more than 10 influencers
- Users trying to create new collaborations with large influencer requirements
Let's check for existing collaborations that might be affected:
Also applies to: 151-152, 182-182
✅ Verification successful
UI-only change with no data impact
This change only affects how the number of influencers is displayed in the UI, showing '>10' instead of the actual number for values ≥11. The modification:
- Doesn't limit the actual number of influencers that can be stored
- Won't affect existing collaborations with >10 influencers
- Is purely presentational with no backend impact
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Find collaborations with more than 10 influencers ast-grep --pattern 'numberOfInfluencersNeeded: $_' -A 1Length of output: 57
Script:
#!/bin/bash # Search for numberOfInfluencersNeeded in various contexts rg "numberOfInfluencersNeeded" -A 2 -B 2 # Search for specific number patterns in collaboration context rg "(10|100).+(influencer|collaboration)" -A 2 -B 2 # Look for validation logic ast-grep --pattern 'const validation = $_' # Find configuration files fd -e json -e ts -e js "config|constants"Length of output: 4491
components/create-collaboration/screen-one.tsx (1)
131-132: LGTM! Enhanced text input experience.The addition of multiline support and increased height for text inputs improves the user experience by:
- Allowing longer collaboration names with 2 lines
- Providing more space for detailed descriptions with 4 lines and minimum height
Also applies to: 148-152
components/create-collaboration/index.tsx (1)
220-225: LGTM! Navigation enhancement with data refresh trigger.The navigation logic has been improved to include a
fetchNewCollaborationsparameter, which triggers a data refresh in theApplicationscomponent. This ensures that the collaborations list is up-to-date after creating a new collaboration.components/proposals/Applications.tsx (4)
7-7: LGTM! Clean import organization.The imports are well-organized and properly scoped to the new functionality being added.
Also applies to: 27-29, 52-52
126-130: LGTM! Effective data refresh implementation.The effect hook correctly handles the
fetchNewCollaborationsparameter to refresh the proposals list when navigating back from creating a new collaboration.
240-240: LGTM! UI spacing adjustment.The increased bottom padding (64) provides adequate space for the new floating button.
270-302: LGTM! Enhanced UX with floating action button.The floating "Create Collaboration" button provides a consistent and accessible way to create new collaborations, following material design principles.
components/create-collaboration/screen-three.tsx (5)
52-53: LGTM! Improved questions initialization.The initialization logic ensures there's always at least one empty question field available.
104-109: LGTM! Robust question management.The logic ensures that the questions list never becomes empty, maintaining a good user experience.
330-332: LGTM! Enhanced URL input handling.The URL input field now has appropriate keyboard type and text content settings for better user experience.
373-373: LGTM! Consistent questions reset.The reset logic aligns with the initialization logic, ensuring there's always at least one empty question.
435-435: LGTM! Clear button labeling.The button text "Add Question" (singular) better reflects the action of adding one question at a time.
components/collaboration/collaboration-details/OverviewTabContent.tsx (1)
35-35: LGTM! Consistent time formatting.The component now uses the new
formatTimeToNowutility, ensuring consistent time formatting across the application.Also applies to: 150-150
There was a problem hiding this comment.
Actionable comments posted: 5
🔭 Outside diff range comments (3)
components/profile/index.tsx (3)
Line range hint
102-111: Add cleanup for useEffect hook.The useEffect hook should clean up resources when the component unmounts.
useEffect(() => { + let isSubscribed = true; if (!manager) { console.error("Manager object is null"); return; } - setName(manager.name || ""); - fetchRole(); - setEmail(manager.email || ""); + if (isSubscribed) { + setName(manager.name || ""); + fetchRole(); + setEmail(manager.email || ""); + } + return () => { + isSubscribed = false; + }; }, [manager]);
Line range hint
51-77: Improve error handling in image upload process.The image upload process needs better error handling and validation.
if (imageToUpload) { const path = `managers/${manager.id}/profile-image`; + if (!imageToUpload.startsWith('data:image/') && !imageToUpload.startsWith('file://')) { + Toaster.error('Invalid image format'); + return; + } try { const storageRef = ref(StorageApp, path); const blobImage = await fetch(imageToUpload).then((res) => res.blob()); + if (!blobImage || blobImage.size === 0) { + throw new Error('Invalid image data'); + } await uploadBytes(storageRef, blobImage); updatedImageURL = await getDownloadURL(storageRef); } catch (error) { - console.error("Error during profile update:", error); + Toaster.error('Failed to upload image'); + return; } }
Line range hint
165-171: Prevent multiple form submissions.The save button and profile update function should be disabled during loading.
<Pressable - onPress={updateProfile} + onPress={loading ? undefined : updateProfile} + style={[ + styles.saveButton, + { opacity: loading ? 0.5 : 1 } + ]} >
♻️ Duplicate comments (1)
components/card/collaboration-details/application-card.tsx (1)
61-67:⚠️ Potential issueAdd error handling for acceptApplication.
The acceptApplication call still lacks error handling, which could lead to a poor user experience if the operation fails.
Add error handling:
onPress={() => { if (data.application.status === 'pending') { - acceptApplication(); + try { + acceptApplication(); + } catch (error) { + console.error('Failed to accept application:', error); + // Show error toast/feedback to user + } } }}
🧹 Nitpick comments (12)
components/channel/empty-message-state.tsx (2)
1-3: Consider standardizing import paths and adding type imports.Add the React import and consider using absolute imports consistently across the codebase:
+import * as React from 'react'; -import { View } from "../theme/Themed"; +import { View } from "@/components/theme/Themed";
10-14: Extract inline styles to a separate styles object.Consider moving the inline styles to a separate styles object for better maintainability and reusability.
+const styles = { + container: { + flex: 1, + justifyContent: "center", + alignItems: "center", + }, +}; - style={{ - flex: 1, - justifyContent: "center", - alignItems: "center", - }} + style={styles.container}components/channel/channel-list.tsx (1)
16-16: Consider using absolute imports consistently.For consistency with other imports in the file, consider using absolute imports:
-import EmptyMessageState from "./empty-message-state"; +import EmptyMessageState from "@/components/channel/empty-message-state";components/ui/card/secondary/card-description.tsx (1)
12-14: Consider memoizing styles to prevent unnecessary recalculations.While the theme implementation is correct, the
stylesFnis called on every render. Consider memoizing the styles usinguseMemoto prevent unnecessary style recalculations.const theme = useTheme(); - const styles = stylesFn(theme); + const styles = React.useMemo(() => stylesFn(theme), [theme]);components/ui/card/secondary/card-footer.tsx (1)
17-19: Consider memoizing styles for better performance.Similar to other components, memoize the styles to prevent unnecessary recalculations on each render.
const theme = useTheme(); - const styles = stylesFn(theme); + const styles = React.useMemo(() => stylesFn(theme), [theme]);components/ui/card/secondary/card-actions.tsx (1)
23-25: Memoize styles and consider extracting metric components.The component could benefit from both style memoization and structural optimization.
- Memoize styles:
const theme = useTheme(); - const styles = stylesFn(theme); + const styles = React.useMemo(() => stylesFn(theme), [theme]);
- Consider extracting the metric rendering into a separate component for better maintainability and potential performance optimization through component memoization.
components/card/collaboration-details/invitation-card.tsx (2)
51-51: Extract platform-specific dimensions to constants.The inline platform-specific height values (560 and 288) should be extracted to named constants for better maintainability and clarity.
+ const CAROUSEL_HEIGHTS = { + web: 560, + native: 288, + }; + <Carousel - containerHeight={data.profile?.attachments?.length === 1 ? (Platform.OS === 'web' ? 560 : 288) : undefined} + containerHeight={data.profile?.attachments?.length === 1 + ? (Platform.OS === 'web' ? CAROUSEL_HEIGHTS.web : CAROUSEL_HEIGHTS.native) + : undefined}
51-54: Consider extracting Carousel configuration logic.The conditional logic for carousel height and data transformation could be extracted to make the JSX cleaner and more maintainable.
+ const getCarouselHeight = (attachments?: any[]) => { + if (attachments?.length === 1) { + return Platform.OS === 'web' ? CAROUSEL_HEIGHTS.web : CAROUSEL_HEIGHTS.native; + } + return undefined; + }; + + const getCarouselData = (attachments?: any[]) => { + return attachments?.map((attachment) => processRawAttachment(attachment)) || []; + }; + <Carousel - containerHeight={data.profile?.attachments?.length === 1 ? (Platform.OS === 'web' ? 560 : 288) : undefined} - data={data.profile?.attachments?.map((attachment) => processRawAttachment(attachment)) || []} + containerHeight={getCarouselHeight(data.profile?.attachments)} + data={getCarouselData(data.profile?.attachments)} theme={theme} />components/ui/card/secondary/card-header.tsx (1)
64-64: Consolidate redundant transparent background declarations.Multiple elements have the same transparent background color. This can be consolidated into a single style.
const stylesFn = (theme: Theme) => StyleSheet.create({ + transparentBg: { + backgroundColor: Colors(theme).transparent, + }, header: { flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', paddingHorizontal: 16, - backgroundColor: Colors(theme).transparent, + ...transparentBg, }, // ... other styles }); // Then in the component: <View style={{ gap: 12, flexDirection: 'row', alignItems: 'center', - backgroundColor: Colors(theme).transparent, + ...styles.transparentBg, }} >Also applies to: 88-88, 113-113, 119-119
components/create-collaboration/screen-layout.tsx (1)
Line range hint
38-44: Consider additional Android keyboard adjustments.While the keyboard behavior is platform-specific, Android might need additional adjustments for optimal UX.
<KeyboardAvoidingView behavior={Platform.OS === "ios" ? "padding" : "height"} + keyboardVerticalOffset={Platform.OS === "ios" ? 0 : 20} style={{ flex: 1, paddingTop: 8, }} >components/card/collaboration-details/application-card.tsx (2)
47-47: Document the platform-specific height calculation.The conditional height calculation for attachments is complex and platform-specific. Consider adding a comment explaining the reasoning behind these magic numbers.
+ // Height is adjusted for web (560px) and mobile (288px) when there's a single attachment containerHeight={data.application?.attachments?.length === 1 ? (Platform.OS === 'web' ? 560 : 288) : undefined}
51-90: Reconsider the Pressable wrapper scope.Making the entire card content clickable might lead to accidental interactions, especially since it contains interactive elements like buttons. Consider limiting the Pressable to specific sections that need interaction.
- <Pressable onPress={profileModalAction}> - <CardActions> + <CardActions> {/* ... */} - </CardActions> + </CardActions> + <Pressable onPress={profileModalAction}> <CardDescription text={data.application.message} /> - <CardFooter /> </Pressable> + <CardFooter />
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (14)
app/(main)/(screens)/(menu)/brand-profile.tsx(4 hunks)app/(main)/(screens)/(onboarding)/onboarding-your-brand.tsx(3 hunks)components/card/collaboration-details/application-card.tsx(3 hunks)components/card/collaboration-details/invitation-card.tsx(2 hunks)components/channel/channel-list.tsx(2 hunks)components/channel/channel.tsx(0 hunks)components/channel/empty-message-state.tsx(1 hunks)components/create-collaboration/screen-layout.tsx(3 hunks)components/profile/index.tsx(1 hunks)components/ui/card/secondary/card-actions.tsx(3 hunks)components/ui/card/secondary/card-description.tsx(2 hunks)components/ui/card/secondary/card-footer.tsx(3 hunks)components/ui/card/secondary/card-header.tsx(3 hunks)utils/date.ts(1 hunks)
💤 Files with no reviewable changes (1)
- components/channel/channel.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
- utils/date.ts
🔇 Additional comments (7)
app/(main)/(screens)/(onboarding)/onboarding-your-brand.tsx (1)
11-11: Verify the cloud service migration strategyThe code is using both Firebase Firestore and AWS services. This hybrid approach might indicate an incomplete migration or create maintenance challenges in the future.
Let's verify the migration status:
components/channel/empty-message-state.tsx (1)
16-22: Consider externalizing static text for internationalization.The static text in the EmptyState component should be externalized to support multiple languages.
Let's check if the project uses any i18n solution:
components/ui/card/secondary/card-description.tsx (1)
Line range hint
24-33: LGTM! Clean theme implementation.The conversion from static styles to theme-aware styles is well implemented. The use of
Colors(theme).transparentmaintains consistency with the theming system.components/ui/card/secondary/card-footer.tsx (1)
30-40: Review multiple transparent background declarations.The component has multiple elements with
Colors(theme).transparent. Consider if all these transparent backgrounds are necessary, as they might be redundant if the parent already has a transparent background.Could you verify if all three transparent backgrounds (container, footer, and metric) are required for your use case? Sometimes, inheritance from the parent component might be sufficient.
components/ui/card/secondary/card-actions.tsx (1)
59-77: Review transparent background cascade.Similar to the footer component, there are multiple elements with transparent backgrounds. Consider if all these transparent backgrounds are necessary or if they could inherit from a parent component.
Could you verify if the transparent backgrounds are required at all three levels (container, metrics, metric)?
components/card/collaboration-details/application-card.tsx (2)
18-18: LGTM! Interface changes align with the new component structure.The prop interface has been simplified by consolidating action handlers and introducing the new date formatting utility.
Also applies to: 21-24
27-32: LGTM! Props destructuring is clean and type-safe.The component structure properly reflects the interface changes.
* pushed new contract screens * fixed member container * Redesign application and invitation cards (#51) * redesign application and invitation cards * added keyboard view * fixes * added underline in file attachment * ui-feedback * added work * minor changes * Repurpose messaging screen (#53) * repurpose messaging screen * accept application changes * added phases * invitationId as influencerId * fixed signup signin * fix: bug on brand creation * minor changes * minor changes * minor changes * minor changes * pushed a minor change * fix: accept application (#56) * fix: accept application * fix: managerId * ui fix * Redirection fixes (#59) * fix: initial redirections * scheme change * router navigate fix * router navigate fix * Redirection changes (#61) * redirection changes * redirection changes * image component and other fixes * No brands protected screen implementation (#64) * added no brands protected screen and shimmer ui * shimmer ui update * added loading indicator * brand protected screen bug fix * shared-uis conflict * shared-uis conflict * fix: build * pushed ui fixes * social button change * Bug fixes (#68) * bug fixes * bug fixes * message screen fix * pushed ui fix * pushed icons * Bug fixes (#69) * bug fixes * render html, location address, and rating section * refactored code * refactor * refactor * location address changes * messages icons changes --------- Co-authored-by: Manan Sharma <112090668+Manan-Sharma-5@users.noreply.github.com>
* pushed new contract screens * fixed member container * Redesign application and invitation cards (#51) * redesign application and invitation cards * added keyboard view * fixes * added underline in file attachment * ui-feedback * added work * minor changes * Repurpose messaging screen (#53) * repurpose messaging screen * accept application changes * added phases * invitationId as influencerId * fixed signup signin * fix: bug on brand creation * minor changes * minor changes * minor changes * minor changes * pushed a minor change * fix: accept application (#56) * fix: accept application * fix: managerId * ui fix * Redirection fixes (#59) * fix: initial redirections * scheme change * router navigate fix * router navigate fix * Redirection changes (#61) * redirection changes * redirection changes * image component and other fixes * No brands protected screen implementation (#64) * added no brands protected screen and shimmer ui * shimmer ui update * added loading indicator * brand protected screen bug fix * shared-uis conflict * shared-uis conflict * fix: build * pushed ui fixes * social button change * Bug fixes (#68) * bug fixes * bug fixes * message screen fix * pushed ui fix * pushed icons * Bug fixes (#69) * bug fixes * render html, location address, and rating section * refactored code * refactor * refactor * location address changes * messages icons changes * pushed new icons * pushed brand modal fixes * pushed changes * Icons changes (#73) * icons changes * icons changes * email verification * changed icon * pushed slight change to dev for a slight route change * merge conflict * refactor code (#75) --------- Co-authored-by: Manan Sharma <112090668+Manan-Sharma-5@users.noreply.github.com>
* pushed new contract screens * fixed member container * Redesign application and invitation cards (#51) * redesign application and invitation cards * added keyboard view * fixes * added underline in file attachment * ui-feedback * added work * minor changes * Repurpose messaging screen (#53) * repurpose messaging screen * accept application changes * added phases * invitationId as influencerId * fixed signup signin * fix: bug on brand creation * minor changes * minor changes * minor changes * minor changes * pushed a minor change * fix: accept application (#56) * fix: accept application * fix: managerId * ui fix * Redirection fixes (#59) * fix: initial redirections * scheme change * router navigate fix * router navigate fix * Redirection changes (#61) * redirection changes * redirection changes * image component and other fixes * No brands protected screen implementation (#64) * added no brands protected screen and shimmer ui * shimmer ui update * added loading indicator * brand protected screen bug fix * shared-uis conflict * shared-uis conflict * fix: build * pushed ui fixes * social button change * Bug fixes (#68) * bug fixes * bug fixes * message screen fix * pushed ui fix * pushed icons * Bug fixes (#69) * bug fixes * render html, location address, and rating section * refactored code * refactor * refactor * location address changes * messages icons changes * pushed new icons * pushed brand modal fixes * pushed changes * Icons changes (#73) * icons changes * icons changes * email verification * changed icon * pushed slight change to dev for a slight route change * merge conflict * refactor code (#75) * feedbacks resolved (#77) * pushed changes * Feedbacks resolved (#79) * feedbacks resolved * max width refactor * removed unused imports * reusable component fix --------- Co-authored-by: Manan Sharma <112090668+Manan-Sharma-5@users.noreply.github.com>
Summary by CodeRabbit
New Features
EmptyMessageStatecomponent for better handling of empty states.Bug Fixes
Refactor
formatTimeToNowutility function.UI/UX Improvements