mirror of
https://gitlab.gnome.org/World/tootle
synced 2025-02-08 15:48:41 +01:00
Correctly display reblogged statuses
This commit is contained in:
parent
ed5d79d6ea
commit
b6f74afacb
@ -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");
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
});
|
||||
|
@ -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 = "<a href=\"%s\"><b>%s</b></a> 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 = "<b>"+status.acct+"</b>";
|
||||
var user_label = status.reblog != null ? status.reblog.account.display_name : status.account.display_name;
|
||||
user.label = "<b>%s</b>".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){
|
||||
|
Loading…
x
Reference in New Issue
Block a user