1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2024-11-27 00:32:07 +01:00

Unable to remove avatar in current model. This is now fixed.

git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/trunk@7084 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
Derek DeMoro 2007-02-13 17:00:44 +00:00 committed by derek
parent 5d30c8ac26
commit 76087c3928

View file

@ -149,12 +149,12 @@ public class VCard extends IQ {
* Set generic, unescapable VCard field. If unescabale is set to true, XML maybe a part of the * Set generic, unescapable VCard field. If unescabale is set to true, XML maybe a part of the
* value. * value.
* *
* @param value value of field * @param value value of field
* @param field field to set. See {@link #getField(String)} * @param field field to set. See {@link #getField(String)}
* @param isUnescapable True if the value should not be escaped, and false if it should. * @param isUnescapable True if the value should not be escaped, and false if it should.
*/ */
public void setField(String field, String value, boolean isUnescapable) { public void setField(String field, String value, boolean isUnescapable) {
if(!isUnescapable) { if (!isUnescapable) {
otherSimpleFields.put(field, value); otherSimpleFields.put(field, value);
} }
else { else {
@ -333,10 +333,7 @@ public class VCard extends IQ {
e.printStackTrace(); e.printStackTrace();
} }
String encodedImage = StringUtils.encodeBase64(bytes); setAvatar(bytes);
avatar = encodedImage;
setField("PHOTO", "<TYPE>image/jpeg</TYPE><BINVAL>" + encodedImage + "</BINVAL>", true);
} }
/** /**
@ -345,6 +342,13 @@ public class VCard extends IQ {
* @param bytes the bytes of the avatar. * @param bytes the bytes of the avatar.
*/ */
public void setAvatar(byte[] bytes) { public void setAvatar(byte[] bytes) {
if (bytes == null) {
// Remove avatar (if any) from mappings
otherUnescapableFields.remove("PHOTO");
return;
}
// Otherwise, add to mappings.
String encodedImage = StringUtils.encodeBase64(bytes); String encodedImage = StringUtils.encodeBase64(bytes);
avatar = encodedImage; avatar = encodedImage;
@ -413,12 +417,13 @@ public class VCard extends IQ {
int bytes = (int) file.length(); int bytes = (int) file.length();
byte[] buffer = new byte[bytes]; byte[] buffer = new byte[bytes];
int readBytes = bis.read(buffer); int readBytes = bis.read(buffer);
if(readBytes != buffer.length) { if (readBytes != buffer.length) {
throw new IOException("Entire file not read"); throw new IOException("Entire file not read");
} }
return buffer; return buffer;
} finally { }
if(bis != null) { finally {
if (bis != null) {
bis.close(); bis.close();
} }
} }
@ -467,6 +472,7 @@ public class VCard extends IQ {
* and not anonymous.<p> * and not anonymous.<p>
* <p/> * <p/>
* NOTE: the method is asynchronous and does not wait for the returned value. * NOTE: the method is asynchronous and does not wait for the returned value.
*
* @param connection the XMPPConnection to use. * @param connection the XMPPConnection to use.
* @throws XMPPException thrown if there was an issue setting the VCard in the server. * @throws XMPPException thrown if there was an issue setting the VCard in the server.
*/ */