DEV: apply coding standards (#90)

This commit is contained in:
Joffrey JAFFEUX 2020-09-04 13:22:22 +02:00 committed by GitHub
parent c89e0dda19
commit 613267c3a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 1675 additions and 166 deletions

105
.eslintrc
View File

@ -1,106 +1,3 @@
{
"env": {
"jasmine": true,
"node": true,
"mocha": true,
"browser": true,
"builtin": true
},
"parserOptions": {
"ecmaVersion": 7,
"sourceType": "module"
},
"globals":
{"Ember":true,
"jQuery":true,
"$":true,
"RSVP":true,
"Discourse":true,
"Em":true,
"PreloadStore":true,
"Handlebars":true,
"I18n":true,
"bootbox":true,
"module":true,
"moduleFor":true,
"moduleForComponent":true,
"Pretender":true,
"sandbox":true,
"controllerFor":true,
"test":true,
"ok":true,
"not":true,
"expect":true,
"equal":true,
"visit":true,
"andThen":true,
"click":true,
"currentPath":true,
"currentRouteName":true,
"currentURL":true,
"fillIn":true,
"keyEvent":true,
"triggerEvent":true,
"count":true,
"exists":true,
"visible":true,
"invisible":true,
"asyncRender":true,
"selectDropdown":true,
"asyncTestDiscourse":true,
"fixture":true,
"find":true,
"sinon":true,
"moment":true,
"start":true,
"_":true,
"alert":true,
"containsInstance":true,
"deepEqual":true,
"notEqual":true,
"define":true,
"require":true,
"requirejs":true,
"hasModule":true,
"Blob":true,
"File":true},
"rules": {
"block-scoped-var": 2,
"dot-notation": 0,
"eqeqeq": [
2,
"allow-null"
],
"guard-for-in": 2,
"no-bitwise": 2,
"no-caller": 2,
"no-cond-assign": 0,
"no-debugger": 2,
"no-empty": 0,
"no-eval": 2,
"no-extend-native": 2,
"no-extra-parens": 0,
"no-irregular-whitespace": 2,
"no-iterator": 2,
"no-loop-func": 2,
"no-multi-str": 2,
"no-new": 2,
"no-plusplus": 0,
"no-proto": 2,
"no-script-url": 2,
"no-sequences": 2,
"no-shadow": 2,
"no-undef": 2,
"no-unused-vars": 2,
"no-with": 2,
"no-this-before-super": 2,
"semi": 2,
"strict": 0,
"valid-typeof": 2,
"wrap-iife": [
2,
"inside"
]
},
"parser": "babel-eslint"
"extends": "eslint-config-discourse"
}

3
.gitignore vendored
View File

@ -0,0 +1,3 @@
node_modules
yarn-error.log
.rubocop-https---raw-githubusercontent-com-discourse-*

1
.prettierrc Normal file
View File

@ -0,0 +1 @@
{}

4
.template-lintrc.js Normal file
View File

@ -0,0 +1,4 @@
module.exports = {
plugins: ["ember-template-lint-plugin-discourse"],
extends: "discourse:recommended",
};

View File

@ -1,3 +1,4 @@
import I18n from "I18n";
import DiscourseUrl from "discourse/lib/url";
export default {
@ -16,10 +17,10 @@ export default {
},
setupComponent(args, component) {
const statuses = ["all", "solved", "unsolved"].map(status => {
const statuses = ["all", "solved", "unsolved"].map((status) => {
return {
name: I18n.t(`solved.topic_status_filter.${status}`),
value: status
value: status,
};
});
component.set("statuses", statuses);
@ -42,7 +43,7 @@ export default {
? queryStrings.substr(1).split("&")
: [];
params = params.filter(param => !param.startsWith("solved="));
params = params.filter((param) => !param.startsWith("solved="));
if (newStatus && newStatus !== "all") {
newStatus = newStatus === "solved" ? "yes" : "no";
@ -53,6 +54,6 @@ export default {
DiscourseUrl.routeTo(
`${location.pathname}${queryStrings}${location.hash}`
);
}
}
},
},
};

View File

@ -5,6 +5,6 @@ export default {
"category.custom_fields.enable_accepted_answers",
value ? "true" : "false"
);
}
}
},
},
};

View File

