diff --git a/src/flows/DesktopFlow.ts b/src/flows/DesktopFlow.ts index afb863d..c0f25e0 100644 --- a/src/flows/DesktopFlow.ts +++ b/src/flows/DesktopFlow.ts @@ -10,7 +10,6 @@ * - Desktop searches */ -import type { Page } from 'playwright' import type { MicrosoftRewardsBot } from '../index' import type { Account } from '../interface/Account' import { saveSessionData } from '../util/Load' @@ -49,8 +48,7 @@ export class DesktopFlow { this.bot.log(false, 'DESKTOP-FLOW', 'Browser started successfully') // Login into MS Rewards, then optionally stop if compromised - const login = (this.bot as unknown as { login: { login: (page: Page, email: string, password: string, totp?: string) => Promise } }).login - await login.login(this.bot.homePage, account.email, account.password, account.totp) + await this.bot.login.login(this.bot.homePage, account.email, account.password, account.totp) if (this.bot.compromisedModeActive) { // User wants the page to remain open for manual recovery. Do not proceed to tasks. @@ -116,20 +114,17 @@ export class DesktopFlow { // Complete daily set if (this.bot.config.workers.doDailySet) { - const workers = (this.bot as unknown as { workers: { doDailySet: (page: Page, data: unknown) => Promise } }).workers - await workers.doDailySet(workerPage, data) + await this.bot.workers.doDailySet(workerPage, data) } // Complete more promotions if (this.bot.config.workers.doMorePromotions) { - const workers = (this.bot as unknown as { workers: { doMorePromotions: (page: Page, data: unknown) => Promise } }).workers - await workers.doMorePromotions(workerPage, data) + await this.bot.workers.doMorePromotions(workerPage, data) } // Complete punch cards if (this.bot.config.workers.doPunchCards) { - const workers = (this.bot as unknown as { workers: { doPunchCard: (page: Page, data: unknown) => Promise } }).workers - await workers.doPunchCard(workerPage, data) + await this.bot.workers.doPunchCard(workerPage, data) } // Do desktop searches diff --git a/src/flows/MobileFlow.ts b/src/flows/MobileFlow.ts index 50d1ded..9d91941 100644 --- a/src/flows/MobileFlow.ts +++ b/src/flows/MobileFlow.ts @@ -11,7 +11,6 @@ * - Mobile retry logic */ -import type { Page } from 'playwright' import type { MicrosoftRewardsBot } from '../index' import type { Account } from '../interface/Account' import { saveSessionData } from '../util/Load' @@ -56,8 +55,7 @@ export class MobileFlow { this.bot.log(true, 'MOBILE-FLOW', 'Browser started successfully') // Login into MS Rewards, then respect compromised mode - const login = (this.bot as unknown as { login: { login: (page: Page, email: string, password: string, totp?: string) => Promise; getMobileAccessToken: (page: Page, email: string, totp?: string) => Promise } }).login - await login.login(this.bot.homePage, account.email, account.password, account.totp) + await this.bot.login.login(this.bot.homePage, account.email, account.password, account.totp) if (this.bot.compromisedModeActive) { keepBrowserOpen = true @@ -84,7 +82,7 @@ export class MobileFlow { return { initialPoints: 0, collectedPoints: 0 } } - const accessToken = await login.getMobileAccessToken(this.bot.homePage, account.email, account.totp) + const accessToken = await this.bot.login.getMobileAccessToken(this.bot.homePage, account.email, account.totp) await this.bot.browser.func.goHome(this.bot.homePage) const data = await this.bot.browser.func.getDashboardData() diff --git a/src/index.ts b/src/index.ts index e37a8c2..0d332ef 100644 --- a/src/index.ts +++ b/src/index.ts @@ -31,6 +31,7 @@ import { StartupValidator } from './util/StartupValidator' import { Util } from './util/Utils' import { Activities } from './functions/Activities' +import { Login } from './functions/Login' import { Workers } from './functions/Workers' import { DesktopFlow } from './flows/DesktopFlow' @@ -47,6 +48,7 @@ export class MicrosoftRewardsBot { public config public utils: Util public activities: Activities = new Activities(this) + public login!: Login // Fixed: Login instance needed by flows public browser: { func: BrowserFunc, utils: BrowserUtil @@ -88,6 +90,7 @@ export class MicrosoftRewardsBot { func: new BrowserFunc(this), utils: new BrowserUtil(this) } + this.login = new Login(this) // Fixed: Initialize Login instance this.workers = new Workers(this) this.humanizer = new Humanizer(this.utils, this.config.humanization) this.activeWorkers = this.config.clusters