diff --git a/src/API/Account.vala b/src/API/Account.vala
index d0b208f..00030f2 100644
--- a/src/API/Account.vala
+++ b/src/API/Account.vala
@@ -19,6 +19,8 @@ public class Tootle.Account{
account.username = obj.get_string_member ("username");
account.acct = obj.get_string_member ("acct");
account.display_name = obj.get_string_member ("display_name");
+ if (account.display_name == "")
+ account.display_name = account.username;
account.note = obj.get_string_member ("note");
account.avatar = obj.get_string_member ("avatar");
account.url = obj.get_string_member ("url");
diff --git a/src/API/Status.vala b/src/API/Status.vala
index c7ba556..26cfcb1 100644
--- a/src/API/Status.vala
+++ b/src/API/Status.vala
@@ -1,17 +1,18 @@
public class Tootle.Status{
+ public Account account;
public int64 id;
public string uri;
public string url;
public string content;
public int64 reblogs_count;
public int64 favourites_count;
+ public string avatar;
+ public string acct;
public bool reblogged;
public bool favorited;
-
- public string avatar;
- public string acct;
+ public Status? reblog;
public Status(int64 id) {
this.id = id;
@@ -41,6 +42,7 @@ public class Tootle.Status{
var id = int64.parse (obj.get_string_member ("id"));
var status = new Status (id);
+ status.account = Account.parse(obj.get_object_member ("account"));
status.uri = obj.get_string_member ("uri");
status.url = obj.get_string_member ("url");
status.reblogs_count = obj.get_int_member ("reblogs_count");
@@ -51,10 +53,9 @@ public class Tootle.Status{
status.reblogged = obj.get_boolean_member ("reblogged");
if(obj.has_member ("favourited"))
status.favorited = obj.get_boolean_member ("favourited");
-
- var acc = obj.get_object_member ("account");
- status.avatar = acc.get_string_member ("avatar");
- status.acct = acc.get_string_member ("acct");
+
+ if(obj.has_member ("reblog") && obj.get_null_member("reblog") != true)
+ status.reblog = Status.parse (obj.get_object_member ("reblog"));
return status;
}
diff --git a/src/NetManager.vala b/src/NetManager.vala
index d9a8fcf..2c00a92 100644
--- a/src/NetManager.vala
+++ b/src/NetManager.vala
@@ -47,7 +47,7 @@ public class Tootle.NetManager : GLib.Object{
public static Json.Object parse(Soup.Message msg) throws GLib.Error{
// stdout.printf ("Status Code: %u\n", msg.status_code);
// stdout.printf ("Message length: %lld\n", msg.response_body.length);
- //stdout.printf ("Data: \n%s\n", (string) msg.response_body.data);
+ // stdout.printf ("Data: \n%s\n", (string) msg.response_body.data);
var parser = new Json.Parser ();
parser.load_from_data ((string) msg.response_body.flatten ().data, -1);
diff --git a/src/Views/HomeView.vala b/src/Views/HomeView.vala
index e7bff47..af3f677 100644
--- a/src/Views/HomeView.vala
+++ b/src/Views/HomeView.vala
@@ -52,7 +52,8 @@ public class Tootle.HomeView : Tootle.AbstractView {
widget.separator = separator;
widget.rebind (status);
widget.button_press_event.connect(() => {
- var view = new StatusView (status);
+ var open_status = status.reblog != null ? status.reblog : status;
+ var view = new StatusView (open_status);
Tootle.window.open_secondary_view (view);
return false;
});
diff --git a/src/Widgets/StatusWidget.vala b/src/Widgets/StatusWidget.vala
index 9b3c603..824ef70 100644
--- a/src/Widgets/StatusWidget.vala
+++ b/src/Widgets/StatusWidget.vala
@@ -58,10 +58,10 @@ public class Tootle.StatusWidget : Gtk.Grid {
counters.add(favorites);
counters.show_all ();
- attach(avatar, 1, 0, 1, 3);
- attach(user, 2, 1, 1, 1);
- attach(content, 2, 2, 1, 1);
- attach(counters, 2, 3, 1, 1);
+ attach(avatar, 1, 1, 1, 3);
+ attach(user, 2, 2, 1, 1);
+ attach(content, 2, 3, 1, 1);
+ attach(counters, 2, 4, 1, 1);
show_all(); //TODO: display conversations
}
@@ -69,6 +69,23 @@ public class Tootle.StatusWidget : Gtk.Grid {
this.status = status;
get_style_context ().add_class ("status");
+ if (status.reblog != null){
+ var image = new Gtk.Image.from_icon_name("edit-undo-symbolic", Gtk.IconSize.SMALL_TOOLBAR);
+ image.halign = Gtk.Align.END;
+ image.margin_end = 8;
+ image.show ();
+
+ var label_text = "%s boosted".printf (status.account.url, status.account.display_name);
+ var label = new Gtk.Label (label_text);
+ label.halign = Gtk.Align.START;
+ label.use_markup = true;
+ label.margin_bottom = 8;
+ label.show ();
+
+ attach (image, 1, 0, 1, 1);
+ attach (label, 2, 0, 2, 1);
+ }
+
destroy.connect (() => {
if(separator != null)
separator.destroy ();
@@ -76,7 +93,8 @@ public class Tootle.StatusWidget : Gtk.Grid {
}
public void rebind (Status status = this.status){
- user.label = ""+status.acct+"";
+ var user_label = status.reblog != null ? status.reblog.account.display_name : status.account.display_name;
+ user.label = "%s".printf (user_label);
content.label = status.content;
reblogs.label = status.reblogs_count.to_string ();
@@ -87,7 +105,8 @@ public class Tootle.StatusWidget : Gtk.Grid {
favorite.active = status.favorited;
favorite.sensitive = true;
- CacheManager.instance.load_avatar (status.avatar, this.avatar);
+ var avatar_url = status.reblog != null ? status.reblog.account.avatar : status.account.avatar;
+ CacheManager.instance.load_avatar (avatar_url, this.avatar);
}
private Gtk.ToggleButton get_action_button (bool reblog = true){