@ -1,3 +1,4 @@
import I18n from "I18n";
import Topic from "discourse/models/topic";
import User from "discourse/models/user";
import TopicStatus from "discourse/raw-views/topic-status";
@ -13,12 +14,12 @@ import SearchAdvancedOptions from "discourse/components/search-advanced-options"
function clearAccepted(topic) {
const posts = topic.get("postStream.posts");
posts.forEach(post => {
posts.forEach((post) => {
if (post.get("post_number") > 1) {
post.setProperties({
accepted_answer: false,
can_accept_answer: true,
can_unaccept_answer: false
can_unaccept_answer: false,
});
}
});
@ -33,13 +34,13 @@ function unacceptPost(post) {
post.setProperties({
can_accept_answer: true,
can_unaccept_answer: false,
accepted_answer: false
accepted_answer: false,
});
topic.set("accepted_answer", undefined);
ajax("/solution/unaccept", {
type: "POST",
data: { id: post.id }
data: { id: post.id },
}).catch(popupAjaxError);
}
@ -51,18 +52,18 @@ function acceptPost(post) {
post.setProperties({
can_unaccept_answer: true,
can_accept_answer: false,
accepted_answer: true
accepted_answer: true,
});
topic.set("accepted_answer", {
username: post.username,
post_number: post.post_number,
excerpt: post.cooked
excerpt: post.cooked,
});
ajax("/solution/accept", {
type: "POST",
data: { id: post.id }
data: { id: post.id },
}).catch(popupAjaxError);
}
@ -72,7 +73,7 @@ function initializeWithApi(api) {
TopicStatusIcons.addObject([
"has_accepted_answer",
"far-check-square",
"solved"
"solved",
]);
api.includePostAttributes(
@ -85,7 +86,7 @@ function initializeWithApi(api) {
api.addDiscoveryQueryParam("solved", { replace: true, refreshModel: true });
}
api.addPostMenuButton("solved", attrs => {
api.addPostMenuButton("solved", (attrs) => {
const canAccept = attrs.can_accept_answer;
const canUnaccept = attrs.can_unaccept_answer;
const accepted = attrs.accepted_answer;
@ -100,7 +101,7 @@ function initializeWithApi(api) {
className: "unaccepted",
title: "solved.accept_answer",
label: "solved.solution",
position
position,
};
} else if (canUnaccept && accepted) {
const title = canUnaccept
@ -112,7 +113,7 @@ function initializeWithApi(api) {
title,
className: "accepted fade-out",
position,
label: "solved.solution"
label: "solved.solution",
};
} else if (!canAccept && accepted) {
return {
@ -123,19 +124,19 @@ function initializeWithApi(api) {
return h(
"span.accepted-text",
{
title: I18n.t("solved.accepted_description")
title: I18n.t("solved.accepted_description"),
},
[
h("span", iconNode("check")),
h("span.accepted-label", I18n.t("solved.solution"))
h("span.accepted-label", I18n.t("solved.solution")),
]
);
}
},
};
}
});
api.decorateWidget("post-contents:after-cooked", dec => {
api.decorateWidget("post-contents:after-cooked", (dec) => {
if (dec.attrs.post_number === 1) {
const postModel = dec.getModel();
if (postModel) {
@ -174,12 +175,12 @@ function initializeWithApi(api) {
api.attachWidgetAction("post", "acceptAnswer", function () {
const post = this.model;
const current = post.get("topic.postStream.posts").filter(p => {
const current = post.get("topic.postStream.posts").filter((p) => {
return p.post_number === 1 || p.accepted_answer;
});
acceptPost(post);
current.forEach(p =>
current.forEach((p) =>
this.appEvents.trigger("post-stream:refresh", { id: p.id })
);
});
@ -188,7 +189,7 @@ function initializeWithApi(api) {
const post = this.model;
const op = post
.get("topic.postStream.posts")
.find(p => p.post_number === 1);
.find((p) => p.post_number === 1);
unacceptPost(post);
this.appEvents.trigger("post-stream:refresh", { id: op.id });
});
@ -197,7 +198,7 @@ function initializeWithApi(api) {
api.registerConnectorClass("user-activity-bottom", "solved-list", {
shouldRender(args, component) {
return component.siteSettings.solved_enabled;
}
},
});
api.registerConnectorClass("user-summary-stat", "solved-count", {
shouldRender(args, component) {
@ -207,7 +208,7 @@ function initializeWithApi(api) {
},
setupComponent() {
this.set("classNames", ["linked-stat"]);
}
},
});
}
}
@ -231,9 +232,9 @@ export default {
username: formatUsername(username),
post_path: `${this.url}/${postNumber}`,
post_number: postNumber,
user_path: User.create({ username }).path
user_path: User.create({ username }).path,
});
})
}),
});
TopicStatus.reopen({
@ -245,7 +246,7 @@ export default {
openTag: "span",
closeTag: "span",
title: I18n.t("topic_statuses.solved.help"),
icon: "far-check-square"
icon: "far-check-square",
});
} else if (
this.topic.can_have_answer &&
@ -256,11 +257,11 @@ export default {
openTag: "span",
closeTag: "span",
title: I18n.t("solved.has_no_accepted_answer"),
icon: "far-square"
icon: "far-square",
});
}
return results;
})
}),
});
SearchAdvancedOptions.reopen({
@ -268,18 +269,18 @@ export default {
this._super();
this.statusOptions.push({
name: I18n.t("search.advanced.statuses.solved"),
value: "solved"
value: "solved",
});
}
},
});
withPluginApi("0.1", initializeWithApi);
withPluginApi("0.8.10", api => {
withPluginApi("0.8.10", (api) => {
api.replaceIcon(
"notification.solved.accepted_notification",
"check-square"
);
});
}
},
};

