Skip to content
Snippets Groups Projects
rocketchat.js 30.3 KiB
Newer Older
Diego Mello's avatar
Diego Mello committed
	getReadReceipts(messageId) {
		return this.sdk.get('chat.getMessageReadReceipts', {
			messageId
		});
	},
Diego Mello's avatar
Diego Mello committed
	searchMessages(roomId, searchText) {
		// RC 0.60.0
		return this.sdk.get('chat.search', {
Diego Mello's avatar
Diego Mello committed
			roomId,
			searchText
		});
Diego Mello's avatar
Diego Mello committed
	},
	toggleFollowMessage(mid, follow) {
		// RC 1.0
		if (follow) {
Diego Mello's avatar
Diego Mello committed
			return this.sdk.post('chat.followMessage', { mid });
Diego Mello's avatar
Diego Mello committed
		}
Diego Mello's avatar
Diego Mello committed
		return this.sdk.post('chat.unfollowMessage', { mid });
Diego Mello's avatar
Diego Mello committed
	},
Diego Mello's avatar
Diego Mello committed
	getThreadsList({ rid, count, offset }) {
Diego Mello's avatar
Diego Mello committed
		// RC 1.0
Diego Mello's avatar
Diego Mello committed
		return this.sdk.get('chat.getThreadsList', {
			rid, count, offset, sort: { ts: -1 }
		});
	},
	getSyncThreadsList({ rid, updatedSince }) {
		// RC 1.0
		return this.sdk.get('chat.syncThreadsList', {
			rid, updatedSince
		});
	runSlashCommand(command, roomId, params, triggerId, tmid) {
		// RC 0.60.2
		return this.sdk.post('commands.run', {
			command, roomId, params, triggerId, tmid
		});
	},
	getCommandPreview(command, roomId, params) {
		// RC 0.65.0
		return this.sdk.get('commands.preview', {
			command, roomId, params
		});
	},
	executeCommandPreview(command, params, roomId, previewItem, triggerId, tmid) {
		// RC 0.65.0
		return this.sdk.post('commands.preview', {
			command, params, roomId, previewItem, triggerId, tmid
	_setUser(ddpMessage) {
		this.activeUsers = this.activeUsers || {};
		const { user } = reduxStore.getState().login;

		if (ddpMessage.fields && user && user.id === ddpMessage.id) {
			reduxStore.dispatch(setUser(ddpMessage.fields));
		}

		if (ddpMessage.cleared && user && user.id === ddpMessage.id) {
			reduxStore.dispatch(setUser({ status: 'offline' }));
		}

		if (!this._setUserTimer) {
			this._setUserTimer = setTimeout(() => {
				const activeUsersBatch = this.activeUsers;
				InteractionManager.runAfterInteractions(() => {
					reduxStore.dispatch(setActiveUsers(activeUsersBatch));
				});
				this._setUserTimer = null;
				return this.activeUsers = {};
			}, 10000);
		}

		if (!ddpMessage.fields) {
			this.activeUsers[ddpMessage.id] = 'offline';
		} else if (ddpMessage.fields.status) {
			this.activeUsers[ddpMessage.id] = ddpMessage.fields.status;
		}
	},
	getUsersPresence,
	getUserPresence,
	subscribeUsersPresence,
	getDirectory({
		query, count, offset, sort
	}) {
		// RC 1.0
		return this.sdk.get('directory', {
			query, count, offset, sort
		});
	async canAutoTranslate() {
		const db = database.active;
		try {
			const AutoTranslate_Enabled = reduxStore.getState().settings && reduxStore.getState().settings.AutoTranslate_Enabled;
			if (!AutoTranslate_Enabled) {
				return false;
			}
			const permissionsCollection = db.collections.get('permissions');
			const autoTranslatePermission = await permissionsCollection.find('auto-translate');
			const userRoles = (reduxStore.getState().login.user && reduxStore.getState().login.user.roles) || [];
			return autoTranslatePermission.roles.some(role => userRoles.includes(role));
		} catch (e) {
			log(e);
			return false;
		}
	},
	saveAutoTranslate({
		rid, field, value, options
	}) {
		return this.sdk.methodCall('autoTranslate.saveSettings', rid, field, value, options);
	},
	getSupportedLanguagesAutoTranslate() {
		return this.sdk.methodCall('autoTranslate.getSupportedLanguages', 'en');
	},
	translateMessage(message, targetLanguage) {
		return this.sdk.methodCall('autoTranslate.translateMessage', message, targetLanguage);
Diego Mello's avatar
Diego Mello committed
	},
	getRoomTitle(room) {
		const { UI_Use_Real_Name: useRealName } = reduxStore.getState().settings;
		return ((room.prid || useRealName) && room.fname) || room.name;
	},
	getRoomAvatar(room) {
		return room.prid ? room.fname : room.name;
	},
Diego Mello's avatar
Diego Mello committed

	findOrCreateInvite({ rid, days, maxUses }) {
		// RC 2.4.0
		return this.sdk.post('findOrCreateInvite', { rid, days, maxUses });
	},
	validateInviteToken(token) {
		// RC 2.4.0
		return this.sdk.post('validateInviteToken', { token });
	},
	useInviteToken(token) {
		// RC 2.4.0
		return this.sdk.post('useInviteToken', { token });
};

export default RocketChat;