1
0
Fork 0

Add avatar interpolation support

Dieser Commit ist enthalten in:
Angus McLeod 2022-12-12 13:19:04 +01:00
Ursprung 93ea792972
Commit 405a4e3ffa
4 geänderte Dateien mit 52 neuen und 3 gelöschten Zeilen

Datei anzeigen

@ -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: {

Datei anzeigen

@ -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

Datei anzeigen

@ -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

Datei anzeigen

@ -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",