diff --git a/packages/api/src/events/user/user_created.ts b/packages/api/src/events/user/user_created.ts index da6bbea76..eee714258 100644 --- a/packages/api/src/events/user/user_created.ts +++ b/packages/api/src/events/user/user_created.ts @@ -126,6 +126,7 @@ export class AddPopularReadsToNewUser } async afterInsert(event: InsertEvent): Promise { - await addPopularReadsForNewUser(event.entity.user.id) + const isIOSUser = event.entity.user.source === 'APPLE' + await addPopularReadsForNewUser(event.entity.user.id, isIOSUser) } } diff --git a/packages/api/src/services/popular_reads.ts b/packages/api/src/services/popular_reads.ts index fef94277a..116c59d2f 100644 --- a/packages/api/src/services/popular_reads.ts +++ b/packages/api/src/services/popular_reads.ts @@ -113,13 +113,15 @@ const addPopularReads = async ( } export const addPopularReadsForNewUser = async ( - userId: string + userId: string, + isIOSUser = false ): Promise => { await addPopularReads( userId, 'omnivore_get_started', 'power_read_it_later', - 'omnivore_organize' + 'omnivore_organize', + isIOSUser ? 'omnivore_ios' : 'omnivore_android' ) } diff --git a/packages/api/test/routers/auth.test.ts b/packages/api/test/routers/auth.test.ts index 7e1f1eaa5..aedee397e 100644 --- a/packages/api/test/routers/auth.test.ts +++ b/packages/api/test/routers/auth.test.ts @@ -569,21 +569,24 @@ describe('auth router', () => { context('when inputs are valid and user not exists', () => { let name = 'test_user' let username = 'test_user' + let sourceUserId = 'test_source_user_id' + let email = 'test_user@omnivore.app' + let bio = 'test_bio' - after(async () => { + afterEach(async () => { await deleteTestUser(username) }) it('adds popular reads to the library', async () => { const pendingUserToken = await createPendingUserToken({ - sourceUserId: 'test_source_user_id', - email: 'test_user@omnivore.app', - provider: 'APPLE', + sourceUserId, + email, + provider: 'EMAIL', name, username, }) await createAccountRequest( - '', + bio, name, username, pendingUserToken! @@ -596,6 +599,30 @@ describe('auth router', () => { expect(count).to.eql(3) }) + + it('adds iOS popular reads to the library if provider is iOS', async () => { + const pendingUserToken = await createPendingUserToken({ + sourceUserId, + email, + provider: 'APPLE', + name, + username, + }) + await createAccountRequest( + bio, + name, + username, + pendingUserToken! + ).expect(200) + const user = await getRepository(User).findOneBy({ name }) + const [popularReads, count] = (await searchPages({}, user?.id!)) || [ + [], + 0, + ] + + // TODO: update this when we have more iOS popular reads + expect(count).to.eql(3) + }) }) }) })