Skip to content

Commit b510a8f

Browse files
committed
fix createMembership
1 parent c42b307 commit b510a8f

9 files changed

Lines changed: 69 additions & 49 deletions

File tree

docs/examples/teams/create-membership.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
```javascript
2-
import { Client, Teams, Roles } from "react-native-appwrite";
2+
import { Client, Teams } from "react-native-appwrite";
33

44
const client = new Client()
55
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@@ -9,7 +9,7 @@ const teams = new Teams(client);
99

1010
const result = await teams.createMembership({
1111
teamId: '<TEAM_ID>',
12-
roles: [Roles.Admin],
12+
roles: [],
1313
email: 'email@example.com', // optional
1414
userId: '<USER_ID>', // optional
1515
phone: '+12065550100', // optional

docs/examples/teams/update-membership.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
```javascript
2-
import { Client, Teams, Roles } from "react-native-appwrite";
2+
import { Client, Teams } from "react-native-appwrite";
33

44
const client = new Client()
55
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@@ -10,7 +10,7 @@ const teams = new Teams(client);
1010
const result = await teams.updateMembership({
1111
teamId: '<TEAM_ID>',
1212
membershipId: '<MEMBERSHIP_ID>',
13-
roles: [Roles.Admin]
13+
roles: []
1414
});
1515

1616
console.log(result);

