Skip to content

Commit 50e13f8

Browse files
committed
feat: remove unused libraries
1 parent 7959208 commit 50e13f8

2 files changed

Lines changed: 17 additions & 105 deletions

File tree

README.md

Lines changed: 17 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -129,16 +129,8 @@ API reference & examples
129129

130130
### Functions (promise / async)
131131

132-
- `getAllPaged(offset: number, limit: number): Contact[]`
133-
- Low-level paged fetch that mirrors the native call. On Android the result is sorted by `lastUpdatedAt` descending; iOS order is undefined.
134-
135-
```ts
136-
const first500 = await getAllPaged(0, 500);
137-
const next500 = await getAllPaged(500, 500);
138-
```
139-
140132
- `getAll(options?: { offset?: number; limit?: number; pageSize?: number }): Promise<Contact[]>`
141-
- Convenience wrapper for `getAll`. When `limit` is provided it behaves like `getAllPaged`. Otherwise it will loop until all contacts are fetched (respecting `pageSize`).
133+
- Convenience wrapper for the native `getAll`. When `limit` is provided it returns that specific page. Otherwise it loops until all contacts are fetched (respecting `pageSize`, default 500).
142134

143135
```ts
144136
const everyone = await getAll({ pageSize: 400 });
@@ -159,63 +151,35 @@ API reference & examples
159151
const page = await getUpdatedFromPersistedPaged(0, 300);
160152
```
161153

162-
### Generators
163-
164-
- `streamAll(pageSize?: number)`
165-
- Async generator that yields `Contact[]` pages until the address book is exhausted. Under the hood it repeatedly calls `getAll`.
166-
167-
```ts
168-
for await (const contacts of streamAll(250)) {
169-
console.log('Received', contacts.length);
170-
}
171-
```
172-
173-
- `streamUpdatedSince(since: string, pageSize?: number)`
174-
- Async generator that yields `{ items: ContactChange[] }` based on a provided token and returns the final token after the loop completes.
175-
176-
```ts
177-
let token = lastToken;
178-
for await (const { items } of streamUpdatedSince(token, 200)) {
179-
// process items
180-
}
181-
```
182-
183-
- `streamUpdatedFromPersisted(pageSize?: number)`
184-
- Async generator that uses the native persisted token and commits the new token automatically when finished. Returns the committed token.
185-
```ts
186-
const committedToken = await (async () => {
187-
let finalToken = '';
188-
for await (const { items } of streamUpdatedFromPersisted(200)) {
189-
finalToken = items.length ? finalToken : finalToken;
190-
}
191-
return finalToken;
192-
})();
193-
```
194-
195154
Quick start
196155

197156
```ts
198157
import {
199-
streamAll,
200-
streamUpdatedFromPersisted,
158+
commitPersisted,
159+
getAll,
160+
getUpdatedFromPersistedPaged,
201161
} from '@omarsdev/react-native-contacts';
202162
import { ensureContactsPermission } from './permissions'; // from snippet above
203163

204-
// First run: baseline in chunks (paged)
164+
// First run: baseline in batches (paged)
205165
if (await ensureContactsPermission()) {
206-
for await (const page of streamAll(300)) {
207-
// page is Contact[]
208-
console.log('All page', page.length);
209-
}
166+
const everyone = await getAll({ pageSize: 300 });
167+
console.log('Fetched contacts', everyone.length);
210168
}
211169

212-
// Next runs: delta in chunks (token stored natively)
170+
// Next runs: delta batches using native token
213171
if (await ensureContactsPermission()) {
214-
for await (const { items } of streamUpdatedFromPersisted(300)) {
215-
// items is ContactChange[] describing created/updated/deleted contacts
172+
let offset = 0;
173+
let sessionToken: string | undefined;
174+
for (;;) {
175+
const { items, nextSince } = await getUpdatedFromPersistedPaged(offset, 300);
176+
if (sessionToken == null) sessionToken = nextSince;
177+
if (!items.length) break;
216178
console.log('Delta page', items.length);
179+
offset += items.length;
180+
if (items.length < 300) break;
217181
}
218-
// streamUpdatedFromPersisted commits the new token automatically
182+
if (sessionToken) commitPersisted(sessionToken);
219183
}
220184
```
221185

src/index.tsx

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@ export type {
77
PhoneNumberUpdate,
88
} from './NativeContactsLastUpdated';
99

10-
// Paged API: Full list. On Android sorted by last updated desc; iOS order undefined.
11-
export function getAllPaged(offset: number, limit: number) {
12-
return ContactsLastUpdated.getAll(offset, limit);
13-
}
14-
1510
// Convenience: fetch contacts either by page or entire list.
1611
// Provide `limit` to fetch a single page; omit to stream until exhaustion starting at optional `offset`.
1712
export async function getAll(options?: {
@@ -63,50 +58,3 @@ export function commitPersisted(nextSince: string) {
6358
export function getById(id: string) {
6459
return ContactsLastUpdated.getById(id);
6560
}
66-
67-
// Convenience: stream all contacts in chunks. Yields arrays of contacts.
68-
export async function* streamAll(pageSize = 200) {
69-
let offset = 0;
70-
while (true) {
71-
const page = await ContactsLastUpdated.getAll(offset, pageSize);
72-
if (!page || page.length === 0) break;
73-
yield page;
74-
offset += page.length;
75-
}
76-
}
77-
78-
// Convenience: stream updated contacts in chunks. Yields arrays of contacts and returns final token.
79-
export async function* streamUpdatedSince(since: string, pageSize = 200) {
80-
let offset = 0;
81-
let nextSince = since;
82-
// We keep the same `since` across pages; only adopt `nextSince` after finishing all pages
83-
while (true) {
84-
const { items, nextSince: proposed } =
85-
await ContactsLastUpdated.getUpdatedSince(since, offset, pageSize);
86-
if (!items || items.length === 0) {
87-
nextSince = proposed || nextSince;
88-
break;
89-
}
90-
yield { items };
91-
offset += items.length;
92-
nextSince = proposed || nextSince;
93-
}
94-
return nextSince;
95-
}
96-
97-
// Convenience: stream delta using native-persisted token. Returns final token committed.
98-
export async function* streamUpdatedFromPersisted(pageSize = 200) {
99-
let offset = 0;
100-
let sessionToken: string | undefined;
101-
while (true) {
102-
const { items, nextSince } =
103-
await ContactsLastUpdated.getUpdatedFromPersisted(offset, pageSize);
104-
if (sessionToken == null) sessionToken = nextSince;
105-
if (!items || items.length === 0) break;
106-
yield { items };
107-
offset += items.length;
108-
if (items.length < pageSize) break;
109-
}
110-
if (sessionToken) ContactsLastUpdated.commitPersisted(sessionToken);
111-
return sessionToken || (await ContactsLastUpdated.getPersistedSince());
112-
}

0 commit comments

Comments
 (0)