2016-03-24 13:56:30 +01:00
|
|
|
package de.baumann.diaspora;
|
|
|
|
|
2016-03-25 00:12:00 +01:00
|
|
|
import android.os.Handler;
|
2016-03-24 13:56:30 +01:00
|
|
|
import android.util.Log;
|
|
|
|
|
|
|
|
import org.json.JSONException;
|
|
|
|
import org.json.JSONObject;
|
|
|
|
|
2016-03-25 00:12:00 +01:00
|
|
|
import java.io.File;
|
2016-03-24 13:56:30 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Created by de-live-gdev on 24.03.16. Part of Diaspora WebApp.
|
|
|
|
*/
|
|
|
|
public class WebUserProfile {
|
2016-03-25 00:12:00 +01:00
|
|
|
private static final int MINIMUM_WEBUSERPROFILE_LOAD_TIMEDIFF = 5000;
|
|
|
|
|
|
|
|
private Handler uiHandler;
|
|
|
|
private WebUserProfileChangedListener listener;
|
|
|
|
private App app;
|
|
|
|
private AppSettings appSettings;
|
|
|
|
private JSONObject json;
|
|
|
|
private long lastLoaded;
|
|
|
|
private boolean isWebUserProfileLoaded;
|
|
|
|
|
|
|
|
private String avatarUrl;
|
|
|
|
private String guid;
|
|
|
|
private String name;
|
|
|
|
private int notificationCount;
|
|
|
|
private int unreadMessagesCount;
|
|
|
|
|
|
|
|
public WebUserProfile(App app, Handler uiHandler, WebUserProfileChangedListener listener) {
|
|
|
|
this.listener = listener;
|
|
|
|
this.uiHandler = uiHandler;
|
|
|
|
this.app = app;
|
|
|
|
appSettings = app.getSettings();
|
|
|
|
|
|
|
|
avatarUrl = appSettings.getAvatarUrl();
|
|
|
|
guid = appSettings.getProfileId();
|
|
|
|
name = appSettings.getName();
|
2016-03-24 13:56:30 +01:00
|
|
|
}
|
|
|
|
|
2016-03-25 00:12:00 +01:00
|
|
|
public boolean isRefreshNeeded() {
|
2016-03-24 13:56:30 +01:00
|
|
|
return (System.currentTimeMillis() - lastLoaded) >= MINIMUM_WEBUSERPROFILE_LOAD_TIMEDIFF;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isWebUserProfileLoaded() {
|
|
|
|
return isWebUserProfileLoaded;
|
|
|
|
}
|
|
|
|
|
2016-03-25 00:12:00 +01:00
|
|
|
public boolean parseJson(String jsonStr) {
|
2016-03-24 13:56:30 +01:00
|
|
|
try {
|
2016-03-25 00:12:00 +01:00
|
|
|
this.json = new JSONObject(jsonStr);
|
2016-03-24 13:56:30 +01:00
|
|
|
lastLoaded = System.currentTimeMillis();
|
2016-03-25 00:12:00 +01:00
|
|
|
|
|
|
|
String str;
|
|
|
|
int integer;
|
|
|
|
|
|
|
|
// Avatar
|
|
|
|
if (json.has("avatar")) {
|
|
|
|
JSONObject avatarJson = json.getJSONObject("avatar");
|
|
|
|
if (avatarJson.has("medium") && !((str = avatarJson.getString("medium")).equals(avatarUrl))) {
|
|
|
|
app.getAvatarImageLoader().clearAvatarImage();
|
|
|
|
avatarUrl = str;
|
|
|
|
appSettings.setAvatarUrl(str);
|
|
|
|
uiHandler.post(new Runnable() {
|
|
|
|
public void run() {
|
|
|
|
listener.onUserProfileAvatarChanged(avatarUrl);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// GUID (User id)
|
|
|
|
if (json.has("guid") && !((str = json.getString("guid")).equals(guid))) {
|
|
|
|
guid = str;
|
|
|
|
appSettings.setProfileId(guid);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Name
|
|
|
|
if (json.has("name") && !((str = json.getString("name")).equals(name))) {
|
|
|
|
name = str;
|
|
|
|
appSettings.setName(name);
|
|
|
|
uiHandler.post(new Runnable() {
|
|
|
|
public void run() {
|
|
|
|
listener.onUserProfileNameChanged(name);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// Unread message count
|
|
|
|
if (json.has("notifications_count") && (integer = json.getInt("notifications_count")) != notificationCount) {
|
|
|
|
notificationCount = integer;
|
|
|
|
uiHandler.post(new Runnable() {
|
|
|
|
public void run() {
|
|
|
|
listener.onNotificationCountChanged(notificationCount);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// Unread message count
|
|
|
|
if (json.has("unread_messages_count") && (integer = json.getInt("unread_messages_count")) != unreadMessagesCount) {
|
|
|
|
unreadMessagesCount = integer;
|
|
|
|
uiHandler.post(new Runnable() {
|
|
|
|
public void run() {
|
|
|
|
listener.onUnreadMessageCountChanged(unreadMessagesCount);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2016-03-24 13:56:30 +01:00
|
|
|
isWebUserProfileLoaded = true;
|
|
|
|
} catch (JSONException e) {
|
|
|
|
Log.d(App.APP_LOG_TAG, e.getMessage());
|
|
|
|
isWebUserProfileLoaded = false;
|
|
|
|
}
|
2016-03-25 00:12:00 +01:00
|
|
|
lastLoaded = System.currentTimeMillis();
|
2016-03-24 13:56:30 +01:00
|
|
|
return isWebUserProfileLoaded;
|
|
|
|
}
|
|
|
|
|
2016-03-25 00:12:00 +01:00
|
|
|
/*
|
|
|
|
// Getters & Setters
|
2016-03-24 13:56:30 +01:00
|
|
|
*/
|
|
|
|
|
2016-03-25 00:12:00 +01:00
|
|
|
public String getAvatarUrl() {
|
|
|
|
return avatarUrl;
|
2016-03-24 13:56:30 +01:00
|
|
|
}
|
|
|
|
|
2016-03-25 00:12:00 +01:00
|
|
|
public String getGuid() {
|
|
|
|
return guid;
|
2016-03-24 13:56:30 +01:00
|
|
|
}
|
|
|
|
|
2016-03-25 00:12:00 +01:00
|
|
|
public String getName() {
|
|
|
|
return name;
|
2016-03-24 13:56:30 +01:00
|
|
|
}
|
|
|
|
|
2016-03-25 00:12:00 +01:00
|
|
|
public int getNotificationCount() {
|
|
|
|
return notificationCount;
|
2016-03-24 13:56:30 +01:00
|
|
|
}
|
|
|
|
|
2016-03-25 00:12:00 +01:00
|
|
|
public int getUnreadMessagesCount() {
|
|
|
|
return unreadMessagesCount;
|
2016-03-24 13:56:30 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Not implemented / not needed yet:
|
2016-03-25 00:12:00 +01:00
|
|
|
* string "diasporaAddress"
|
|
|
|
* int "id"
|
2016-03-24 13:56:30 +01:00
|
|
|
* boolean "admin"
|
2016-03-25 00:12:00 +01:00
|
|
|
* int "following_count"
|
2016-03-24 13:56:30 +01:00
|
|
|
* boolean "moderator"
|
|
|
|
* array "aspects"
|
|
|
|
* int "id"
|
|
|
|
* string "name"
|
|
|
|
* boolean "selected"
|
|
|
|
*
|
|
|
|
* array "services"
|
|
|
|
* ? ?
|
|
|
|
* array "configured_services"
|
|
|
|
* ? ?
|
|
|
|
*/
|
|
|
|
}
|
2016-03-25 00:12:00 +01:00
|
|
|
|
|
|
|
interface WebUserProfileChangedListener {
|
|
|
|
void onUserProfileNameChanged(String name);
|
|
|
|
void onUserProfileAvatarChanged(String avatarUrl);
|
|
|
|
void onNotificationCountChanged(int notificationCount);
|
|
|
|
void onUnreadMessageCountChanged(int unreadMessageCount);
|
|
|
|
}
|