diff --git a/lib/shared/farcaster/farcaster-api.js b/lib/shared/farcaster/farcaster-api.js --- a/lib/shared/farcaster/farcaster-api.js +++ b/lib/shared/farcaster/farcaster-api.js @@ -453,31 +453,47 @@ ); } -export type UpdateFarcasterGroupPhotoInput = { - +conversationId: string, - +photoUrl: string, +export type UpdateFarcasterThreadAvatarInput = { + +conversationID: string, + +action: + | { + +type: 'set', + +imageURL: string, + } + | { + +type: 'remove', + }, }; -function useUpdateFarcasterGroupPhoto(): ( - input: UpdateFarcasterGroupPhotoInput, +function useUpdateFarcasterThreadAvatar(): ( + input: UpdateFarcasterThreadAvatarInput, ) => Promise { const { sendFarcasterRequest } = useTunnelbroker(); const { addLog } = useDebugLogs(); return React.useCallback( - async (input: UpdateFarcasterGroupPhotoInput) => { + async (input: UpdateFarcasterThreadAvatarInput) => { + const payload = + input.action.type === 'set' + ? { + conversationId: input.conversationID, + photoUrl: input.action.imageURL, + } + : { + conversationId: input.conversationID, + }; try { await sendFarcasterRequest({ apiVersion: 'v2', endpoint: 'direct-cast-group-photo', method: { type: 'POST' }, - payload: JSON.stringify(input), + payload: JSON.stringify(payload), }); } catch (error) { addLog( 'Farcaster API: Failed to update group photo', JSON.stringify({ - conversationId: input.conversationId, - photoUrl: input.photoUrl, + conversationID: input.conversationID, + action: input.action, error: getMessageForException(error), }), new Set([logTypes.FARCASTER, logTypes.ERROR]), @@ -1007,7 +1023,7 @@ useFetchFarcasterConversation, useFetchFarcasterInbox, useUpdateFarcasterGroupNameAndDescription, - useUpdateFarcasterGroupPhoto, + useUpdateFarcasterThreadAvatar, useUpdateFarcasterSubscription, useStreamFarcasterDirectCastRead, useMarkFarcasterDirectCastUnread,