Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/API/Attachment.vala
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public class Tuba.API.Attachment : Entity, Widgetizable {
if (error != null || in_stream == null)
throw new Oopsie.INSTANCE (error);
else {
var parser = Network.get_parser_from_inputstream (in_stream);
var parser = yield Network.get_parser_from_inputstream_async (in_stream);
var node = network.parse_node (parser);
var entity = accounts.active.create_entity<API.Attachment> (node);
debug (@"OK! ID $(entity.id)");
Expand Down
12 changes: 9 additions & 3 deletions src/API/Mention.vala
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,15 @@ public class Tuba.API.Mention : Entity, Widgetizable {
new Request.GET (@"/api/v1/accounts/$id")
.with_account (accounts.active)
.then ((in_stream) => {
var parser = Network.get_parser_from_inputstream (in_stream);
var node = network.parse_node (parser);
API.Account.from (node).open ();
Network.get_parser_from_inputstream_async.begin (in_stream, (obj, res) => {
try {
var parser = Network.get_parser_from_inputstream_async.end (res);
var node = network.parse_node (parser);
API.Account.from (node).open ();
} catch (Error e) {
critical (@"Couldn't parse json: $(e.code) $(e.message)");
}
});
})
.exec ();
}
Expand Down
12 changes: 9 additions & 3 deletions src/API/Notification.vala
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,15 @@ public class Tuba.API.Notification : Entity, Widgetizable {
new Request.GET (@"/api/v1/annual_reports/$year")
.with_account (accounts.active)
.then ((in_stream) => {
var parser = Network.get_parser_from_inputstream (in_stream);
var node = network.parse_node (parser);
API.AnnualReports.from (node).open (year);
Network.get_parser_from_inputstream_async.begin (in_stream, (obj, res) => {
try {
var parser = Network.get_parser_from_inputstream_async.end (res);
var node = network.parse_node (parser);
API.AnnualReports.from (node).open (year);
} catch (Error e) {
critical (@"Couldn't parse json: $(e.code) $(e.message)");
}
});
})
.exec ();
break;
Expand Down
48 changes: 33 additions & 15 deletions src/API/Relationship.vala
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,15 @@ public class Tuba.API.Relationship : Entity {
.with_account (accounts.active)
.with_param ("id", id)
.then ((in_stream) => {
var parser = Network.get_parser_from_inputstream (in_stream);
Network.parse_array (parser, node => {
invalidate (node);
Network.get_parser_from_inputstream_async.begin (in_stream, (obj, res) => {
try {
var parser = Network.get_parser_from_inputstream_async.end (res);
Network.parse_array (parser, node => {
invalidate (node);
});
} catch (Error e) {
critical (@"Couldn't parse json: $(e.code) $(e.message)");
}
});
})
.exec ();
Expand All @@ -64,7 +70,7 @@ public class Tuba.API.Relationship : Entity {
.with_account (accounts.active);
yield req.await ();

var parser = Network.get_parser_from_inputstream (req.response_body);
var parser = yield Network.get_parser_from_inputstream_async (req.response_body);
Network.parse_array (parser, node => {
API.Relationship entity = Entity.from_json (typeof (API.Relationship), node) as API.Relationship;
entity.tuba_has_loaded = true;
Expand Down Expand Up @@ -92,13 +98,19 @@ public class Tuba.API.Relationship : Entity {
var req = new Request.POST (@"/api/v1/accounts/$id/$operation")
.with_account (accounts.active)
.then ((in_stream) => {
var parser = Network.get_parser_from_inputstream (in_stream);
var node = network.parse_node (parser);
invalidate (node);
debug (@"Performed \"$operation\" on Relationship $id");

if (operation in REQUIRES_USER_REMOVAL) app.remove_user_id (id);
else if (operation in REQUIRES_FEATURED_REFRESH) app.refresh_featured ();
Network.get_parser_from_inputstream_async.begin (in_stream, (obj, res) => {
try {
var parser = Network.get_parser_from_inputstream_async.end (res);
var node = network.parse_node (parser);
invalidate (node);
debug (@"Performed \"$operation\" on Relationship $id");

if (operation in REQUIRES_USER_REMOVAL) app.remove_user_id (id);
else if (operation in REQUIRES_FEATURED_REFRESH) app.refresh_featured ();
} catch (Error e) {
critical (@"Couldn't parse json: $(e.code) $(e.message)");
}
});
});

if (modify_params != null) {
Expand All @@ -123,10 +135,16 @@ public class Tuba.API.Relationship : Entity {
.with_account (accounts.active)
.body_json (builder)
.then ((in_stream) => {
var parser = Network.get_parser_from_inputstream (in_stream);
var node = network.parse_node (parser);
invalidate (node);
debug (@"Performed \"note\" on Relationship $id");
Network.get_parser_from_inputstream_async.begin (in_stream, (obj, res) => {
try {
var parser = Network.get_parser_from_inputstream_async.end (res);
var node = network.parse_node (parser);
invalidate (node);
debug (@"Performed \"note\" on Relationship $id");
} catch (Error e) {
critical (@"Couldn't parse json: $(e.code) $(e.message)");
}
});
})
.exec ();
}
Expand Down
2 changes: 1 addition & 1 deletion src/API/SearchResults.vala
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public class Tuba.API.SearchResults : Entity {
.with_param ("q", q);
yield req.await ();

var parser = Network.get_parser_from_inputstream (req.response_body);
var parser = yield Network.get_parser_from_inputstream_async (req.response_body);
return from (network.parse_node (parser));
}
}
43 changes: 25 additions & 18 deletions src/API/Status/PreviewCard.vala
Original file line number Diff line number Diff line change
Expand Up @@ -212,29 +212,36 @@ public class Tuba.API.PreviewCard : Entity, Widgetizable {

new Request.GET (api_url)
.then ((in_stream) => {
var parser = Network.get_parser_from_inputstream (in_stream);
var node = network.parse_node (parser);
Network.get_parser_from_inputstream_async.begin (in_stream, (obj, res) => {
try {
var parser = Network.get_parser_from_inputstream_async.end (res);
var node = network.parse_node (parser);

switch (this.special_card) {
case API.PreviewCard.CardSpecialType.FUNKWHALE:
var funkwhale_obj = API.Funkwhale.from (node);
string res_url;
switch (this.special_card) {
case API.PreviewCard.CardSpecialType.FUNKWHALE:
var funkwhale_obj = API.Funkwhale.from (node);
string res_url;

if (funkwhale_obj.get_track (host, out res_url)) {
app.main_window.show_media_viewer (res_url, Tuba.Attachment.MediaType.AUDIO, null, null, false, null, this.url, null, true);
}
break;
case API.PreviewCard.CardSpecialType.BOOKWYRM:
API.BookWyrm bookwyrm_obj = API.BookWyrm.from (node);
if (funkwhale_obj.get_track (host, out res_url)) {
app.main_window.show_media_viewer (res_url, Tuba.Attachment.MediaType.AUDIO, null, null, false, null, this.url, null, true);
}
break;
case API.PreviewCard.CardSpecialType.BOOKWYRM:
API.BookWyrm bookwyrm_obj = API.BookWyrm.from (node);

if (bookwyrm_obj.title != null && bookwyrm_obj.title != "") {
app.main_window.show_book (bookwyrm_obj);
if (bookwyrm_obj.title != null && bookwyrm_obj.title != "") {
app.main_window.show_book (bookwyrm_obj);
}
break;
default:
open_url (this.url);
break;
}
break;
default:
} catch (Error e) {
open_url (this.url);
break;
}
critical (@"Couldn't parse json: $(e.code) $(e.message)");
}
});
})
.on_error (() => {
open_url (this.url);
Expand Down
2 changes: 1 addition & 1 deletion src/Application.vala
Original file line number Diff line number Diff line change
Expand Up @@ -803,7 +803,7 @@ namespace Tuba {

try {
yield msg.await ();
var parser = Network.get_parser_from_inputstream (msg.response_body);
var parser = yield Network.get_parser_from_inputstream_async (msg.response_body);

string[] new_contributors = {};
Network.parse_array (parser, node => {
Expand Down
2 changes: 1 addition & 1 deletion src/Dialogs/Composer/Attachment.vala
Original file line number Diff line number Diff line change
Expand Up @@ -455,7 +455,7 @@ public class Tuba.Dialogs.Composer.Components.Attachment : Adw.Bin {
this.progress = 1;
this.file = file;
try {
var parser = Network.get_parser_from_inputstream (in_stream);
var parser = yield Network.get_parser_from_inputstream_async (in_stream);
var node = network.parse_node (parser);
var entity = accounts.active.create_entity<API.Attachment> (node);

Expand Down
2 changes: 1 addition & 1 deletion src/Dialogs/Composer/Completion/HandleProvider.vala
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public class Tuba.HandleProvider: Tuba.CompletionProvider {
yield req.await ();

var results = new GLib.ListStore (typeof (Object));
var parser = Network.get_parser_from_inputstream (req.response_body);
var parser = yield Network.get_parser_from_inputstream_async (req.response_body);
Network.parse_array (parser, node => {
var entity = Tuba.Helper.Entity.from_json (node, typeof (API.Account));
if (entity is API.Account) {
Expand Down
2 changes: 1 addition & 1 deletion src/Dialogs/Composer/Completion/HashtagProvider.vala
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public class Tuba.HashtagProvider: Tuba.CompletionProvider {
yield req.await ();

var suggestions = new GLib.ListStore (typeof (Object));
var parser = Network.get_parser_from_inputstream (req.response_body);
var parser = yield Network.get_parser_from_inputstream_async (req.response_body);
var results = API.SearchResults.from (network.parse_node (parser));
if (results != null) {
results.hashtags.foreach (tag => {
Expand Down
2 changes: 1 addition & 1 deletion src/Dialogs/Composer/Dialog.vala
Original file line number Diff line number Diff line change
Expand Up @@ -1080,7 +1080,7 @@ public class Tuba.Dialogs.Composer.Dialog : Adw.Dialog {
publish_req.body_json (populate_json_body ());
yield publish_req.await ();

var parser = Network.get_parser_from_inputstream (publish_req.response_body);
var parser = yield Network.get_parser_from_inputstream_async (publish_req.response_body);
var node = network.parse_node (parser);
var status = API.Status.from (node);
debug (@"Published post with id $(status.id)");
Expand Down
13 changes: 10 additions & 3 deletions src/Dialogs/FilterEdit.vala
Original file line number Diff line number Diff line change
Expand Up @@ -315,9 +315,16 @@ public class Tuba.Dialogs.FilterEdit : Adw.NavigationPage {
.body_json (builder)
.with_account (accounts.active)
.then ((in_stream) => {
var parser = Network.get_parser_from_inputstream (in_stream);
var node = network.parse_node (parser);
saved (API.Filters.Filter.from (node));
Network.get_parser_from_inputstream_async.begin (in_stream, (obj, res) => {
try {
var parser = Network.get_parser_from_inputstream_async.end (res);
var node = network.parse_node (parser);
saved (API.Filters.Filter.from (node));
} catch (Error e) {
this.sensitive = true;
critical (@"Couldn't parse json: $(e.code) $(e.message)");
}
});
on_close ();
})
.on_error ((code, message) => {
Expand Down
62 changes: 34 additions & 28 deletions src/Dialogs/ListEdit.vala
Original file line number Diff line number Diff line change
Expand Up @@ -120,34 +120,40 @@ public class Tuba.Dialogs.ListEdit : Adw.PreferencesDialog {
new Request.GET (@"/api/v1/lists/$(list.id)/accounts")
.with_account (accounts.active)
.then ((in_stream) => {
var parser = Network.get_parser_from_inputstream (in_stream);
if (Network.get_array_size (parser) > 0) {
this.add (members_page);

Network.parse_array (parser, node => {
var member = API.Account.from (node);
var avi = new Widgets.Avatar () {
account = member,
size = 32
};

var remove_button = new MemberCheckButton (member.id) {
active = false,
valign = Gtk.Align.CENTER,
halign = Gtk.Align.CENTER,
};
remove_button.changed.connect (on_member_remove_changed);

var member_row = new Adw.ActionRow () {
title = member.full_handle
};

member_row.add_prefix (avi);
member_row.add_suffix (remove_button);

members_group.add (member_row);
});
}
Network.get_parser_from_inputstream_async.begin (in_stream, (obj, res) => {
try {
var parser = Network.get_parser_from_inputstream_async.end (res);
if (Network.get_array_size (parser) > 0) {
this.add (members_page);

Network.parse_array (parser, node => {
var member = API.Account.from (node);
var avi = new Widgets.Avatar () {
account = member,
size = 32
};

var remove_button = new MemberCheckButton (member.id) {
active = false,
valign = Gtk.Align.CENTER,
halign = Gtk.Align.CENTER,
};
remove_button.changed.connect (on_member_remove_changed);

var member_row = new Adw.ActionRow () {
title = member.full_handle
};

member_row.add_prefix (avi);
member_row.add_suffix (remove_button);

members_group.add (member_row);
});
}
} catch (Error e) {
critical (@"Couldn't parse json: $(e.code) $(e.message)");
}
});
})
.exec ();
}
Expand Down
4 changes: 2 additions & 2 deletions src/Dialogs/NewAccount.vala
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ public class Tuba.Dialogs.NewAccount: Adw.Window {
.with_form_data ("website", Build.WEBSITE);
yield msg.await ();

var parser = Network.get_parser_from_inputstream (msg.response_body);
var parser = yield Network.get_parser_from_inputstream_async (msg.response_body);
var root = network.parse (parser);

if (root.get_string_member ("name") != Build.NAME)
Expand Down Expand Up @@ -226,7 +226,7 @@ public class Tuba.Dialogs.NewAccount: Adw.Window {
.with_form_data ("code", code_entry.text);
yield token_req.await ();

var parser = Network.get_parser_from_inputstream (token_req.response_body);
var parser = yield Network.get_parser_from_inputstream_async (token_req.response_body);
var root = network.parse (parser);
account.access_token = root.get_string_member ("access_token");

Expand Down
33 changes: 20 additions & 13 deletions src/Dialogs/NotificationSettings.vala
Original file line number Diff line number Diff line change
Expand Up @@ -165,23 +165,30 @@ public class Tuba.Dialogs.NotificationSettings : Adw.Dialog {
new Request.GET ("/api/v1/notifications/policy")
.with_account (accounts.active)
.then ((in_stream) => {
var parser = Network.get_parser_from_inputstream (in_stream);
var node = network.parse_node (parser);
if (node == null) return;
Network.get_parser_from_inputstream_async.begin (in_stream, (obj, res) => {
try {
var parser = Network.get_parser_from_inputstream_async.end (res);
var node = network.parse_node (parser);
if (node == null) return;

filtered_notifications_group.visible = true;
var policies = API.NotificationFilter.Policy.from (node);
filtered_notifications_group.visible = true;
var policies = API.NotificationFilter.Policy.from (node);

notification_filter_policy_status = new Gee.HashMap<Adw.SwitchRow, bool> ();
notification_filter_policy_status.set (filter_notifications_following_switch, policies.filter_not_following);
notification_filter_policy_status.set (filter_notifications_follower_switch, policies.filter_not_followers);
notification_filter_policy_status.set (filter_notifications_new_account_switch, policies.filter_new_accounts);
notification_filter_policy_status.set (filter_notifications_dm_switch, policies.filter_private_mentions);
notification_filter_policy_status = new Gee.HashMap<Adw.SwitchRow, bool> ();
notification_filter_policy_status.set (filter_notifications_following_switch, policies.filter_not_following);
notification_filter_policy_status.set (filter_notifications_follower_switch, policies.filter_not_followers);
notification_filter_policy_status.set (filter_notifications_new_account_switch, policies.filter_new_accounts);
notification_filter_policy_status.set (filter_notifications_dm_switch, policies.filter_private_mentions);

notification_filter_policy_status.@foreach (entry => {
((Adw.SwitchRow) entry.key).active = (bool) entry.value;
notification_filter_policy_status.@foreach (entry => {
((Adw.SwitchRow) entry.key).active = (bool) entry.value;

return true;
return true;
});

} catch (Error e) {
critical (@"Couldn't parse json: $(e.code) $(e.message)");
}
});
})
.on_error ((code, message) => {
Expand Down
Loading