bigbuffet-rw/app/soapbox/utils/config_db.js
2022-02-18 21:04:18 -05:00

50 lines
1.1 KiB
JavaScript

import {
Map as ImmutableMap,
List as ImmutableList,
Set as ImmutableSet,
fromJS,
} from 'immutable';
import { trimStart } from 'lodash';
const find = (configs, group, key) => {
return configs.find(config =>
config.isSuperset({ group, key }),
);
};
const toSimplePolicy = configs => {
const config = find(configs, ':pleroma', ':mrf_simple');
const reducer = (acc, curr) => {
const { tuple: [key, hosts] } = curr.toJS();
return acc.set(trimStart(key, ':'), ImmutableSet(hosts));
};
if (config?.get) {
const value = config.get('value', ImmutableList());
return value.reduce(reducer, ImmutableMap());
} else {
return ImmutableMap();
}
};
const fromSimplePolicy = simplePolicy => {
const mapper = (hosts, key) => fromJS({ tuple: [`:${key}`, hosts.toJS()] });
const value = simplePolicy.map(mapper).toList();
return ImmutableList([
ImmutableMap({
group: ':pleroma',
key: ':mrf_simple',
value,
}),
]);
};
export const ConfigDB = {
find,
toSimplePolicy,
fromSimplePolicy,
};
export default ConfigDB;