Skip to content
Merged
Show file tree
Hide file tree
Changes from 31 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
9bec59b
refresh user presence
Rohit3523 Apr 9, 2026
fff654c
chore: format code and fix lint issues
Rohit3523 Apr 9, 2026
f1fad5b
changes
Rohit3523 Apr 9, 2026
d27b333
Merge branch 'presence-fix' of https://github.com/RocketChat/Rocket.C…
Rohit3523 Apr 9, 2026
0169c4a
chore: format code and fix lint issues
Rohit3523 Apr 9, 2026
9bcee5f
more changes
Rohit3523 Apr 9, 2026
fc95fa4
Merge branch 'presence-fix' of https://github.com/RocketChat/Rocket.C…
Rohit3523 Apr 9, 2026
29ac6da
revert
Rohit3523 Apr 9, 2026
3b0f1a1
coderabbit fix
Rohit3523 Apr 9, 2026
baed9ed
coderabbit fix
Rohit3523 Apr 9, 2026
00b4aa0
changes
Rohit3523 Apr 13, 2026
bfa8d92
Merge branch 'develop' into presence-fix
Rohit3523 Apr 13, 2026
9919a96
Added app root guard back
Rohit3523 Apr 16, 2026
9ff3b85
refresh user presence on room request
Rohit3523 Apr 16, 2026
7fafb7f
more changes...
Rohit3523 Apr 16, 2026
3da17c2
revert change
Rohit3523 Apr 16, 2026
a087432
added meteor success back...
Rohit3523 Apr 16, 2026
5b033b0
remove from room
Rohit3523 Apr 16, 2026
0eb77b2
correct
Rohit3523 Apr 16, 2026
b9b9acf
fix
Rohit3523 Apr 16, 2026
db6e29b
remove unwanted things
Rohit3523 Apr 16, 2026
dc3f970
move to login
Rohit3523 Apr 16, 2026
296e3e9
remove from state
Rohit3523 Apr 16, 2026
2b31108
remove line
Rohit3523 Apr 16, 2026
f208843
Merge branch 'develop' into presence-fix
Rohit3523 Apr 16, 2026
27457c6
rename var
Rohit3523 Apr 16, 2026
1e19282
Merge branch 'presence-fix' of https://github.com/RocketChat/Rocket.C…
Rohit3523 Apr 16, 2026
a1d7cf4
check Presence_broadcast_disabled...
Rohit3523 Apr 22, 2026
bd5dfcb
Merge branch 'develop' into presence-fix
Rohit3523 Apr 22, 2026
fcb7b76
Improve
Rohit3523 Apr 22, 2026
f15b5c2
Merge branch 'presence-fix' of https://github.com/RocketChat/Rocket.C…
Rohit3523 Apr 22, 2026
5c43d2d
using or
Rohit3523 Apr 23, 2026
c52ef4a
Merge branch 'develop' into presence-fix
Rohit3523 Apr 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions app/lib/methods/getUsersPresence.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { InteractionManager } from 'react-native';
import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord';
import { Q } from '@nozbe/watermelondb';

import { type IActiveUsers } from '../../reducers/activeUsers';
import { store as reduxStore } from '../store/auxStore';
Expand All @@ -9,6 +10,7 @@ import database from '../database';
import { type IUser } from '../../definitions';
import sdk from '../services/sdk';
import { compareServerVersion } from './helpers';
import log from './helpers/log';
import userPreferences from './userPreferences';
import { NOTIFICATION_PRESENCE_CAP } from '../constants/notifications';
import { setNotificationPresenceCap } from '../../actions/app';
Expand Down Expand Up @@ -44,6 +46,12 @@ let usersBatch: string[] = [];
export async function getUsersPresence(usersParams: string[]) {
const serverVersion = reduxStore.getState().server.version as string;
const { user: loggedUser } = reduxStore.getState().login;
const { Presence_broadcast_disabled: presenceBroadcastDisabled } = reduxStore.getState().settings;

// Skip presence fetch if broadcasting is disabled on the server
if (presenceBroadcastDisabled) {
return;
}

// if server is greather than or equal 1.1.0
if (compareServerVersion(serverVersion, 'greaterThanOrEqualTo', '1.1.0')) {
Expand Down Expand Up @@ -140,3 +148,32 @@ export const setPresenceCap = async (enabled: boolean) => {
reduxStore.dispatch(setNotificationPresenceCap(false));
}
};

export const getDirectMessageUserIds = async (): Promise<string[]> => {
try {
const db = database.active;
const loggedUserId = reduxStore.getState().login.user?.id;
const subscriptionsCollection = db.get('subscriptions');
const subscriptions = await subscriptionsCollection
.query(Q.where('t', 'd'), Q.where('open', true), Q.where('archived', false))
.fetch();
const userIds = subscriptions
.flatMap((sub: { uids?: string[] }) => sub.uids ?? [])
Comment thread
OtavioStasiak marked this conversation as resolved.
Outdated
.filter((uid): uid is string => Boolean(uid) && uid !== loggedUserId);
return [...new Set(userIds)];
Comment thread
coderabbitai[bot] marked this conversation as resolved.
} catch (e) {
log(e);
return [];
}
};

export const refreshDmUsersPresence = async (): Promise<void> => {
try {
const userIds = await getDirectMessageUserIds();
if (userIds.length > 0) {
await getUsersPresence(userIds);
}
} catch (e) {
log(e);
}
Comment thread
coderabbitai[bot] marked this conversation as resolved.
};
3 changes: 2 additions & 1 deletion app/sagas/login.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import { getEnterpriseModules, isOmnichannelModuleAvailable } from '../lib/metho
import { getPermissions } from '../lib/methods/getPermissions';
import { getRoles } from '../lib/methods/getRoles';
import { getSlashCommands } from '../lib/methods/getSlashCommands';
import { getUserPresence, subscribeUsersPresence } from '../lib/methods/getUsersPresence';
import { getUserPresence, refreshDmUsersPresence, subscribeUsersPresence } from '../lib/methods/getUsersPresence';
import { logout, removeServerData, removeServerDatabase } from '../lib/methods/logout';
import { subscribeSettings } from '../lib/methods/getSettings';
import { connect, loginWithPassword, login } from '../lib/services/connect';
Expand Down Expand Up @@ -195,6 +195,7 @@ const registerPushTokenFork = function* registerPushTokenFork() {
const fetchUsersPresenceFork = function* fetchUsersPresenceFork() {
Comment thread
Rohit3523 marked this conversation as resolved.
try {
yield subscribeUsersPresence();
yield refreshDmUsersPresence();
} catch (e) {
log(e);
}
Expand Down
Loading