Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 4 additions & 17 deletions App/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ android {
defaultConfig {
minSdkVersion 15
targetSdkVersion 22
versionCode 420
versionName "4.2.0"
versionCode 421
versionName "4.2.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

Expand All @@ -34,8 +34,10 @@ android {
buildTypes {
debug {
resValue "string", "personal_android_key", defaultKey
testCoverageEnabled = true
if (file("personal-android-key.txt").exists()) {
resValue "string", "personal_android_key", file("personal-android-key.txt").getText()
testCoverageEnabled = false // local variables aren't shown when debugging if this is enabled, so we disable if this is developer environment
}
}
release {
Expand All @@ -46,10 +48,6 @@ android {
signingConfig signingConfigs.release
}
}
debug {
testCoverageEnabled = true
}

}


Expand Down Expand Up @@ -118,21 +116,13 @@ dependencies {
compile 'com.fasterxml.jackson.core:jackson-annotations:2.6.3'
compile 'com.fasterxml.jackson.core:jackson-databind:2.6.3'

compile 'com.fasterxml.jackson.core:jackson-core:2.6.3'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.6.3'
compile 'com.fasterxml.jackson.core:jackson-databind:2.6.3'

// Espresso
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.0') {
exclude group: 'com.android.support'


}



// Mockito
androidTestCompile 'org.mockito:mockito-core:1.9.5'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.1'
Expand All @@ -143,7 +133,4 @@ dependencies {

// Android-compatible but recent version of HttpClient
androidTestCompile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'



}
Original file line number Diff line number Diff line change
Expand Up @@ -144,112 +144,20 @@ public void setIdMapping(Map<String, String> idMapping) {

public static MainUser user;

/**
* User's contacts is a map, where key is email (which is id) and value is the contact.
*/
@JsonIgnoreProperties("mapping")
public static class Contacts extends JSONMap<Contact> {

private HashMap<String, Contact> contacts = new HashMap<>();

@Override
protected Map<String, Contact> getMap() {
return contacts;
}

/**
* Handles functionality of the mapping-field. nameToEmail is not mapped from JSON,
* because it is easier to keep in sync if it's functionality is handled in this class.
*/
@JsonIgnore
private HashMap<String, String> nameToEmail = new HashMap<>();

public boolean hasEmail(String email) {
return contacts.containsKey(email);
}

public List<Contact> contacts() {
return new ArrayList<Contact>(contacts.values());
}

public List<String> names() {
return new ArrayList<String>(nameToEmail.keySet());
}

public boolean hasName(String name) {
return nameToEmail.containsKey(name);
}

public Contact getContactByEmail(String email) {
return contacts.get(email);
}

public String getEmailByName(String name) {
return nameToEmail.get(name);
}

public void update(String email, Contact contact) {
nameToEmail.put(contact.getName(), email);
super.put(email, contact);
}

@Override
public void clear() {
super.clear();
nameToEmail.clear();
}

@Override
public Contact put(String key, Contact value) {
nameToEmail.put(value.getName(), key);
return super.put(key, value);
}

@Override
public void putAll(Map<? extends String, ? extends Contact> map) {
for (Entry<? extends String, ? extends Contact> entry : map.entrySet()) {
nameToEmail.put(entry.getValue().getName(), entry.getKey());
}
super.putAll(map);
}

@Override
public Contact remove(Object key) {
nameToEmail.remove(super.get(key).getName());
return super.remove(key);
}
}
public static List<Contact> contacts;

/**
* Contacts that aren't shown on the map. Format:
* {
* "test.friend@example.com":1,
* "family.member@example.com":1
* }
*/
public static class IDontWantToSee extends JSONMap<Integer> {

private Map<String, Integer> iDontWantToSee = new HashMap<>();

@Override
protected Map<String, Integer> getMap() {
return iDontWantToSee;
}
}
public static IDontWantToSee iDontWantToSee;
/**
* Is the user visible to others?
*/
public static Boolean visible = true;

public static LruCache<String, Bitmap> avatarCache;

public static List<Place> places;

public static boolean locationDisabledPromptShown;


public static List<BuzzPlace> buzzPlaces;

public static boolean firstTimeZoom = true;

@Override
Expand All @@ -274,19 +182,6 @@ protected int sizeOf(String key, Bitmap bitmap) {
}
};

String iDontWantToSeeString = PreferenceUtils.getString(this, PreferenceUtils.KEY_I_DONT_WANT_TO_SEE);
if (!iDontWantToSeeString.isEmpty()) {
try {
MainApplication.iDontWantToSee = JsonUtils.createFromJson(iDontWantToSeeString, IDontWantToSee.class);
} catch (IOException e) {
MainApplication.iDontWantToSee = null;
Log.e(TAG, e.getMessage());
}
} else {
MainApplication.iDontWantToSee = new MainApplication.IDontWantToSee();
}
Log.d(TAG, "MainApplication.iDontWantToSee: " + MainApplication.iDontWantToSee);

if (DEVELOPER_MODE) {

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
Expand All @@ -301,7 +196,7 @@ protected int sizeOf(String key, Bitmap bitmap) {
.build());
}

buzzPlaces = new ArrayList<BuzzPlace>();
buzzPlaces = new ArrayList<>();

user = new MainUser(this);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,17 +38,14 @@
import com.androidquery.AQuery;
import com.androidquery.callback.AjaxCallback;
import com.androidquery.callback.AjaxStatus;
import com.fasterxml.jackson.core.JsonProcessingException;

import org.json.JSONException;

import java.io.IOException;
import java.util.Arrays;
import java.util.List;

import cc.softwarefactory.lokki.android.MainApplication;
import cc.softwarefactory.lokki.android.R;
import cc.softwarefactory.lokki.android.datasources.contacts.ContactDataSource;
import cc.softwarefactory.lokki.android.datasources.contacts.DefaultContactDataSource;
import cc.softwarefactory.lokki.android.fragments.AboutFragment;
import cc.softwarefactory.lokki.android.fragments.AddContactsFragment;
import cc.softwarefactory.lokki.android.fragments.ContactsFragment;
Expand All @@ -61,7 +58,6 @@
import cc.softwarefactory.lokki.android.models.Contact;
import cc.softwarefactory.lokki.android.services.ContactService;
import cc.softwarefactory.lokki.android.utilities.AnalyticsUtils;
import cc.softwarefactory.lokki.android.utilities.JsonUtils;
import cc.softwarefactory.lokki.android.utilities.PreferenceUtils;
import cc.softwarefactory.lokki.android.utilities.ServerApi;
import cc.softwarefactory.lokki.android.utilities.Utils;
Expand All @@ -87,9 +83,8 @@ public class MainActivity extends AppCompatActivity implements NavigationDrawerF
private CharSequence mTitle;
private int selectedOption = 0;

private ContactDataSource mContactDataSource;

private ContactService contactService;
private List<Contact> phoneContacts;

//Is this activity currently paused?
private boolean paused = true;
Expand All @@ -98,7 +93,6 @@ public class MainActivity extends AppCompatActivity implements NavigationDrawerF
protected void onCreate(Bundle savedInstanceState) {

Log.d(TAG, "onCreate");
mContactDataSource = new DefaultContactDataSource();

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Expand Down Expand Up @@ -128,6 +122,7 @@ public void onClick(View v) {
}

contactService = new ContactService(this);
phoneContacts = contactService.getPhoneContacts();
}

/**
Expand Down Expand Up @@ -430,7 +425,6 @@ public void onNavigationDrawerItemSelected(int position) {

@Override
public boolean onCreateOptionsMenu(Menu menu) {

return true;
}

Expand Down Expand Up @@ -501,8 +495,8 @@ public boolean onOptionsItemSelected(MenuItem item) {
case R.id.add_contacts: // In Contacts (to add new ones)
FragmentManager fragmentManager = getSupportFragmentManager();

AddContactsFragment acf = new AddContactsFragment();
acf.setContactUtils(mContactDataSource);
AddContactsFragment acf = new AddContactsFragment(this);
acf.setPhoneContacts(phoneContacts);

fragmentManager.beginTransaction().replace(R.id.container, acf, TAG_ADD_CONTACTS_FRAGMENT).commit();
selectedOption = -10;
Expand Down Expand Up @@ -608,37 +602,20 @@ private void showUserInMap(Contact contact) { // Used in Contacts
mNavigationDrawerFragment.selectNavDrawerItem(1); // Position 1 is the Map
}

public void toggleIDontWantToSee(View view) {
public void toggleIgnore(View view) {
AnalyticsUtils.eventHit(getString(R.string.analytics_category_ux),
getString(R.string.analytics_action_click),
getString(R.string.analytics_label_show_on_map_checkbox));
if (view == null) {
return;
}
CheckBox checkBox = (CheckBox) view;
Boolean allow = checkBox.isChecked();
Contact contact = (Contact) checkBox.getTag();
Log.d(TAG, "toggleIDontWantToSee: " + contact.toString() + ", Checkbox is: " + allow);
if (!allow) {
MainApplication.iDontWantToSee.put(contact.getEmail(), 1);
try {
Log.d(TAG, JsonUtils.serialize(MainApplication.iDontWantToSee));
PreferenceUtils.setString(this, PreferenceUtils.KEY_I_DONT_WANT_TO_SEE, JsonUtils.serialize(MainApplication.iDontWantToSee));
} catch (JsonProcessingException e) {
Log.e(TAG, "Serializing iDontWantToSee to JSON failed");
e.printStackTrace();
}
contactService.ignoreContact(contact);
} else if (MainApplication.iDontWantToSee.has(contact.getEmail())) {
Log.d(TAG, "unignoring user");
MainApplication.iDontWantToSee.remove(contact.getEmail());
try {
PreferenceUtils.setString(this, PreferenceUtils.KEY_I_DONT_WANT_TO_SEE, JsonUtils.serialize(MainApplication.iDontWantToSee));
} catch (JsonProcessingException e) {
Log.e(TAG, "Serializing iDontWantToSee to JSON failed");
e.printStackTrace();
}
Log.d(TAG, "toggle ignore for contact : " + contact.toString() + ", isIgnored : " + contact.isIgnored());
if (contact.isIgnored()) {
contactService.unignoreContact(contact);
} else {
contactService.ignoreContact(contact);
}
}

Expand All @@ -647,11 +624,9 @@ public void toggleUserCanSeeMe(View view) { // Used in Contacts
getString(R.string.analytics_action_click),
getString(R.string.analytics_label_can_see_me_checkbox));
if (view != null) {
CheckBox checkBox = (CheckBox) view;
Boolean allow = checkBox.isChecked();
Contact contact = (Contact) checkBox.getTag();
Log.d(TAG, "toggleUserCanSeeMe: " + contact.getEmail() + ", Checkbox is: " + allow);
if (!allow) {
Contact contact = (Contact) view.getTag();
Log.d(TAG, "toggleUserCanSeeMe: " + contact.getEmail() + ", Checkbox is: " + contact.isCanSeeMe());
if (contact.isCanSeeMe()) {
contactService.disallowContact(contact);
} else {
contactService.allowContacts(Arrays.asList(contact), new AjaxCallback<String>() {
Expand Down Expand Up @@ -724,11 +699,6 @@ public void onReceive(Context context, Intent intent) {
}
};

// For dependency injection
public void setContactUtils(ContactDataSource contactDataSource) {
this.mContactDataSource = contactDataSource;
}

public void logout(){
final MainActivity main = this;
new AlertDialog.Builder(main)
Expand All @@ -741,7 +711,6 @@ public void onClick(DialogInterface dialog, int which){
PreferenceUtils.setString(main, PreferenceUtils.KEY_USER_ACCOUNT, null);
PreferenceUtils.setString(main, PreferenceUtils.KEY_USER_ID, null);
PreferenceUtils.setString(main, PreferenceUtils.KEY_AUTH_TOKEN, null);
PreferenceUtils.setString(main, PreferenceUtils.KEY_I_DONT_WANT_TO_SEE, null);
PreferenceUtils.setString(main, PreferenceUtils.KEY_CONTACTS, null);
PreferenceUtils.setString(main, PreferenceUtils.KEY_DASHBOARD, null);
PreferenceUtils.setString(main, PreferenceUtils.KEY_LOCAL_CONTACTS, null);
Expand All @@ -750,7 +719,6 @@ public void onClick(DialogInterface dialog, int which){
MainApplication.dashboard = null;
MainApplication.contacts = null;
MainApplication.places = null;
MainApplication.iDontWantToSee = new MainApplication.IDontWantToSee();
MainApplication.firstTimeZoom = true;
//Restart main activity to clear state
main.recreate();
Expand All @@ -760,4 +728,10 @@ public void onClick(DialogInterface dialog, int which){
.show();
}

public void setPhoneContacts(List<Contact> phoneContacts) {
this.phoneContacts = phoneContacts;
AddContactsFragment acf = new AddContactsFragment(this);
acf.setPhoneContacts(phoneContacts);
}

}
Loading