diff --git a/libs/moloch-v3-macro-ui/src/components/DaoSettings/index.ts b/libs/moloch-v3-macro-ui/src/components/DaoSettings/index.ts
index 4b1c5053..1901740d 100644
--- a/libs/moloch-v3-macro-ui/src/components/DaoSettings/index.ts
+++ b/libs/moloch-v3-macro-ui/src/components/DaoSettings/index.ts
@@ -1,5 +1,6 @@
export * from './ContractSettings';
export * from './DaoSettings';
+export * from './FarcastleButton';
export * from './GovernanceSettings';
export * from './MetadataSettings';
export * from './ShamanSettings';
diff --git a/libs/moloch-v3-macro-ui/src/components/Layout/MetadataLinkLists.tsx b/libs/moloch-v3-macro-ui/src/components/Layout/MetadataLinkLists.tsx
index 6b14c09b..d9cd107b 100644
--- a/libs/moloch-v3-macro-ui/src/components/Layout/MetadataLinkLists.tsx
+++ b/libs/moloch-v3-macro-ui/src/components/Layout/MetadataLinkLists.tsx
@@ -10,7 +10,8 @@ import {
import { DaoProfileLink } from '@daohaus/moloch-v3-data';
import { DataMd, Link, ParMd } from '@daohaus/ui';
-import { charLimit } from '@daohaus/utils';
+import { charLimit, getFarcastleFramemUrl } from '@daohaus/utils';
+import FarcasterLogo from '../../assets/farcaster-logo-yellow.svg';
export const isPredefinedSettingsLink = (link: DaoProfileLink) => {
return (
@@ -40,6 +41,19 @@ const IconLinkContainer = styled.div`
margin: 1.5rem 0;
`;
+const FarcasterLinkContainer = styled.div`
+ display: flex;
+ gap: 1.5rem;
+ margin: 1.5rem 0;
+ padding-left: 0.5rem;
+`;
+
+const FarcasterLinkContents = styled.div`
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+`;
+
const MetadataLinkIcons: { [key: string]: React.ReactNode } = {
Github:
,
Discord:
,
@@ -117,3 +131,26 @@ export const OverviewLinkList = ({ links }: LinkListsProps) => {
);
};
+
+export const FarcasterShareLink = ({
+ daoId,
+ daoChain,
+ location,
+}: {
+ daoId?: string;
+ daoChain?: string;
+ location?: string;
+}) => {
+ if (!daoId || !daoChain) return null;
+ const url = getFarcastleFramemUrl({ daoId, daoChain, location });
+ return (
+
+
+
+
+ Cast Farcastle Frame
+
+
+
+ );
+};
diff --git a/libs/moloch-v3-macro-ui/src/components/ProposalDetails/ProposalDetails.tsx b/libs/moloch-v3-macro-ui/src/components/ProposalDetails/ProposalDetails.tsx
index 26bbf545..5dd6f779 100644
--- a/libs/moloch-v3-macro-ui/src/components/ProposalDetails/ProposalDetails.tsx
+++ b/libs/moloch-v3-macro-ui/src/components/ProposalDetails/ProposalDetails.tsx
@@ -30,6 +30,7 @@ import styled from 'styled-components';
import { ProposalActionConfig } from '../ProposalActionData';
import ReactMarkdown from 'react-markdown';
+import { FarcasterShareLink } from '../Layout';
const Spacer = styled.div`
margin-bottom: 2rem;
diff --git a/libs/utils/src/utils/farcastle.ts b/libs/utils/src/utils/farcastle.ts
new file mode 100644
index 00000000..a37f3513
--- /dev/null
+++ b/libs/utils/src/utils/farcastle.ts
@@ -0,0 +1,16 @@
+export const farcastleChain = (daoChain?: string) => daoChain !== '0xaa36a7';
+
+export const getFarcastleFramemUrl = ({
+ daoChain,
+ daoId,
+ location,
+}: {
+ daoChain: string;
+ daoId: string;
+ location?: string;
+}): string | undefined => {
+ if (daoChain === '0xaa36a7') return;
+ const baseUrl = `https://warpcast.com/~/compose?text=&embeds[]=https://frames.farcastle.net/molochv3/${daoChain}/${daoId}`;
+
+ return location ? `${baseUrl}/${location}` : baseUrl;
+};
diff --git a/libs/utils/src/utils/index.ts b/libs/utils/src/utils/index.ts
index b551bb03..25cab037 100644
--- a/libs/utils/src/utils/index.ts
+++ b/libs/utils/src/utils/index.ts
@@ -2,6 +2,7 @@ export * from './cache';
export * from './dates';
export * from './gas';
export * from './general';
+export * from './farcastle';
export * from './formatting';
export * from './gnosis';
export * from './typeguards';