diff --git a/assets/javascripts/discourse/controllers/activity-pub/actor/followers.js b/assets/javascripts/discourse/controllers/activity-pub/actor/followers.js index 3f61c60c..acb7a58f 100644 --- a/assets/javascripts/discourse/controllers/activity-pub/actor/followers.js +++ b/assets/javascripts/discourse/controllers/activity-pub/actor/followers.js @@ -8,6 +8,7 @@ import { popupAjaxError } from "discourse/lib/ajax-error"; export default class ActivityPubActorFollowers extends Controller { @tracked order = ""; @tracked asc = null; + @tracked loadingMore = false; queryParams = ["order", "asc"]; @@ -22,23 +23,24 @@ export default class ActivityPubActorFollowers extends Controller { } @action - loadMore() { + async loadMore() { if (!this.loadMoreUrl || this.total <= this.actors.length) { return; } - this.set("loadingMore", true); + this.loadingMore = true; - return ajax(this.loadMoreUrl) - .then((response) => { - if (response) { - this.actors.pushObjects(response.actors); - this.setProperties({ - loadMoreUrl: response.meta.load_more_url, - loadingMore: false, - }); - } - }) - .catch(popupAjaxError); + try { + const response = await ajax(this.loadMoreUrl); + if (response) { + this.actors.push(...response.actors); + this.setProperties({ + loadMoreUrl: response.meta.load_more_url, + loadingMore: false, + }); + } + } catch (error) { + popupAjaxError(error); + } } } diff --git a/assets/javascripts/discourse/controllers/activity-pub/actor/follows.js b/assets/javascripts/discourse/controllers/activity-pub/actor/follows.js index f1727df1..9713bd41 100644 --- a/assets/javascripts/discourse/controllers/activity-pub/actor/follows.js +++ b/assets/javascripts/discourse/controllers/activity-pub/actor/follows.js @@ -8,6 +8,7 @@ import { popupAjaxError } from "discourse/lib/ajax-error"; export default class ActivityPubActorFollows extends Controller { @tracked order = ""; @tracked asc = null; + @tracked loadingMore = false; queryParams = ["order", "asc"]; @@ -22,23 +23,24 @@ export default class ActivityPubActorFollows extends Controller { } @action - loadMore() { + async loadMore() { if (!this.loadMoreUrl || this.total <= this.actors.length) { return; } - this.set("loadingMore", true); + this.loadingMore = true; - return ajax(this.loadMoreUrl) - .then((response) => { - if (response) { - this.actors.pushObjects(response.actors); - this.setProperties({ - loadMoreUrl: response.meta.load_more_url, - loadingMore: false, - }); - } - }) - .catch(popupAjaxError); + try { + const response = await ajax(this.loadMoreUrl); + if (response) { + this.actors.push(...response.actors); + this.setProperties({ + loadMoreUrl: response.meta.load_more_url, + loadingMore: false, + }); + } + } catch (error) { + popupAjaxError(error); + } } } diff --git a/assets/javascripts/discourse/controllers/admin-plugins/activity-pub/actor.js b/assets/javascripts/discourse/controllers/admin-plugins/activity-pub/actor.js index 34dd3626..ce266c3f 100644 --- a/assets/javascripts/discourse/controllers/admin-plugins/activity-pub/actor.js +++ b/assets/javascripts/discourse/controllers/admin-plugins/activity-pub/actor.js @@ -13,6 +13,7 @@ export default class AdminPluginsActivityPubActor extends Controller { @tracked order = ""; @tracked asc = null; + @tracked loadingMore = false; @tracked model_type = "category"; loadMoreUrl = ""; total = ""; @@ -26,29 +27,31 @@ export default class AdminPluginsActivityPubActor extends Controller { } @action - loadMore() { + async loadMore() { if (!this.loadMoreUrl || this.total <= this.actors.length) { return; } - this.set("loadingMore", true); + this.loadingMore = true; - return ajax(this.loadMoreUrl) - .then((response) => { - if (response) { - this.actors.pushObjects( - (response.actors || []).map((actor) => { - return ActivityPubActor.create(actor); - }) - ); - this.setProperties({ - loadMoreUrl: response.meta.load_more_url, - total: response.meta.total, - loadingMore: false, - }); - } - }) - .catch(popupAjaxError); + try { + const response = await ajax(this.loadMoreUrl); + + if (response) { + this.actors.push( + ...(response.actors || []).map((actor) => { + return ActivityPubActor.create(actor); + }) + ); + this.setProperties({ + loadMoreUrl: response.meta.load_more_url, + total: response.meta.total, + loadingMore: false, + }); + } + } catch (error) { + popupAjaxError(error); + } } @action diff --git a/assets/javascripts/discourse/controllers/admin-plugins/activity-pub/log.js b/assets/javascripts/discourse/controllers/admin-plugins/activity-pub/log.js index 52579592..29c2b550 100644 --- a/assets/javascripts/discourse/controllers/admin-plugins/activity-pub/log.js +++ b/assets/javascripts/discourse/controllers/admin-plugins/activity-pub/log.js @@ -13,6 +13,7 @@ export default class AdminPluginsActivityPubLog extends Controller { @tracked order = ""; @tracked asc = null; + @tracked loadingMore = false; loadMoreUrl = ""; total = ""; @@ -21,29 +22,30 @@ export default class AdminPluginsActivityPubLog extends Controller { queryParams = ["order", "asc"]; @action - loadMore() { + async loadMore() { if (!this.loadMoreUrl || this.total <= this.logs.length) { return; } - this.set("loadingMore", true); + this.loadingMore = true; - return ajax(this.loadMoreUrl) - .then((response) => { - if (response) { - this.logs.pushObjects( - (response.logs || []).map((log) => { - return ActivityPubLog.create(log); - }) - ); - this.setProperties({ - loadMoreUrl: response.meta.load_more_url, - total: response.meta.total, - loadingMore: false, - }); - } - }) - .catch(popupAjaxError); + try { + const response = await ajax(this.loadMoreUrl); + if (response) { + this.logs.push( + ...(response.logs || []).map((log) => { + return ActivityPubLog.create(log); + }) + ); + this.setProperties({ + loadMoreUrl: response.meta.load_more_url, + total: response.meta.total, + loadingMore: false, + }); + } + } catch (error) { + popupAjaxError(error); + } } @action diff --git a/assets/javascripts/discourse/models/activity-pub-followers.js b/assets/javascripts/discourse/models/activity-pub-followers.js index d985af24..b9fadfaa 100644 --- a/assets/javascripts/discourse/models/activity-pub-followers.js +++ b/assets/javascripts/discourse/models/activity-pub-followers.js @@ -16,7 +16,7 @@ class ActivityPubFollowers extends EmberObject { return ajax(this.loadMoreUrl) .then((response) => { if (response) { - this.followers.pushObjects(response.followers); + this.followers.push(...response.followers); this.setProperties({ loadMoreUrl: response.meta.load_more_url, loadingMore: false, diff --git a/assets/javascripts/discourse/routes/activity-pub/actor/followers.js b/assets/javascripts/discourse/routes/activity-pub/actor/followers.js index cb851754..5ad46f57 100644 --- a/assets/javascripts/discourse/routes/activity-pub/actor/followers.js +++ b/assets/javascripts/discourse/routes/activity-pub/actor/followers.js @@ -1,5 +1,5 @@ -import { A } from "@ember/array"; import { service } from "@ember/service"; +import { TrackedArray } from "@ember-compat/tracked-built-ins"; import DiscourseRoute from "discourse/routes/discourse"; import ActivityPubActor from "../../../models/activity-pub-actor"; @@ -30,7 +30,7 @@ export default class ActivityPubActorFollowers extends DiscourseRoute { setupController(controller) { controller.setProperties({ actor: this.modelFor("activityPub.actor"), - actors: A(this.actors || []), + actors: new TrackedArray(this.actors || []), loadMoreUrl: this.meta?.load_more_url, total: this.meta?.total, }); diff --git a/assets/javascripts/discourse/routes/activity-pub/actor/follows.js b/assets/javascripts/discourse/routes/activity-pub/actor/follows.js index feb00f51..c0630991 100644 --- a/assets/javascripts/discourse/routes/activity-pub/actor/follows.js +++ b/assets/javascripts/discourse/routes/activity-pub/actor/follows.js @@ -1,4 +1,4 @@ -import { A } from "@ember/array"; +import { TrackedArray } from "@ember-compat/tracked-built-ins"; import { bind } from "discourse/lib/decorators"; import DiscourseRoute from "discourse/routes/discourse"; import ActivityPubActor from "../../../models/activity-pub-actor"; @@ -21,7 +21,7 @@ export default class ActivityPubActorFollows extends DiscourseRoute { setupController(controller) { controller.setProperties({ actor: this.modelFor("activityPub.actor"), - actors: A(this.actors || []), + actors: new TrackedArray(this.actors || []), loadMoreUrl: this.meta?.load_more_url, total: this.meta?.total, }); diff --git a/assets/javascripts/discourse/routes/admin-plugins/activity-pub/actor.js b/assets/javascripts/discourse/routes/admin-plugins/activity-pub/actor.js index 5b383500..221d2465 100644 --- a/assets/javascripts/discourse/routes/admin-plugins/activity-pub/actor.js +++ b/assets/javascripts/discourse/routes/admin-plugins/activity-pub/actor.js @@ -1,4 +1,4 @@ -import { A } from "@ember/array"; +import { TrackedArray } from "@ember-compat/tracked-built-ins"; import { ajax } from "discourse/lib/ajax"; import DiscourseRoute from "discourse/routes/discourse"; import ActivityPubActor, { @@ -24,7 +24,7 @@ export default class AdminPluginsActivityPubActorRoute extends DiscourseRoute { setupController(controller, model) { controller.setProperties({ - actors: A( + actors: new TrackedArray( (model.actors || []).map((actor) => { return ActivityPubActor.create(actor); }) diff --git a/assets/javascripts/discourse/routes/admin-plugins/activity-pub/log.js b/assets/javascripts/discourse/routes/admin-plugins/activity-pub/log.js index cd63558c..37a8a80a 100644 --- a/assets/javascripts/discourse/routes/admin-plugins/activity-pub/log.js +++ b/assets/javascripts/discourse/routes/admin-plugins/activity-pub/log.js @@ -1,4 +1,4 @@ -import { A } from "@ember/array"; +import { TrackedArray } from "@ember-compat/tracked-built-ins"; import DiscourseRoute from "discourse/routes/discourse"; import ActivityPubLog from "../../../models/activity-pub-log"; @@ -16,7 +16,7 @@ export default class AdminPluginsActivityPubLogRoute extends DiscourseRoute { controller.setProperties({ loadMoreUrl: model.meta.load_more_url, total: model.meta.total, - logs: A( + logs: new TrackedArray( (model.logs || []).map((actor) => { return ActivityPubLog.create(actor); })