View File

@ -12,9 +12,9 @@ export default {
{
get(fieldName) {
return Ember.get(this.custom_fields, fieldName) === "true";
},
}
}
)
),
});
}
},
};

View File

@ -2,5 +2,5 @@ import UserActivityStreamRoute from "discourse/routes/user-activity-stream";
export default UserActivityStreamRoute.extend({
userActionType: 15,
noContentHelpKey: "solved.no_solutions"
noContentHelpKey: "solved.no_solutions",
});

View File

@ -3,5 +3,5 @@ export default {
map() {
this.route("solved");
}
},
};

7
package.json Normal file
View File

@ -0,0 +1,7 @@
{
"author": "Discourse",
"license": "MIT",
"devDependencies": {
"eslint-config-discourse": "latest"
}
}

View File

@ -3,11 +3,11 @@ import { acceptance } from "helpers/qunit-helpers";
acceptance("Discourse Solved Plugin", {
loggedIn: true,
beforeEach() {
const response = object => {
const response = (object) => {
return [200, { "Content-Type": "application/json" }, object];
};
const postStreamWithAcceptedAnswerExcerpt = excerpt => {
const postStreamWithAcceptedAnswerExcerpt = (excerpt) => {
return {
post_stream: {
posts: [
@ -49,7 +49,7 @@ acceptance("Discourse Solved Plugin", {
{ id: 4, can_act: true },
{ id: 5, hidden: true, can_act: true },
{ id: 7, can_act: true },
{ id: 8, can_act: true }
{ id: 8, can_act: true },
],
moderator: false,
admin: true,
@ -65,7 +65,7 @@ acceptance("Discourse Solved Plugin", {
wiki: false,
can_accept_answer: false,
can_unaccept_answer: false,
accepted_answer: false
accepted_answer: false,
},
{
id: 22,
@ -106,7 +106,7 @@ acceptance("Discourse Solved Plugin", {
{ id: 4, can_act: true },
{ id: 5, hidden: true, can_act: true },
{ id: 7, can_act: true },
{ id: 8, can_act: true }
{ id: 8, can_act: true },
],
moderator: false,
admin: true,
@ -122,10 +122,10 @@ acceptance("Discourse Solved Plugin", {
wiki: false,
can_accept_answer: false,
can_unaccept_answer: true,
accepted_answer: true
}
accepted_answer: true,
},
],
stream: [21, 22]
stream: [21, 22],
},
timeline_lookup: [[1, 0]],
id: 23,
@ -164,13 +164,13 @@ acceptance("Discourse Solved Plugin", {
id: 1,
username: "kzh",
avatar_template:
"/letter_avatar_proxy/v2/letter/k/ac91a4/{size}.png"
"/letter_avatar_proxy/v2/letter/k/ac91a4/{size}.png",
},
last_poster: {
id: 1,
username: "kzh",
avatar_template:
"/letter_avatar_proxy/v2/letter/k/ac91a4/{size}.png"
"/letter_avatar_proxy/v2/letter/k/ac91a4/{size}.png",
},
participants: [
{
@ -182,8 +182,8 @@ acceptance("Discourse Solved Plugin", {
primary_group_name: null,
primary_group_flair_url: null,
primary_group_flair_color: null,
primary_group_flair_bg_color: null
}
primary_group_flair_bg_color: null,
},
],
notification_level: 3,
notifications_reason_id: 1,
@ -195,7 +195,7 @@ acceptance("Discourse Solved Plugin", {
can_invite_via_email: true,
can_create_post: true,
can_reply_as_new_topic: true,
can_flag_topic: true
can_flag_topic: true,
},
highest_post_number: 2,
last_read_post_number: 2,
@ -205,7 +205,7 @@ acceptance("Discourse Solved Plugin", {
actions_summary: [
{ id: 4, count: 0, hidden: false, can_act: true },
{ id: 7, count: 0, hidden: false, can_act: true },
{ id: 8, count: 0, hidden: false, can_act: true }
{ id: 8, count: 0, hidden: false, can_act: true },
],
chunk_size: 20,
bookmarked: false,
@ -213,7 +213,7 @@ acceptance("Discourse Solved Plugin", {
featured_link: null,
topic_timer: null,
message_bus_last_id: 0,
accepted_answer: { post_number: 2, username: "kzh", excerpt: excerpt }
accepted_answer: { post_number: 2, username: "kzh", excerpt: excerpt },
};
};
@ -228,10 +228,10 @@ acceptance("Discourse Solved Plugin", {
server.get("/t/12.json", () => {
return response(postStreamWithAcceptedAnswerExcerpt(null));
});
}
},
});
test("A topic with an accepted answer shows an excerpt of the answer, if provided", assert => {
test("A topic with an accepted answer shows an excerpt of the answer, if provided", (assert) => {
visit("/t/with-excerpt/11");
andThen(() => {

1595
yarn.lock Normal file

File diff suppressed because it is too large Load Diff