From 038310969a1dfd4d962cd83a6bf3556e0722cf0c Mon Sep 17 00:00:00 2001 From: AlexAlexandre Date: Mon, 14 Feb 2022 19:36:53 -0300 Subject: [PATCH 1/4] chore: migrate getRoles to ts --- app/lib/methods/{getRoles.js => getRoles.ts} | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) rename app/lib/methods/{getRoles.js => getRoles.ts} (85%) diff --git a/app/lib/methods/getRoles.js b/app/lib/methods/getRoles.ts similarity index 85% rename from app/lib/methods/getRoles.js rename to app/lib/methods/getRoles.ts index 5f9c91ee5a3..b66e1eff785 100644 --- a/app/lib/methods/getRoles.js +++ b/app/lib/methods/getRoles.ts @@ -6,8 +6,10 @@ import log from '../../utils/log'; import { store as reduxStore } from '../auxStore'; import { removeRoles, setRoles as setRolesAction, updateRoles } from '../../actions/roles'; import protectedFunction from './helpers/protectedFunction'; +import { TRoleModel } from '../../definitions'; +import sdk from '../rocketchat/services/sdk'; -export async function setRoles() { +export async function setRoles(): Promise { const db = database.active; const rolesCollection = db.get('roles'); const allRoles = await rolesCollection.query().fetch(); @@ -15,7 +17,7 @@ export async function setRoles() { reduxStore.dispatch(setRolesAction(parsed)); } -export async function onRolesChanged(ddpMessage) { +export async function onRolesChanged(ddpMessage: any) { const { type, _id, description } = ddpMessage.fields.args[0]; if (/changed/.test(type)) { const db = database.active; @@ -57,12 +59,12 @@ export async function onRolesChanged(ddpMessage) { } } -export function getRoles() { +export function getRoles(): Promise { const db = database.active; return new Promise(async resolve => { try { // RC 0.70.0 - const result = await this.sdk.get('roles.list'); + const result = await sdk.get('roles.list'); if (!result.success) { return resolve(); @@ -71,7 +73,7 @@ export function getRoles() { const { roles } = result; if (roles && roles.length) { - await db.action(async () => { + await db.write(async () => { const rolesCollections = db.get('roles'); const allRolesRecords = await rolesCollections.query().fetch(); @@ -82,7 +84,7 @@ export function getRoles() { // Create rolesToCreate = rolesToCreate.map(role => rolesCollections.prepareCreate( - protectedFunction(r => { + protectedFunction((r: TRoleModel) => { r._raw = sanitizedRaw({ id: role._id }, rolesCollections.schema); Object.assign(r, role); }) @@ -93,13 +95,13 @@ export function getRoles() { rolesToUpdate = rolesToUpdate.map(role => { const newRole = roles.find(r => r._id === role.id); return role.prepareUpdate( - protectedFunction(r => { + protectedFunction((r: TRoleModel) => { Object.assign(r, newRole); }) ); }); - const allRecords = [...rolesToCreate, ...rolesToUpdate]; + const allRecords: any = [...rolesToCreate, ...rolesToUpdate]; try { await db.batch(...allRecords); From cfe3f94ceacdd3e195fd5b58d7643e4162b4a5f5 Mon Sep 17 00:00:00 2001 From: AlexAlexandre Date: Mon, 14 Feb 2022 19:37:23 -0300 Subject: [PATCH 2/4] chore: removing unused const --- app/lib/methods/getRoles.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/app/lib/methods/getRoles.ts b/app/lib/methods/getRoles.ts index b66e1eff785..91f8d122417 100644 --- a/app/lib/methods/getRoles.ts +++ b/app/lib/methods/getRoles.ts @@ -44,7 +44,6 @@ export async function onRolesChanged(ddpMessage: any) { } if (/removed/.test(type)) { const db = database.active; - const rolesCollection = db.get('roles'); try { const roleRecord = await getRoleById(_id); if (roleRecord) { From d0a1fcabe1f944ac63d01991f1265b6698ec096d Mon Sep 17 00:00:00 2001 From: AlexAlexandre Date: Tue, 15 Feb 2022 11:49:29 -0300 Subject: [PATCH 3/4] chore: minor tweak --- app/lib/methods/getRoles.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/lib/methods/getRoles.ts b/app/lib/methods/getRoles.ts index 91f8d122417..539ccc497b8 100644 --- a/app/lib/methods/getRoles.ts +++ b/app/lib/methods/getRoles.ts @@ -17,7 +17,17 @@ export async function setRoles(): Promise { reduxStore.dispatch(setRolesAction(parsed)); } -export async function onRolesChanged(ddpMessage: any) { +interface IRolesChanged { + fields: { + args: { + type: string; + _id: string; + description: string; + }[]; + }; +} + +export async function onRolesChanged(ddpMessage: IRolesChanged): Promise { const { type, _id, description } = ddpMessage.fields.args[0]; if (/changed/.test(type)) { const db = database.active; From 5ceaa966ef09acda58ee22301d61d1b4bd6f5c79 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Wed, 16 Feb 2022 11:26:30 -0300 Subject: [PATCH 4/4] Type batch --- app/lib/methods/getRoles.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/lib/methods/getRoles.ts b/app/lib/methods/getRoles.ts index 539ccc497b8..6add9e897ac 100644 --- a/app/lib/methods/getRoles.ts +++ b/app/lib/methods/getRoles.ts @@ -1,4 +1,5 @@ import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; +import Model from '@nozbe/watermelondb/Model'; import database from '../database'; import { getRoleById } from '../database/services/Role'; @@ -87,11 +88,11 @@ export function getRoles(): Promise { const allRolesRecords = await rolesCollections.query().fetch(); // filter roles - let rolesToCreate = roles.filter(i1 => !allRolesRecords.find(i2 => i1._id === i2.id)); - let rolesToUpdate = allRolesRecords.filter(i1 => roles.find(i2 => i1.id === i2._id)); + const filteredRolesToCreate = roles.filter(i1 => !allRolesRecords.find(i2 => i1._id === i2.id)); + const filteredRolesToUpdate = allRolesRecords.filter(i1 => roles.find(i2 => i1.id === i2._id)); // Create - rolesToCreate = rolesToCreate.map(role => + const rolesToCreate = filteredRolesToCreate.map(role => rolesCollections.prepareCreate( protectedFunction((r: TRoleModel) => { r._raw = sanitizedRaw({ id: role._id }, rolesCollections.schema); @@ -101,7 +102,7 @@ export function getRoles(): Promise { ); // Update - rolesToUpdate = rolesToUpdate.map(role => { + const rolesToUpdate = filteredRolesToUpdate.map(role => { const newRole = roles.find(r => r._id === role.id); return role.prepareUpdate( protectedFunction((r: TRoleModel) => { @@ -110,7 +111,7 @@ export function getRoles(): Promise { ); }); - const allRecords: any = [...rolesToCreate, ...rolesToUpdate]; + const allRecords: Model[] = [...rolesToCreate, ...rolesToUpdate]; try { await db.batch(...allRecords);