Page MenuHomePhabricator

D10840.id36472.diff
No OneTemporary

D10840.id36472.diff

diff --git a/web/app.react.js b/web/app.react.js
--- a/web/app.react.js
+++ b/web/app.react.js
@@ -20,6 +20,7 @@
ModalProvider,
useModalContext,
} from 'lib/components/modal-provider.react.js';
+import { StaffContextProvider } from 'lib/components/staff-provider.react.js';
import {
createLoadingStatusSelector,
combineLoadingStatuses,
@@ -189,8 +190,10 @@
<>
<WebEditThreadAvatarProvider>
<EditUserAvatarProvider>
- {this.renderMainContent()}
- {this.props.modals}
+ <StaffContextProvider>
+ {this.renderMainContent()}
+ {this.props.modals}
+ </StaffContextProvider>
</EditUserAvatarProvider>
</WebEditThreadAvatarProvider>
</>
diff --git a/web/settings/build-info-panel.react.js b/web/settings/build-info-panel.react.js
new file mode 100644
--- /dev/null
+++ b/web/settings/build-info-panel.react.js
@@ -0,0 +1,22 @@
+// @flow
+
+import * as React from 'react';
+
+import css from './build-info.css';
+import BuildInfo from './build-info.react.js';
+import PanelHeader from '../components/panel-header.react.js';
+import Panel, { type PanelData } from '../components/panel.react.js';
+
+const panelData: $ReadOnlyArray<PanelData> = [
+ {
+ header: <PanelHeader headerLabel="Build info" />,
+ body: <BuildInfo />,
+ classNameOveride: css.container,
+ },
+];
+
+function BuildInfoPanel(): React.Node {
+ return <Panel panelItems={panelData} />;
+}
+
+export default BuildInfoPanel;
diff --git a/web/settings/build-info.css b/web/settings/build-info.css
new file mode 100644
--- /dev/null
+++ b/web/settings/build-info.css
@@ -0,0 +1,23 @@
+.container {
+ flex: 1;
+}
+
+.contentContainer {
+ padding: 16px;
+ display: flex;
+ flex-direction: column;
+ row-gap: 8px;
+}
+
+.infoRow {
+ display: flex;
+ justify-content: space-between;
+}
+
+.labelText {
+ color: var(--text-background-tertiary-default);
+}
+
+.valueText {
+ color: var(--text-background-secondary-default);
+}
diff --git a/web/settings/build-info.react.js b/web/settings/build-info.react.js
new file mode 100644
--- /dev/null
+++ b/web/settings/build-info.react.js
@@ -0,0 +1,64 @@
+// @flow
+
+import * as React from 'react';
+
+import { useStaffContext } from 'lib/components/staff-provider.react.js';
+import { useIsCurrentUserStaff } from 'lib/shared/staff-utils.js';
+import { getConfig } from 'lib/utils/config.js';
+import { isDev } from 'lib/utils/dev-utils.js';
+
+import css from './build-info.css';
+import { useStaffCanSee } from '../utils/staff-utils.js';
+
+function BuildInfo(): React.Node {
+ const { codeVersion, stateVersion } = getConfig().platformDetails;
+
+ const { staffUserHasBeenLoggedIn } = useStaffContext();
+
+ const staffCanSee = useStaffCanSee();
+
+ const isCurrentUserStaff = useIsCurrentUserStaff();
+
+ const staffOnlyRows = React.useMemo(() => {
+ if (!staffCanSee && !staffUserHasBeenLoggedIn) {
+ return null;
+ }
+
+ return (
+ <>
+ <div className={css.infoRow}>
+ <p className={css.labelText}>__DEV__</p>
+ <p className={css.valueText}>{isDev ? 'TRUE' : 'FALSE'}</p>
+ </div>
+ <div className={css.infoRow}>
+ <p className={css.labelText}>isCurrentUserStaff</p>
+ <p className={css.valueText}>
+ {isCurrentUserStaff ? 'TRUE' : 'FALSE'}
+ </p>
+ </div>
+ <div className={css.infoRow}>
+ <p className={css.labelText}>hasStaffUserLoggedIn</p>
+ <p className={css.valueText}>
+ {staffUserHasBeenLoggedIn ? 'TRUE' : 'FALSE'}
+ </p>
+ </div>
+ </>
+ );
+ }, [isCurrentUserStaff, staffCanSee, staffUserHasBeenLoggedIn]);
+
+ return (
+ <div className={css.contentContainer}>
+ <div className={css.infoRow}>
+ <p className={css.labelText}>Code version</p>
+ <p className={css.valueText}>{codeVersion}</p>
+ </div>
+ <div className={css.infoRow}>
+ <p className={css.labelText}>State version</p>
+ <p className={css.valueText}>{stateVersion}</p>
+ </div>
+ {staffOnlyRows}
+ </div>
+ );
+}
+
+export default BuildInfo;

File Metadata

Mime Type
text/plain
Expires
Sun, Oct 6, 11:32 AM (20 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2249167
Default Alt Text
D10840.id36472.diff (4 KB)

Event Timeline