Skip to content

Commit ca7ba51

Browse files
davidtaylorhqcvx
andauthored
DEV: Convert to native class syntax (#136)
Co-authored-by: Jarek Radosz <[email protected]>
1 parent e26d0b0 commit ca7ba51

File tree

9 files changed

+48
-46
lines changed

9 files changed

+48
-46
lines changed

assets/javascripts/discourse/components/follow-button.js

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ import { ajax } from "discourse/lib/ajax";
55
import { popupAjaxError } from "discourse/lib/ajax-error";
66
import discourseComputed from "discourse-common/utils/decorators";
77

8-
export default Component.extend({
9-
loading: false,
10-
isFollowed: alias("user.is_followed"),
11-
canFollow: alias("user.can_follow"),
8+
export default class FollowButton extends Component {
9+
loading = false;
10+
11+
@alias("user.is_followed") isFollowed;
12+
@alias("user.can_follow") canFollow;
1213

1314
@discourseComputed("user", "currentUser")
1415
showButton(user, currentUser) {
@@ -29,7 +30,7 @@ export default Component.extend({
2930
return false;
3031
}
3132
return true;
32-
},
33+
}
3334

3435
@discourseComputed("isFollowed", "canFollow")
3536
labelKey(isFollowed, canFollow) {
@@ -38,7 +39,7 @@ export default Component.extend({
3839
} else {
3940
return "follow.follow_button_label";
4041
}
41-
},
42+
}
4243

4344
@discourseComputed("isFollowed", "canFollow")
4445
icon(isFollowed, canFollow) {
@@ -47,7 +48,7 @@ export default Component.extend({
4748
} else {
4849
return "user-plus";
4950
}
50-
},
51+
}
5152

5253
@action
5354
toggleFollow() {
@@ -61,5 +62,5 @@ export default Component.extend({
6162
.finally(() => {
6263
this.set("loading", false);
6364
});
64-
},
65-
});
65+
}
66+
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Component from "@ember/component";
2-
import { observes } from "discourse-common/utils/decorators";
2+
import { observes } from "@ember-decorators/object";
33

44
const preferences = [
55
"notify_me_when_followed",
@@ -9,7 +9,7 @@ const preferences = [
99
"allow_people_to_follow_me",
1010
];
1111

12-
export default Component.extend({
12+
export default class FollowNotificationPreferences extends Component {
1313
@observes(...preferences.map((p) => `user.${p}`))
1414
_updatePreferences() {
1515
if (!this.user.custom_fields) {
@@ -18,5 +18,5 @@ export default Component.extend({
1818
preferences.forEach((p) => {
1919
this.user.set(`custom_fields.${p}`, this.user[p]);
2020
});
21-
},
22-
});
21+
}
22+
}

assets/javascripts/discourse/components/follow-users-list.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ import { notEmpty } from "@ember/object/computed";
33
import { propertyEqual } from "discourse/lib/computed";
44
import discourseComputed from "discourse-common/utils/decorators";
55

6-
export default Component.extend({
7-
hasUsers: notEmpty("users"),
8-
viewingSelf: propertyEqual("user.username", "currentUser.username"),
6+
export default class FollowUsersList extends Component {
7+
@notEmpty("users") hasUsers;
8+
@propertyEqual("user.username", "currentUser.username") viewingSelf;
99

1010
@discourseComputed("type", "viewingSelf")
1111
noneMessage(type, viewingSelf) {
1212
let key = viewingSelf ? "none" : "none_other";
1313
return `user.${type}.${key}`;
14-
},
15-
});
14+
}
15+
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Controller from "@ember/controller";
22
import { propertyEqual } from "discourse/lib/computed";
33

4-
export default Controller.extend({
5-
viewingSelf: propertyEqual("model.user.id", "currentUser.id"),
6-
});
4+
export default class FeedController extends Controller {
5+
@propertyEqual("model.user.id", "currentUser.id") viewingSelf;
6+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
import Controller from "@ember/controller";
22

3-
export default Controller.extend({});
3+
export default class FollowController extends Controller {}

assets/javascripts/discourse/models/post-stream.js

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,32 @@
11
import EmberObject from "@ember/object";
22
import { reads } from "@ember/object/computed";
3+
import { on } from "@ember-decorators/object";
34
import { Promise } from "rsvp";
45
import { ajax } from "discourse/lib/ajax";
56
import Category from "discourse/models/category";
67
import RestModel from "discourse/models/rest";
7-
import discourseComputed, { on } from "discourse-common/utils/decorators";
8+
import discourseComputed from "discourse-common/utils/decorators";
89

910
// this class implements an interface similar to the `UserStream` class in core
1011
// (app/models/user-stream.js) so we can use it with the `{{user-stream}}`
1112
// component (in core as well) which expects a `UserStream` instance.
1213

13-
export default RestModel.extend({
14-
loading: false,
15-
itemsLoaded: 0,
16-
canLoadMore: true,
14+
export default class PostStream extends RestModel {
15+
loading = false;
16+
itemsLoaded = 0;
17+
canLoadMore = true;
1718

18-
lastPostCreatedAt: reads("content.lastObject.created_at"),
19+
@reads("content.lastObject.created_at") lastPostCreatedAt;
1920

2021
@on("init")
2122
_initialize() {
2223
this.set("content", []);
23-
},
24+
}
2425

2526
@discourseComputed("loading", "content.length")
2627
noContent(loading, length) {
2728
return !loading && length === 0;
28-
},
29+
}
2930

3031
findItems() {
3132
if (!this.canLoadMore || this.loading) {
@@ -68,5 +69,5 @@ export default RestModel.extend({
6869
.finally(() => {
6970
this.set("loading", false);
7071
});
71-
},
72-
});
72+
}
73+
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import DiscourseRoute from "discourse/routes/discourse";
22
import PostStream from "../models/post-stream";
33

4-
export default DiscourseRoute.extend({
4+
export default class Feed extends DiscourseRoute {
55
model() {
66
return PostStream.create({ user: this.modelFor("user") });
7-
},
7+
}
88

99
afterModel(model) {
1010
return model.findItems();
11-
},
12-
});
11+
}
12+
}
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import { ajax } from "discourse/lib/ajax";
22
import DiscourseRoute from "discourse/routes/discourse";
33

4-
export default DiscourseRoute.extend({
5-
model(/*params*/) {
4+
export default class Followers extends DiscourseRoute {
5+
model() {
66
return ajax(`/u/${this.paramsFor("user").username}/follow/followers`);
7-
},
7+
}
88

99
setupController(controller, model) {
1010
controller.setProperties({
1111
users: model,
1212
user: this.modelFor("user"),
1313
});
14-
},
15-
});
14+
}
15+
}
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import { ajax } from "discourse/lib/ajax";
22
import DiscourseRoute from "discourse/routes/discourse";
33

4-
export default DiscourseRoute.extend({
5-
model(/* params */) {
4+
export default class Following extends DiscourseRoute {
5+
model() {
66
return ajax(`/u/${this.paramsFor("user").username}/follow/following`);
7-
},
7+
}
88

99
setupController(controller, model) {
1010
const user = this.modelFor("user");
1111
controller.setProperties({ users: model, user });
12-
},
13-
});
12+
}
13+
}

0 commit comments

Comments
 (0)