]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
OStatus subscription UI tweak: if we're already subscribed/joined, say so and don...
authorBrion Vibber <brion@pobox.com>
Tue, 23 Feb 2010 19:56:17 +0000 (11:56 -0800)
committerBrion Vibber <brion@pobox.com>
Tue, 23 Feb 2010 19:56:17 +0000 (11:56 -0800)
plugins/OStatus/actions/ostatussub.php

index 0d786fac902e8615ceb2ca437818aa761ad2463a..df9aa80b017698a713bda3ad7487069edf9cbdb7 100644 (file)
@@ -88,9 +88,13 @@ class OStatusSubAction extends Action
     function showPreviewForm()
     {
         if ($this->oprofile->isGroup()) {
-            $this->previewGroup();
+            $ok = $this->previewGroup();
         } else {
-            $this->previewUser();
+            $ok = $this->previewUser();
+        }
+        if (!$ok) {
+            // @fixme maybe provide a cancel button or link back?
+            return;
         }
 
         $this->elementStart('div', 'entity_actions');
@@ -120,12 +124,22 @@ class OStatusSubAction extends Action
 
     /**
      * Show a preview for a remote user's profile
+     * @return boolean true if we're ok to try subscribing
      */
     function previewUser()
     {
         $oprofile = $this->oprofile;
         $profile = $oprofile->localProfile();
 
+        $cur = common_current_user();
+        if ($cur->isSubscribed($profile)) {
+            $this->element('div', array('class' => 'error'),
+                           _m("You are already subscribed to this user."));
+            $ok = false;
+        } else {
+            $ok = true;
+        }
+
         $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
         $avatarUrl = $avatar ? $avatar->displayUrl() : false;
 
@@ -133,20 +147,32 @@ class OStatusSubAction extends Action
                           $profile->profileurl,
                           $avatarUrl,
                           $profile->bio);
+        return $ok;
     }
 
     /**
      * Show a preview for a remote group's profile
+     * @return boolean true if we're ok to try joining
      */
     function previewGroup()
     {
         $oprofile = $this->oprofile;
         $group = $oprofile->localGroup();
 
+        $cur = common_current_user();
+        if ($cur->isMember($group)) {
+            $this->element('div', array('class' => 'error'),
+                           _m("You are already a member of this group."));
+            $ok = false;
+        } else {
+            $ok = true;
+        }
+
         $this->showEntity($group,
                           $group->getProfileUrl(),
                           $group->homepage_logo,
                           $group->description);
+        return $ok;
     }