You've already forked matrix-react-sdk
							
							
				mirror of
				https://github.com/matrix-org/matrix-react-sdk.git
				synced 2025-11-03 00:33:22 +03:00 
			
		
		
		
	Add way to manage Restricted join rule in Room Settings
This commit is contained in:
		@@ -35,7 +35,6 @@ import { getAddressType } from './UserAddress';
 | 
			
		||||
import { abbreviateUrl } from './utils/UrlUtils';
 | 
			
		||||
import { getDefaultIdentityServerUrl, useDefaultIdentityServer } from './utils/IdentityServerUtils';
 | 
			
		||||
import { isPermalinkHost, parsePermalink } from "./utils/permalinks/Permalinks";
 | 
			
		||||
import { inviteUsersToRoom } from "./RoomInvite";
 | 
			
		||||
import { WidgetType } from "./widgets/WidgetType";
 | 
			
		||||
import { Jitsi } from "./widgets/Jitsi";
 | 
			
		||||
import { parseFragment as parseHtml, Element as ChildElement } from "parse5";
 | 
			
		||||
@@ -50,6 +49,7 @@ import { UIFeature } from "./settings/UIFeature";
 | 
			
		||||
import { CHAT_EFFECTS } from "./effects";
 | 
			
		||||
import CallHandler from "./CallHandler";
 | 
			
		||||
import { guessAndSetDMRoom } from "./Rooms";
 | 
			
		||||
import { upgradeRoom } from './utils/RoomUpgrade';
 | 
			
		||||
 | 
			
		||||
// XXX: workaround for https://github.com/microsoft/TypeScript/issues/31816
 | 
			
		||||
interface HTMLInputEvent extends Event {
 | 
			
		||||
@@ -276,51 +276,8 @@ export const Commands = [
 | 
			
		||||
                    /*isPriority=*/false, /*isStatic=*/true);
 | 
			
		||||
 | 
			
		||||
                return success(finished.then(async ([resp]) => {
 | 
			
		||||
                    if (!resp.continue) return;
 | 
			
		||||
 | 
			
		||||
                    let checkForUpgradeFn;
 | 
			
		||||
                    try {
 | 
			
		||||
                        const upgradePromise = cli.upgradeRoom(roomId, args);
 | 
			
		||||
 | 
			
		||||
                        // We have to wait for the js-sdk to give us the room back so
 | 
			
		||||
                        // we can more effectively abuse the MultiInviter behaviour
 | 
			
		||||
                        // which heavily relies on the Room object being available.
 | 
			
		||||
                        if (resp.invite) {
 | 
			
		||||
                            checkForUpgradeFn = async (newRoom) => {
 | 
			
		||||
                                // The upgradePromise should be done by the time we await it here.
 | 
			
		||||
                                const { replacement_room: newRoomId } = await upgradePromise;
 | 
			
		||||
                                if (newRoom.roomId !== newRoomId) return;
 | 
			
		||||
 | 
			
		||||
                                const toInvite = [
 | 
			
		||||
                                    ...room.getMembersWithMembership("join"),
 | 
			
		||||
                                    ...room.getMembersWithMembership("invite"),
 | 
			
		||||
                                ].map(m => m.userId).filter(m => m !== cli.getUserId());
 | 
			
		||||
 | 
			
		||||
                                if (toInvite.length > 0) {
 | 
			
		||||
                                    // Errors are handled internally to this function
 | 
			
		||||
                                    await inviteUsersToRoom(newRoomId, toInvite);
 | 
			
		||||
                                }
 | 
			
		||||
 | 
			
		||||
                                cli.removeListener('Room', checkForUpgradeFn);
 | 
			
		||||
                            };
 | 
			
		||||
                            cli.on('Room', checkForUpgradeFn);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        // We have to await after so that the checkForUpgradesFn has a proper reference
 | 
			
		||||
                        // to the new room's ID.
 | 
			
		||||
                        await upgradePromise;
 | 
			
		||||
                    } catch (e) {
 | 
			
		||||
                        console.error(e);
 | 
			
		||||
 | 
			
		||||
                        if (checkForUpgradeFn) cli.removeListener('Room', checkForUpgradeFn);
 | 
			
		||||
 | 
			
		||||
                        const ErrorDialog = sdk.getComponent('dialogs.ErrorDialog');
 | 
			
		||||
                        Modal.createTrackedDialog('Slash Commands', 'room upgrade error', ErrorDialog, {
 | 
			
		||||
                            title: _t('Error upgrading room'),
 | 
			
		||||
                            description: _t(
 | 
			
		||||
                                'Double check that your server supports the room version chosen and try again.'),
 | 
			
		||||
                        });
 | 
			
		||||
                    }
 | 
			
		||||
                    if (!resp?.continue) return;
 | 
			
		||||
                    await upgradeRoom(room, args, resp.invite);
 | 
			
		||||
                }));
 | 
			
		||||
            }
 | 
			
		||||
            return reject(this.getUsage());
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user