This commit is contained in:
jjbrunton committed 2026-01-05 15:11:35 +00:00
1 parent cad1f7b842
commit 2a78f65b09
2 files changed
+68 -13

No files matched your search

+39 -4
View File
@@ -63,11 +63,46 @@ async function manualLogin(): Promise<void> {
await page.goto('https://www.reddit.com'); await page.goto('https://www.reddit.com');
await page.waitForTimeout(3000); await page.waitForTimeout(3000);
// Check for login indicators const visibleIndicators = [
const userButton = await page.$('[data-testid="user-drawer-button"]'); '[data-testid="user-drawer-button"]',
const avatar = await page.$('[class*="avatar"], [class*="Avatar"]'); 'button[aria-label*="User menu"]',
];
const isLoggedIn = (userButton && (await userButton.isVisible())) || avatar !== null; let isLoggedIn = false;
for (const selector of visibleIndicators) {
const el = page.locator(selector).first();
if (await el.isVisible().catch(() => false)) {
isLoggedIn = true;
break;
}
}
if (!isLoggedIn) {
const attributeIndicators = [
'reddit-header-large[is-logged-in="true"]',
'shreddit-post-overflow-menu[current-user-id]',
];
for (const selector of attributeIndicators) {
const el = await page.$(selector);
if (el) {
isLoggedIn = true;
break;
}
}
}
if (!isLoggedIn) {
isLoggedIn = await page.evaluate(async () => {
try {
const res = await fetch('https://www.reddit.com/api/me.json', { credentials: 'include' });
if (!res.ok) return false;
const data = await res.json();
return Boolean(data && data.name);
} catch {
return false;
}
});
}
console.log(); console.log();
if (isLoggedIn) { if (isLoggedIn) {
+29 -9
View File
@@ -238,20 +238,40 @@ export class RedditMessagePage {
// Wait for page to stabilize // Wait for page to stabilize
await this.page.waitForTimeout(2000); await this.page.waitForTimeout(2000);
// Check for user menu button (indicates logged in) const visibleIndicators = [
const userButton = await this.page.$('[data-testid="user-drawer-button"]'); '[data-testid="user-drawer-button"]',
if (userButton) { 'button[aria-label*="User menu"]',
const isVisible = await userButton.isVisible(); ];
return isVisible;
}
// Alternative check - look for avatar or user icon for (const selector of visibleIndicators) {
const avatar = await this.page.$('[class*="avatar"], [class*="Avatar"]'); const el = this.page.locator(selector).first();
if (avatar) { if (await el.isVisible().catch(() => false)) {
return true; return true;
} }
}
const attributeIndicators = [
'reddit-header-large[is-logged-in="true"]',
'shreddit-post-overflow-menu[current-user-id]',
];
for (const selector of attributeIndicators) {
const el = await this.page.$(selector);
if (el) {
return true;
}
}
return await this.page.evaluate(async () => {
try {
const res = await fetch('https://www.reddit.com/api/me.json', { credentials: 'include' });
if (!res.ok) return false;
const data = await res.json();
return Boolean(data && data.name);
} catch {
return false; return false;
}
});
} catch (error) { } catch (error) {
this.logger.error('Failed to check login status:', error); this.logger.error('Failed to check login status:', error);
return false; return false;