email: route gmail app-password accounts over IMAP (Gmail API only for oauth)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -140,7 +140,7 @@ accountsRouter.post('/:id/sync', async (ctx) => {
|
||||
|
||||
// Determine if this is a first sync or resync
|
||||
let isFirstSync = true;
|
||||
if (account.provider === 'gmail') {
|
||||
if (account.provider === 'gmail' && account.authType === 'oauth') {
|
||||
const db = openEmailDb(user.email);
|
||||
try {
|
||||
isFirstSync = !getSyncMeta(db, 'last_sync_at');
|
||||
@@ -176,7 +176,8 @@ accountsRouter.post('/:id/sync', async (ctx) => {
|
||||
|
||||
await updateEmailAccountStatus(id, 'queued');
|
||||
|
||||
const jobType = account.provider === 'gmail' ? 'gmail-sync' : 'email-sync';
|
||||
// Gmail API sync needs OAuth; a gmail account with an app password syncs over IMAP instead.
|
||||
const jobType = account.provider === 'gmail' && account.authType === 'oauth' ? 'gmail-sync' : 'email-sync';
|
||||
|
||||
const job = await enqueueJob({
|
||||
lane: 'email',
|
||||
|
||||
@@ -275,7 +275,8 @@ export async function performResync({ accountId, userEmail, userId }: ResyncPara
|
||||
const account = await getEmailAccount(accountId);
|
||||
if (!account || account.userId !== userId) throw new Error('Account not found');
|
||||
|
||||
if (account.provider === 'gmail') {
|
||||
// Gmail API resync needs OAuth; a gmail account authed with an app password resyncs over IMAP.
|
||||
if (account.provider === 'gmail' && account.authType === 'oauth') {
|
||||
return gmailResync(userEmail);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user