slymnoyann/hey-1 · error · Error
Something went wrong!
Error message
Something went wrong!
What it means
Thrown by handleCreatePost in NewPublication.tsx when getMetadata returns a falsy value. getMetadata assembles the Lens-style publication metadata object (title, content, attachments, media); a null/undefined result means the current combination of post fields (audio post, video without thumbnail, empty content, etc.) doesn't map to any valid metadata type.
Source
Thrown at src/components/Composer/NewPublication.tsx:223
if (!hasValidVideoMetadata) {
setIsSubmitting(false);
return setPostContentError(
"Add a valid video thumbnail before posting."
);
}
setPostContentError("");
const baseMetadata = {
content: postContent.length > 0 ? postContent : undefined,
title: hasAudio
? audioPost.title
: `${getTitlePrefix()} by ${getAccount(currentAccount).username}`
};
const metadata = getMetadata({ baseMetadata });
if (!metadata) {
throw new Error(ERRORS.SomethingWentWrong);
}
const contentUri = await uploadMetadata(metadata);
if (editingPost) {
umami.track("edit_post");
return await editPost({
variables: { request: { contentUri, post: editingPost?.id } }
});
}
umami.track(isComment ? "comment" : isQuote ? "quote" : "create_post");
return await createPost({
variables: {
request: {
contentUri,
...((feed || selectedFeed) && { feed: feed || selectedFeed }),
...(isComment && { commentOn: { post: post?.id } }),View on GitHub (pinned to 88c8f9d553)
Solutions
- Inspect composer state right before publish: verify content is non-empty and every attachment has uri + mimeType (this is the same precondition as usePostMetadata.assertUploadedAttachment)
- Ensure video posts have a selected thumbnail and a parsed positive duration before enabling the post button
- If you added a new media type, extend getMetadata's branching to handle it and return metadata
- Catch ERRORS.SomethingWentWrong and show which field is invalid to disambiguate
Example fix
// before
const metadata = getMetadata({ baseMetadata });
if (!metadata) {
throw new Error(ERRORS.SomethingWentWrong);
}
// after
const metadata = getMetadata({ baseMetadata });
if (!metadata) {
throw new Error(
!baseMetadata.content?.trim()
? "Post content cannot be empty"
: !attachments.every((a) => a.uri && a.mimeType)
? "Attachments are still uploading"
: ERRORS.SomethingWentWrong
);
} Defensive patterns
Strategy: validation
Validate before calling
const canBuildMetadata =
Boolean(baseMetadata.content?.trim()) &&
attachments.every((a) => a.uri && a.mimeType) &&
(!isVideoPost || (Boolean(videoThumbnail.url) && duration > 0));
if (!canBuildMetadata) {
// block publish and show field-level feedback instead of calling handleCreatePost
} Type guard
const hasCompletePost = (p: {
content?: string;
attachments: { uri?: string; mimeType?: string }[];
videoThumbnail?: { url?: string };
}): boolean =>
Boolean(p.content?.trim()) &&
p.attachments.every((a) => Boolean(a.uri && a.mimeType)); Try / catch
try {
await handleCreatePost();
} catch (e) {
if (e instanceof Error && e.message === ERRORS.SomethingWentWrong) {
// re-check composer state and highlight the invalid field
}
} Prevention
- Derive the publish button's disabled state from the same conditions getMetadata checks
- Keep getMetadata's branch coverage in sync when adding new post/attachment types
- Add unit tests over composer-state fixtures that previously produced undefined metadata
When it happens
Trigger: Publishing with only unsupported attachment types, an audio post missing required fields, a video post where the thumbnail/duration preconditions fail, or an empty/whitespace-only publication so getMetadata can't determine the metadata type and returns undefined.
Common situations: UI state desync where the composer shows a post as ready but the underlying attachment store never finished uploading; a new attachment type added without extending getMetadata's type-matching; editing a legacy post whose stored shape no longer matches any metadata branch.
Related errors
AI-assisted analysis of slymnoyann/hey-1@88c8f9d553 (2026-08-28).
Data as JSON: /api/errors/6f936d4ad95a400c.
Report an issue: GitHub.