| ... | ... | @@ -323,6 +323,11 @@ export function NewTaskDraftScreen(props: { |
| 323 | 323 | latestIncomingShareIdRef.current = props.incomingShareId; |
| 324 | 324 | const isImportingShare = importingShareKey !== null; |
| 325 | 325 | const alertedUnavailableIncomingShareIdRef = useRef<string | null>(null); |
| 326 | // The share this screen already moved into its draft. Sending clears the |
| 327 | // draft (and its importedShareIds receipt) a frame before the screen leaves, |
| 328 | // and the inbox entry is long gone by then; without this the re-render in |
| 329 | // between reads as "shared content vanished" and alerts on every send. |
| 330 | const consumedIncomingShareIdRef = useRef<string | null>(null); |
| 326 | 331 | const incomingShare = props.incomingShareId ? getShare(props.incomingShareId) : null; |
| 327 | 332 | const requestedInitialProjectAvailable = Boolean( |
| 328 | 333 | props.initialProjectRef?.environmentId && |
| ... | ... | @@ -416,8 +421,9 @@ export function NewTaskDraftScreen(props: { |
| 416 | 421 | }, [navigation, preventRemove, submitNavigationAction]); |
| 417 | 422 | const hasImportedIncomingShare = Boolean( |
| 418 | 423 | props.incomingShareId && |
| 419 | | flow.draftKey && |
| 420 | | getComposerDraftSnapshot(flow.draftKey).importedShareIds?.includes(props.incomingShareId), |
| 424 | (consumedIncomingShareIdRef.current === props.incomingShareId || |
| 425 | (flow.draftKey && |
| 426 | getComposerDraftSnapshot(flow.draftKey).importedShareIds?.includes(props.incomingShareId))), |
| 421 | 427 | ); |
| 422 | 428 | const isIncomingShareUnavailable = Boolean( |
| 423 | 429 | props.incomingShareId && |
| ... | ... | @@ -747,6 +753,7 @@ export function NewTaskDraftScreen(props: { |
| 747 | 753 | } |
| 748 | 754 | await consumeShare(shareId); |
| 749 | 755 | didConsumeShare = true; |
| 756 | consumedIncomingShareIdRef.current = shareId; |
| 750 | 757 | // The consumed inbox draft was the last owner of files that never made |
| 751 | 758 | // it into the composer draft (unsupported server, oversize, limit |
| 752 | 759 | // skips). Release them before any early return: an unmount or a |