Share works in the iOS app on an episode of a private feed (#452)

With no ipx-play link (a private feed, or no ipx-play set up), Share fell
back to the share sheet after the request for the link, which WebKit
refuses once an await has come between the press and it, and a Patreon
address went through confirm() first, which the iOS app answers Cancel
without showing anything (#453). Taps sent the request and nothing
appeared. That address now goes through the same menu as an ipx-play
link, so the sheet opens from a press of its own, and the warning about
an address that carries your access is written in the menu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-13 16:57:25 +00:00
parent c133adf398
commit b3636e648f
4 changed files with 39 additions and 19 deletions

View File

@@ -2258,6 +2258,18 @@ test('Share hands the feed, and an episode as a link to its page on ipx-play (#4
// A paid feed's episode never goes there: the page shares its own address instead.
const paid = await page.evaluate(() => api('/api/entries/paid-show/paid-1/share', { method: 'POST', body: '{}' }));
expect(paid).toEqual({ url: null, why: 'private' });
// Through the same menu all the same: the sheet needs a press of its own after that request
// (#452), and a key in the address is warned of there, not asked with confirm(), which the iOS
// app answers Cancel (#453).
await page.evaluate(async () => {
window.confirm = () => false;
const e = (await api('/api/feeds/paid-show/entries') as ListPage).entries[0];
await shareEpisode({ ...e, link: 'https://www.patreon.com/posts/1?auth=secret123' }, null);
});
await expect(page.locator('#modalCard')).toContainText('includes your own access');
await expect(page.locator('#shat')).toHaveCount(0);
await page.locator('#shlink').click();
await expect.poll(() => page.evaluate(() => window.shared.at(-1)?.url)).toBe('https://www.patreon.com/posts/1?auth=secret123');
});
test('a refresh button turns from the press to the end of the scan it asked for', async ({ page }) => {