RocketChat/Rocket.Chat

View on GitHub
apps/meteor/app/federation/server/normalizers/subscription.js

Summary

Maintainability
A
2 hrs
Test Coverage
import { getNameAndDomain, isFullyQualified } from '../functions/helpers';
import { getFederationDomain } from '../lib/getFederationDomain';

const denormalizeSubscription = (originalResource) => {
    const resource = { ...originalResource };

    const [username, domain] = getNameAndDomain(resource.u.username);

    resource.u.username = domain === getFederationDomain() ? username : resource.u.username;

    const [nameUsername, nameDomain] = getNameAndDomain(resource.name);

    resource.name = nameDomain === getFederationDomain() ? nameUsername : resource.name;

    return resource;
};

const denormalizeAllSubscriptions = (resources) => resources.map(denormalizeSubscription);

const normalizeSubscription = (originalResource) => {
    const resource = { ...originalResource };

    resource.u.username = !isFullyQualified(resource.u.username) ? `${resource.u.username}@${getFederationDomain()}` : resource.u.username;

    resource.name = !isFullyQualified(resource.name) ? `${resource.name}@${getFederationDomain()}` : resource.name;

    // Federation
    resource.federation = resource.federation || {
        origin: getFederationDomain(), // The origin of this resource, where it was created
    };

    return resource;
};

const normalizeAllSubscriptions = (resources) => resources.map(normalizeSubscription);

export default {
    denormalizeSubscription,
    denormalizeAllSubscriptions,
    normalizeSubscription,
    normalizeAllSubscriptions,
};