package com.avoscloud.leanchatlib.controller; import com.avos.avoscloud.AVException; import com.avos.avoscloud.AVFile; import com.avos.avoscloud.AVGeoPoint; import com.avos.avoscloud.AVInstallation; import com.avos.avoscloud.AVObject; import com.avos.avoscloud.AVQuery; import com.avos.avoscloud.AVUser; import com.avos.avoscloud.FindCallback; import com.avos.avoscloud.FollowCallback; import com.avos.avoscloud.SaveCallback; import com.avos.avoscloud.SignUpCallback; import java.io.IOException; import java.util.concurrent.TimeUnit; /** * Created by wli on 15/9/30. */ public class LeanchatUser extends AVUser { public static final String USERNAME = "username"; public static final String AVATAR = "avatar"; public static final String NICKNAME = "nickname"; public static final String LOCATION = "location"; public static final String INSTALLATION = "installation"; public static final String REGISTER_COMPLETED = "registerCompleted"; public static String getCurrentUserId() { LeanchatUser currentUser = getCurrentUser(LeanchatUser.class); return (null != currentUser ? currentUser.getObjectId() : null); } public String getAvatarUrl() { AVFile avatar = getAVFile(AVATAR); if (avatar != null) { return avatar.getUrl(); } else { return null; } } public String getNickname() { String nickname = getString(NICKNAME); return nickname; } public void saveAvatar(String path, final SaveCallback saveCallback) { final AVFile file; try { file = AVFile.withAbsoluteLocalPath(getUsername(), path); put(AVATAR, file); file.saveInBackground(new SaveCallback() { @Override public void done(AVException e) { if (null == e) { saveInBackground(saveCallback); } else { if (null != saveCallback) { saveCallback.done(e); } } } }); } catch (IOException e) { e.printStackTrace(); } } public static LeanchatUser getCurrentUser() { return getCurrentUser(LeanchatUser.class); } public void updateUserInfo() { AVInstallation installation = AVInstallation.getCurrentInstallation(); if (installation != null) { put(INSTALLATION, installation); saveInBackground(); } } public AVGeoPoint getGeoPoint() { return getAVGeoPoint(LOCATION); } public void setGeoPoint(AVGeoPoint point) { put(LOCATION, point); } public static void signUpByNameAndPwd(String name, String password, SignUpCallback callback) { AVUser user = new AVUser(); user.setUsername(name); user.setPassword(password); user.signUpInBackground(callback); } public void removeFriend(String friendId, final SaveCallback saveCallback) { unfollowInBackground(friendId, new FollowCallback() { @Override public void done(AVObject object, AVException e) { if (saveCallback != null) { saveCallback.done(e); } } }); } public void findFriendsWithCachePolicy(AVQuery.CachePolicy cachePolicy, FindCallback<LeanchatUser> findCallback) { AVQuery<LeanchatUser> q = null; try { q = followeeQuery(LeanchatUser.class); } catch (Exception e) { } q.setCachePolicy(cachePolicy); q.setMaxCacheAge(TimeUnit.MINUTES.toMillis(1)); q.findInBackground(findCallback); } }