Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F33324860
D11823.1768859559.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
6 KB
Referenced Files
None
Subscribers
None
D11823.1768859559.diff
View Options
diff --git a/lib/hooks/invite-links.js b/lib/hooks/invite-links.js
--- a/lib/hooks/invite-links.js
+++ b/lib/hooks/invite-links.js
@@ -129,7 +129,26 @@
joinThreadActionTypes,
);
-export type LinkStatus = 'invalid' | 'valid' | 'timed_out';
+export type LinkStatus = 'invalid' | 'valid' | 'timed_out' | 'already_joined';
+
+const inviteLinkTexts: {
+ +[LinkStatus]: { +header: string, +message: string },
+} = {
+ invalid: {
+ header: 'Invite invalid',
+ message:
+ 'This invite link may be expired. Please try again with another invite' +
+ ' link.',
+ },
+ ['timed_out']: {
+ header: 'Timeout',
+ message: 'The request has timed out.',
+ },
+ ['already_joined']: {
+ header: 'Already a member',
+ message: 'You are already a member of this community.',
+ },
+};
type AcceptInviteLinkParams = {
+verificationResponse: InviteLinkVerificationResponse,
@@ -152,12 +171,6 @@
setLinkStatus,
} = params;
- React.useEffect(() => {
- if (verificationResponse.status === 'already_joined') {
- onFinish();
- }
- }, [onFinish, verificationResponse.status]);
-
const dispatch = useDispatch();
const callJoinThread = useJoinThread();
@@ -318,4 +331,4 @@
);
}
-export { useInviteLinksActions, useAcceptInviteLink };
+export { useInviteLinksActions, useAcceptInviteLink, inviteLinkTexts };
diff --git a/native/navigation/deep-links-context-provider.react.js b/native/navigation/deep-links-context-provider.react.js
--- a/native/navigation/deep-links-context-provider.react.js
+++ b/native/navigation/deep-links-context-provider.react.js
@@ -146,9 +146,6 @@
validateLinkPromise,
);
result = await validateLinkPromise;
- if (result.status === 'already_joined') {
- return;
- }
} catch (e) {
console.log(e);
result = {
diff --git a/native/navigation/invite-link-modal.react.js b/native/navigation/invite-link-modal.react.js
--- a/native/navigation/invite-link-modal.react.js
+++ b/native/navigation/invite-link-modal.react.js
@@ -3,7 +3,10 @@
import * as React from 'react';
import { View, Text, ActivityIndicator } from 'react-native';
-import { useAcceptInviteLink } from 'lib/hooks/invite-links.js';
+import {
+ inviteLinkTexts,
+ useAcceptInviteLink,
+} from 'lib/hooks/invite-links.js';
import type { LinkStatus } from 'lib/hooks/invite-links.js';
import type { KeyserverOverride } from 'lib/shared/invite-links';
import type { InviteLinkVerificationResponse } from 'lib/types/link-types.js';
@@ -32,7 +35,9 @@
const styles = useStyles(unboundStyles);
const { invitationDetails, secret, keyserverOverride } = props.route.params;
const [linkStatus, setLinkStatus] = React.useState<LinkStatus>(
- invitationDetails.status === 'valid' ? 'valid' : 'invalid',
+ invitationDetails.status === 'expired'
+ ? 'invalid'
+ : invitationDetails.status,
);
const navContext = React.useContext(NavContext);
@@ -63,16 +68,14 @@
</>
);
}
- const headerText = linkStatus === 'invalid' ? 'Invite invalid' : 'Timeout';
- const message =
- linkStatus === 'invalid'
- ? 'This invite link may be expired. Please try again with another ' +
- 'invite link.'
- : 'The request has timed out.';
return (
<>
- <Text style={styles.invalidInviteTitle}>{headerText}</Text>
- <Text style={styles.invalidInviteExplanation}>{message}</Text>
+ <Text style={styles.invalidInviteTitle}>
+ {inviteLinkTexts[linkStatus].header}
+ </Text>
+ <Text style={styles.invalidInviteExplanation}>
+ {inviteLinkTexts[linkStatus].message}
+ </Text>
</>
);
}, [
diff --git a/web/invite-links/accept-invite-modal.react.js b/web/invite-links/accept-invite-modal.react.js
--- a/web/invite-links/accept-invite-modal.react.js
+++ b/web/invite-links/accept-invite-modal.react.js
@@ -4,7 +4,10 @@
import ModalOverlay from 'lib/components/modal-overlay.react.js';
import { useModalContext } from 'lib/components/modal-provider.react.js';
-import { useAcceptInviteLink } from 'lib/hooks/invite-links.js';
+import {
+ inviteLinkTexts,
+ useAcceptInviteLink,
+} from 'lib/hooks/invite-links.js';
import type { LinkStatus } from 'lib/hooks/invite-links.js';
import type { KeyserverOverride } from 'lib/shared/invite-links.js';
import { type InviteLinkVerificationResponse } from 'lib/types/link-types.js';
@@ -23,7 +26,9 @@
function AcceptInviteModal(props: Props): React.Node {
const { verificationResponse, inviteSecret, keyserverOverride } = props;
const [linkStatus, setLinkStatus] = React.useState<LinkStatus>(
- verificationResponse.status === 'valid' ? 'valid' : 'invalid',
+ verificationResponse.status === 'expired'
+ ? 'invalid'
+ : verificationResponse.status,
);
const { popModal } = useModalContext();
const calendarQuery = useSelector(nonThreadCalendarQuery);
@@ -61,17 +66,13 @@
</>
);
} else {
- const header = linkStatus === 'invalid' ? 'Invite invalid' : 'Timeout';
- const message =
- linkStatus === 'invalid'
- ? 'This invite link may be expired. Please try again with another ' +
- 'invite link.'
- : 'The request has timed out.';
content = (
<>
<div className={css.group}>
- <div className={css.heading}>{header}</div>
- <div className={css.text}>{message}</div>
+ <div className={css.heading}>
+ {inviteLinkTexts[linkStatus].header}
+ </div>
+ <div className={css.text}>{inviteLinkTexts[linkStatus].message}</div>
</div>
<hr />
<Button
diff --git a/web/invite-links/invite-link-handler.react.js b/web/invite-links/invite-link-handler.react.js
--- a/web/invite-links/invite-link-handler.react.js
+++ b/web/invite-links/invite-link-handler.react.js
@@ -75,9 +75,6 @@
);
result = await validateLinkPromise;
- if (result.status === 'already_joined') {
- return;
- }
} catch (e) {
console.error('Error while verifying an invite link', e);
result = {
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Jan 19, 9:52 PM (12 h, 1 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5958317
Default Alt Text
D11823.1768859559.diff (6 KB)
Attached To
Mode
D11823: [lib][native][web] Show a message when a user is already a part of a community
Attached
Detach File
Event Timeline
Log In to Comment