Disclosure Day

For any other director, Disclosure Day would be a disappointment, from Steven Spielberg it's a devastating failure.
61675
Starring
Emily Blunt, Josh O'Connor, Colin Firth
Director
Steven Spielberg
Rating
PG-13
Genre
Drama, Sci-Fi, Thriller
Release date
June 12, 2026
Rating Summary
Disclosure Day is a conceptual wasteland that fails to blend the grounded, sincere performances of its leads and high stakes drama with its whimsical danger and mustache twirling villains. It's an AI generated product prompted to make a Steven Spielberg film. It is bereft of soul and understanding of humanity or drama.

On an ordinary day, a TV meteorologist and a determined cybersecurity expert find themselves at the center of the greatest revelation in human history, undeniable proof that we are not alone. As a shadowy agency scrambles to contain the truth, chaos erupts worldwide, and they race against powerful forces desperate to keep the secret buried. Disclosure Day follows the desperate fight to expose a reality that will forever change humanity.

Disclosure Day REVIEW

No one can deny that there's simply no more iconic director than Steven Spielberg. The 79-year-old, worth $7.1 billion, is responsible for massive, era-defining thrillers, box-office-breaking smash hit adventures, and profoundly moving dramas. He has not only set the standard for Hollywood filmmaking but has also built the template for Hollywood's success. While his half-century behind the director's chair hasn't been without its misses (Indiana Jones and the Crystal Skull?), for every one of them, there's a Jaws, Saving Private Ryan, and Indiana Jones and the Last Crusade. Disclosure Day, unfortunately, firmly belongs in the misses camp.

What's not wrong with Disclosuer Day would be an easier proposition to deal with than detailing all of the ways in which Spielberg's 36th feature film fails. Of course, then this review would only be 50 words long, and Google hates that. Emily Blunt and Josh O'Connor give it their all, never stumbling or even looking momentarily lost in the film's meaningless dialogue or rambling plot. That's it. That's what's good.

From there, Disclosure Day is a downward spiral into soggy attempts at theological profundity, laughable digital effects, and room-temperature drama that will leave anyone who can program a VCR scratching their heads as to why the film films.

Disclosure Day's plot is fairly simple: intelligent aliens with technology that far outstrips our own have been known about since Roswell. Since then, the government and, by the 70's, a shadowy corporation have been reverse engineering alien tech and performing cruel experiments on stranded offworlders. All the while, these organizations have done everything they can to prevent the people of Earth writ large from discovering the truth about the existence of extraterrestrials, for fear that knowledge of them would sow chaos and a total breakdown of human society. Then, a young, idealistic man with a gift for mathematics comes along and decides to go full Snowden, igniting the plot and setting it into motion. Snowden wants to release the information to the world, and the evil government/corp entity wants nothing less.

The film's story is built upon two foundational pillars, on the one stands technology. This particular narrative refrain continually circles back to remind us of the vast scientific gulf that divides us from the space men, while at the same time needling us with endless reminders that much of our current scientific advancement is the result of reverse-engineering said tech. However, the pillar crumbles under the weight of a nigh-octogenarian's understanding of the world we currently live in.

As O'Connor's character tells the audience for the umpteenth time that he needs to get the video evidence of aliens out to the world, anyone under 55 will silently scream, "Upload it to YouTube!" "Send it to Joe Rogen!" "Live stream the stupid stuff on X!" Instead, the film's 2.5-hour adventure hinges on its two leads getting the data cards to a local NBC affiliate so that the broadcast can be picked up by CNN. Is there anything more Boomer than thinking that anyone is even watching CNN, let alone trusts it?

The issues with technology and broadcasting aren't just a Mount St. Helen-sized plot hole; they also represent a design flaw. O'Connor's character carries a case full of data clips, each containing 4 to 8 videos cataloging humanity's direct interactions with aliens. By today's standards, the chips, which are pure fiction in aesthetic, are big and bulky, and seemingly possess a fraction of a fraction of the capacity of a micro SD card the size of your pinky nail that you can pick up from Amazon for under $200. In a world where not a single one of you can probably understand why, aside from gaming, you'd even want to save your data anywhere other than the cloud, this case is just one more immersion-breaking unforced error that heaps itself upon the pile that is Disclosure Day.

