From 011c99d40648c1369e58bf422bd16d0507733014 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto Date: Tue, 7 Mar 2023 18:20:02 -0300 Subject: [PATCH] [FIX] Update the number of members from a room --- app/definitions/ISubscription.ts | 1 + app/lib/database/model/Subscription.js | 2 ++ app/lib/database/model/migrations.js | 9 +++++++++ app/lib/database/schema/app.js | 5 +++-- app/lib/methods/helpers/mergeSubscriptionsRooms.ts | 3 +++ app/views/RoomActionsView/index.tsx | 6 +++--- 6 files changed, 21 insertions(+), 5 deletions(-) diff --git a/app/definitions/ISubscription.ts b/app/definitions/ISubscription.ts index 904e13d02..10dce8f19 100644 --- a/app/definitions/ISubscription.ts +++ b/app/definitions/ISubscription.ts @@ -102,6 +102,7 @@ export interface ISubscription { onHold?: boolean; source?: IOmnichannelSource; hideMentionStatus?: boolean; + usersCount?: number; // https://nozbe.github.io/WatermelonDB/Relation.html#relation-api messages: RelationModified; threads: RelationModified; diff --git a/app/lib/database/model/Subscription.js b/app/lib/database/model/Subscription.js index bbc732119..fc873bec6 100644 --- a/app/lib/database/model/Subscription.js +++ b/app/lib/database/model/Subscription.js @@ -137,5 +137,7 @@ export default class Subscription extends Model { @field('on_hold') onHold; + @field('users_count') usersCount; + @json('source', sanitizer) source; } diff --git a/app/lib/database/model/migrations.js b/app/lib/database/model/migrations.js index 678fb0e42..8f23b7f2c 100644 --- a/app/lib/database/model/migrations.js +++ b/app/lib/database/model/migrations.js @@ -257,6 +257,15 @@ export default schemaMigrations({ columns: [{ name: 'e2e_suggested_key', type: 'string', isOptional: true }] }) ] + }, + { + toVersion: 21, + steps: [ + addColumns({ + table: 'subscriptions', + columns: [{ name: 'users_count', type: 'string', isOptional: true }] + }) + ] } ] }); diff --git a/app/lib/database/schema/app.js b/app/lib/database/schema/app.js index 754c19afa..90ef03aa2 100644 --- a/app/lib/database/schema/app.js +++ b/app/lib/database/schema/app.js @@ -1,7 +1,7 @@ import { appSchema, tableSchema } from '@nozbe/watermelondb'; export default appSchema({ - version: 20, + version: 21, tables: [ tableSchema({ name: 'subscriptions', @@ -63,7 +63,8 @@ export default appSchema({ { name: 'team_main', type: 'boolean', isOptional: true }, // Use `Q.notEq(true)` to get false or null { name: 'on_hold', type: 'boolean', isOptional: true }, { name: 'source', type: 'string', isOptional: true }, - { name: 'hide_mention_status', type: 'boolean', isOptional: true } + { name: 'hide_mention_status', type: 'boolean', isOptional: true }, + { name: 'users_count', type: 'number', isOptional: true } ] }), tableSchema({ diff --git a/app/lib/methods/helpers/mergeSubscriptionsRooms.ts b/app/lib/methods/helpers/mergeSubscriptionsRooms.ts index 6763298f2..90b5445b2 100644 --- a/app/lib/methods/helpers/mergeSubscriptionsRooms.ts +++ b/app/lib/methods/helpers/mergeSubscriptionsRooms.ts @@ -85,6 +85,9 @@ export const merge = ( if (room && 'source' in room) { mergedSubscription.source = room?.source; } + if (room && 'usersCount' in room) { + mergedSubscription.usersCount = room.usersCount; + } } if (!mergedSubscription.name) { diff --git a/app/views/RoomActionsView/index.tsx b/app/views/RoomActionsView/index.tsx index 8e0a409b6..169ce0c80 100644 --- a/app/views/RoomActionsView/index.tsx +++ b/app/views/RoomActionsView/index.tsx @@ -85,7 +85,7 @@ interface IRoomActionsViewProps extends IActionSheetProvider, IBaseScreen; joined: boolean; canViewMembers: boolean; @@ -152,7 +152,7 @@ class RoomActionsView extends React.Component { if (this.mounted) { - this.setState({ room: changes }); + this.setState({ room: changes, membersCount: changes.usersCount }); } else { // @ts-ignore this.state.room = changes; @@ -1050,7 +1050,7 @@ class RoomActionsView extends React.Component 0 ? `${membersCount} ${I18n.t('members')}` : undefined} + subtitle={membersCount && membersCount > 0 ? `${membersCount} ${I18n.t('members')}` : undefined} onPress={() => this.onPressTouchable({ route: 'RoomMembersView', params: { rid, room, joined: this.joined } })} testID='room-actions-members' left={() => }