diff options
Diffstat (limited to 'Timeline/Models')
-rw-r--r-- | Timeline/Models/Http/UserInfo.cs | 21 | ||||
-rw-r--r-- | Timeline/Models/Validation/NicknameValidator.cs | 2 |
2 files changed, 16 insertions, 7 deletions
diff --git a/Timeline/Models/Http/UserInfo.cs b/Timeline/Models/Http/UserInfo.cs index 6029b8aa..62d989a2 100644 --- a/Timeline/Models/Http/UserInfo.cs +++ b/Timeline/Models/Http/UserInfo.cs @@ -29,21 +29,30 @@ namespace Timeline.Models.Http public bool Administrator { get; set; }
}
- public class UserInfoSetAvatarUrlAction : IMappingAction<object, IUserInfo>
+ public class UserInfoAvatarUrlValueResolver : IValueResolver<User, IUserInfo, string>
{
private readonly IActionContextAccessor _actionContextAccessor;
private readonly IUrlHelperFactory _urlHelperFactory;
- public UserInfoSetAvatarUrlAction(IActionContextAccessor actionContextAccessor, IUrlHelperFactory urlHelperFactory)
+ public UserInfoAvatarUrlValueResolver()
+ {
+ }
+
+ public UserInfoAvatarUrlValueResolver(IActionContextAccessor actionContextAccessor, IUrlHelperFactory urlHelperFactory)
{
_actionContextAccessor = actionContextAccessor;
_urlHelperFactory = urlHelperFactory;
}
- public void Process(object source, IUserInfo destination, ResolutionContext context)
+ public string Resolve(User source, IUserInfo destination, string destMember, ResolutionContext context)
{
+ if (_actionContextAccessor == null)
+ {
+ return $"/users/{destination.Username}/avatar";
+ }
+
var urlHelper = _urlHelperFactory.GetUrlHelper(_actionContextAccessor.ActionContext);
- destination.AvatarUrl = urlHelper.ActionLink(nameof(UserAvatarController.Get), nameof(UserAvatarController), new { destination.Username });
+ return urlHelper.ActionLink(nameof(UserAvatarController.Get), nameof(UserAvatarController), new { destination.Username });
}
}
@@ -51,8 +60,8 @@ namespace Timeline.Models.Http {
public UserInfoAutoMapperProfile()
{
- CreateMap<User, UserInfo>().AfterMap<UserInfoSetAvatarUrlAction>();
- CreateMap<User, UserInfoForAdmin>().AfterMap<UserInfoSetAvatarUrlAction>();
+ CreateMap<User, UserInfo>().ForMember(u => u.AvatarUrl, opt => opt.MapFrom<UserInfoAvatarUrlValueResolver>());
+ CreateMap<User, UserInfoForAdmin>().ForMember(u => u.AvatarUrl, opt => opt.MapFrom<UserInfoAvatarUrlValueResolver>());
}
}
}
diff --git a/Timeline/Models/Validation/NicknameValidator.cs b/Timeline/Models/Validation/NicknameValidator.cs index 53a2916b..1d6ab163 100644 --- a/Timeline/Models/Validation/NicknameValidator.cs +++ b/Timeline/Models/Validation/NicknameValidator.cs @@ -7,7 +7,7 @@ namespace Timeline.Models.Validation {
protected override (bool, string) DoValidate(string value)
{
- if (value.Length > 10)
+ if (value.Length > 25)
return (false, MessageTooLong);
return (true, GetSuccessMessage());
|