apps/meteor/server/settings/retention-policy.ts
import { settingsRegistry } from '../../app/settings/server';
export const createRetentionSettings = () =>
settingsRegistry.addGroup('RetentionPolicy', async function () {
const globalQuery = {
_id: 'RetentionPolicy_Enabled',
value: true,
};
await this.add('RetentionPolicy_Enabled', false, {
type: 'boolean',
public: true,
i18nLabel: 'RetentionPolicy_Enabled',
alert:
'Watch out! Tweaking these settings without utmost care can destroy all message history. Please read <a href="https://docs.rocket.chat/use-rocket.chat/workspace-administration/settings/retention-policies" target="_blank">here</a> the documentation before turning the feature ON.',
});
await this.add('RetentionPolicy_Precision', '0', {
type: 'select',
values: [
{
key: '0',
i18nLabel: 'every_30_minutes',
},
{
key: '1',
i18nLabel: 'every_hour',
},
{
key: '2',
i18nLabel: 'every_six_hours',
},
{
key: '3',
i18nLabel: 'every_day',
},
],
public: true,
i18nLabel: 'RetentionPolicy_Precision',
i18nDescription: 'RetentionPolicy_Precision_Description',
enableQuery: [
globalQuery,
{
_id: 'RetentionPolicy_Advanced_Precision',
value: false,
},
],
});
await this.add('RetentionPolicy_Advanced_Precision', false, {
type: 'boolean',
public: true,
i18nLabel: 'RetentionPolicy_Advanced_Precision',
i18nDescription: 'RetentionPolicy_Advanced_Precision_Description',
enableQuery: globalQuery,
});
await this.add('RetentionPolicy_Advanced_Precision_Cron', '*/30 * * * *', {
type: 'string',
public: true,
i18nLabel: 'RetentionPolicy_Advanced_Precision_Cron',
i18nDescription: 'RetentionPolicy_Advanced_Precision_Cron_Description',
enableQuery: [globalQuery, { _id: 'RetentionPolicy_Advanced_Precision', value: true }],
});
await this.section('Global Policy', async function () {
await this.add('RetentionPolicy_AppliesToChannels', false, {
type: 'boolean',
public: true,
i18nLabel: 'RetentionPolicy_AppliesToChannels',
enableQuery: globalQuery,
});
await this.add('RetentionPolicy_MaxAge_Channels', 30, {
type: 'int',
public: true,
i18nLabel: 'RetentionPolicy_MaxAge_Channels',
i18nDescription: 'RetentionPolicy_MaxAge_Description',
enableQuery: [
{
_id: 'RetentionPolicy_AppliesToChannels',
value: true,
},
globalQuery,
],
});
await this.add('RetentionPolicy_AppliesToGroups', false, {
type: 'boolean',
public: true,
i18nLabel: 'RetentionPolicy_AppliesToGroups',
enableQuery: globalQuery,
});
await this.add('RetentionPolicy_MaxAge_Groups', 30, {
type: 'int',
public: true,
i18nLabel: 'RetentionPolicy_MaxAge_Groups',
i18nDescription: 'RetentionPolicy_MaxAge_Description',
enableQuery: [
{
_id: 'RetentionPolicy_AppliesToGroups',
value: true,
},
globalQuery,
],
});
await this.add('RetentionPolicy_AppliesToDMs', false, {
type: 'boolean',
public: true,
i18nLabel: 'RetentionPolicy_AppliesToDMs',
enableQuery: globalQuery,
});
await this.add('RetentionPolicy_MaxAge_DMs', 30, {
type: 'int',
public: true,
i18nLabel: 'RetentionPolicy_MaxAge_DMs',
i18nDescription: 'RetentionPolicy_MaxAge_Description',
enableQuery: [
{
_id: 'RetentionPolicy_AppliesToDMs',
value: true,
},
globalQuery,
],
});
await this.add('RetentionPolicy_DoNotPrunePinned', false, {
type: 'boolean',
public: true,
i18nLabel: 'RetentionPolicy_DoNotPrunePinned',
enableQuery: globalQuery,
});
await this.add('RetentionPolicy_FilesOnly', false, {
type: 'boolean',
public: true,
i18nLabel: 'RetentionPolicy_FilesOnly',
i18nDescription: 'RetentionPolicy_FilesOnly_Description',
enableQuery: globalQuery,
});
await this.add('RetentionPolicy_DoNotPruneDiscussion', true, {
group: 'RetentionPolicy',
type: 'boolean',
public: true,
i18nLabel: 'RetentionPolicy_DoNotPruneDiscussion',
i18nDescription: 'RetentionPolicy_DoNotPruneDiscussion_Description',
enableQuery: globalQuery,
});
await this.add('RetentionPolicy_DoNotPruneThreads', true, {
group: 'RetentionPolicy',
type: 'boolean',
public: true,
i18nLabel: 'RetentionPolicy_DoNotPruneThreads',
i18nDescription: 'RetentionPolicy_DoNotPruneThreads_Description',
enableQuery: globalQuery,
});
});
});