Skip to content

Commit 8232f03

Browse files
authored
Merge pull request #98 from huttneab/assistant_bug_fix
fix assistant info bugs
2 parents 81a2e2e + f6dcec0 commit 8232f03

8 files changed

Lines changed: 73 additions & 36 deletions

File tree

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Manifest version information!
22
def versionMajor = 1
33
def versionMinor = 1
4-
def versionPatch = 2
4+
def versionPatch = 3
55
def versionBuild = 0 // bump for dogfood builds, public betas, etc.
66

77
apply plugin: 'com.android.application'

app/src/main/java/com/rockthevote/grommet/data/api/model/ApiContactMethod.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.util.ArrayList;
1212
import java.util.List;
1313

14+
import static com.rockthevote.grommet.data.db.model.ContactMethod.Type.PHONE;
1415
import static com.rockthevote.grommet.data.db.model.RockyRequest.PhoneType;
1516

1617
@AutoValue
@@ -44,16 +45,33 @@ public static ApiContactMethod fromContactMethod(ContactMethod contactMethod, Ph
4445

4546
List<String> capabilities = new ArrayList<>();
4647
// right now we only support phone (no fax)
47-
if (contactMethod.type() == ContactMethod.Type.PHONE ||
48+
if (contactMethod.type() == PHONE ||
4849
contactMethod.type() == ContactMethod.Type.ASSISTANT_PHONE) {
4950
capabilities.add(ContactMethod.Capability.VOICE.toString());
5051
if(phoneType == PhoneType.MOBILE){
5152
capabilities.add(ContactMethod.Capability.SMS.toString());
5253
}
5354
}
5455

56+
/*
57+
special replacement for assistant_phone. We need to just use "phone" as the string value
58+
for this enum but we cannot change the enum since both voter and helper phone numbers
59+
are stored in the same table, hence we need different types to differentiate.
60+
*/
61+
62+
String type;
63+
switch (contactMethod.type()) {
64+
case ASSISTANT_PHONE:
65+
case PHONE:
66+
type = PHONE.toString();
67+
break;
68+
default:
69+
type = contactMethod.type().toString();
70+
break;
71+
}
72+
5573
return builder()
56-
.type(contactMethod.type().toString())
74+
.type(type)
5775
.value(contactMethod.value())
5876
.capabilities(capabilities)
5977
.build();

app/src/main/java/com/rockthevote/grommet/ui/registration/AdditionalInfoFragment.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import android.widget.EditText;
1212

1313
import com.f2prateek.rx.preferences.Preference;
14-
import com.google.i18n.phonenumbers.PhoneNumberUtil;
1514
import com.jakewharton.rxbinding.widget.RxCompoundButton;
1615
import com.jakewharton.rxbinding.widget.RxTextView;
1716
import com.mobsandgeeks.saripaar.Validator;
@@ -28,7 +27,7 @@
2827
import com.rockthevote.grommet.ui.misc.EnumAdapter;
2928
import com.rockthevote.grommet.ui.misc.ObservableValidator;
3029
import com.rockthevote.grommet.util.EmailOrEmpty;
31-
import com.rockthevote.grommet.util.PhoneOrEmpty;
30+
import com.rockthevote.grommet.util.Phone;
3231
import com.squareup.sqlbrite.BriteDatabase;
3332

3433
import java.util.concurrent.TimeUnit;
@@ -88,7 +87,7 @@ public class AdditionalInfoFragment extends BaseRegistrationFragment {
8887

8988
@BindView(R.id.email_opt_in) CheckBox emailOptIn;
9089

91-
@PhoneOrEmpty(messageResId = R.string.phone_format_error)
90+
@Phone(messageResId = R.string.phone_format_error, allowEmpty = true)
9291
@BindView(R.id.til_phone_number) TextInputLayout phoneNumber;
9392

9493
@BindView(R.id.phone) EditText phone;
@@ -127,7 +126,7 @@ public void onViewCreated(View view, Bundle savedInstanceState) {
127126
super.onViewCreated(view, savedInstanceState);
128127
ButterKnife.bind(this, view);
129128

130-
Validator.registerAnnotation(PhoneOrEmpty.class);
129+
Validator.registerAnnotation(Phone.class);
131130
Validator.registerAnnotation(EmailOrEmpty.class);
132131
Validator.registerAnnotation(NotEmpty.class);
133132

@@ -195,7 +194,7 @@ public void onResume() {
195194
super.onResume();
196195
subscriptions = new CompositeSubscription();
197196

198-
phoneFormatter = new PhoneNumberFormattingTextWatcher("en");
197+
phoneFormatter = new PhoneNumberFormattingTextWatcher("US");
199198
phone.addTextChangedListener(phoneFormatter);
200199

201200
subscriptions.add(RxTextView.afterTextChangeEvents(raceSpinner.getEditText())

app/src/main/java/com/rockthevote/grommet/ui/registration/AssistantInfoFragment.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,19 @@
1111
import android.widget.EditText;
1212

1313
import com.f2prateek.rx.preferences.Preference;
14+
import com.jakewharton.rxbinding.widget.RxCompoundButton;
1415
import com.jakewharton.rxbinding.widget.RxTextView;
1516
import com.mobsandgeeks.saripaar.Validator;
1617
import com.mobsandgeeks.saripaar.annotation.Checked;
1718
import com.rockthevote.grommet.R;
19+
import com.rockthevote.grommet.data.db.model.AdditionalInfo;
1820
import com.rockthevote.grommet.data.db.model.ContactMethod;
1921
import com.rockthevote.grommet.data.db.model.RockyRequest;
2022
import com.rockthevote.grommet.data.prefs.CurrentRockyRequestId;
2123
import com.rockthevote.grommet.ui.misc.ObservableValidator;
2224
import com.rockthevote.grommet.ui.views.AddressView;
2325
import com.rockthevote.grommet.ui.views.NameView;
24-
import com.rockthevote.grommet.util.PhoneOrEmpty;
26+
import com.rockthevote.grommet.util.Phone;
2527
import com.squareup.sqlbrite.BriteDatabase;
2628

2729
import java.util.concurrent.TimeUnit;
@@ -36,6 +38,7 @@
3638
import rx.subscriptions.CompositeSubscription;
3739

3840
import static com.rockthevote.grommet.data.db.Db.DEBOUNCE;
41+
import static com.rockthevote.grommet.data.db.model.AdditionalInfo.Type.ASSISTANT_DECLARATION;
3942
import static com.rockthevote.grommet.data.db.model.ContactMethod.Type.ASSISTANT_PHONE;
4043

4144
public class AssistantInfoFragment extends BaseRegistrationFragment {
@@ -46,7 +49,7 @@ public class AssistantInfoFragment extends BaseRegistrationFragment {
4649

4750
@BindView(R.id.assistant_address) AddressView addressView;
4851

49-
@PhoneOrEmpty(messageResId = R.string.phone_format_error)
52+
@Phone(messageResId = R.string.phone_format_error)
5053
@BindView(R.id.til_assistant_phone) TextInputLayout phoneTIL;
5154

5255
@BindView(R.id.assistant_phone) EditText phoneEditText;
@@ -78,7 +81,7 @@ public void onViewCreated(View view, Bundle savedInstanceState) {
7881
super.onViewCreated(view, savedInstanceState);
7982
ButterKnife.bind(this, view);
8083

81-
Validator.registerAnnotation(PhoneOrEmpty.class);
84+
Validator.registerAnnotation(Phone.class);
8285
validator = new ObservableValidator(this, getActivity());
8386

8487
}
@@ -88,7 +91,7 @@ public void onResume() {
8891
super.onResume();
8992
subscriptions = new CompositeSubscription();
9093

91-
phoneFormatter = new PhoneNumberFormattingTextWatcher("en");
94+
phoneFormatter = new PhoneNumberFormattingTextWatcher("US");
9295
phoneEditText.addTextChangedListener(phoneFormatter);
9396

9497
subscriptions.add(RxTextView.afterTextChangeEvents(phoneEditText)
@@ -103,6 +106,18 @@ public void onResume() {
103106
);
104107
}));
105108

109+
subscriptions.add(RxCompoundButton.checkedChanges(assistantAffirmation)
110+
.observeOn(Schedulers.io())
111+
.debounce(DEBOUNCE, TimeUnit.MILLISECONDS)
112+
.skip(1)
113+
.subscribe(checked -> {
114+
AdditionalInfo.insertOrUpdate(db, rockyRequestRowId.get(),
115+
ASSISTANT_DECLARATION, new AdditionalInfo.Builder()
116+
.type(ASSISTANT_DECLARATION)
117+
.stringValue(String.valueOf(checked))
118+
.build());
119+
}));
120+
106121
}
107122

108123
@Override
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.rockthevote.grommet.util;
2+
3+
4+
import com.mobsandgeeks.saripaar.annotation.ValidateUsing;
5+
6+
import java.lang.annotation.ElementType;
7+
import java.lang.annotation.Retention;
8+
import java.lang.annotation.RetentionPolicy;
9+
import java.lang.annotation.Target;
10+
11+
@ValidateUsing(PhoneRule.class)
12+
@Retention(RetentionPolicy.RUNTIME)
13+
@Target(ElementType.FIELD)
14+
15+
public @interface Phone {
16+
int messageResId() default -1; // Mandatory attribute
17+
18+
String message() default "Oops... too pricey"; // Mandatory attribute
19+
20+
int sequence() default -1; // Mandatory attribute
21+
22+
boolean allowEmpty() default false;
23+
}

app/src/main/java/com/rockthevote/grommet/util/PhoneOrEmpty.java

Lines changed: 0 additions & 19 deletions
This file was deleted.

app/src/main/java/com/rockthevote/grommet/util/PhoneOrEmptyRule.java renamed to app/src/main/java/com/rockthevote/grommet/util/PhoneRule.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,18 @@
55
import com.google.i18n.phonenumbers.Phonenumber;
66
import com.mobsandgeeks.saripaar.AnnotationRule;
77

8-
public class PhoneOrEmptyRule extends AnnotationRule<PhoneOrEmpty, String> {
8+
public class PhoneRule extends AnnotationRule<Phone, String> {
99

10-
protected PhoneOrEmptyRule(final PhoneOrEmpty email) {
11-
super(email);
10+
protected PhoneRule(final Phone phone) {
11+
super(phone);
1212
}
1313

1414
@Override
1515
public boolean isValid(final String phone) {
16-
if (Strings.isBlank(phone)) {
16+
if (mRuleAnnotation.allowEmpty() && Strings.isBlank(phone)) {
1717
return true;
1818
}
19+
1920
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
2021
Phonenumber.PhoneNumber number;
2122
try {

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ buildscript {
66
jcenter()
77
}
88
dependencies {
9-
classpath 'com.android.tools.build:gradle:2.2.0-beta2'
9+
classpath 'com.android.tools.build:gradle:2.2.0-beta3'
1010
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
1111
classpath('com.stanfy.spoon:spoon-gradle-plugin:1.0.3') {
1212
// Workaround for https://github.com/stanfy/spoon-gradle-plugin/issues/33

0 commit comments

Comments
 (0)