RocketChat/Rocket.Chat

View on GitHub
apps/meteor/app/cloud/server/functions/removeWorkspaceRegistrationInfo.ts

Summary

Maintainability
A
1 hr
Test Coverage
import { Settings } from '@rocket.chat/models';

import { notifyOnSettingChangedById } from '../../../lib/server/lib/notifyListener';
import { retrieveRegistrationStatus } from './retrieveRegistrationStatus';

export async function removeWorkspaceRegistrationInfo() {
    const { workspaceRegistered } = await retrieveRegistrationStatus();
    if (!workspaceRegistered) {
        return true;
    }

    const settingsIds = [
        'Cloud_Workspace_Id',
        'Cloud_Workspace_Name',
        'Cloud_Workspace_Client_Id',
        'Cloud_Workspace_Client_Secret',
        'Cloud_Workspace_Client_Secret_Expires_At',
        'Cloud_Workspace_PublicKey',
        'Cloud_Workspace_Registration_Client_Uri',
        'Show_Setup_Wizard',
    ];

    const promises = settingsIds.map((settingId) => {
        if (settingId === 'Show_Setup_Wizard') {
            return Settings.updateValueById('Show_Setup_Wizard', 'in_progress');
        }

        return Settings.resetValueById(settingId, null);
    });

    (await Promise.all(promises)).forEach((value, index) => {
        if (value?.modifiedCount) {
            void notifyOnSettingChangedById(settingsIds[index]);
        }
    });

    return true;
}