From 134105f5f6c966f46fe77213a80de3e28e75441f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adem=C3=ADlson=20F=2E=20Tonato?= Date: Thu, 14 Jan 2021 13:15:04 +0000 Subject: [PATCH] refactor: reducing the complexity of the SupabaseRealtimeClient and SupabaseClient classes --- src/SupabaseClient.ts | 25 ++++++++++++++----------- src/lib/SupabaseRealtimeClient.ts | 17 +++++------------ 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/src/SupabaseClient.ts b/src/SupabaseClient.ts index 95a13e938..b59cfb7a8 100644 --- a/src/SupabaseClient.ts +++ b/src/SupabaseClient.ts @@ -85,7 +85,7 @@ export default class SupabaseClient { * @param params The parameters to pass to the function call. */ rpc(fn: string, params?: object) { - let rest = this._initPostgRESTClient() + const rest = this._initPostgRESTClient() return rest.rpc(fn, params) } @@ -97,12 +97,11 @@ export default class SupabaseClient { removeSubscription(subscription: RealtimeSubscription) { return new Promise(async (resolve) => { try { - if (!subscription.isClosed()) { - await this._closeChannel(subscription) - } - let openSubscriptions = this.realtime.channels.length + await this._closeSubscription(subscription) + + const openSubscriptions = this.getSubscriptions().length if (!openSubscriptions) { - let { error } = await this.realtime.disconnect() + const { error } = await this.realtime.disconnect() if (error) return resolve({ error }) } return resolve({ error: null, data: { openSubscriptions } }) @@ -112,6 +111,12 @@ export default class SupabaseClient { }) } + private async _closeSubscription(subscription: RealtimeSubscription) { + if (!subscription.isClosed()) { + await this._closeChannel(subscription) + } + } + /** * Returns an array of all your subscriptions. */ @@ -152,8 +157,8 @@ export default class SupabaseClient { } private _getAuthHeaders(): { [key: string]: string } { - let headers: { [key: string]: string } = {} - let authBearer = this.auth.session()?.access_token ?? this.supabaseKey + const headers: { [key: string]: string } = {} + const authBearer = this.auth.session()?.access_token ?? this.supabaseKey headers['apikey'] = this.supabaseKey headers['Authorization'] = `Bearer ${authBearer}` return headers @@ -167,9 +172,7 @@ export default class SupabaseClient { this.realtime.remove(subscription) return resolve(true) }) - .receive('error', (e: Error) => { - return reject(e) - }) + .receive('error', (e: Error) => reject(e)) }) } } diff --git a/src/lib/SupabaseRealtimeClient.ts b/src/lib/SupabaseRealtimeClient.ts index 5a5af85ac..10ecda0cc 100644 --- a/src/lib/SupabaseRealtimeClient.ts +++ b/src/lib/SupabaseRealtimeClient.ts @@ -15,19 +15,12 @@ export class SupabaseRealtimeClient { old: {}, } - switch (payload.type) { - case 'INSERT': - records.new = Transformers.convertChangeData(payload.columns, payload.record) - break - - case 'UPDATE': - records.new = Transformers.convertChangeData(payload.columns, payload.record) - records.old = Transformers.convertChangeData(payload.columns, payload.old_record) - break + if (payload.type === 'INSERT' || payload.type === 'UPDATE') { + records.new = Transformers.convertChangeData(payload.columns, payload.record) + } - case 'DELETE': - records.old = Transformers.convertChangeData(payload.columns, payload.old_record) - break + if (payload.type === 'UPDATE' || payload.type === 'DELETE') { + records.old = Transformers.convertChangeData(payload.columns, payload.old_record) } return records