However, one of the film’s most problematic flaws is that the alien technology presents as magic, beyond all human reckoning, yet they require 4 decades, two random humans, and the use of their magic technology to transform those humans into a binary translation system. We have Google Translate right now. They have technology that can vaporize and reconstitute people, grant telepathy, mind control, and speed them to the far reaches of the galaxy, but translating English into clicks takes all of that.

Disclosure Day's second pillar is that humanity, specifically Western civilization, won't be able to survive the realization that we aren't alone, basically the Tommy Lee Jones speech from Men in Black. However, anyone paying attention knows that humanity's hypothalamus has been producing so much dopamine for the last 20 years that no one cares whether aliens exist, as long as it doesn't interrupt their doomscrolling to the next cat video. Over the last decade, reliable government sources have released information that, in the 80s and 90s, would have rocked society but barely registered as a 12-hour distraction from whatever newly manufactured disaster the 24-hour news cycle is trying to convince you will end all of humanity.

However, Disclosure Day's deepest flaw isn't technological inconsistency or even its bizarre understanding of how information spreads in 2026. It's that the entire film mistakes exposition for revelation.

Characters don't discover things so much as announce them.

Emily Blunt's character, for example, is repeatedly handed emotional moments tied to her father's Parkinson's diagnosis and the effect it supposedly had on her life. Except we're never allowed to sit with those emotions or infer them through behavior. Instead, we're told. Then told again. Then reminded at awkward moments whenever the script needs to manufacture depth (unsuccessfully). Blunt gives the material everything she can, but performance can only do so much when character development arrives as bullet points.

That problem infects nearly everyone.

O'Connor's character has a girlfriend whose presence feels less like an organic part of the story and more like an obligation to add another strong woman to the screenplay, remembered halfway through production. She receives a backstory, a subplot, and a prolonged interaction with the antagonist, none of which materially changes the story or reveals anything meaningful about either character. Then her character vanishes until the climax, only to be brought back seemingly to remind the audience of her existence. Entire scenes feel as though they're happening because someone believed they should exist rather than because they earned their place.

Even the comedy undercuts itself.

At one point, while being pursued by people the protagonists know are far more dangerous than ordinary law enforcement, Blunt's character throws her phone out of a moving car to destroy it. When that doesn't work, she instructs her boyfriend to repeatedly back over it while the film lingers on the gag for what feels like an eternity.

It's meant to be quirky Spielbergian whimsy. Instead, it becomes emblematic of the movie's biggest issue: urgency without momentum. Disclosure Day somehow manages to move constantly while feeling stationary.

Action scenes pile onto chase scenes, revelations pile onto revelations, and yet character relationships remain almost exactly where they started. The film spends nearly two and a half hours operating at an intensity level of eight to ten with almost no modulation, leaving no room for tension to build or emotions to land.

It's less like being swept along by an adventure and more like slogging through knee-deep sand.

That lack of dimensionality extends to the villain as well. Colin Firth, one of the rare modern Academy Award winners who actually deserved his award, seems completely stranded here. His character alternates between restrained bureaucratic menace, Bond villain theatrics, and something resembling a serious version of Dr. Evil. None of it coheres. Firth commits fully, but commitment can't compensate for a character written with fewer dimensions than a cosmic string.

And that's perhaps the strangest thing about Disclosure Day. For the first time in memory, Spielberg seems oddly disconnected from his own characters. Nobody behaves like a person making decisions; they behave like pieces being moved.

It's like watching someone play chess on a Monopoly board.

You can admire the thought being put into the moves while also recognizing that everyone involved appears to be playing a different game without realizing it.

Which brings us to the visuals and score.

For decades, Steven Spielberg has been one of cinema's great visual storytellers. His B-roll roots gave him a kinetic visual language that filmmakers have been trying to replicate ever since Jaws. He understands motion, geography, and frame composition almost instinctively. Few directors use depth of field as effectively to pull audiences deeper into a world and create the feeling that life exists beyond the edges of the frame.

Normally.

Because one of Disclosure Day's strangest failures is that Spielberg's greatest visual strengths never click into place.

