Update year in copyright lines
[Sone.git] / src / main / java / net / pterodactylus / sone / template / ProfileAccessor.java
index f6056fa..a152038 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Sone - ProfileAccessor.java - Copyright © 2011 David Roden
+ * Sone - ProfileAccessor.java - Copyright © 2011–2019 David Roden
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -20,7 +20,8 @@ package net.pterodactylus.sone.template;
 import net.pterodactylus.sone.core.Core;
 import net.pterodactylus.sone.data.Profile;
 import net.pterodactylus.sone.data.Sone;
-import net.pterodactylus.sone.data.Sone.ShowCustomAvatars;
+import net.pterodactylus.sone.data.SoneOptions.LoadExternalContent;
+import net.pterodactylus.sone.freenet.wot.OwnIdentity;
 import net.pterodactylus.sone.freenet.wot.Trust;
 import net.pterodactylus.util.template.Accessor;
 import net.pterodactylus.util.template.ReflectionAccessor;
@@ -30,8 +31,6 @@ import net.pterodactylus.util.template.TemplateContext;
  * {@link Accessor} for {@link Profile} objects that overwrites the original
  * “avatar” member to include checks for whether the custom avatar should
  * actually be shown.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
 public class ProfileAccessor extends ReflectionAccessor {
 
@@ -60,30 +59,37 @@ public class ProfileAccessor extends ReflectionAccessor {
                                /* not logged in? don’t show custom avatars, then. */
                                return null;
                        }
-                       if (profile.getSone().equals(currentSone)) {
-                               /* always show your own avatar. */
-                               return profile.getAvatar();
+                       String avatarId = profile.getAvatar();
+                       if (avatarId == null) {
+                               return null;
                        }
-                       ShowCustomAvatars showCustomAvatars = currentSone.getOptions().<ShowCustomAvatars> getEnumOption("ShowCustomAvatars").get();
-                       if (showCustomAvatars == ShowCustomAvatars.NEVER) {
+                       if (core.getImage(avatarId, false) == null) {
+                               /* avatar ID but no matching image? show nothing. */
                                return null;
                        }
-                       String avatarId = profile.getAvatar();
-                       if ((showCustomAvatars == ShowCustomAvatars.ALWAYS) || (avatarId == null)) {
+                       Sone remoteSone = profile.getSone();
+                       if (remoteSone.isLocal()) {
+                               /* always show your own avatars. */
                                return avatarId;
                        }
-                       Sone remoteSone = profile.getSone();
-                       if ((showCustomAvatars == ShowCustomAvatars.FOLLOWED) && currentSone.hasFriend(remoteSone.getId())) {
+                       LoadExternalContent showCustomAvatars = currentSone.getOptions().getShowCustomAvatars();
+                       if (showCustomAvatars == LoadExternalContent.NEVER) {
+                               return null;
+                       }
+                       if (showCustomAvatars == LoadExternalContent.ALWAYS) {
                                return avatarId;
                        }
-                       Trust trust = core.getTrust(currentSone, remoteSone);
+                       if (showCustomAvatars == LoadExternalContent.FOLLOWED) {
+                               return currentSone.hasFriend(remoteSone.getId()) ? avatarId : null;
+                       }
+                       Trust trust = remoteSone.getIdentity().getTrust((OwnIdentity) currentSone.getIdentity());
                        if (trust == null) {
                                return null;
                        }
-                       if ((showCustomAvatars == ShowCustomAvatars.MANUALLY_TRUSTED) && (trust.getExplicit() != null) && (trust.getExplicit() > 0)) {
+                       if ((showCustomAvatars == LoadExternalContent.MANUALLY_TRUSTED) && (trust.getExplicit() != null) && (trust.getExplicit() > 0)) {
                                return avatarId;
                        }
-                       if ((showCustomAvatars == ShowCustomAvatars.TRUSTED) && ((trust.getExplicit() != null) && (trust.getExplicit() > 0)) || ((trust.getImplicit() != null) && (trust.getImplicit() > 0))) {
+                       if ((showCustomAvatars == LoadExternalContent.TRUSTED) && (((trust.getExplicit() != null) && (trust.getExplicit() > 0)) || ((trust.getImplicit() != null) && (trust.getImplicit() > 0)))) {
                                return avatarId;
                        }
                        return null;