aboutsummaryrefslogtreecommitdiff
path: root/lib/Sietima/Role/NoMail.pm
blob: febbfdc289037763947bc49afa139737845a800c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package Sietima::Role::NoMail; 
use Moo::Role;
use Sietima::Policy;
use namespace::clean;
 
our $VERSION = '1.1.2'# VERSION 
# ABSTRACT: don't send mail to those who don't want it 
 
 
around subscribers_to_send_to => sub ($orig,$self,$mail) {
    return [
        grep { $_->prefs->{wants_mail// 1 }
            $self->$orig($mail)->@*,
    ];
};
 
1;
 
__END__
 
=pod
 
=encoding UTF-8
 
=head1 NAME
 
Sietima::Role::NoMail - don't send mail to those who don't want it
 
=head1 VERSION
 
version 1.1.2
 
=head1 SYNOPSIS
 
  my $sietima = Sietima->with_traits('NoMail')->new({
   %args,
   subscribers => [
    { primary => 'write-only@example.com', prefs => { wants_mail => 0 } },
    @other_subscribers,
   ],
  });
 
=head1 DESCRIPTION
 
A L<< C<Sietima> >> list with this role applied will not send messages
to subscribers that have the C<wants_mail> preference set to a false
value.
 
=head1 MODIFIED METHODS
 
=head2 C<subscribers_to_send_to>
 
Filters out subscribers that have the C<wants_mail> preference set to
a false value.
 
=head1 AUTHOR
 
Gianni Ceccarelli <dakkar@thenautilus.net>
 
=head1 COPYRIGHT AND LICENSE
 
This software is copyright (c) 2023 by Gianni Ceccarelli <dakkar@thenautilus.net>.
 
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
 
=cut