Fix calls to syncUser/registerUser
This commit is contained in:
		@@ -1,6 +1,6 @@
 | 
			
		||||
// @ts-check
 | 
			
		||||
 | 
			
		||||
const assert = require("assert")
 | 
			
		||||
const assert = require("assert").strict
 | 
			
		||||
const reg = require("../../matrix/read-registration")
 | 
			
		||||
const DiscordTypes = require("discord-api-types/v10")
 | 
			
		||||
const mixin = require("mixin-deep")
 | 
			
		||||
@@ -180,11 +180,12 @@ function _hashProfileContent(content, powerLevel) {
 | 
			
		||||
 * 5. If the state content or power level have changed, send them to Matrix and update them in the database for next time
 | 
			
		||||
 * @param {DiscordTypes.APIUser} user
 | 
			
		||||
 * @param {Omit<DiscordTypes.APIGuildMember, "user">} member
 | 
			
		||||
 * @param {DiscordTypes.APIGuild} guild
 | 
			
		||||
 * @param {DiscordTypes.APIGuildChannel} channel
 | 
			
		||||
 * @param {DiscordTypes.APIGuild} guild
 | 
			
		||||
 * @param {string} roomID
 | 
			
		||||
 * @returns {Promise<string>} mxid of the updated sim
 | 
			
		||||
 */
 | 
			
		||||
async function syncUser(user, member, guild, channel, roomID) {
 | 
			
		||||
async function syncUser(user, member, channel, guild, roomID) {
 | 
			
		||||
	const mxid = await ensureSimJoined(user, roomID)
 | 
			
		||||
	const content = await memberToStateContent(user, member, guild.id)
 | 
			
		||||
	const powerLevel = memberToPowerLevel(user, member, guild, channel)
 | 
			
		||||
@@ -204,6 +205,9 @@ async function syncUser(user, member, guild, channel, roomID) {
 | 
			
		||||
	return mxid
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @param {string} roomID
 | 
			
		||||
 */
 | 
			
		||||
async function syncAllUsersInRoom(roomID) {
 | 
			
		||||
	const mxids = select("sim_member", "mxid", {room_id: roomID}).pluck().all()
 | 
			
		||||
 | 
			
		||||
@@ -228,7 +232,7 @@ async function syncAllUsersInRoom(roomID) {
 | 
			
		||||
		assert.ok(user)
 | 
			
		||||
 | 
			
		||||
		console.log(`[user sync] to matrix: ${user.username} in ${channel.name}`)
 | 
			
		||||
		await syncUser(user, member, guild, channel, roomID)
 | 
			
		||||
		await syncUser(user, member, channel, guild, roomID)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
// @ts-check
 | 
			
		||||
 | 
			
		||||
const assert = require("assert")
 | 
			
		||||
const assert = require("assert").strict
 | 
			
		||||
const DiscordTypes = require("discord-api-types/v10")
 | 
			
		||||
 | 
			
		||||
const passthrough = require("../../passthrough")
 | 
			
		||||
const { discord, sync, db } = passthrough
 | 
			
		||||
@@ -18,17 +19,18 @@ const createRoom = sync.require("../actions/create-room")
 | 
			
		||||
const dUtils = sync.require("../../discord/utils")
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @param {import("discord-api-types/v10").GatewayMessageCreateDispatchData} message
 | 
			
		||||
 * @param {import("discord-api-types/v10").APIGuild} guild
 | 
			
		||||
 * @param {DiscordTypes.GatewayMessageCreateDispatchData} message
 | 
			
		||||
 * @param {DiscordTypes.APIGuildChannel} channel
 | 
			
		||||
 * @param {DiscordTypes.APIGuild} guild
 | 
			
		||||
 * @param {{speedbump_id: string, speedbump_webhook_id: string} | null} row data about the webhook which is proxying messages in this channel
 | 
			
		||||
 */
 | 
			
		||||
async function sendMessage(message, guild, row) {
 | 
			
		||||
async function sendMessage(message, channel, guild, row) {
 | 
			
		||||
	const roomID = await createRoom.ensureRoom(message.channel_id)
 | 
			
		||||
 | 
			
		||||
	let senderMxid = null
 | 
			
		||||
	if (!dUtils.isWebhookMessage(message)) {
 | 
			
		||||
		if (message.member) { // available on a gateway message create event
 | 
			
		||||
			senderMxid = await registerUser.syncUser(message.author, message.member, message.guild_id, roomID)
 | 
			
		||||
			senderMxid = await registerUser.syncUser(message.author, message.member, channel, guild, roomID)
 | 
			
		||||
		} else { // well, good enough...
 | 
			
		||||
			senderMxid = await registerUser.ensureSimJoined(message.author, roomID)
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -248,7 +248,7 @@ module.exports = {
 | 
			
		||||
		if (affected) return
 | 
			
		||||
 | 
			
		||||
		// @ts-ignore
 | 
			
		||||
		await sendMessage.sendMessage(message, guild, row),
 | 
			
		||||
		await sendMessage.sendMessage(message, channel, guild, row),
 | 
			
		||||
		await discordCommandHandler.execute(message, channel, guild)
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -63,7 +63,7 @@ function getPermissions(userRoles, guildRoles, userID, channelOverwrites) {
 | 
			
		||||
 */
 | 
			
		||||
function hasPermission(resolvedPermissions, permissionToCheckFor) {
 | 
			
		||||
	// Make sure permissionToCheckFor has exactly one permission in it
 | 
			
		||||
	assert.equal(permissionToCheckFor.toString(2).match(/1/g), 1)
 | 
			
		||||
	assert.equal(permissionToCheckFor.toString(2).match(/1/g)?.length, 1)
 | 
			
		||||
	// Do the actual calculation
 | 
			
		||||
	return (resolvedPermissions & permissionToCheckFor) === permissionToCheckFor
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user