Page MenuHomePhorge

D7879.1765146194.diff
No OneTemporary

Size
3 KB
Referenced Files
None
Subscribers
None

D7879.1765146194.diff

diff --git a/lib/actions/link-actions.js b/lib/actions/link-actions.js
--- a/lib/actions/link-actions.js
+++ b/lib/actions/link-actions.js
@@ -4,6 +4,8 @@
FetchInviteLinksResponse,
InviteLinkVerificationRequest,
InviteLinkVerificationResponse,
+ CreateOrUpdatePublicLinkRequest,
+ InviteLink,
} from '../types/link-types.js';
import type { CallServerEndpoint } from '../utils/call-server-endpoint.js';
@@ -47,9 +49,37 @@
};
};
+const createOrUpdatePublicLinkActionTypes = Object.freeze({
+ started: 'CREATE_OR_UPDATE_PUBLIC_LINK_STARTED',
+ success: 'CREATE_OR_UPDATE_PUBLIC_LINK_SUCCESS',
+ failed: 'CREATE_OR_UPDATE_PUBLIC_LINK_FAILED',
+});
+
+const createOrUpdatePublicLink =
+ (
+ callServerEndpoint: CallServerEndpoint,
+ ): ((request: CreateOrUpdatePublicLinkRequest) => Promise<InviteLink>) =>
+ async request => {
+ const response = await callServerEndpoint('create_or_update_public_link', {
+ name: request.name,
+ communityID: request.communityID,
+ });
+ return {
+ name: response.name,
+ primary: response.primary,
+ role: response.role,
+ communityID: response.communityID,
+ expirationTime: response.expirationTime,
+ limitOfUses: response.limitOfUses,
+ numberOfUses: response.numberOfUses,
+ };
+ };
+
export {
verifyInviteLinkActionTypes,
verifyInviteLink,
fetchPrimaryInviteLinkActionTypes,
fetchPrimaryInviteLinks,
+ createOrUpdatePublicLinkActionTypes,
+ createOrUpdatePublicLink,
};
diff --git a/lib/reducers/invite-links-reducer.js b/lib/reducers/invite-links-reducer.js
--- a/lib/reducers/invite-links-reducer.js
+++ b/lib/reducers/invite-links-reducer.js
@@ -1,6 +1,9 @@
// @flow
-import { fetchPrimaryInviteLinkActionTypes } from '../actions/link-actions.js';
+import {
+ createOrUpdatePublicLinkActionTypes,
+ fetchPrimaryInviteLinkActionTypes,
+} from '../actions/link-actions.js';
import type { InviteLinksStore } from '../types/link-types.js';
import type { BaseAction } from '../types/redux-types.js';
@@ -19,6 +22,18 @@
return {
links,
};
+ } else if (action.type === createOrUpdatePublicLinkActionTypes.success) {
+ const communityID = action.payload.communityID;
+ return {
+ ...state,
+ links: {
+ ...state.links,
+ [communityID]: {
+ ...state.links[communityID],
+ primaryLink: action.payload,
+ },
+ },
+ };
}
return state;
}
diff --git a/lib/types/redux-types.js b/lib/types/redux-types.js
--- a/lib/types/redux-types.js
+++ b/lib/types/redux-types.js
@@ -38,6 +38,7 @@
import type { LifecycleState } from './lifecycle-state-types.js';
import type {
FetchInviteLinksResponse,
+ InviteLink,
InviteLinksStore,
InviteLinkVerificationResponse,
} from './link-types.js';
@@ -1081,6 +1082,22 @@
+error: true,
+payload: Error,
+loadingInfo: LoadingInfo,
+ }
+ | {
+ +type: 'CREATE_OR_UPDATE_PUBLIC_LINK_STARTED',
+ +loadingInfo?: LoadingInfo,
+ +payload?: void,
+ }
+ | {
+ +type: 'CREATE_OR_UPDATE_PUBLIC_LINK_SUCCESS',
+ +payload: InviteLink,
+ +loadingInfo: LoadingInfo,
+ }
+ | {
+ +type: 'CREATE_OR_UPDATE_PUBLIC_LINK_FAILED',
+ +error: true,
+ +payload: Error,
+ +loadingInfo: LoadingInfo,
};
export type ActionPayload = ?(Object | Array<*> | $ReadOnlyArray<*> | string);

File Metadata

Mime Type
text/plain
Expires
Sun, Dec 7, 10:23 PM (13 h, 5 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5844817
Default Alt Text
D7879.1765146194.diff (3 KB)

Event Timeline