src/client.ts

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Models } from './models';
22
import { Service } from './service';
33
import { Platform } from 'react-native';
4+
import { Query } from './query';
45
import JSONbigModule from 'json-bigint';
56
import BigNumber from 'bignumber.js';
67
const JSONbigParser = JSONbigModule({ storeAsString: false });
@@ -90,8 +91,10 @@ type Realtime = {
9091
url?: string;
9192
lastMessage?: RealtimeResponse;
9293
channels: Set<string>;
94+
queries: Set<string>;
9395
subscriptions: Map<number, {
9496
channels: string[];
97+
queries: string[];
9598
callback: (payload: RealtimeResponseEvent<any>) => void
9699
}>;
97100
subscriptionsCounter: number;
@@ -101,7 +104,7 @@ type Realtime = {
101104
connect: () => void;
102105
createSocket: () => void;
103106
createHeartbeat: () => void;
104-
cleanUp: (channels: string[]) => void;
107+
cleanUp: (channels: string[], queries: string[]) => void;
105108
onMessage: (event: MessageEvent) => void;
106109
}
107110

@@ -284,6 +287,7 @@ class Client {
284287
heartbeat: undefined,
285288
url: '',
286289
channels: new Set(),
290+
queries: new Set(),
287291
subscriptions: new Map(),
288292
subscriptionsCounter: 0,
289293
reconnect: true,
@@ -330,6 +334,9 @@ class Client {
330334
this.realtime.channels.forEach(channel => {
331335
channels.append('channels[]', channel);
332336
});
337+
this.realtime.queries.forEach(query => {
338+
channels.append('queries[]', query);
339+
});
333340

334341
const url = this.config.endpointRealtime + '/realtime?' + channels.toString();
335342

@@ -408,7 +415,7 @@ class Client {
408415
console.error(e);
409416
}
410417
},
411-
cleanUp: channels => {
418+
cleanUp: (channels, queries) => {
412419
this.realtime.channels.forEach(channel => {
413420
if (channels.includes(channel)) {
414421
let found = Array.from(this.realtime.subscriptions).some(([_key, subscription] )=> {
@@ -420,6 +427,18 @@ class Client {
420427
}
421428
}
422429
})
430+
431+
this.realtime.queries.forEach(query => {
432+
if (queries.includes(query)) {
433+
let found = Array.from(this.realtime.subscriptions).some(([_key, subscription]) => {
434+
return subscription.queries?.includes(query);
435+
})
436+
437+
if (!found) {
438+
this.realtime.queries.delete(query);
439+
}
440+
}
441+
})
423442
}
424443
}
425444

@@ -448,21 +467,29 @@ class Client {
448467
* @param {(payload: RealtimeMessage) => void} callback Is called on every realtime update.
449468
* @returns {() => void} Unsubscribes from events.
450469
*/
451-
subscribe<T extends unknown>(channels: string | string[], callback: (payload: RealtimeResponseEvent<T>) => void): () => void {
470+
subscribe<T extends unknown>(
471+
channels: string | string[],
472+
callback: (payload: RealtimeResponseEvent<T>) => void,
473+
queries: (string | Query)[] = []
474+
): () => void {
452475
let channelArray = typeof channels === 'string' ? [channels] : channels;
453476
channelArray.forEach(channel => this.realtime.channels.add(channel));
454477

478+
const queryStrings = (queries ?? []).map(q => typeof q === 'string' ? q : q.toString());
479+
queryStrings.forEach(query => this.realtime.queries.add(query));
480+
455481
const counter = this.realtime.subscriptionsCounter++;
456482
this.realtime.subscriptions.set(counter, {
457483
channels: channelArray,
484+
queries: queryStrings,
458485
callback
459486
});
460487

461488
this.realtime.connect();
462489

463490
return () => {
464491
this.realtime.subscriptions.delete(counter);
465-
this.realtime.cleanUp(channelArray);
492+
this.realtime.cleanUp(channelArray, queryStrings);
466493
this.realtime.connect();
467494
}
468495
}

src/enums/roles.ts

Lines changed: 0 additions & 5 deletions
This file was deleted.

src/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,5 @@ export { BrowserPermission } from './enums/browser-permission';
2929
export { ImageFormat } from './enums/image-format';
3030
export { ExecutionMethod } from './enums/execution-method';
3131
export { ImageGravity } from './enums/image-gravity';
32-
export { Roles } from './enums/roles';
3332
export { ExecutionTrigger } from './enums/execution-trigger';
3433
export { ExecutionStatus } from './enums/execution-status';

src/services/account.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ export class Account extends Service {
447447
): Promise<Models.MfaType> {
448448
let params: { type: AuthenticatorType };
449449

450-
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'type' in paramsOrFirst)) {
450+
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('type' in paramsOrFirst))) {
451451
params = (paramsOrFirst || {}) as { type: AuthenticatorType };
452452
} else {
453453
params = {
@@ -492,7 +492,7 @@ export class Account extends Service {
492492
): Promise<Models.MfaType> {
493493
let params: { type: AuthenticatorType };
494494

495-
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'type' in paramsOrFirst)) {
495+
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('type' in paramsOrFirst))) {
496496
params = (paramsOrFirst || {}) as { type: AuthenticatorType };
497497
} else {
498498
params = {
@@ -541,7 +541,7 @@ export class Account extends Service {
541541
): Promise<Models.User<Preferences>> {
542542
let params: { type: AuthenticatorType, otp: string };
543543

544-
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'type' in paramsOrFirst)) {
544+
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('type' in paramsOrFirst || 'otp' in paramsOrFirst))) {
545545
params = (paramsOrFirst || {}) as { type: AuthenticatorType, otp: string };
546546
} else {
547547
params = {
@@ -599,7 +599,7 @@ export class Account extends Service {
599599
): Promise<Models.User<Preferences>> {
600600
let params: { type: AuthenticatorType, otp: string };
601601

602-
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'type' in paramsOrFirst)) {
602+
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('type' in paramsOrFirst || 'otp' in paramsOrFirst))) {
603603
params = (paramsOrFirst || {}) as { type: AuthenticatorType, otp: string };
604604
} else {
605605
params = {
@@ -655,7 +655,7 @@ export class Account extends Service {
655655
): Promise<{}> {
656656
let params: { type: AuthenticatorType };
657657

658-
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'type' in paramsOrFirst)) {
658+
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('type' in paramsOrFirst))) {
659659
params = (paramsOrFirst || {}) as { type: AuthenticatorType };
660660
} else {
661661
params = {
@@ -700,7 +700,7 @@ export class Account extends Service {
700700
): Promise<{}> {
701701
let params: { type: AuthenticatorType };
702702

703-
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'type' in paramsOrFirst)) {
703+
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('type' in paramsOrFirst))) {
704704
params = (paramsOrFirst || {}) as { type: AuthenticatorType };
705705
} else {
706706
params = {
@@ -746,7 +746,7 @@ export class Account extends Service {
746746
): Promise<Models.MfaChallenge> {
747747
let params: { factor: AuthenticationFactor };
748748

749-
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'factor' in paramsOrFirst)) {
749+
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('factor' in paramsOrFirst))) {
750750
params = (paramsOrFirst || {}) as { factor: AuthenticationFactor };
751751
} else {
752752
params = {
@@ -795,7 +795,7 @@ export class Account extends Service {
795795
): Promise<Models.MfaChallenge> {
796796
let params: { factor: AuthenticationFactor };
797797

798-
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'factor' in paramsOrFirst)) {
798+
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('factor' in paramsOrFirst))) {
799799
params = (paramsOrFirst || {}) as { factor: AuthenticationFactor };
800800
} else {
801801
params = {
@@ -1281,7 +1281,7 @@ export class Account extends Service {
12811281
): Promise<Models.User<Preferences>> {
12821282
let params: { prefs: Partial<Preferences> };
12831283

1284-
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'prefs' in paramsOrFirst)) {
1284+
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('prefs' in paramsOrFirst))) {
12851285
params = (paramsOrFirst || {}) as { prefs: Partial<Preferences> };
12861286
} else {
12871287
params = {
@@ -1663,7 +1663,7 @@ export class Account extends Service {
16631663
): void | URL {
16641664
let params: { provider: OAuthProvider, success?: string, failure?: string, scopes?: string[] };
16651665

1666-
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'provider' in paramsOrFirst)) {
1666+
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('provider' in paramsOrFirst || 'success' in paramsOrFirst || 'failure' in paramsOrFirst || 'scopes' in paramsOrFirst))) {
16671667
params = (paramsOrFirst || {}) as { provider: OAuthProvider, success?: string, failure?: string, scopes?: string[] };
16681668
} else {
16691669
params = {
@@ -2353,7 +2353,7 @@ export class Account extends Service {
23532353
): void | URL {
23542354
let params: { provider: OAuthProvider, success?: string, failure?: string, scopes?: string[] };
23552355

2356-
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'provider' in paramsOrFirst)) {
2356+
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('provider' in paramsOrFirst || 'success' in paramsOrFirst || 'failure' in paramsOrFirst || 'scopes' in paramsOrFirst))) {
23572357
params = (paramsOrFirst || {}) as { provider: OAuthProvider, success?: string, failure?: string, scopes?: string[] };
23582358
} else {
23592359
params = {

src/services/avatars.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export class Avatars extends Service {
5353
): Promise<ArrayBuffer> {
5454
let params: { code: Browser, width?: number, height?: number, quality?: number };
5555

56-
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'code' in paramsOrFirst)) {
56+
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('code' in paramsOrFirst || 'width' in paramsOrFirst || 'height' in paramsOrFirst || 'quality' in paramsOrFirst))) {
5757
params = (paramsOrFirst || {}) as { code: Browser, width?: number, height?: number, quality?: number };
5858
} else {
5959
params = {
@@ -134,7 +134,7 @@ export class Avatars extends Service {
134134
): Promise<ArrayBuffer> {
135135
let params: { code: CreditCard, width?: number, height?: number, quality?: number };
136136

137-
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'code' in paramsOrFirst)) {
137+
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('code' in paramsOrFirst || 'width' in paramsOrFirst || 'height' in paramsOrFirst || 'quality' in paramsOrFirst))) {
138138
params = (paramsOrFirst || {}) as { code: CreditCard, width?: number, height?: number, quality?: number };
139139
} else {
140140
params = {
@@ -273,7 +273,7 @@ export class Avatars extends Service {
273273
): Promise<ArrayBuffer> {
274274
let params: { code: Flag, width?: number, height?: number, quality?: number };
275275

276-
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'code' in paramsOrFirst)) {
276+
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('code' in paramsOrFirst || 'width' in paramsOrFirst || 'height' in paramsOrFirst || 'quality' in paramsOrFirst))) {
277277
params = (paramsOrFirst || {}) as { code: Flag, width?: number, height?: number, quality?: number };
278278
} else {
279279
params = {

src/services/graphql.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export class Graphql extends Service {
3535
): Promise<{}> {
3636
let params: { query: object };
3737

38-
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'query' in paramsOrFirst)) {
38+
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('query' in paramsOrFirst))) {
3939
params = (paramsOrFirst || {}) as { query: object };
4040
} else {
4141
params = {
@@ -85,7 +85,7 @@ export class Graphql extends Service {
8585
): Promise<{}> {
8686
let params: { query: object };
8787

88-
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'query' in paramsOrFirst)) {
88+
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('query' in paramsOrFirst))) {
8989
params = (paramsOrFirst || {}) as { query: object };
9090
} else {
9191
params = {

0 commit comments

Comments
 (0)