His use of depth and staging depends on immersion, but Disclosure Day constantly breaks its own illusion. The story wants to be sweeping science fiction with existential stakes, yet presents itself with broad, in-your-face bubblegum theatrics that flatten every scene into something oddly artificial. The world never feels lived in enough for Spielberg's visual language to pull us into it. And the digital effects certainly don't help.

For a filmmaker whose best work has always felt tactile and grounded even at its most fantastical, Disclosure Day's effects repeatedly collapse into unreality. Major action set pieces have a weightless, synthetic quality that never convinces the eye. Even the details fail.

Video footage supposedly captured seventy years ago somehow looks as though it has been cleaned, stabilized, and pushed through an aggressive upscale filter. Nothing carries age. Nothing feels found. The aliens themselves never feel present in the frame, instead reading as obvious CGI creations inserted into otherwise serious scenes.

Then there are the animals.

More than once, the film introduces digitally rendered creatures that land squarely in the uncanny valley space occupied by early live-action Disney remakes: technically detailed but emotionally dead and just outside of real space. Worse still, Spielberg deploys them during scenes meant to carry genuine wonder or emotional revelation, but ends up generating laugh-out-loud camp instead.

Instead of awe, the audience gets distraction.

But this time Spielberg's longtime collaborator lets him down too. John Williams is an unarguable master of cinematic music and one of the defining composers not merely of film but of modern popular culture. Across decades, his instincts have shaped how audiences experience wonder, danger, triumph, grief, and discovery.

Yet in Disclosure Day, nearly every instinct feels wrong. Again and again, Williams scores the film as though he's accompanying a mischievous Goonies-style adventure, when the material demands something more grounded, mysterious, or emotionally sincere. Scenes that should breathe with dread swell with playful momentum. Moments that ask for intimacy receive melodrama. Revelations that should inspire awe are wrapped in cues that tell the audience to smile and move on to the next beat.

The result is devastating. Because music doesn't simply support emotion, it teaches the audience how to feel. And Disclosure Day's score repeatedly pushes against what little emotional weight the actors manage to create. Rather than drawing viewers deeper into relationships and moments, it creates distance. Instead of helping the audience connect, it quietly repels them.

That clash ultimately becomes the film in miniature.

Spielberg's camera insists something magical is happening.

Williams's score insists something whimsical is happening.

The actors behave as though something deeply human is happening.

The script gives none of them enough to work with.

By the end, Disclosure Day doesn't feel like a Steven Spielberg film so much as an approximation of one, as though someone fed fifty years of Spielberg and Williams into a machine and asked it to generate a Spielberg movie with a John Williams score.

The surface details are there.

The camera moves.

The swelling music.

The grand themes.

But somewhere in the process, humanity went missing.

It forgets what Spielberg feels like.

It remembers what Spielberg looks like.

And for perhaps the first time in his career, that simply isn't enough.

Woke Report

WOKE REPORT

You're Only Getting Half the Picture.

This section is our site's secret sauce, and what truly separates us from the rest. If you don't read it, you haven't read our review.

Have the filmmakers chosenradical progressive messaging over story?
Unlock the insightsthat could change your viewing experience and protect your family.

James Carrick

James Carrick is a passionate film enthusiast with a degree in theater and philosophy. James approaches dramatic criticism from a philosophic foundation grounded in aesthetics and ethics, offering insight and analysis that reveals layers of cinematic narrative with a touch of irreverence and a dash of snark.

