From 261c33e7d810d754c9c159057fb11d9b209f5256 Mon Sep 17 00:00:00 2001
From: Daniel Supernault <danielsupernault@gmail.com>
Date: Sun, 27 Jan 2019 19:40:36 -0700
Subject: [PATCH] Update Api Transformers, force string type for ids

---
 app/Transformer/Api/AccountTransformer.php      |  6 ++++--
 app/Transformer/Api/AttachmentTransformer.php   |  2 +-
 app/Transformer/Api/MediaTransformer.php        |  2 +-
 app/Transformer/Api/MentionTransformer.php      |  2 +-
 app/Transformer/Api/NotificationTransformer.php |  2 +-
 app/Transformer/Api/RelationshipTransformer.php | 10 ++++++----
 app/Transformer/Api/StatusTransformer.php       |  2 +-
 app/Transformer/Api/StoryTransformer.php        |  2 +-
 8 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/app/Transformer/Api/AccountTransformer.php b/app/Transformer/Api/AccountTransformer.php
index 3b82a51b0..440cd17c1 100644
--- a/app/Transformer/Api/AccountTransformer.php
+++ b/app/Transformer/Api/AccountTransformer.php
@@ -9,8 +9,9 @@ class AccountTransformer extends Fractal\TransformerAbstract
 {
 	public function transform(Profile $profile)
 	{
+		$is_admin = $profile->domain ? false : $profile->user->is_admin;
 		return [
-			'id' => $profile->id,
+			'id' => (string) $profile->id,
 			'username' => $profile->username,
 			'acct' => $profile->username,
 			'display_name' => $profile->name,
@@ -28,7 +29,8 @@ class AccountTransformer extends Fractal\TransformerAbstract
 			'moved' => null,
 			'fields' => null,
 			'bot' => null,
-			'software' => 'pixelfed'
+			'software' => 'pixelfed',
+			'is_admin' => (bool) $is_admin
 		];
 	}
 }
diff --git a/app/Transformer/Api/AttachmentTransformer.php b/app/Transformer/Api/AttachmentTransformer.php
index 2e1be8449..76c5b6ae3 100644
--- a/app/Transformer/Api/AttachmentTransformer.php
+++ b/app/Transformer/Api/AttachmentTransformer.php
@@ -9,7 +9,7 @@ class AttachmentTransformer extends Fractal\TransformerAbstract
 	public function transform(Media $media)
 	{
 		return [
-			'id'			=> $media->id,
+			'id'			=> (string) $media->id,
 			'type'			=> $media->activityVerb(),
 			'url'			=> $media->url(),
 			'remote_url' 	=> null,
diff --git a/app/Transformer/Api/MediaTransformer.php b/app/Transformer/Api/MediaTransformer.php
index 2920bea1e..cca1e37c1 100644
--- a/app/Transformer/Api/MediaTransformer.php
+++ b/app/Transformer/Api/MediaTransformer.php
@@ -10,7 +10,7 @@ class MediaTransformer extends Fractal\TransformerAbstract
     public function transform(Media $media)
     {
         return [
-            'id'            => $media->id,
+            'id'            => (string) $media->id,
             'type'          => $media->activityVerb(),
             'url'           => $media->url(),
             'remote_url'    => null,
diff --git a/app/Transformer/Api/MentionTransformer.php b/app/Transformer/Api/MentionTransformer.php
index ae202b6e8..7a892e401 100644
--- a/app/Transformer/Api/MentionTransformer.php
+++ b/app/Transformer/Api/MentionTransformer.php
@@ -10,7 +10,7 @@ class MentionTransformer extends Fractal\TransformerAbstract
     public function transform(Profile $profile)
     {
         return [
-            'id'       => $profile->id,
+            'id'       => (string) $profile->id,
             'url'      => $profile->url(),
             'username' => $profile->username,
             'acct'     => $profile->username,
diff --git a/app/Transformer/Api/NotificationTransformer.php b/app/Transformer/Api/NotificationTransformer.php
index 991848e31..a621891d1 100644
--- a/app/Transformer/Api/NotificationTransformer.php
+++ b/app/Transformer/Api/NotificationTransformer.php
@@ -15,7 +15,7 @@ class NotificationTransformer extends Fractal\TransformerAbstract
 	public function transform(Notification $notification)
 	{
 		return [
-			'id'       		=> $notification->id,
+			'id'       		=> (string) $notification->id,
 			'type'       	=> $this->replaceTypeVerb($notification->action),
 			'created_at' 	=> (string) $notification->created_at,
 			'account' 		=> null,
diff --git a/app/Transformer/Api/RelationshipTransformer.php b/app/Transformer/Api/RelationshipTransformer.php
index 232e79ab2..6c1a6bfbd 100644
--- a/app/Transformer/Api/RelationshipTransformer.php
+++ b/app/Transformer/Api/RelationshipTransformer.php
@@ -2,6 +2,7 @@
 
 namespace App\Transformer\Api;
 
+use Auth;
 use App\Profile;
 use League\Fractal;
 
@@ -9,17 +10,18 @@ class RelationshipTransformer extends Fractal\TransformerAbstract
 {
     public function transform(Profile $profile)
     {
+        $user = Auth::user()->profile;
         return [
-            'id' => $profile->id,
-            'following' => null,
-            'followed_by' => null,
+            'id' => (string) $profile->id,
+            'following' => $user->follows($profile),
+            'followed_by' => $user->followedBy($profile),
             'blocking' => null,
             'muting' => null,
             'muting_notifications' => null,
             'requested' => null,
             'domain_blocking' => null,
             'showing_reblogs' => null,
-            'endorsed' => null
+            'endorsed' => false
         ];
     }
 }
diff --git a/app/Transformer/Api/StatusTransformer.php b/app/Transformer/Api/StatusTransformer.php
index d07ac04b1..dfacd34d4 100644
--- a/app/Transformer/Api/StatusTransformer.php
+++ b/app/Transformer/Api/StatusTransformer.php
@@ -17,7 +17,7 @@ class StatusTransformer extends Fractal\TransformerAbstract
     public function transform(Status $status)
     {
         return [
-            'id'                        => $status->id,
+            'id'                        => (string) $status->id,
             'uri'                       => $status->url(),
             'url'                       => $status->url(),
             'in_reply_to_id'            => $status->in_reply_to_id,
diff --git a/app/Transformer/Api/StoryTransformer.php b/app/Transformer/Api/StoryTransformer.php
index 3d87a5727..e362470cb 100644
--- a/app/Transformer/Api/StoryTransformer.php
+++ b/app/Transformer/Api/StoryTransformer.php
@@ -14,7 +14,7 @@ class StoryTransformer extends Fractal\TransformerAbstract
     public function transform(Story $story)
     {
         return [
-            'id'                        => $story->id,
+            'id'                        => (string) $story->id,
             'photo'                     => $story->profile->avatarUrl(),
             'name'                      => '',
             'link'                      => '',