Add avatar interpolation support
Dieser Commit ist enthalten in:
Ursprung
93ea792972
Commit
405a4e3ffa
4 geänderte Dateien mit 52 neuen und 3 gelöschten Zeilen
|
@ -6,7 +6,6 @@ import Component from "@ember/component";
|
||||||
import I18n from "I18n";
|
import I18n from "I18n";
|
||||||
|
|
||||||
const excludedUserProperties = [
|
const excludedUserProperties = [
|
||||||
"avatar",
|
|
||||||
"profile_background",
|
"profile_background",
|
||||||
"card_background",
|
"card_background",
|
||||||
];
|
];
|
||||||
|
@ -57,7 +56,7 @@ export default Component.extend({
|
||||||
|
|
||||||
@discourseComputed("wizardActions")
|
@discourseComputed("wizardActions")
|
||||||
wizardActionList(wizardActions) {
|
wizardActionList(wizardActions) {
|
||||||
return wizardActions.map((a) => ` w{${a.id}}`);
|
return (wizardActions || []).map((a) => ` w{${a.id}}`);
|
||||||
},
|
},
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
|
|
|
@ -211,6 +211,8 @@ class CustomWizard::Mapper
|
||||||
user.send(value)
|
user.send(value)
|
||||||
elsif USER_OPTION_FIELDS.include?(value)
|
elsif USER_OPTION_FIELDS.include?(value)
|
||||||
user.user_option.send(value)
|
user.user_option.send(value)
|
||||||
|
elsif value.include?('avatar')
|
||||||
|
get_avatar_url(value)
|
||||||
else
|
else
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
@ -269,4 +271,15 @@ class CustomWizard::Mapper
|
||||||
def bool(value)
|
def bool(value)
|
||||||
ActiveRecord::Type::Boolean.new.cast(value)
|
ActiveRecord::Type::Boolean.new.cast(value)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def get_avatar_url(value)
|
||||||
|
parts = value.split('.')
|
||||||
|
valid_sizes = Discourse.avatar_sizes.to_a
|
||||||
|
|
||||||
|
if value === 'avatar' || parts.size === 1 || valid_sizes.exclude?(parts.last.to_i)
|
||||||
|
user.small_avatar_url
|
||||||
|
else
|
||||||
|
user.avatar_template_url.gsub("{size}", parts.last)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
describe CustomWizard::Mapper do
|
describe CustomWizard::Mapper do
|
||||||
fab!(:user1) {
|
fab!(:user1) {
|
||||||
Fabricate(:user,
|
Fabricate(:user,
|
||||||
|
@ -254,6 +253,36 @@ describe CustomWizard::Mapper do
|
||||||
user: user1
|
user: user1
|
||||||
).perform).to eq("Time: #{Time.now.strftime("%B %-d, %Y")}")
|
).perform).to eq("Time: #{Time.now.strftime("%B %-d, %Y")}")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "avatar" do
|
||||||
|
expect(CustomWizard::Mapper.new(
|
||||||
|
inputs: inputs['interpolate_avatar'],
|
||||||
|
data: data,
|
||||||
|
user: user1
|
||||||
|
).perform).to eq("Avatar: ![avatar](#{user1.small_avatar_url})")
|
||||||
|
end
|
||||||
|
|
||||||
|
it "avatar with invalid size" do
|
||||||
|
avatar_inputs = inputs['interpolate_avatar'].dup
|
||||||
|
avatar_inputs[0]["output"] = "Avatar: ![avatar](u{avatar.345})"
|
||||||
|
|
||||||
|
expect(CustomWizard::Mapper.new(
|
||||||
|
inputs: avatar_inputs,
|
||||||
|
data: data,
|
||||||
|
user: user1
|
||||||
|
).perform).to eq("Avatar: ![avatar](#{user1.small_avatar_url})")
|
||||||
|
end
|
||||||
|
|
||||||
|
it "avatar with valid size" do
|
||||||
|
avatar_inputs = inputs['interpolate_avatar'].dup
|
||||||
|
avatar_inputs[0]["output"] = "Avatar: ![avatar](u{avatar.120})"
|
||||||
|
|
||||||
|
expect(CustomWizard::Mapper.new(
|
||||||
|
inputs: avatar_inputs,
|
||||||
|
data: data,
|
||||||
|
user: user1
|
||||||
|
).perform).to eq("Avatar: ![avatar](#{user1.avatar_template_url.gsub("{size}", "120")})")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it "handles greater than pairs" do
|
it "handles greater than pairs" do
|
||||||
|
|
8
spec/fixtures/mapper/inputs.json
gevendort
8
spec/fixtures/mapper/inputs.json
gevendort
|
@ -89,6 +89,14 @@
|
||||||
"output": "Time: v{time}"
|
"output": "Time: v{time}"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"interpolate_avatar": [
|
||||||
|
{
|
||||||
|
"type": "assignment",
|
||||||
|
"output_type": "text",
|
||||||
|
"output_connector": "set",
|
||||||
|
"output": "Avatar: ![avatar](u{avatar})"
|
||||||
|
}
|
||||||
|
],
|
||||||
"validation": [
|
"validation": [
|
||||||
{
|
{
|
||||||
"type": "validation",
|
"type": "validation",
|
||||||
|
|
Laden …
In neuem Issue referenzieren