summaryrefslogtreecommitdiffstats
path: root/extensions/PhabBugz/lib/Feed.pm
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/PhabBugz/lib/Feed.pm')
-rw-r--r--extensions/PhabBugz/lib/Feed.pm26
1 files changed, 19 insertions, 7 deletions
diff --git a/extensions/PhabBugz/lib/Feed.pm b/extensions/PhabBugz/lib/Feed.pm
index b2b681bbd..d178f249b 100644
--- a/extensions/PhabBugz/lib/Feed.pm
+++ b/extensions/PhabBugz/lib/Feed.pm
@@ -76,7 +76,7 @@ sub feed_query {
foreach my $story_data (@$transactions) {
my $skip = 0;
my $story_id = $story_data->{id};
- my $story_phid = $story_data->{phid};
+ my $story_phid = $story_data->{storyPHID};
my $author_phid = $story_data->{authorPHID};
my $object_phid = $story_data->{objectPHID};
my $story_text = $story_data->{text};
@@ -296,13 +296,25 @@ sub feed_transactions {
my $data = { view => 'text' };
$data->{after} = $after if $after;
my $result = request('feed.query_id', $data);
- unless (ref $result->{result}{data} eq 'ARRAY'
- && @{ $result->{result}{data} })
- {
- return [];
+
+ # Stupid Conduit. If the feed results are empty it returns
+ # an empty list ([]). If there is data it returns it in a
+ # hash ({}) so we have adjust to be consistent.
+ my $stories = ref $result->{result}{data} eq 'HASH'
+ ? $result->{result}{data}
+ : {};
+
+ # PHP array retain key order but Perl does not. So we will
+ # loop over the data and place the stories into a list instead
+ # of a hash. We will then sort the list by id.
+ my @story_list;
+ foreach my $story_phid (keys %$stories) {
+ my $story_data = $stories->{$story_phid};
+ $story_data->{storyPHID} = $story_phid;
+ push(@story_list, $story_data);
}
- # Guarantee that the data is in ascending ID order
- return [ sort { $a->{id} <=> $b->{id} } @{ $result->{result}{data} } ];
+
+ return [ sort { $a->{id} <=> $b->{id} } @story_list ];
}
1;