Leave a Review
  1. gorilichis June 7, 2026 at

    Being Spielberg, I’m not buying tickets till I read your review.

  2. rebeltaz June 14, 2026 at

    > In a world where not a single one of you can probably understand why, aside from gaming, you’d even want to save your data anywhere other than the cloud…

    I say that if you AREN’T saving your data to anywhere other that the “cloud,” then you are a fool. The “cloud” belongs to someone else. The “cloud” can be manipulated, monitored, and mutilated. Your data stored “in the cloud” can be erased. You can be denied access to your own data stored “in the cloud.” Ever since the whole DIVX fiasco (the “time limited disc rental” format, not the modern day codec), I have understood that unless you OWN physical media in your hands, or at the very least, OWN, maintain and CONTROL the digital data on your OWN hardware, then you don’t actually own anything. You are just being ALLOWED access that can be revoked at any point.

    1. James Carrick June 14, 2026 at

      The point wasn’t about best practices but about practical reality on it’s own terms. Most people use the cloud instead of physical storage.

  3. gorilichis June 14, 2026 at

    Now that I’ve read your review, thank you, you saved me a lot of money. 🙂

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  1. markymark June 14, 2026 at Audience Review Edited
    Worth ItWoke-ishA-

    Not Spielberg’s finest movie, but I found it entertaining. The ending is a bit silly and they needed to shave off 15 to 20 minutes off the movie overall. Its got some funny parts. The lead actress’ (Blunt) boyfriend (Russell) is hilarious and probably the best performance, mostly because his reaction seemed the most honest. Overall I was entertained . Definitely not independence day or War of the Worlds. The villains in this movie are humans, which is the disappointment. That’s where its biggest flaw is. 1. An advanced civilization would not be at mankind’s mercy. 2. An advanced civilization cannot be as benevolent as Spielberg would wish.

  2. agi198273 June 12, 2026 at Audience Review Edited
    Not Worth ItWokeF

    The story telling and idea isn’t bad.
    Woke attributes:
    * Bad guys represented by a white man.
    * Good guys represented by a black man.
    * Women are disproportionately leaders.
    * Women are dismissive towards men.
    * No strong white male characters. Bad white guy is old and fragile. Lead white guy is a noodle-boy underdeveloped adult male.
    * Women’s extreme feelings (hysteria) is accepted, unchallenged and not critiqued.
    * Only married couple mentioned have an abusive father. Towards both the daughter and wife; Ends up arrested/jail/prison.
    * Being a nun is ridiculed and presented as something needs hiding.
    * Childhood trauma is presented as a positive thing (the twist).
    * Christianity is depicted as ancient and deprecated through cinematography/story telling.

    The only upside is that Christianity is, at all, in the movie. That’s a first in recent years.

Related Posts

 

X Marks the Spot - Follow us Today!!

 

 

