Page MenuHomePhabricator

D3770.diff
No OneTemporary

D3770.diff

diff --git a/web/modals/threads/thread-settings-modal.react.js b/web/modals/threads/thread-settings-modal.react.js
--- a/web/modals/threads/thread-settings-modal.react.js
+++ b/web/modals/threads/thread-settings-modal.react.js
@@ -100,6 +100,7 @@
+onChangeColor: (color: string) => void,
+onChangeThreadType: (event: SyntheticEvent<HTMLInputElement>) => void,
+onChangeAccountPassword: (event: SyntheticEvent<HTMLInputElement>) => void,
+ +hasPermissionForTab: (thread: ThreadInfo, tab: TabType) => boolean,
};
class ThreadSettingsModal extends React.PureComponent<Props> {
nameInput: ?HTMLInputElement;
@@ -119,11 +120,11 @@
return;
}
- const permissionForDeleteTab = this.hasPermissionForTab(
+ const permissionForDeleteTab = this.props.hasPermissionForTab(
this.props.threadInfo,
'delete',
);
- const prevPermissionForDeleteTab = this.hasPermissionForTab(
+ const prevPermissionForDeleteTab = this.props.hasPermissionForTab(
prevProps.threadInfo,
'delete',
);
@@ -133,23 +134,6 @@
}
}
- hasPermissionForTab(threadInfo: ThreadInfo, tab: TabType) {
- if (tab === 'general') {
- return threadHasPermission(
- threadInfo,
- threadPermissions.EDIT_THREAD_NAME,
- );
- } else if (tab === 'privacy') {
- return threadHasPermission(
- threadInfo,
- threadPermissions.EDIT_PERMISSIONS,
- );
- } else if (tab === 'delete') {
- return threadHasPermission(threadInfo, threadPermissions.DELETE_THREAD);
- }
- invariant(false, `invalid tab ${tab}`);
- }
-
possiblyChangedValue(key: string) {
const valueChanged =
this.props.queuedChanges[key] !== null &&
@@ -163,7 +147,7 @@
const { threadInfo } = this.props;
const inputDisabled =
this.props.changeInProgress ||
- !this.hasPermissionForTab(threadInfo, this.props.currentTabType);
+ !this.props.hasPermissionForTab(threadInfo, this.props.currentTabType);
let mainContent = null;
if (this.props.currentTabType === 'general') {
@@ -255,7 +239,10 @@
/>,
);
}
- const canDeleteThread = this.hasPermissionForTab(threadInfo, 'delete');
+ const canDeleteThread = this.props.hasPermissionForTab(
+ threadInfo,
+ 'delete',
+ );
if (canDeleteThread) {
tabs.push(
<Tab
@@ -466,6 +453,26 @@
[],
);
+ const hasPermissionForTab = React.useCallback(
+ (thread: ThreadInfo, tab: TabType) => {
+ if (tab === 'general') {
+ return threadHasPermission(
+ thread,
+ threadPermissions.EDIT_THREAD_NAME,
+ );
+ } else if (tab === 'privacy') {
+ return threadHasPermission(
+ thread,
+ threadPermissions.EDIT_PERMISSIONS,
+ );
+ } else if (tab === 'delete') {
+ return threadHasPermission(thread, threadPermissions.DELETE_THREAD);
+ }
+ invariant(false, `invalid tab: ${tab}`);
+ },
+ [],
+ );
+
if (!threadInfo) {
return (
<Modal onClose={modalContext.clearModal} name="Invalid thread">
@@ -502,6 +509,7 @@
onChangeColor={onChangeColor}
onChangeThreadType={onChangeThreadType}
onChangeAccountPassword={onChangeAccountPassword}
+ hasPermissionForTab={hasPermissionForTab}
/>
);
},

File Metadata

Mime Type
text/plain
Expires
Thu, Sep 19, 3:55 PM (7 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2140445
Default Alt Text
D3770.diff (3 KB)

Event Timeline