1 /*
2  * Copyright (C) 2018 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.dialer.historyitemactions;
18 
19 import android.content.Context;
20 import com.android.dialer.blockreportspam.BlockReportSpamDialogInfo;
21 import com.android.dialer.blockreportspam.ShowBlockReportSpamDialogNotifier;
22 import com.android.dialer.logging.DialerImpression;
23 import com.android.dialer.logging.Logger;
24 import java.util.Optional;
25 
26 /** Modules for blocking/unblocking a number and/or reporting it as spam/not spam. */
27 final class BlockReportSpamModules {
28 
BlockReportSpamModules()29   private BlockReportSpamModules() {}
30 
moduleForMarkingNumberAsNotSpam( Context context, BlockReportSpamDialogInfo blockReportSpamDialogInfo, Optional<DialerImpression.Type> impression)31   static HistoryItemActionModule moduleForMarkingNumberAsNotSpam(
32       Context context,
33       BlockReportSpamDialogInfo blockReportSpamDialogInfo,
34       Optional<DialerImpression.Type> impression) {
35 
36     return new HistoryItemActionModule() {
37       @Override
38       public int getStringId() {
39         return R.string.not_spam;
40       }
41 
42       @Override
43       public int getDrawableId() {
44         return R.drawable.quantum_ic_report_off_vd_theme_24;
45       }
46 
47       @Override
48       public boolean onClick() {
49         ShowBlockReportSpamDialogNotifier.notifyShowDialogToReportNotSpam(
50             context, blockReportSpamDialogInfo);
51 
52         impression.ifPresent(Logger.get(context)::logImpression);
53         return true; // Close the bottom sheet.
54       }
55     };
56   }
57 
58   static HistoryItemActionModule moduleForBlockingNumber(
59       Context context,
60       BlockReportSpamDialogInfo blockReportSpamDialogInfo,
61       Optional<DialerImpression.Type> impression) {
62 
63     return new HistoryItemActionModule() {
64       @Override
65       public int getStringId() {
66         return R.string.block_number;
67       }
68 
69       @Override
70       public int getDrawableId() {
71         return R.drawable.quantum_ic_block_vd_theme_24;
72       }
73 
74       @Override
75       public boolean onClick() {
76         ShowBlockReportSpamDialogNotifier.notifyShowDialogToBlockNumber(
77             context, blockReportSpamDialogInfo);
78 
79         impression.ifPresent(Logger.get(context)::logImpression);
80         return true; // Close the bottom sheet.
81       }
82     };
83   }
84 
85   static HistoryItemActionModule moduleForUnblockingNumber(
86       Context context,
87       BlockReportSpamDialogInfo blockReportSpamDialogInfo,
88       Optional<DialerImpression.Type> impression) {
89 
90     return new HistoryItemActionModule() {
91       @Override
92       public int getStringId() {
93         return R.string.unblock_number;
94       }
95 
96       @Override
97       public int getDrawableId() {
98         return R.drawable.quantum_ic_unblock_vd_theme_24;
99       }
100 
101       @Override
102       public boolean onClick() {
103         ShowBlockReportSpamDialogNotifier.notifyShowDialogToUnblockNumber(
104             context, blockReportSpamDialogInfo);
105 
106         impression.ifPresent(Logger.get(context)::logImpression);
107         return true; // Close the bottom sheet.
108       }
109     };
110   }
111 
112   static HistoryItemActionModule moduleForBlockingNumberAndOptionallyReportingSpam(
113       Context context,
114       BlockReportSpamDialogInfo blockReportSpamDialogInfo,
115       Optional<DialerImpression.Type> impression) {
116 
117     return new HistoryItemActionModule() {
118       @Override
119       public int getStringId() {
120         return R.string.block_and_optionally_report_spam;
121       }
122 
123       @Override
124       public int getDrawableId() {
125         return R.drawable.quantum_ic_block_vd_theme_24;
126       }
127 
128       @Override
129       public boolean onClick() {
130         ShowBlockReportSpamDialogNotifier.notifyShowDialogToBlockNumberAndOptionallyReportSpam(
131             context, blockReportSpamDialogInfo);
132 
133         impression.ifPresent(Logger.get(context)::logImpression);
134         return true; // Close the bottom sheet.
135       }
136     };
137   }
138 }
139