'; win.document.open(); win.document.write(html); win.document.close(); return true; } function escapeHtml(str){ return String(str || '').replace(/[&<>"']/g, function(ch){ return ({'&':'&','<':'<','>':'>','"':'"',"'":'''})[ch] || ch; }); } function renderShareOptionsWindow(win, landscapeUrl, squareUrl, shareUrl, heading){ if (!win || win.closed) return false; var safeHeading = escapeHtml(heading || 'Share options'); var safeLandscape = escapeHtml(landscapeUrl || ''); var safeSquare = escapeHtml(squareUrl || ''); var safeUrl = escapeHtml(shareUrl || ''); // Keep this HTML script-free. A nested script tag inside this inline footer script can break under Cloudflare Rocket Loader. var html = '' + safeHeading + '' + '' + '

' + safeHeading + '

'; win.document.open(); win.document.write(html); win.document.close(); try { var doc = win.document; var btn = doc.getElementById('copyLinkBtn'); var status = doc.getElementById('shareStatus'); var field = doc.getElementById('shareUrlField'); var urlToCopy = String(shareUrl || ''); function setCopied(){ if (status) status.textContent = 'Link copied.'; if (btn) { btn.textContent = 'Copied!'; win.setTimeout(function(){ btn.textContent = 'Copy link'; }, 1500); } } function focusField(){ if (!field) return; field.removeAttribute('readonly'); field.focus(); field.select(); field.setSelectionRange(0, field.value.length); field.setAttribute('readonly','readonly'); } function legacyCopy(text){ var ta = doc.createElement('textarea'); ta.value = text; ta.setAttribute('readonly','readonly'); ta.style.position='fixed'; ta.style.top='0'; ta.style.left='0'; ta.style.opacity='0.01'; ta.style.pointerEvents='none'; doc.body.appendChild(ta); ta.focus(); ta.select(); ta.setSelectionRange(0, ta.value.length); var ok=false; try{ ok=!!doc.execCommand('copy'); }catch(err){} doc.body.removeChild(ta); return ok; } win.__wiowCopyShareLink = async function(){ if (!urlToCopy) { if (status) status.textContent='No share URL available.'; return false; } focusField(); try { if (win.navigator && win.navigator.clipboard && typeof win.navigator.clipboard.writeText === 'function') { await win.navigator.clipboard.writeText(urlToCopy); setCopied(); return false; } } catch(err) {} if (legacyCopy(urlToCopy)) { setCopied(); return false; } if (status) status.textContent='Press Ctrl+C or Cmd+C to copy the selected link.'; focusField(); return false; }; if (btn) btn.addEventListener('click', function(e){ e.preventDefault(); win.__wiowCopyShareLink(); }); var nextBtn = doc.getElementById('nextComboBtn'); if (nextBtn) nextBtn.addEventListener('click', function(e){ e.preventDefault(); if (win.opener && win.opener.__wiowRefreshShareOptions) win.opener.__wiowRefreshShareOptions(win); }); var mainBtn = doc.getElementById('mainComboBtn'); if (mainBtn) mainBtn.addEventListener('click', function(e){ e.preventDefault(); if (win.opener && win.opener.__wiowResetShareOptions) win.opener.__wiowResetShareOptions(win); }); Array.prototype.slice.call(doc.querySelectorAll('.preview-frame img')).forEach(function(img){ img.addEventListener('click', function(){ var overlay=doc.createElement('div'); overlay.className='overlay'; var full=doc.createElement('img'); full.src=img.getAttribute('data-full') || img.src; full.alt='Preview'; overlay.appendChild(full); overlay.addEventListener('click', function(){ overlay.remove(); }); doc.body.appendChild(overlay); }); }); } catch(err) {} return true; } async function buildShareImage(container, options){ options = options || {}; var postId = container.getAttribute('data-post-id'); var sharePage = container.getAttribute('data-share-page'); var kind = (container.getAttribute('data-share-kind') || 'critics').toLowerCase(); var posterUrl = container.getAttribute('data-poster-url') || findPosterUrl(); if (!posterUrl){ posterUrl = ''; } var isRatings = (kind === 'ratings' || kind === 'ratings-admin' || kind === 'ratings-question'); var isAudience = (kind === 'audience' || kind === 'audience-teaser' || kind === 'audience-question'); var action = isRatings ? 'wiow_build_ratings_share_image' : (isAudience ? 'wiow_build_audience_share_image' : 'wiow_build_share_image'); var payload = new URLSearchParams(); payload.append('action', action); payload.append('post_id', String(postId)); payload.append('poster_url', posterUrl); payload.append('share_context', kind); if (options.force) { payload.append('force', '1'); } if (options.reset) { payload.append('reset_combo', '1'); } if (kind === 'ratings-admin') { payload.append('admin', '1'); } if (kind === 'ratings-question' || kind === 'audience-question' || kind === 'critics-question') { payload.append('questions', '1'); payload.append('mode', 'questions'); } if (kind === 'audience-teaser' || kind === 'critics-teaser') { payload.append('mode', 'teaser'); } var res = await fetch('https://worthitorwoke.com/wp-admin/admin-ajax.php', { method: 'POST', credentials: 'same-origin', headers: {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}, body: payload.toString() }); var data = await res.json(); if (!data || !data.success || !data.data){ throw new Error((data && data.data && data.data.message) ? data.data.message : 'Share build failed.'); } return { image_url: data.data.image_url, share_url: data.data.share_url || sharePage, cycle_image_url: data.data.cycle_image_url || '', poster_url: data.data.poster_url || posterUrl || '' }; } async function buildShareSquareImage(container, cycleImageUrl, posterUrl, options){ options = options || {}; var postId = container.getAttribute('data-post-id'); var sharePage = container.getAttribute('data-share-page'); var kind = (container.getAttribute('data-share-kind') || 'critics').toLowerCase(); var isRatings = (kind === 'ratings' || kind === 'ratings-admin' || kind === 'ratings-question'); var isAudience = (kind === 'audience' || kind === 'audience-teaser' || kind === 'audience-question'); var action = isRatings ? 'wiow_build_ratings_share_image_square' : (isAudience ? 'wiow_build_audience_share_image_square' : 'wiow_build_share_image_square'); var payload = new URLSearchParams(); payload.append('action', action); payload.append('post_id', String(postId)); payload.append('share_context', kind); if (kind === 'ratings-admin') { payload.append('admin', '1'); } if (kind === 'ratings-question' || kind === 'audience-question' || kind === 'critics-question') { payload.append('questions', '1'); payload.append('mode', 'questions'); } if (kind === 'audience-teaser' || kind === 'critics-teaser') { payload.append('mode', 'teaser'); } if (cycleImageUrl) { payload.append('cycle_image_url', cycleImageUrl); } if (posterUrl) { payload.append('poster_url', posterUrl); } if (options.force) { payload.append('force', '1'); } if (options.reset) { payload.append('reset_combo', '1'); } var res = await fetch('https://worthitorwoke.com/wp-admin/admin-ajax.php', { method: 'POST', credentials: 'same-origin', headers: {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}, body: payload.toString() }); var data = await res.json(); if (!data || !data.success || !data.data){ throw new Error((data && data.data && data.data.message) ? data.data.message : 'Square share build failed.'); } return { image_url: data.data.image_url, share_url: data.data.share_url || sharePage, cycle_image_url: data.data.cycle_image_url || cycleImageUrl || '', poster_url: data.data.poster_url || posterUrl || '' }; } window.__wiowRefreshShareOptions = async function(win){ if (!wiowCanAdminNext || !window.__wiowLastShareOptionsContext || !window.__wiowLastShareOptionsContext.row) return false; var ctx = window.__wiowLastShareOptionsContext; var row = ctx.row; var heading = ctx.heading || 'Share options'; var targetWin = win || ctx.win; try { renderShareOptionsLoadingWindow(targetWin, heading); var built = await buildShareImage(row, { force:true }); var builtSquare = await buildShareSquareImage(row, built.cycle_image_url || '', built.poster_url || '', { force:true }); if (!built || !built.image_url || !builtSquare || !builtSquare.image_url) throw new Error('Share build failed.'); window.__wiowLastShareOptionsContext = { row: row, heading: heading, win: targetWin }; renderShareOptionsWindow(targetWin, built.image_url, builtSquare.image_url, built.share_url || row.getAttribute('data-share-page') || '', heading); } catch(err) { if (targetWin && !targetWin.closed) { var msg = (err && err.message) ? err.message : 'Could not build next combo.'; targetWin.document.open(); targetWin.document.write('

Could not build next combo

' + escapeHtml(msg) + '

'); targetWin.document.close(); } } return false; }; window.__wiowResetShareOptions = async function(win){ if (!wiowCanAdminNext || !window.__wiowLastShareOptionsContext || !window.__wiowLastShareOptionsContext.row) return false; var ctx = window.__wiowLastShareOptionsContext; var row = ctx.row; var heading = ctx.heading || 'Share options'; var targetWin = win || ctx.win; try { renderShareOptionsLoadingWindow(targetWin, heading); var built = await buildShareImage(row, { force:true, reset:true }); var builtSquare = await buildShareSquareImage(row, built.cycle_image_url || '', built.poster_url || '', { force:true, reset:true }); if (!built || !built.image_url || !builtSquare || !builtSquare.image_url) throw new Error('Share build failed.'); window.__wiowLastShareOptionsContext = { row: row, heading: heading, win: targetWin }; renderShareOptionsWindow(targetWin, built.image_url, builtSquare.image_url, built.share_url || row.getAttribute('data-share-page') || '', heading); } catch(err) { if (targetWin && !targetWin.closed) { var msg = (err && err.message) ? err.message : 'Could not build main combo.'; targetWin.document.open(); targetWin.document.write('

Could not build main combo

' + escapeHtml(msg) + '

'); targetWin.document.close(); } } return false; }; // Unified capture-phase share handler. Chrome incognito can allow the visual // pointer animation while another script prevents the later bubbling click // handler from ever running. Handle all top-level share buttons here first. document.addEventListener('click', async function(e){ var targetEl = e.target && e.target.nodeType === 1 ? e.target : (e.target && e.target.parentElement ? e.target.parentElement : null); var btn = targetEl && targetEl.closest ? targetEl.closest('.wiow-share-btn') : null; if (!btn) return; // Ignore the Audience modal "Rate" button (it also has wiow-share-btn class in your CSS usage) if (btn.hasAttribute('data-wiow-audience-open')) return; var row = btn.closest('[data-wiow-share="1"], .wiow-share-row'); if (!row) return; var platform = btn.getAttribute('data-platform'); // Public top-level controls must work even when AJAX generation or membership-gated data is unavailable. // Options still uses the full image-builder path below. if (platform === 'x' || platform === 'link') { e.preventDefault(); e.stopPropagation(); var quickStatus = row.querySelector('.wiow-share-status'); var quickUrl = btn.getAttribute('data-copy-url') || row.getAttribute('data-share-page') || row.getAttribute('data-post-url') || wiowShareFallbackUrl(row); if (!quickUrl) { if (quickStatus) quickStatus.textContent = 'No share URL available.'; return; } if (platform === 'x') { openPopup(btn.getAttribute('href') || btn.getAttribute('data-wiow-x-intent') || wiowShareXIntentUrl(row)); if (quickStatus) quickStatus.textContent = ''; return; } if (quickStatus) quickStatus.textContent = 'Copying link…'; var copiedQuick = await wiowCopyShareText(quickUrl); var quickLabel = btn.querySelector('.wiow-share-btn__label'); var quickOriginal = quickLabel ? quickLabel.textContent : 'Copy link'; if (copiedQuick) { if (quickStatus) quickStatus.textContent = 'Link copied.'; if (quickLabel) { quickLabel.textContent = 'Copied!'; window.setTimeout(function(){ quickLabel.textContent = quickOriginal || 'Copy link'; }, 1500); } } else { if (quickStatus) quickStatus.textContent = 'Could not copy link.'; } return; } e.preventDefault(); var previewWin = null; if (platform === 'copy') { previewWin = openShareOptionsWindow(); var preloadKind = (row.getAttribute('data-share-kind') || 'critics').trim().toLowerCase(); var preloadHeading = (preloadKind === 'audience' || preloadKind === 'audience-teaser' || preloadKind === 'audience-question') ? 'Audience share options' : ((preloadKind === 'ratings' || preloadKind === 'ratings-admin' || preloadKind === 'ratings-question') ? 'Ratings share options' : 'Critic share options'); renderShareOptionsLoadingWindow(previewWin, preloadHeading); } var statusEl = row.querySelector('.wiow-share-status'); if (statusEl) statusEl.textContent = (platform === 'link') ? 'Copying link…' : 'Preparing share…'; try { var publicShareUrl = wiowShareFallbackUrl(row); var publicPostTitle = (row.getAttribute('data-post-title') || '').trim(); if (!publicPostTitle) publicPostTitle = 'this'; var publicShareKind = (row.getAttribute('data-share-kind') || 'critics').trim().toLowerCase(); var publicUpperTitle = publicPostTitle.toUpperCase(); var publicLineTwo = (publicShareKind === 'audience' || publicShareKind === 'audience-teaser' || publicShareKind === 'audience-question') ? 'See what the audience is saying.' : ((publicShareKind === 'ratings' || publicShareKind === 'ratings-admin' || publicShareKind === 'ratings-question') ? 'See the Worth it or Woke score.' : 'See what sane critics say.'); var publicBaseText = 'Is ' + publicUpperTitle + ' Worth it or Woke?\n\n' + publicLineTwo + '\n\nFollow @worthitorwoke for more.'; // Public top-level X and Copy Link controls should not depend on AJAX image generation. // The share URL itself carries the OG/Twitter metadata; scrapers can generate/fetch the image from that URL. if ((platform === 'x' || platform === 'link') && publicShareUrl) { if (platform === 'link') { var copiedPublicLink = await wiowCopyShareText(publicShareUrl); var publicLabel = btn.querySelector('.wiow-share-btn__label'); var publicOriginalLabel = publicLabel ? publicLabel.textContent : ''; if (copiedPublicLink) { if (statusEl) statusEl.textContent = 'Link copied.'; if (publicLabel) { publicLabel.textContent = 'Copied!'; window.setTimeout(function(){ publicLabel.textContent = publicOriginalLabel || 'Copy link'; }, 1500); } } else { if (statusEl) statusEl.textContent = 'Could not copy link.'; } return; } openPopup('https://twitter.com/intent/tweet?text=' + encodeURIComponent(publicBaseText) + '&url=' + encodeURIComponent(publicShareUrl)); if (statusEl) statusEl.textContent = ''; return; } var built; var builtSquare = null; if (platform === 'copy') { // Build the landscape first so it chooses exactly one featured/gallery cycle image, // then pass that same image to the square builder. This prevents two square // outputs or mismatched gallery states in the Share Options window. built = await buildShareImage(row, { force:true }); builtSquare = await buildShareSquareImage(row, built.cycle_image_url || '', built.poster_url || '', { force:true }); if (!built || !built.image_url) { throw new Error('Landscape share build failed.'); } if (!builtSquare || !builtSquare.image_url) { throw new Error('Square share build failed.'); } } else { built = await buildShareImage(row); } var shareUrl = built.share_url; var postUrl = (row.getAttribute('data-post-url') || '').trim() || shareUrl; var postTitle = (row.getAttribute('data-post-title') || '').trim(); if (!postTitle) postTitle = 'this'; var shareKind = (row.getAttribute('data-share-kind') || 'critics').trim().toLowerCase(); var upperTitle = postTitle.toUpperCase(); var lineTwo = (shareKind === 'audience' || shareKind === 'audience-teaser' || shareKind === 'audience-question') ? 'See what the audience is saying.' : ((shareKind === 'ratings' || shareKind === 'ratings-admin' || shareKind === 'ratings-question') ? 'See the Worth it or Woke score.' : 'See what sane critics say.'); var baseText = 'Is ' + upperTitle + ' Worth it or Woke?\n\n' + lineTwo + '\n\nFollow @worthitorwoke for more.'; var textWithUrl = baseText + '\n\n' + shareUrl; var postTextWithUrl = baseText + '\n\n' + postUrl; var encodedUrl = encodeURIComponent(shareUrl); var encodedBaseText = encodeURIComponent(baseText); var encodedTextWithUrl = encodeURIComponent(textWithUrl); if (platform === 'link') { var copiedLink = await wiowCopyShareText(shareUrl); var label = btn.querySelector('.wiow-share-btn__label'); var originalLabel = label ? label.textContent : ''; if (copiedLink) { if (statusEl) statusEl.textContent = 'Link copied.'; if (label) { label.textContent = 'Copied!'; window.setTimeout(function(){ label.textContent = originalLabel || 'Copy link'; }, 1500); } } else { if (statusEl) statusEl.textContent = 'Could not copy link.'; } return; } if (platform === 'x'){ // X gets the URL through the intent URL parameter, so do not also duplicate it in the tweet text. openPopup('https://twitter.com/intent/tweet?text=' + encodedBaseText + '&url=' + encodedUrl); } else if (platform === 'facebook'){ // Facebook sharing has been intentionally removed from this plugin flow. if (statusEl) statusEl.textContent = 'Facebook sharing is currently disabled.'; } else if (platform === 'copy'){ var heading = (shareKind === 'audience' || shareKind === 'audience-teaser' || shareKind === 'audience-question') ? 'Audience share options' : ((shareKind === 'ratings' || shareKind === 'ratings-admin' || shareKind === 'ratings-question') ? 'Ratings share options' : 'Critic share options'); window.__wiowLastShareOptionsContext = { row: row, heading: heading, win: previewWin }; var shown = renderShareOptionsWindow(previewWin, built.image_url, (builtSquare ? builtSquare.image_url : ''), shareUrl, heading); if (!shown) { var copied = false; if (navigator.clipboard && window.isSecureContext && navigator.clipboard.writeText){ try { await navigator.clipboard.writeText(shareUrl); copied = true; } catch (copyErr) {} } if (!copied) { var ta = document.createElement('textarea'); ta.value = shareUrl; ta.setAttribute('readonly', 'readonly'); ta.style.position = 'fixed'; ta.style.opacity = '0'; document.body.appendChild(ta); ta.focus(); ta.select(); ta.setSelectionRange(0, ta.value.length); copied = !!document.execCommand('copy'); ta.remove(); } } } if (statusEl) statusEl.textContent = (platform === 'copy') ? 'Ready.' : ''; } catch(err){ if (previewWin && !previewWin.closed) { previewWin.close(); } if (statusEl) statusEl.textContent = (err && err.message) ? err.message : 'Could not share.'; } }, true); })();