Skip to content

Commit da4c543

Browse files
authored
DEV: Replace last deprecated Ember array methods (#265)
Refactor the handling of `actors` in multiple controllers by Ember array methods with native ones.
1 parent 66de743 commit da4c543

File tree

7 files changed

+29
-21
lines changed

7 files changed

+29
-21
lines changed

assets/javascripts/discourse/controllers/activity-pub/actor/followers.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
import { tracked } from "@glimmer/tracking";
22
import Controller from "@ember/controller";
33
import { action } from "@ember/object";
4-
import { notEmpty } from "@ember/object/computed";
54
import { ajax } from "discourse/lib/ajax";
65
import { popupAjaxError } from "discourse/lib/ajax-error";
6+
import { trackedArray } from "discourse/lib/tracked-tools";
77

88
export default class ActivityPubActorFollowers extends Controller {
99
@tracked order = "";
1010
@tracked asc = null;
1111
@tracked loadingMore = false;
12+
@trackedArray actors;
1213

1314
queryParams = ["order", "asc"];
1415

15-
@notEmpty("actors") hasActors;
16+
get hasActors() {
17+
return this.actors?.length > 0;
18+
}
1619

1720
get tableClass() {
1821
let result = "activity-pub-follow-table followers";

assets/javascripts/discourse/controllers/activity-pub/actor/follows.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
import { tracked } from "@glimmer/tracking";
22
import Controller from "@ember/controller";
33
import { action } from "@ember/object";
4-
import { notEmpty } from "@ember/object/computed";
54
import { ajax } from "discourse/lib/ajax";
65
import { popupAjaxError } from "discourse/lib/ajax-error";
6+
import { trackedArray } from "discourse/lib/tracked-tools";
77

88
export default class ActivityPubActorFollows extends Controller {
99
@tracked order = "";
1010
@tracked asc = null;
1111
@tracked loadingMore = false;
12+
@trackedArray actors;
1213

1314
queryParams = ["order", "asc"];
1415

15-
@notEmpty("actors") hasActors;
16+
get hasActors() {
17+
return this.actors?.length > 0;
18+
}
1619

1720
get tableClass() {
1821
let result = "activity-pub-follow-table follows";

assets/javascripts/discourse/controllers/admin-plugins/activity-pub/actor.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { tracked } from "@glimmer/tracking";
22
import Controller from "@ember/controller";
33
import { action } from "@ember/object";
4-
import { notEmpty } from "@ember/object/computed";
54
import { service } from "@ember/service";
65
import { ajax } from "discourse/lib/ajax";
76
import { popupAjaxError } from "discourse/lib/ajax-error";
7+
import { trackedArray } from "discourse/lib/tracked-tools";
88
import { i18n } from "discourse-i18n";
99
import ActivityPubActor, { newActor } from "../../../models/activity-pub-actor";
1010

@@ -15,13 +15,17 @@ export default class AdminPluginsActivityPubActor extends Controller {
1515
@tracked asc = null;
1616
@tracked loadingMore = false;
1717
@tracked model_type = "category";
18+
@trackedArray actors;
19+
1820
loadMoreUrl = "";
1921
total = "";
2022

21-
@notEmpty("actors") hasActors;
22-
2323
queryParams = ["model_type", "order", "asc"];
2424

25+
get hasActors() {
26+
return this.actors?.length > 0;
27+
}
28+
2529
get title() {
2630
return i18n(`admin.discourse_activity_pub.actor.${this.model_type}.title`);
2731
}
@@ -65,6 +69,6 @@ export default class AdminPluginsActivityPubActor extends Controller {
6569

6670
@action
6771
removeActor(actorId) {
68-
this.actors.removeObject(this.actors.find((item) => item.id === actorId));
72+
this.actors = this.actors.filter((item) => item.id !== actorId);
6973
}
7074
}

assets/javascripts/discourse/routes/activity-pub/actor.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { action } from "@ember/object";
22
import { service } from "@ember/service";
3+
import { removeValueFromArray } from "discourse/lib/array-tools";
34
import DiscourseRoute from "discourse/routes/discourse";
45
import ActivityPubActor from "../../models/activity-pub-actor";
56

@@ -39,7 +40,7 @@ export default class ActivityPubActorRoute extends DiscourseRoute {
3940
@action
4041
follow(actor, followActor) {
4142
return ActivityPubActor.follow(actor.id, followActor.id).then((result) => {
42-
this.controllerFor(this.router.currentRouteName).actors.unshiftObject(
43+
this.controllerFor(this.router.currentRouteName).actors.unshift(
4344
followActor
4445
);
4546
return result;
@@ -50,7 +51,8 @@ export default class ActivityPubActorRoute extends DiscourseRoute {
5051
unfollow(actor, followedActor) {
5152
return ActivityPubActor.unfollow(actor.id, followedActor.id).then(
5253
(result) => {
53-
this.controllerFor(this.router.currentRouteName).actors.removeObject(
54+
removeValueFromArray(
55+
this.controllerFor(this.router.currentRouteName).actors,
5456
followedActor
5557
);
5658
return result;
@@ -61,7 +63,8 @@ export default class ActivityPubActorRoute extends DiscourseRoute {
6163
@action
6264
reject(actor, follower) {
6365
return ActivityPubActor.reject(actor.id, follower.id).then((result) => {
64-
this.controllerFor(this.router.currentRouteName).actors.removeObject(
66+
removeValueFromArray(
67+
this.controllerFor(this.router.currentRouteName).actors,
6568
follower
6669
);
6770
return result;

assets/javascripts/discourse/routes/activity-pub/actor/followers.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { service } from "@ember/service";
2-
import { TrackedArray } from "@ember-compat/tracked-built-ins";
32
import DiscourseRoute from "discourse/routes/discourse";
43
import ActivityPubActor from "../../../models/activity-pub-actor";
54

@@ -30,7 +29,7 @@ export default class ActivityPubActorFollowers extends DiscourseRoute {
3029
setupController(controller) {
3130
controller.setProperties({
3231
actor: this.modelFor("activityPub.actor"),
33-
actors: new TrackedArray(this.actors || []),
32+
actors: this.actors || [],
3433
loadMoreUrl: this.meta?.load_more_url,
3534
total: this.meta?.total,
3635
});

assets/javascripts/discourse/routes/activity-pub/actor/follows.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { TrackedArray } from "@ember-compat/tracked-built-ins";
21
import { bind } from "discourse/lib/decorators";
32
import DiscourseRoute from "discourse/routes/discourse";
43
import ActivityPubActor from "../../../models/activity-pub-actor";
@@ -21,7 +20,7 @@ export default class ActivityPubActorFollows extends DiscourseRoute {
2120
setupController(controller) {
2221
controller.setProperties({
2322
actor: this.modelFor("activityPub.actor"),
24-
actors: new TrackedArray(this.actors || []),
23+
actors: this.actors || [],
2524
loadMoreUrl: this.meta?.load_more_url,
2625
total: this.meta?.total,
2726
});

assets/javascripts/discourse/routes/admin-plugins/activity-pub/actor.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { TrackedArray } from "@ember-compat/tracked-built-ins";
21
import { ajax } from "discourse/lib/ajax";
32
import DiscourseRoute from "discourse/routes/discourse";
43
import ActivityPubActor, {
@@ -24,11 +23,9 @@ export default class AdminPluginsActivityPubActorRoute extends DiscourseRoute {
2423

2524
setupController(controller, model) {
2625
controller.setProperties({
27-
actors: new TrackedArray(
28-
(model.actors || []).map((actor) => {
29-
return ActivityPubActor.create(actor);
30-
})
31-
),
26+
actors: (model.actors || []).map((actor) => {
27+
return ActivityPubActor.create(actor);
28+
}),
3229
});
3330
}
3431
}

0 commit comments

Comments
 (0)