Skip to main content
Glama
deso-protocol

DeSo MCP Server

Official
header.tsx6.57 kB
import { Menu, MenuHandler, MenuItem, MenuList, } from "@material-tailwind/react"; import { UserContext } from "contexts/UserContext"; import { identity } from "deso-protocol"; import { useContext } from "react"; import { IoCopy, IoCopyOutline, IoExitOutline, IoHappyOutline, IoLogoGithub, IoPersonOutline, IoWalletOutline, } from "react-icons/io5"; import { toast } from "react-toastify"; import { RefreshContext } from "../contexts/RefreshContext"; import { formatDisplayName, getProfileURL } from "../utils/helpers"; import { MessagingDisplayAvatar } from "./messaging-display-avatar"; import { SaveToClipboard } from "./shared/save-to-clipboard"; import { UserAccountList } from "./user-account-list"; export const Header = () => { const { appUser } = useContext(UserContext); const { setLockRefresh } = useContext(RefreshContext); return ( <header className="flex justify-between py-3 px-4 h-[64px] fixed top-0 z-50 w-full"> <a href="/" className="flex items-center"> <div className="text-left flex items-center"> <img src="/assets/logo-white.svg" width={100} alt="deso-logo" /> <span className="text-blue-300/60 ml-3 text-sm md:text-base"> Chat Protocol </span> </div> </a> <div className="flex items-center"> <div className="flex items-center ml-2"> {appUser && ( <div className="flex flex-col items-end pr-1 md:pr-2"> <div className="mb-0 text-blue-100 text-sm"> <span className="font-semibold"> {formatDisplayName(appUser)} </span> </div> <a className="block text-blue-200/80 text-sm" href={"https://wallet.deso.com/?user=" + formatDisplayName(appUser)} target="_blank" rel="noreferrer" > View Wallet </a> </div> )} <Menu placement="bottom-end"> <MenuHandler> <div className="cursor-pointer"> <MessagingDisplayAvatar publicKey={appUser?.PublicKeyBase58Check} diameter={35} classNames="ml-1 md:ml-3" /> </div> </MenuHandler> <MenuList className="max-w-[230px] w-[230px] p-2"> <div> <div className="px-2 pt-1 pb-2 flex justify-between text-black items-center border-b"> <span className="font-bold text-lg md:text-base"> Profiles </span> <button className="bg-transparent hover:bg-blue-500 text-blue-700 font-semibold md:text-sm hover:text-white border py-1 px-2 border-blue-500 hover:border-transparent rounded outline-none" onClick={async () => { setLockRefresh(true); try { await identity.login(); } catch (e) { toast.error(`Error logging in: ${e}`); console.error(e); } setLockRefresh(false); }} > Add </button> </div> <UserAccountList /> </div> {appUser?.ProfileEntryResponse && ( <MenuItem className="flex items-center p-0"> <a href={getProfileURL(appUser.ProfileEntryResponse.Username)} target="_blank" rel="noreferrer" className="w-full outline-0" > <div className="w-full flex items-center pt-[9px] pb-2 px-3"> <IoHappyOutline className="mr-3 text-xl" /> <span className="text-base">My profile</span> </div> </a> </MenuItem> )} {appUser && ( <MenuItem className="flex items-center pt-[9px] pb-2 text-black px-3"> <SaveToClipboard text={appUser.PublicKeyBase58Check} copyIcon={<IoCopyOutline className="text-xl mr-2" />} copiedIcon={<IoCopy className="text-xl mr-2" />} className="" > <span className="text-base">Copy Public Key</span> </SaveToClipboard> </MenuItem> )} <MenuItem className="flex items-center p-0"> <a href="https://wallet.deso.com" target="_blank" rel="noreferrer" className="w-full outline-0 text-black" > <div className="w-full flex items-center pt-[9px] pb-2 px-3"> <IoWalletOutline className="mr-3 text-xl" /> <span className="text-base">DeSo Wallet</span> </div> </a> </MenuItem> <MenuItem className="flex items-center p-0"> <a href="https://github.com/deso-protocol/deso-chat-protocol" target="_blank" rel="noreferrer" className="w-full outline-0 text-black" > <div className="w-full flex items-center pt-[9px] pb-2 px-3"> <IoLogoGithub className="mr-3 text-xl" /> <span className="text-base">Fork This Project</span> </div> </a> </MenuItem> <MenuItem className="flex items-center text-black" onClick={async () => { if (!appUser) return; setLockRefresh(true); try { await identity.logout(); } catch (e) { toast.error(`Error logging out: ${e}`); console.error(e); } setLockRefresh(false); }} > <IoExitOutline className="mr-3 text-xl" /> <span className="text-base">Logout</span> </MenuItem> </MenuList> </Menu> </div> </div> </header> ); };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/deso-protocol/deso-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server