Skip to content

Commit 51a3bd5

Browse files
committed
Merge pull request #4051 from wordpress-mobile/feature/refactor-role
Remove Role enum & add update role functionality
2 parents 2cbc2cf + 1e9f55a commit 51a3bd5

File tree

9 files changed

+107
-124
lines changed

9 files changed

+107
-124
lines changed

WordPress/src/main/java/org/wordpress/android/datasets/PeopleTable.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import org.wordpress.android.WordPress;
88
import org.wordpress.android.models.Person;
9-
import org.wordpress.android.models.Role;
109
import org.wordpress.android.util.AppLog;
1110
import org.wordpress.android.util.SqlUtils;
1211

@@ -26,6 +25,7 @@ private static SQLiteDatabase getWritableDb() {
2625
public static void createTables(SQLiteDatabase db) {
2726
db.execSQL("CREATE TABLE " + PEOPLE_TABLE + " ("
2827
+ "person_id INTEGER DEFAULT 0,"
28+
+ "blog_id TEXT,"
2929
+ "local_blog_id INTEGER DEFAULT 0,"
3030
+ "user_name TEXT,"
3131
+ "first_name TEXT,"
@@ -54,13 +54,14 @@ public static void save(Person person) {
5454
public static void save(Person person, SQLiteDatabase database) {
5555
ContentValues values = new ContentValues();
5656
values.put("person_id", person.getPersonID());
57+
values.put("blog_id", person.getBlogId());
5758
values.put("local_blog_id", person.getLocalTableBlogId());
5859
values.put("user_name", person.getUsername());
5960
values.put("first_name", person.getFirstName());
6061
values.put("last_name", person.getLastName());
6162
values.put("display_name", person.getDisplayName());
6263
values.put("avatar_url", person.getAvatarUrl());
63-
values.put("role", Role.toKey(person.getRole()));
64+
values.put("role", person.getRole());
6465
database.insertWithOnConflict(PEOPLE_TABLE, null, values, SQLiteDatabase.CONFLICT_REPLACE);
6566
}
6667

@@ -95,7 +96,7 @@ public static List<Person> getPeople(int localTableBlogId) {
9596

9697
/**
9798
* retrieve a single person
98-
* @param personId - id of a person in a particular site
99+
* @param personId - id of a person in a particular blog
99100
* @param localTableBlogId - the local blog id the user belongs to
100101
* @return Person if found, null otherwise
101102
*/
@@ -114,13 +115,14 @@ public static Person getPerson(long personId, int localTableBlogId) {
114115

115116
private static Person getPersonFromCursor(Cursor c, int localTableBlogId) {
116117
long personId = c.getInt(c.getColumnIndex("person_id"));
118+
String blogId = c.getString(c.getColumnIndex("blog_id"));
117119
String username = c.getString(c.getColumnIndex("user_name"));
118120
String firstName = c.getString(c.getColumnIndex("first_name"));
119121
String lastName = c.getString(c.getColumnIndex("last_name"));
120122
String displayName = c.getString(c.getColumnIndex("display_name"));
121123
String avatarUrl = c.getString(c.getColumnIndex("avatar_url"));
122-
Role role = Role.fromKey(c.getString(c.getColumnIndex("role")));
124+
String role = c.getString(c.getColumnIndex("role"));
123125

124-
return new Person(personId, localTableBlogId, username, firstName, lastName, displayName, avatarUrl, role);
126+
return new Person(personId, blogId, localTableBlogId, username, firstName, lastName, displayName, avatarUrl, role);
125127
}
126128
}

WordPress/src/main/java/org/wordpress/android/models/Person.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,27 @@
88

99
public class Person {
1010
private long personID;
11+
private String blogId;
1112
private int localTableBlogId;
1213

1314
private String username;
1415
private String firstName;
1516
private String lastName;
1617
private String displayName;
1718
private String avatarUrl;
18-
private Role role;
19+
private String role;
1920

2021
public Person(long personID,
22+
String blogId,
2123
int localTableBlogId,
2224
String username,
2325
String firstName,
2426
String lastName,
2527
String displayName,
2628
String avatarUrl,
27-
Role role) {
29+
String role) {
2830
this.personID = personID;
31+
this.blogId = blogId;
2932
this.localTableBlogId = localTableBlogId;
3033
this.username = username;
3134
this.firstName = firstName;
@@ -36,12 +39,12 @@ public Person(long personID,
3639
}
3740

3841
@Nullable
39-
public static Person fromJSON(JSONObject json, int localTableBlogId) {
42+
public static Person fromJSON(JSONObject json, String blogId, int localTableBlogId) throws JSONException {
4043
if (json == null) {
4144
return null;
4245
}
4346

44-
// Response parameters can be found in https://developer.wordpress.com/docs/api/1.1/get/sites/%24site/users/%24user_id/
47+
// Response parameters are in: https://developer.wordpress.com/docs/api/1.1/get/sites/%24site/users/%24user_id/
4548
try {
4649
long personID = Long.parseLong(json.getString("ID"));
4750
String username = json.optString("login");
@@ -50,11 +53,10 @@ public static Person fromJSON(JSONObject json, int localTableBlogId) {
5053
String displayName = json.optString("nice_name");
5154
String avatarUrl = json.optString("avatar_URL");
5255
// We don't support multiple roles, so the first role is picked just as it's in Calypso
53-
Role role = Role.fromKey(json.optJSONArray("roles").optString(0));
56+
String role = json.getJSONArray("roles").optString(0);
5457

55-
return new Person(personID, localTableBlogId, username, firstName, lastName, displayName, avatarUrl, role);
56-
} catch (JSONException e) {
57-
AppLog.e(AppLog.T.PEOPLE, "JSON exception occurred while parsing the user json: " + e);
58+
return new Person(personID, blogId, localTableBlogId, username,
59+
firstName, lastName, displayName, avatarUrl, role);
5860
} catch (NumberFormatException e) {
5961
AppLog.e(AppLog.T.PEOPLE, "The ID parsed from the JSON couldn't be converted to long: " + e);
6062
}
@@ -66,6 +68,10 @@ public long getPersonID() {
6668
return personID;
6769
}
6870

71+
public String getBlogId() {
72+
return blogId;
73+
}
74+
6975
public int getLocalTableBlogId() {
7076
return localTableBlogId;
7177
}
@@ -102,11 +108,11 @@ public void setDisplayName(String displayName) {
102108
this.displayName = displayName;
103109
}
104110

105-
public Role getRole() {
111+
public String getRole() {
106112
return role;
107113
}
108114

109-
public void setRole(Role role) {
115+
public void setRole(String role) {
110116
this.role = role;
111117
}
112118

WordPress/src/main/java/org/wordpress/android/models/Role.java

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

WordPress/src/main/java/org/wordpress/android/ui/people/PeopleAdapter.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,18 @@
99

1010
import org.wordpress.android.R;
1111
import org.wordpress.android.models.Person;
12-
import org.wordpress.android.models.Role;
1312
import org.wordpress.android.util.GravatarUtils;
13+
import org.wordpress.android.util.StringUtils;
1414
import org.wordpress.android.widgets.WPNetworkImageView;
1515

1616
import java.util.List;
1717

1818
public class PeopleAdapter extends BaseAdapter {
19-
private final Context mContext;
2019
private final LayoutInflater mInflater;
2120
private List<Person> mPeopleList;
2221
private int mAvatarSz;
2322

2423
public PeopleAdapter(Context context, List<Person> peopleList) {
25-
mContext = context;
2624
mAvatarSz = context.getResources().getDimensionPixelSize(R.dimen.avatar_sz_medium);
2725
mInflater = LayoutInflater.from(context);
2826
mPeopleList = peopleList;
@@ -77,8 +75,7 @@ public View getView(int position, View convertView, ViewGroup parent) {
7775
holder.imgAvatar.setImageUrl(avatarUrl, WPNetworkImageView.ImageType.AVATAR);
7876
holder.txtDisplayName.setText(person.getDisplayName());
7977
holder.txtUsername.setText(String.format("@%s", person.getUsername()));
80-
holder.txtRole.setText(Role.getLabel(mContext, person.getRole()));
81-
holder.txtRole.setBackgroundColor(Role.backgroundColor(mContext, person.getRole()));
78+
holder.txtRole.setText(StringUtils.capitalize(person.getRole()));
8279
}
8380

8481
return convertView;

WordPress/src/main/java/org/wordpress/android/ui/people/PeopleManagementActivity.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@
77
import android.support.v7.app.AppCompatActivity;
88
import android.view.MenuItem;
99

10-
import com.android.volley.VolleyError;
11-
12-
import org.json.JSONException;
1310
import org.wordpress.android.R;
1411
import org.wordpress.android.WordPress;
1512
import org.wordpress.android.datasets.PeopleTable;
@@ -77,7 +74,7 @@ public boolean onOptionsItemSelected(final MenuItem item) {
7774
}
7875

7976
private void refreshUsersList(String dotComBlogId, final int localTableBlogId) {
80-
PeopleUtils.fetchUsers(dotComBlogId, localTableBlogId, new PeopleUtils.Callback() {
77+
PeopleUtils.fetchUsers(dotComBlogId, localTableBlogId, new PeopleUtils.FetchUsersCallback() {
8178
@Override
8279
public void onSuccess(List<Person> peopleList) {
8380
PeopleTable.savePeople(peopleList);
@@ -97,12 +94,7 @@ public void onSuccess(List<Person> peopleList) {
9794
}
9895

9996
@Override
100-
public void onError(VolleyError error) {
101-
//TODO: show some kind of error to the user
102-
}
103-
104-
@Override
105-
public void onJSONException(JSONException exception) {
97+
public void onError() {
10698
//TODO: show some kind of error to the user
10799
}
108100
});

WordPress/src/main/java/org/wordpress/android/ui/people/PersonDetailFragment.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
import org.wordpress.android.R;
1313
import org.wordpress.android.datasets.PeopleTable;
1414
import org.wordpress.android.models.Person;
15-
import org.wordpress.android.models.Role;
1615
import org.wordpress.android.util.AppLog;
1716
import org.wordpress.android.util.GravatarUtils;
17+
import org.wordpress.android.util.StringUtils;
1818
import org.wordpress.android.widgets.WPNetworkImageView;
1919

2020
public class PersonDetailFragment extends Fragment {
@@ -86,7 +86,7 @@ public void refreshPersonDetails() {
8686
mAvatarImageView.setImageUrl(avatarUrl, WPNetworkImageView.ImageType.AVATAR);
8787
mDisplayNameTextView.setText(person.getDisplayName());
8888
mUsernameTextView.setText(person.getUsername());
89-
mRoleTextView.setText(Role.getLabel(getActivity(), person.getRole()));
89+
mRoleTextView.setText(StringUtils.capitalize(person.getRole()));
9090
mRemoveTextView.setText(String.format(getString(R.string.remove_user), person.getFirstName().toUpperCase()));
9191

9292
mRemoveTextView.setOnClickListener(new View.OnClickListener() {

0 commit comments

Comments
 (0)