aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Digitigrade/Model/Actor.php3
-rw-r--r--routes/actor.php4
2 files changed, 6 insertions, 1 deletions
diff --git a/Digitigrade/Model/Actor.php b/Digitigrade/Model/Actor.php
index 2b9a867..229582c 100644
--- a/Digitigrade/Model/Actor.php
+++ b/Digitigrade/Model/Actor.php
@@ -153,6 +153,9 @@ class Actor extends PushableModel implements RpcReceiver {
switch ($method) {
case 'follow':
$status = $this->requestToFollow ? FollowRelationStatus::PENDING : FollowRelationStatus::ACTIVE;
+ if (strlen(trim($result->body)) > 0) { // remote server returned new status, use that instead
+ $status = FollowRelationStatus::tryFrom(trim($result->body)) ?? $status;
+ }
$rel = FollowRelation::create($args[0], $this, $status);
$rel->processNotifications();
return $status;
diff --git a/routes/actor.php b/routes/actor.php
index b768413..d0bb066 100644
--- a/routes/actor.php
+++ b/routes/actor.php
@@ -5,6 +5,7 @@ use Digitigrade\HttpResponseStatus\PolicyRejected;
use Digitigrade\HttpResponseStatus\TemporaryRedirect;
use Digitigrade\HttpResponseStatus\Unauthorized;
use Digitigrade\Model\Actor;
+use Digitigrade\Model\FollowRelationStatus;
use Digitigrade\Model\Instance;
use Digitigrade\Model\Note;
use Digitigrade\Model\NotePrivacyScope;
@@ -84,7 +85,8 @@ Router::getInstance()->mount('/actor/:id/follow', function (array $args) {
if ($initiator == null) {
throw new Unauthorized('please authenticate yourself on behalf of the initiating actor');
}
- $initiator->follow($target);
+ $newStatus = $initiator->follow($target);
+ echo $newStatus->value;
});
Router::getInstance()->mount('/actor/:id/unfollow', function (array $args) {