1
0
Fork 0
mirror of https://github.com/gsantner/dandelion synced 2024-07-05 17:52:38 +02:00
dandelion/app/src/main/java/de/dfa/diaspora_android/data/WebUserProfile.java

162 lines
4.7 KiB
Java
Raw Normal View History

package de.dfa.diaspora_android.data;
2016-03-24 13:56:30 +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;
import de.dfa.diaspora_android.App;
import de.dfa.diaspora_android.listener.WebUserProfileChangedListener;
2016-03-24 13:56:30 +01:00
/**
* Created by de-live-gdev on 24.03.16. Part of Diaspora WebApp.
*/
public class WebUserProfile {
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
}
public boolean isRefreshNeeded() {
2016-03-24 13:56:30 +01:00
return (System.currentTimeMillis() - lastLoaded) >= MINIMUM_WEBUSERPROFILE_LOAD_TIMEDIFF;
}
public boolean isWebUserProfileLoaded() {
return isWebUserProfileLoaded;
}
public boolean parseJson(String jsonStr) {
2016-03-24 13:56:30 +01:00
try {
this.json = new JSONObject(jsonStr);
2016-03-24 13:56:30 +01:00
lastLoaded = System.currentTimeMillis();
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;
}
lastLoaded = System.currentTimeMillis();
2016-03-24 13:56:30 +01:00
return isWebUserProfileLoaded;
}
/*
// Getters & Setters
2016-03-24 13:56:30 +01:00
*/
public String getAvatarUrl() {
return avatarUrl;
2016-03-24 13:56:30 +01:00
}
public String getGuid() {
return guid;
2016-03-24 13:56:30 +01:00
}
public String getName() {
return name;
2016-03-24 13:56:30 +01:00
}
public int getNotificationCount() {
return notificationCount;
2016-03-24 13:56:30 +01:00
}
public int getUnreadMessagesCount() {
return unreadMessagesCount;
2016-03-24 13:56:30 +01:00
}
/*
* Not implemented / not needed yet:
* string "diasporaAddress"
* int "id"
2016-03-24 13:56:30 +01:00
* boolean "admin"
* 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"
* ? ?
*/
}