diff --git a/lib/shared/comm-icon-config.json b/lib/shared/comm-icon-config.json
--- a/lib/shared/comm-icon-config.json
+++ b/lib/shared/comm-icon-config.json
@@ -447,6 +447,31 @@
"setIdx": 0,
"setId": 2,
"iconIdx": 17
+ },
+ {
+ "icon": {
+ "paths": [
+ "M263.889 159.369H759.593V864.569H687.296V541.091H686.569C678.312 448.462 600.253 375.963 505.741 375.963C411.229 375.963 333.17 448.462 324.913 541.091H324.185V864.569H251.889V159.369H263.889Z",
+ "M131.852 259.481L162.074 359.737H187.593V763.815C174.791 763.815 164.444 774.483 164.444 787.63V815.408H159.741C146.938 815.408 136.593 826.074 136.593 839.222V866.998H391.111V839.222C391.111 826.074 380.766 815.408 367.963 815.408H363.259V787.63C363.259 774.483 352.914 763.815 340.111 763.815H312.593V259.481H131.852Z",
+ "M691.111 763.815C678.309 763.815 667.963 774.483 667.963 787.63V815.408H663.259C650.457 815.408 640.111 826.074 640.111 839.222V866.998H894.63V839.222C894.63 826.074 884.284 815.408 871.481 815.408H866.778V787.63C866.778 774.483 856.432 763.815 843.63 763.815V359.737H869.148L899.37 259.481H718.63V763.815H691.111Z"
+ ],
+ "attrs": [{}, {}, {}],
+ "isMulticolor": false,
+ "isMulticolor2": false,
+ "tags": ["farcaster"],
+ "grid": 0
+ },
+ "attrs": [{}, {}, {}],
+ "properties": {
+ "order": 408,
+ "id": 19,
+ "name": "farcaster",
+ "prevSize": 32,
+ "code": 59667
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 19
}
],
"height": 1024,
diff --git a/web/assets/comm-logo.react.js b/web/assets/comm-logo.react.js
new file mode 100644
--- /dev/null
+++ b/web/assets/comm-logo.react.js
@@ -0,0 +1,31 @@
+// @flow
+
+import * as React from 'react';
+
+function CommLogo(): React.Node {
+ return (
+
+ );
+}
+
+export default CommLogo;
diff --git a/web/chat/chat-thread-composer.css b/web/chat/chat-thread-composer.css
--- a/web/chat/chat-thread-composer.css
+++ b/web/chat/chat-thread-composer.css
@@ -32,7 +32,13 @@
div.searchField {
flex-grow: 1;
- padding: 1rem;
+ padding: 0.5rem 1rem 1rem 1rem;
+}
+
+div.protocolRow {
+ padding: 1rem 1rem 0.5rem 1rem;
+ display: flex;
+ align-items: center;
}
.closeSearch {
@@ -77,3 +83,17 @@
flex-direction: row;
align-items: center;
}
+
+div.rightContainer {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ gap: 8px;
+}
+
+div.protocolIcons {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ gap: 4px;
+}
diff --git a/web/chat/chat-thread-composer.react.js b/web/chat/chat-thread-composer.react.js
--- a/web/chat/chat-thread-composer.react.js
+++ b/web/chat/chat-thread-composer.react.js
@@ -12,6 +12,7 @@
import { useResolvableNames } from 'lib/hooks/names-cache.js';
import { userInfoSelectorForPotentialMembers } from 'lib/selectors/user-selectors.js';
import { extractFIDFromUserID } from 'lib/shared/id-utils.js';
+import { protocolNames } from 'lib/shared/protocol-names.js';
import {
usePotentialMemberItems,
useSearchUsers,
@@ -29,10 +30,13 @@
import { useIsFarcasterDCsIntegrationEnabled } from 'lib/utils/services-utils.js';
import css from './chat-thread-composer.css';
+import CommLogo from '../assets/comm-logo.react.js';
import UserAvatar from '../avatars/user-avatar.react.js';
import Button from '../components/button.react.js';
import Label from '../components/label.react.js';
+import ProtocolIcon from '../components/protocol-icon.react.js';
import Search from '../components/search.react.js';
+import SelectProtocolDropdown from '../components/select-protocol-dropdown.react.js';
import type { InputState } from '../input/input-state.js';
import Alert from '../modals/alert.react.js';
import { updateNavInfoActionType } from '../redux/action-types.js';
@@ -50,10 +54,10 @@
function ChatThreadComposer(props: Props): React.Node {
const { userInfoInputArray, threadID, inputState } = props;
+ const { selectedProtocol } = useProtocolSelection();
const [usernameInputText, setUsernameInputText] = React.useState('');
- const { selectedProtocol } = useProtocolSelection();
const dispatch = useDispatch();
const loggedInUserInfo = useLoggedInUserInfo();
@@ -183,6 +187,18 @@
const userItems = userListItemsWithENSNames.map(
(userSearchResult: UserListItem) => {
+ let icon = null;
+ if (
+ userSearchResult.supportedProtocols.includes(protocolNames.COMM_DM)
+ ) {
+ icon =
{protocolInfoAlert.message}
+