implement the ForceUnspam sieve action

This commit is contained in:
diroots 2024-03-22 11:21:00 +01:00
parent 4fc04648cf
commit c3c15ace16
43 changed files with 62 additions and 3 deletions

View file

@ -11,7 +11,8 @@ import {
DiscardCommand,
FileIntoCommand,
KeepCommand,
RedirectCommand
RedirectCommand,
ForceUnspamCommand
} from 'Sieve/Commands/Actions';
import {
@ -75,6 +76,7 @@ export const
FileIntoCommand,
KeepCommand,
RedirectCommand,
ForceUnspamCommand,
// Test commands
AddressTest,
AllOfTest,

View file

@ -109,3 +109,10 @@ export class KeepCommand extends ActionCommand
export class DiscardCommand extends ActionCommand
{
}
/**
* https://tools.ietf.org/html/rfc5228#section-4.4
*/
export class ForceUnspamCommand extends ActionCommand
{
}

View file

@ -16,7 +16,8 @@ export const FilterAction = {
Discard: 'Discard',
Vacation: 'Vacation',
Reject: 'Reject',
Forward: 'Forward'
Forward: 'Forward',
ForceUnspam: 'ForceUnspam'
};
/**
@ -93,6 +94,9 @@ export class FilterModel extends AbstractModel {
case FilterAction.Discard:
result = rl.i18n(root + 'DISCARD');
break;
case FilterAction.ForceUnspam:
result = rl.i18n(root + 'FORCE_UNSPAM');
break;
// no default
}
@ -112,6 +116,8 @@ export class FilterModel extends AbstractModel {
return result + 'None';
case FilterAction.Discard:
return result + 'Discard';
case FilterAction.ForceUnspam:
return result + 'ForceUnspam';
case FilterAction.MoveTo:
default:
return result + 'MoveToFolder';

View file

@ -139,6 +139,10 @@ function filtersToSieveScript(filters)
case 'Discard':
result.push(sTab + 'discard;');
break;
case 'ForceUnspam':
require.fileinto = 1;
result.push(sTab + 'fileinto "INBOX";');
break;
case 'Vacation':
if (value) {
require.vacation = 1;

View file

@ -150,6 +150,8 @@ export class FilterPopupView extends rl.pluginPopupView {
this.actionTypeOptions.push({ id: FilterAction.Discard, name: i18nFilter('ACTION_DISCARD') });
this.actionTypeOptions.push({ id: FilterAction.ForceUnspam, name: i18nFilter('FORCE_UNSPAM') });
this.typeOptionsSize([
{ id: FilterConditionType.Over, name: i18nFilter('TYPE_OVER') },
{ id: FilterConditionType.Under, name: i18nFilter('TYPE_UNDER') }